aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2010-07-21 02:53:19 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2010-07-21 02:53:19 +0000
commitdd6ec93f43a4dd6d957078483ab075cb039c62a4 (patch)
tree94d6a5a9983b06d1a6b6e426451cfd8bcddc010b
parent121fda20337bf2f85deba1048a3963e62fa703e9 (diff)
src/prefs_template.c: confirm on cancel if templates are modified.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2629 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog4
-rw-r--r--po/ja.po116
-rw-r--r--src/prefs_template.c39
3 files changed, 104 insertions, 55 deletions
diff --git a/ChangeLog b/ChangeLog
index 5fc5f743..d5ad318e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-07-21
+
+ * src/prefs_template.c: confirm on cancel if templates are modified.
+
2010-07-20
* src/importcsv.c: added 'Alias' attribute.
diff --git a/po/ja.po b/po/ja.po
index 662ed386..38d476c5 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sylpheed\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-07-16 15:59+0900\n"
+"POT-Creation-Date: 2010-07-21 11:42+0900\n"
"PO-Revision-Date: 1999-10-12\n"
"Last-Translator: Hiroyuki Yamamoto <hiro-y@kcn.ne.jp>\n"
"Language-Team: Japanese <ja@li.org>\n"
@@ -830,7 +830,7 @@ msgid "Address"
msgstr "アドレス"
#: src/addressadd.c:198 src/addressbook.c:726 src/editaddress.c:629
-#: src/editaddress.c:695 src/editgroup.c:268 src/importcsv.c:125
+#: src/editaddress.c:695 src/editgroup.c:268 src/importcsv.c:126
msgid "Remarks"
msgstr "備考"
@@ -1008,17 +1008,17 @@ msgid "Search:"
msgstr "検索:"
#: src/addressbook.c:789 src/compose.c:3270 src/headerview.c:55
-#: src/prefs_folder_item.c:339 src/prefs_template.c:179
+#: src/prefs_folder_item.c:339 src/prefs_template.c:190
msgid "To:"
msgstr "宛先:"
#: src/addressbook.c:793 src/compose.c:3287 src/headerview.c:56
-#: src/prefs_folder_item.c:356 src/prefs_template.c:181
+#: src/prefs_folder_item.c:356 src/prefs_template.c:192
msgid "Cc:"
msgstr "Cc:"
#: src/addressbook.c:797 src/compose.c:3304 src/prefs_folder_item.c:367
-#: src/prefs_template.c:183
+#: src/prefs_template.c:194
msgid "Bcc:"
msgstr "Bcc:"
@@ -1026,7 +1026,7 @@ msgstr "Bcc:"
#: src/addressbook.c:818 src/addressbook.c:1894 src/editaddress.c:719
#: src/editaddress.c:853 src/prefs_actions.c:266
#: src/prefs_display_header.c:280 src/prefs_display_header.c:336
-#: src/prefs_template.c:239 src/prefs_toolbar.c:65
+#: src/prefs_template.c:253 src/prefs_toolbar.c:65
msgid "Delete"
msgstr "削除"
@@ -1188,7 +1188,7 @@ msgstr "アドレス帳変換"
msgid "Interface"
msgstr "インタフェース"
-#: src/addressbook.c:3720 src/importcsv.c:671 src/importldif.c:478
+#: src/addressbook.c:3720 src/importcsv.c:676 src/importldif.c:478
msgid "Address Book"
msgstr "アドレス帳"
@@ -1656,7 +1656,7 @@ msgstr "このメールを以下のアドレスに送信してもよろしいで
msgid "From:"
msgstr "差出人:"
-#: src/compose.c:3237 src/headerview.c:58 src/prefs_template.c:187
+#: src/compose.c:3237 src/headerview.c:58 src/prefs_template.c:198
msgid "Subject:"
msgstr "件名:"
@@ -1935,28 +1935,28 @@ msgstr "名前と値を指定する必要があります。"
msgid "Edit Person Data"
msgstr "人物のデータを編集"
-#: src/editaddress.c:578 src/importcsv.c:122
+#: src/editaddress.c:578 src/importcsv.c:123
msgid "Display Name"
msgstr "表示名"
-#: src/editaddress.c:584 src/editaddress.c:588 src/importcsv.c:121
+#: src/editaddress.c:584 src/editaddress.c:588 src/importcsv.c:122
msgid "Last Name"
msgstr "姓"
-#: src/editaddress.c:585 src/editaddress.c:587 src/importcsv.c:120
+#: src/editaddress.c:585 src/editaddress.c:587 src/importcsv.c:121
msgid "First Name"
msgstr "名"
-#: src/editaddress.c:590 src/importcsv.c:123
+#: src/editaddress.c:590 src/importcsv.c:124
msgid "Nick Name"
msgstr "ニックネーム"
#: src/editaddress.c:627 src/editaddress.c:677 src/editaddress.c:887
-#: src/editgroup.c:267 src/importcsv.c:124
+#: src/editgroup.c:267 src/importcsv.c:125
msgid "E-Mail Address"
msgstr "電子メール アドレス"
-#: src/editaddress.c:628 src/editaddress.c:686
+#: src/editaddress.c:628 src/editaddress.c:686 src/importcsv.c:127
msgid "Alias"
msgstr "別名"
@@ -2090,7 +2090,7 @@ msgid "Edit JPilot Entry"
msgstr "JPilotエントリを編集"
#: src/editjpilot.c:289 src/editldap.c:349 src/editvcard.c:202
-#: src/importcsv.c:691 src/importldif.c:498 src/prefs_account_dialog.c:1863
+#: src/importcsv.c:696 src/importldif.c:498 src/prefs_account_dialog.c:1863
#: src/prefs_common_dialog.c:2164
msgid " ... "
msgstr " ... "
@@ -2647,112 +2647,112 @@ msgstr "インポートするフォルダを選択"
msgid "Select importing file"
msgstr "インポートするファイルを選択"
-#: src/importcsv.c:151 src/importldif.c:122
+#: src/importcsv.c:153 src/importldif.c:122
msgid "Please specify address book name and file to import."
msgstr "インポートするアドレス帳の名前とファイルを指定して下さい。"
-#: src/importcsv.c:154
+#: src/importcsv.c:156
msgid "Select and reorder CSV field names to import."
msgstr "インポートするCSVフィールド名を選択して並べ替えてください。"
-#: src/importcsv.c:157 src/importldif.c:128
+#: src/importcsv.c:159 src/importldif.c:128
msgid "File imported."
msgstr "ファイルをインポートしました。"
-#: src/importcsv.c:513 src/importldif.c:317
+#: src/importcsv.c:518 src/importldif.c:317
msgid "Please select a file."
msgstr "ファイルを選択してください。"
-#: src/importcsv.c:519 src/importldif.c:323
+#: src/importcsv.c:524 src/importldif.c:323
msgid "Address book name must be supplied."
msgstr "アドレス帳の名前を指定する必要があります。"
-#: src/importcsv.c:528
+#: src/importcsv.c:533
msgid "Error reading CSV fields."
msgstr "CSVファイルの読み込み中にエラーが発生しました。"
-#: src/importcsv.c:554
+#: src/importcsv.c:559
msgid "CSV file imported successfully."
msgstr "CSVファイルは正しく読み込まれました。"
-#: src/importcsv.c:616
+#: src/importcsv.c:621
msgid "Select CSV File"
msgstr "CSVファイルの選択"
-#: src/importcsv.c:682 src/importldif.c:489
+#: src/importcsv.c:687 src/importldif.c:489
msgid "File Name"
msgstr "ファイル名"
-#: src/importcsv.c:700
+#: src/importcsv.c:705
msgid "Comma-separated"
msgstr "カンマ区切り"
-#: src/importcsv.c:704
+#: src/importcsv.c:709
msgid "Tab-separated"
msgstr "タブ区切り"
-#: src/importcsv.c:735 src/importldif.c:530
+#: src/importcsv.c:740 src/importldif.c:530
msgid "S"
msgstr "S"
-#: src/importcsv.c:736
+#: src/importcsv.c:741
msgid "CSV Field"
msgstr "CSVフィールド"
-#: src/importcsv.c:737
+#: src/importcsv.c:742
msgid "Address Book Field"
msgstr "アドレス帳のフィールド"
-#: src/importcsv.c:754
+#: src/importcsv.c:759
msgid "Reorder address book fields with the Up and Down button."
msgstr "アドレス帳のフィールドを上・下ボタンで並べ替えてください。"
-#: src/importcsv.c:789 src/prefs_actions.c:310 src/prefs_customheader.c:279
+#: src/importcsv.c:794 src/prefs_actions.c:310 src/prefs_customheader.c:279
#: src/prefs_display_header.c:287 src/prefs_display_items.c:233
#: src/prefs_summary_column.c:301
msgid "Up"
msgstr " ↑ "
-#: src/importcsv.c:791 src/prefs_actions.c:316 src/prefs_customheader.c:285
+#: src/importcsv.c:796 src/prefs_actions.c:316 src/prefs_customheader.c:285
#: src/prefs_display_header.c:293 src/prefs_display_items.c:237
#: src/prefs_summary_column.c:305
msgid "Down"
msgstr " ↓ "
-#: src/importcsv.c:833 src/importldif.c:653
+#: src/importcsv.c:838 src/importldif.c:653
msgid "Address Book :"
msgstr "アドレス帳 :"
-#: src/importcsv.c:843 src/importldif.c:663
+#: src/importcsv.c:848 src/importldif.c:663
msgid "File Name :"
msgstr "ファイル名 :"
-#: src/importcsv.c:854 src/importldif.c:673
+#: src/importcsv.c:859 src/importldif.c:673
msgid "Records :"
msgstr "レコード :"
-#: src/importcsv.c:882
+#: src/importcsv.c:887
msgid "Import CSV file into Address Book"
msgstr "CSVファイルをアドレス帳へインポート"
#. Button panel
-#: src/importcsv.c:914 src/importldif.c:733 src/prefs_toolbar.c:74
+#: src/importcsv.c:919 src/importldif.c:733 src/prefs_toolbar.c:74
msgid "Next"
msgstr "次へ"
-#: src/importcsv.c:915 src/importldif.c:734 src/prefs_toolbar.c:77
+#: src/importcsv.c:920 src/importldif.c:734 src/prefs_toolbar.c:77
msgid "Prev"
msgstr "前へ"
-#: src/importcsv.c:947 src/importldif.c:766
+#: src/importcsv.c:952 src/importldif.c:766
msgid "File Info"
msgstr "ファイル情報"
-#: src/importcsv.c:948
+#: src/importcsv.c:953
msgid "Fields"
msgstr "フィールド"
-#: src/importcsv.c:949 src/importldif.c:768
+#: src/importcsv.c:954 src/importldif.c:768
msgid "Finish"
msgstr "完了"
@@ -4745,7 +4745,7 @@ msgstr " 文法のヘルプ "
msgid "Registered actions"
msgstr "登録済みアクション"
-#: src/prefs_actions.c:423 src/prefs_template.c:326
+#: src/prefs_actions.c:423 src/prefs_template.c:342
msgid "(New)"
msgstr "(新規)"
@@ -6116,7 +6116,7 @@ msgstr "サブフォルダにも適用する"
msgid "use also on reply"
msgstr "返信時にも使用"
-#: src/prefs_folder_item.c:378 src/prefs_template.c:185
+#: src/prefs_folder_item.c:378 src/prefs_template.c:196
msgid "Reply-To:"
msgstr "Reply-To:"
@@ -6194,45 +6194,53 @@ msgstr ""
"サマリビューに表示する項目を選択してください。\n"
"上・下ボタンで項目の順番を変更することができます。"
-#: src/prefs_template.c:164
+#: src/prefs_template.c:173
msgid "Template name"
msgstr "テンプレート名"
-#: src/prefs_template.c:227
+#: src/prefs_template.c:241
msgid "Register"
msgstr "登録"
-#: src/prefs_template.c:233
+#: src/prefs_template.c:247
msgid " Substitute "
msgstr " 置換 "
-#: src/prefs_template.c:245
+#: src/prefs_template.c:259
msgid " Symbols "
msgstr " 記号 "
-#: src/prefs_template.c:259
+#: src/prefs_template.c:273
msgid "Registered templates"
msgstr "登録済みテンプレート"
-#: src/prefs_template.c:281
+#: src/prefs_template.c:295
msgid "Templates"
msgstr "テンプレート"
-#: src/prefs_template.c:402
+#: src/prefs_template.c:413
+msgid "Templates are modified"
+msgstr "テンプレートが変更されています"
+
+#: src/prefs_template.c:414
+msgid "Really discard modification to templates?"
+msgstr "テンプレートの変更を破棄してもいいですか?"
+
+#: src/prefs_template.c:434
msgid "Template"
msgstr "テンプレート"
-#: src/prefs_template.c:479
+#: src/prefs_template.c:513
msgid "Template format error."
msgstr "テンプレートの書式が不正です。"
-#: src/prefs_template.c:565
+#: src/prefs_template.c:601
msgid "Delete template"
msgstr "テンプレートの削除"
-#: src/prefs_template.c:566
+#: src/prefs_template.c:602
msgid "Do you really want to delete this template?"
-msgstr "本当にこのテンプレートを削除してもいいですか?"
+msgstr "このテンプレートを削除してもいいですか?"
#: src/prefs_toolbar.c:39
msgid "---- Separator ----"
diff --git a/src/prefs_template.c b/src/prefs_template.c
index 4d2d3764..d64a9356 100644
--- a/src/prefs_template.c
+++ b/src/prefs_template.c
@@ -1,7 +1,7 @@
/*
* Sylpheed templates subsystem
* Copyright (C) 2001 Alexander Barinov
- * Copyright (C) 2001-2006 Hiroyuki Yamamoto
+ * Copyright (C) 2001-2010 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
@@ -55,6 +55,9 @@ static struct Templates {
GtkWidget *confirm_area;
GtkWidget *ok_btn;
GtkWidget *cancel_btn;
+
+ gboolean entry_modified;
+ gboolean list_modified;
} templates;
/* widget creating functions */
@@ -71,6 +74,8 @@ static gint prefs_template_deleted_cb (GtkWidget *widget,
static gboolean prefs_template_key_pressed_cb (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
+static void prefs_template_changed_cb (GtkEditable *editable,
+ gpointer data);
static void prefs_template_cancel_cb (void);
static void prefs_template_ok_cb (void);
static void prefs_template_select_cb (GtkCList *clist,
@@ -105,6 +110,8 @@ void prefs_template_open(void)
gtk_widget_show(entry); \
gtk_table_attach(GTK_TABLE(table), entry, 1, 2, row, (row + 1), \
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0); \
+ g_signal_connect(G_OBJECT(entry), "changed", \
+ G_CALLBACK(prefs_template_changed_cb), NULL); \
}
static void prefs_template_window_create(void)
@@ -138,6 +145,8 @@ static void prefs_template_window_create(void)
GtkWidget *ok_btn;
GtkWidget *cancel_btn;
+ GtkTextBuffer *buffer;
+
gchar *title[1];
/* main window */
@@ -168,6 +177,8 @@ static void prefs_template_window_create(void)
entry_name = gtk_entry_new();
gtk_widget_show(entry_name);
gtk_box_pack_start(GTK_BOX(hbox1), entry_name, TRUE, TRUE, 0);
+ g_signal_connect(G_OBJECT(entry_name), "changed",
+ G_CALLBACK(prefs_template_changed_cb), NULL);
/* table for headers */
table = gtk_table_new(5, 2, FALSE);
@@ -203,6 +214,9 @@ static void prefs_template_window_create(void)
gtk_widget_set_size_request(text_value, 360, 120);
gtk_container_add(GTK_CONTAINER(scroll2), text_value);
gtk_text_view_set_editable(GTK_TEXT_VIEW(text_value), TRUE);
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_value));
+ g_signal_connect(G_OBJECT(buffer), "changed",
+ G_CALLBACK(prefs_template_changed_cb), NULL);
/* vbox for buttons and templates list */
vbox2 = gtk_vbox_new(FALSE, 6);
@@ -304,6 +318,8 @@ static void prefs_template_window_create(void)
templates.confirm_area = confirm_area;
templates.ok_btn = ok_btn;
templates.cancel_btn = cancel_btn;
+ templates.entry_modified = FALSE;
+ templates.list_modified = FALSE;
}
static void prefs_template_window_setup(void)
@@ -339,6 +355,9 @@ static void prefs_template_window_setup(void)
g_slist_free(tmpl_list);
gtk_clist_thaw(clist);
+
+ templates.entry_modified = FALSE;
+ templates.list_modified = FALSE;
}
static void prefs_template_clear(void)
@@ -370,6 +389,11 @@ static gboolean prefs_template_key_pressed_cb(GtkWidget *widget,
return FALSE;
}
+static void prefs_template_changed_cb(GtkEditable *editable, gpointer data)
+{
+ templates.entry_modified = TRUE;
+}
+
static void prefs_template_ok_cb(void)
{
GSList *tmpl_list;
@@ -385,6 +409,14 @@ static void prefs_template_ok_cb(void)
static void prefs_template_cancel_cb(void)
{
+ if (templates.entry_modified || templates.list_modified) {
+ if (alertpanel(_("Templates are modified"),
+ _("Really discard modification to templates?"),
+ GTK_STOCK_YES, GTK_STOCK_NO, NULL)
+ != G_ALERTDEFAULT)
+ return;
+ }
+
prefs_template_clear();
gtk_widget_hide(templates.window);
main_window_popup(main_window_get());
@@ -426,6 +458,8 @@ static void prefs_template_select_cb(GtkCList *clist, gint row, gint column,
gtk_text_buffer_set_text(buffer, "", 0);
gtk_text_buffer_get_start_iter(buffer, &iter);
gtk_text_buffer_insert(buffer, &iter, tmpl->value, -1);
+
+ templates.entry_modified = FALSE;
}
static GSList *prefs_template_get_list(void)
@@ -527,6 +561,8 @@ static gint prefs_template_clist_set_row(gint row)
}
gtk_clist_set_row_data(clist, row, tmpl);
+ templates.list_modified = TRUE;
+
return row;
}
@@ -570,4 +606,5 @@ static void prefs_template_delete_cb(void)
tmpl = gtk_clist_get_row_data(clist, row);
template_free(tmpl);
gtk_clist_remove(clist, row);
+ templates.list_modified = TRUE;
}