Largely improved embedded mode

This commit is contained in:
Pierre Pronchery 2011-06-05 11:24:43 +00:00
parent fd11141678
commit fc7701e106
2 changed files with 285 additions and 182 deletions

156
po/fr.po
View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mailer 0.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-12 01:27+0200\n"
"POT-Creation-Date: 2011-06-05 13:23+0200\n"
"PO-Revision-Date: 2010-10-02 23:25+0200\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: French\n"
@ -28,11 +28,11 @@ msgstr "_Enregistrer"
msgid "Save _as..."
msgstr "Enregistrer _sous..."
#: ../src/compose.c:97 ../src/mailer.c:125
#: ../src/compose.c:97 ../src/mailer.c:130
msgid "_Print"
msgstr "_Imprimer"
#: ../src/compose.c:98 ../src/mailer.c:126
#: ../src/compose.c:98 ../src/mailer.c:131
msgid "Print pre_view"
msgstr "_Aperçu avant impression"
@ -52,7 +52,7 @@ msgstr "_Annuler"
msgid "_Redo"
msgstr "_Refaire"
#: ../src/compose.c:114 ../src/mailer.c:136
#: ../src/compose.c:114 ../src/mailer.c:141
msgid "_Cut"
msgstr "Co_uper"
@ -60,7 +60,7 @@ msgstr "Co_uper"
msgid "_Copy"
msgstr "_Copier"
#: ../src/compose.c:118 ../src/mailer.c:140
#: ../src/compose.c:118 ../src/mailer.c:145
msgid "_Paste"
msgstr "C_oller"
@ -68,7 +68,7 @@ msgstr "C_oller"
msgid "_Select all"
msgstr "Sélectionner _tout"
#: ../src/compose.c:128 ../src/mailer.c:150
#: ../src/compose.c:128 ../src/mailer.c:155
msgid "_Unselect all"
msgstr "Tout _désélectionner"
@ -76,16 +76,16 @@ msgstr "Tout _désélectionner"
msgid "Add field"
msgstr "Ajouter un champ"
#: ../src/compose.c:142 ../src/compose.c:145 ../src/mailer.c:177
#: ../src/mailer.c:179
#: ../src/compose.c:142 ../src/compose.c:145 ../src/mailer.c:182
#: ../src/mailer.c:184
msgid "_About"
msgstr "_A propos"
#: ../src/compose.c:152 ../src/mailer.c:186
#: ../src/compose.c:152 ../src/mailer.c:191
msgid "_File"
msgstr "_Fichier"
#: ../src/compose.c:153 ../src/mailer.c:187
#: ../src/compose.c:153 ../src/mailer.c:192
msgid "_Edit"
msgstr "_Edition"
@ -93,7 +93,7 @@ msgstr "_Edition"
msgid "_View"
msgstr "_Vue"
#: ../src/compose.c:155 ../src/mailer.c:189
#: ../src/compose.c:155 ../src/mailer.c:194
msgid "_Help"
msgstr "_Aide"
@ -173,8 +173,8 @@ msgstr ""
"Certains changements n'ont pas été enregistrés.\n"
"Voulez-vous vraiment fermer la fenêtre?"
#: ../src/compose.c:575 ../src/compose.c:579 ../src/mailer.c:731
#: ../src/mailer.c:735
#: ../src/compose.c:575 ../src/compose.c:579 ../src/mailer.c:830
#: ../src/mailer.c:834
msgid "Error"
msgstr "Erreur"
@ -190,139 +190,147 @@ msgstr "Progression: "
msgid "Usage: compose address...\n"
msgstr ""
#: ../src/mailer.c:101
#: ../src/mailer.c:106
msgid "New account"
msgstr "Nouveau compte"
#: ../src/mailer.c:101
#: ../src/mailer.c:106
msgid "Account settings"
msgstr "Paramètres du compte"
#: ../src/mailer.c:101
#: ../src/mailer.c:106
msgid "Account confirmation"
msgstr "Confirmation du compte"
#: ../src/mailer.c:119
#: ../src/mailer.c:124
msgid "_New mail"
msgstr "_Nouveau message"
#: ../src/mailer.c:122 ../src/mailer.c:199
#: ../src/mailer.c:127 ../src/mailer.c:204
msgid "Send / Receive"
msgstr "Envoyer / Recevoir"
#: ../src/mailer.c:129
#: ../src/mailer.c:134
msgid "_Quit"
msgstr "_Quitter"
#: ../src/mailer.c:138
#: ../src/mailer.c:143
msgid "Cop_y"
msgstr "_Copier"
#: ../src/mailer.c:143
#: ../src/mailer.c:148
msgid "Select _all"
msgstr "Sélectionner _tout"
#: ../src/mailer.c:152
#: ../src/mailer.c:157
msgid "_Preferences"
msgstr "_Préférences"
#: ../src/mailer.c:159
#: ../src/mailer.c:164
msgid "_Reply"
msgstr "_Répondre"
#: ../src/mailer.c:161
#: ../src/mailer.c:166
msgid "Reply to _all"
msgstr "Répondre à _tous"
#: ../src/mailer.c:163
#: ../src/mailer.c:168
msgid "_Forward"
msgstr "_Transmettre"
#: ../src/mailer.c:166
#: ../src/mailer.c:171
msgid "_Delete"
msgstr "_Supprimer"
#: ../src/mailer.c:169
#: ../src/mailer.c:174
msgid "_View source"
msgstr "Afficher la _source"
#: ../src/mailer.c:188
#: ../src/mailer.c:193
msgid "_Message"
msgstr "_Message"
#: ../src/mailer.c:196
#: ../src/mailer.c:201 ../src/mailer.c:227 ../src/mailer.c:241
msgid "New mail"
msgstr "Nouveau message"
#: ../src/mailer.c:200
#: ../src/mailer.c:205
msgid "Stop"
msgstr "Stop"
#: ../src/mailer.c:202
#: ../src/mailer.c:208 ../src/mailer.c:230 ../src/mailer.c:244
msgid "Reply"
msgstr "Répondre"
#: ../src/mailer.c:203
#: ../src/mailer.c:209 ../src/mailer.c:231 ../src/mailer.c:245
msgid "Reply to all"
msgstr "Répondre à tous"
#: ../src/mailer.c:205
#: ../src/mailer.c:211 ../src/mailer.c:233 ../src/mailer.c:247
msgid "Forward"
msgstr "Transmettre"
#: ../src/mailer.c:207
#: ../src/mailer.c:214 ../src/mailer.c:235 ../src/mailer.c:249
msgid "Delete"
msgstr "Supprimer"
#: ../src/mailer.c:208
#: ../src/mailer.c:215 ../src/mailer.c:250
msgid "Print"
msgstr "Imprimer"
#: ../src/mailer.c:211
#: ../src/mailer.c:218
msgid "Preferences"
msgstr "Préférences"
#: ../src/mailer.c:289
#: ../src/mailer.c:328
msgid "Mailer"
msgstr "Mailer"
#: ../src/mailer.c:416
#: ../src/mailer.c:331 ../src/mailer.c:516
msgid "Folders"
msgstr "Dossiers"
#: ../src/mailer.c:475
#: ../src/mailer.c:383
msgid "Message list"
msgstr "Liste des messages"
#: ../src/mailer.c:413
msgid "Message"
msgstr "Message"
#: ../src/mailer.c:574
msgid "Subject"
msgstr "Sujet"
#: ../src/mailer.c:477
#: ../src/mailer.c:576
msgid "From"
msgstr "De"
#: ../src/mailer.c:479
#: ../src/mailer.c:578
msgid "To"
msgstr "À"
#: ../src/mailer.c:481
#: ../src/mailer.c:580
msgid "Date"
msgstr "Date"
#: ../src/mailer.c:594
#: ../src/mailer.c:692
msgid " Subject: "
msgstr " Sujet: "
#: ../src/mailer.c:595
#: ../src/mailer.c:693
msgid " From: "
msgstr " De: "
#: ../src/mailer.c:596
#: ../src/mailer.c:694
msgid " To: "
msgstr " À: "
#: ../src/mailer.c:597
#: ../src/mailer.c:695
msgid " Date: "
msgstr " Date: "
#: ../src/mailer.c:821
#: ../src/mailer.c:920
msgid ""
"The messages selected will be deleted.\n"
"Continue?"
@ -330,112 +338,112 @@ msgstr ""
"Les messages sélectionnés vont être effacés.\n"
"Continuer?"
#: ../src/mailer.c:929
#: ../src/mailer.c:1028
msgid "Mailer - View source"
msgstr "Mailer - Source"
#: ../src/mailer.c:996
#: ../src/mailer.c:1095
msgid "Re: "
msgstr "Re: "
#: ../src/mailer.c:1147
#: ../src/mailer.c:1244
msgid "Mailer preferences"
msgstr "Préférences de Mailer"
#: ../src/mailer.c:1183
#: ../src/mailer.c:1280
msgid "Enabled"
msgstr "Actif"
#: ../src/mailer.c:1187
#: ../src/mailer.c:1284
msgid "Name"
msgstr "Nom"
#: ../src/mailer.c:1191
#: ../src/mailer.c:1288
msgid "Type"
msgstr "Type"
#: ../src/mailer.c:1215
#: ../src/mailer.c:1312
msgid "Accounts"
msgstr "Comptes"
#: ../src/mailer.c:1222
#: ../src/mailer.c:1319
msgid "Messages font:"
msgstr "Police des messages:"
#: ../src/mailer.c:1232
#: ../src/mailer.c:1329
msgid "Display"
msgstr "Affichage"
#: ../src/mailer.c:1314
#: ../src/mailer.c:1411
msgid "No account plug-in available"
msgstr "Aucun greffon de compte disponible"
#: ../src/mailer.c:1469 ../src/mailer.c:1759
#: ../src/mailer.c:1566 ../src/mailer.c:1856
msgid "Account name"
msgstr "Nom du compte"
#: ../src/mailer.c:1476
#: ../src/mailer.c:1573
msgid "Your name"
msgstr "Votre nom"
#: ../src/mailer.c:1483
#: ../src/mailer.c:1580
msgid "e-mail address"
msgstr "Adresse e-mail"
#: ../src/mailer.c:1490
#: ../src/mailer.c:1587
msgid "Type of account"
msgstr "Type de compte"
#: ../src/mailer.c:1648
#: ../src/mailer.c:1745
msgid "Choose file"
msgstr "Choisir un fichier"
#: ../src/mailer.c:1829
#: ../src/mailer.c:1926
msgid "hidden"
msgstr "masqué"
#: ../src/mailer.c:1863
#: ../src/mailer.c:1960
msgid "Yes"
msgstr "Oui"
#: ../src/mailer.c:1863
#: ../src/mailer.c:1960
msgid "No"
msgstr "Non"
#: ../src/mailer.c:1891
#: ../src/mailer.c:1988
msgid "Account type "
msgstr "Type de compte "
#: ../src/mailer.c:1892
#: ../src/mailer.c:1989
msgid " active\n"
msgstr " actif\n"
#: ../src/mailer.c:1936
#: ../src/mailer.c:2033
msgid "Edit account: "
msgstr "Modification du compte: "
#: ../src/mailer.c:2003
#: ../src/mailer.c:2100
msgid "An error occured while saving preferences"
msgstr "Une erreur est survenue pendant la sauvegarde des préférences"
#: ../src/mailer.c:2137 ../src/mailer.c:2142
#: ../src/mailer.c:2232 ../src/mailer.c:2237
msgid "Question"
msgstr "Question"
#: ../src/mailer.c:2211
#: ../src/mailer.c:2306
#, c-format
msgid "%s/%s: %d %s"
msgstr "%s/%s: %d %s"
#: ../src/mailer.c:2214
#: ../src/mailer.c:2309
msgid "messages"
msgstr "messages"
#: ../src/mailer.c:2214
#: ../src/mailer.c:2309
msgid "message"
msgstr "message"
#: ../src/mailer.c:2217
#: ../src/mailer.c:2312
msgid "Ready"
msgstr "Prêt"

View File

@ -67,19 +67,24 @@ struct _Mailer
Config * config;
/* widgets */
GtkWidget * window;
GtkTreeStore * folders;
GtkWidget * view_folders;
GtkWidget * view_headers;
GtkTreeViewColumn * view_from;
GtkTreeViewColumn * view_to;
/* folders */
GtkWidget * fo_window;
GtkTreeStore * fo_store;
GtkWidget * fo_view;
/* headers */
GtkWidget * he_window;
GtkWidget * he_view;
GtkTreeViewColumn * he_view_from;
GtkTreeViewColumn * he_view_to;
/* body */
GtkWidget * bo_window;
GtkWidget * hdr_vbox;
GtkWidget * hdr_subject;
GtkWidget * hdr_from;
GtkWidget * hdr_to;
GtkWidget * hdr_date;
GtkTextBuffer * view_buffer;
GtkWidget * view_body;
GtkTextBuffer * bo_buffer;
GtkWidget * bo_view;
GtkWidget * statusbar;
gint statusbar_id;
/* about */
@ -191,7 +196,7 @@ static DesktopMenubar _mailer_menubar[] =
};
#endif
static DesktopToolbar _mailer_toolbar[] =
static DesktopToolbar _mailer_fo_toolbar[] =
{
{ N_("New mail"), G_CALLBACK(on_file_new_mail), "stock_mail-compose", 0,
0, NULL },
@ -199,11 +204,13 @@ static DesktopToolbar _mailer_toolbar[] =
{ N_("Send / Receive"), NULL, "stock_mail-send-receive", 0, 0, NULL },
{ N_("Stop"), NULL, GTK_STOCK_STOP, 0, GDK_KEY_Escape, NULL },
{ "", NULL, NULL, 0, 0, NULL },
#ifndef EMBEDDED
{ N_("Reply"), G_CALLBACK(on_reply), "stock_mail-reply", 0, 0, NULL },
{ N_("Reply to all"), G_CALLBACK(on_reply_to_all),
"stock_mail-reply-to-all", 0, 0, NULL },
{ N_("Forward"), G_CALLBACK(on_forward), "stock_mail-forward", 0, 0,
NULL},
#endif
{ N_("Delete"), G_CALLBACK(on_delete), GTK_STOCK_DELETE, 0, 0, NULL },
{ N_("Print"), NULL, GTK_STOCK_PRINT, 0, 0, NULL },
#ifdef EMBEDDED
@ -214,6 +221,37 @@ static DesktopToolbar _mailer_toolbar[] =
{ NULL, NULL, NULL, 0, 0, NULL }
};
#ifdef EMBEDDED
static DesktopToolbar _mailer_he_toolbar[] =
{
{ N_("New mail"), G_CALLBACK(on_file_new_mail), "stock_mail-compose", 0,
0, NULL },
{ "", NULL, NULL, 0, 0, NULL },
{ N_("Reply"), G_CALLBACK(on_reply), "stock_mail-reply", 0, 0, NULL },
{ N_("Reply to all"), G_CALLBACK(on_reply_to_all),
"stock_mail-reply-to-all", 0, 0, NULL },
{ N_("Forward"), G_CALLBACK(on_forward), "stock_mail-forward", 0, 0,
NULL},
{ N_("Delete"), G_CALLBACK(on_delete), GTK_STOCK_DELETE, 0, 0, NULL },
{ NULL, NULL, NULL, 0, 0, NULL }
};
static DesktopToolbar _mailer_bo_toolbar[] =
{
{ N_("New mail"), G_CALLBACK(on_file_new_mail), "stock_mail-compose", 0,
0, NULL },
{ "", NULL, NULL, 0, 0, NULL },
{ N_("Reply"), G_CALLBACK(on_reply), "stock_mail-reply", 0, 0, NULL },
{ N_("Reply to all"), G_CALLBACK(on_reply_to_all),
"stock_mail-reply-to-all", 0, 0, NULL },
{ N_("Forward"), G_CALLBACK(on_forward), "stock_mail-forward", 0, 0,
NULL},
{ N_("Delete"), G_CALLBACK(on_delete), GTK_STOCK_DELETE, 0, 0, NULL },
{ N_("Print"), NULL, GTK_STOCK_PRINT, 0, 0, NULL },
{ NULL, NULL, NULL, 0, 0, NULL }
};
#endif
/* prototypes */
static int _mailer_config_load_account(Mailer * mailer, char const * name);
@ -235,7 +273,8 @@ static int _mailer_config_load_account(Mailer * mailer, char const * name)
#endif
if((type = config_get(mailer->config, name, "type")) == NULL)
return -1;
if((account = account_new(mailer, type, name, mailer->folders)) == NULL)
if((account = account_new(mailer, type, name, mailer->fo_store))
== NULL)
return -mailer_error(mailer, error_get(), 1);
account_config_load(account, mailer->config);
mailer_account_add(mailer, account);
@ -264,8 +303,10 @@ Mailer * mailer_new(void)
GtkAccelGroup * group;
GtkWidget * vbox;
GtkWidget * vbox2;
#ifndef EMBEDDED
GtkWidget * hpaned;
GtkWidget * vpaned;
#endif
GtkWidget * widget;
if((mailer = object_new(sizeof(*mailer))) == NULL)
@ -280,14 +321,19 @@ Mailer * mailer_new(void)
mailer->folder_cur = NULL;
/* widgets */
group = gtk_accel_group_new();
mailer->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_add_accel_group(GTK_WINDOW(mailer->window), group);
gtk_window_set_default_size(GTK_WINDOW(mailer->window), 800, 600);
#if GTK_CHECK_VERSION(2, 6, 0)
gtk_window_set_icon_name(GTK_WINDOW(mailer->window), "mailer");
mailer->fo_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_add_accel_group(GTK_WINDOW(mailer->fo_window), group);
#ifndef EMBEDDED
gtk_window_set_default_size(GTK_WINDOW(mailer->fo_window), 800, 600);
gtk_window_set_title(GTK_WINDOW(mailer->fo_window), _("Mailer"));
#else
gtk_window_set_default_size(GTK_WINDOW(mailer->fo_window), 200, 300);
gtk_window_set_title(GTK_WINDOW(mailer->fo_window), _("Folders"));
#endif
gtk_window_set_title(GTK_WINDOW(mailer->window), _("Mailer"));
g_signal_connect_swapped(G_OBJECT(mailer->window), "delete-event",
#if GTK_CHECK_VERSION(2, 6, 0)
gtk_window_set_icon_name(GTK_WINDOW(mailer->fo_window), "mailer");
#endif
g_signal_connect_swapped(G_OBJECT(mailer->fo_window), "delete-event",
G_CALLBACK(on_closex), mailer);
vbox = gtk_vbox_new(FALSE, 0);
/* menubar */
@ -298,53 +344,107 @@ Mailer * mailer_new(void)
desktop_accel_create(_mailer_accel, mailer, group);
#endif
/* toolbar */
widget = desktop_toolbar_create(_mailer_toolbar, mailer, group);
widget = desktop_toolbar_create(_mailer_fo_toolbar, mailer, group);
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
hpaned = gtk_hpaned_new();
gtk_paned_set_position(GTK_PANED(hpaned), 160);
/* folders */
widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
mailer->view_folders = _new_folders_view(mailer);
gtk_container_add(GTK_CONTAINER(widget), mailer->view_folders);
mailer->fo_view = _new_folders_view(mailer);
gtk_container_add(GTK_CONTAINER(widget), mailer->fo_view);
#ifndef EMBEDDED
hpaned = gtk_hpaned_new();
gtk_paned_set_position(GTK_PANED(hpaned), 160);
gtk_paned_add1(GTK_PANED(hpaned), widget);
vpaned = gtk_vpaned_new();
gtk_paned_set_position(GTK_PANED(vpaned), 160);
/* messages list */
widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
mailer->view_headers = _new_headers_view(mailer);
gtk_container_add(GTK_CONTAINER(widget), mailer->view_headers);
gtk_paned_add1(GTK_PANED(vpaned), widget);
/* messages body */
vbox2 = _new_headers(mailer);
mailer->view_buffer = gtk_text_buffer_new(NULL);
mailer->view_body = gtk_text_view_new_with_buffer(mailer->view_buffer);
gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(mailer->view_body),
FALSE);
gtk_text_view_set_editable(GTK_TEXT_VIEW(mailer->view_body), FALSE);
widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(widget), mailer->view_body);
gtk_box_pack_start(GTK_BOX(vbox2), widget, TRUE, TRUE, 0);
gtk_paned_add2(GTK_PANED(vpaned), vbox2);
gtk_paned_add2(GTK_PANED(hpaned), vpaned);
gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0);
#else
gtk_box_pack_start(GTK_BOX(vbox), widget, TRUE, TRUE, 0);
#endif
/* statusbar */
mailer->statusbar = gtk_statusbar_new();
mailer->statusbar_id = 0;
_mailer_update_status(mailer);
gtk_box_pack_start(GTK_BOX(vbox), mailer->statusbar, FALSE, FALSE, 0);
gtk_container_add(GTK_CONTAINER(mailer->window), vbox);
gtk_box_pack_start(GTK_BOX(vbox), mailer->statusbar, FALSE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(mailer->fo_window), vbox);
gtk_widget_show_all(vbox);
/* messages list */
#ifndef EMBEDDED
mailer->he_window = mailer->fo_window;
#else
group = gtk_accel_group_new();
mailer->he_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_add_accel_group(GTK_WINDOW(mailer->he_window), group);
gtk_window_set_default_size(GTK_WINDOW(mailer->he_window), 200, 300);
# if GTK_CHECK_VERSION(2, 6, 0)
gtk_window_set_icon_name(GTK_WINDOW(mailer->he_window), "mailer");
# endif
gtk_window_set_title(GTK_WINDOW(mailer->he_window), _("Message list"));
g_signal_connect_swapped(G_OBJECT(mailer->he_window), "delete-event",
G_CALLBACK(on_closex), mailer);
vbox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(mailer->he_window), vbox);
widget = desktop_toolbar_create(_mailer_he_toolbar, mailer, group);
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
#endif
widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
mailer->he_view = _new_headers_view(mailer);
gtk_container_add(GTK_CONTAINER(widget), mailer->he_view);
#ifndef EMBEDDED
gtk_paned_add1(GTK_PANED(vpaned), widget);
#else
gtk_box_pack_start(GTK_BOX(vbox), widget, TRUE, TRUE, 0);
#endif
gtk_widget_show_all(vbox);
/* messages body */
#ifndef EMBEDDED
mailer->bo_window = mailer->fo_window;
#else
group = gtk_accel_group_new();
mailer->bo_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_add_accel_group(GTK_WINDOW(mailer->bo_window), group);
gtk_window_set_default_size(GTK_WINDOW(mailer->bo_window), 200, 300);
#if GTK_CHECK_VERSION(2, 6, 0)
gtk_window_set_icon_name(GTK_WINDOW(mailer->bo_window), "mailer");
#endif
gtk_window_set_title(GTK_WINDOW(mailer->bo_window), _("Message"));
g_signal_connect_swapped(G_OBJECT(mailer->bo_window), "delete-event",
G_CALLBACK(on_closex), mailer);
vbox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(mailer->bo_window), vbox);
widget = desktop_toolbar_create(_mailer_bo_toolbar, mailer, group);
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
#endif
vbox2 = _new_headers(mailer);
mailer->bo_buffer = gtk_text_buffer_new(NULL);
mailer->bo_view = gtk_text_view_new_with_buffer(mailer->bo_buffer);
gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(mailer->bo_view), FALSE);
gtk_text_view_set_editable(GTK_TEXT_VIEW(mailer->bo_view), FALSE);
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(mailer->bo_view),
GTK_WRAP_WORD_CHAR);
widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(widget), mailer->bo_view);
gtk_box_pack_start(GTK_BOX(vbox2), widget, TRUE, TRUE, 0);
#ifndef EMBEDDED
gtk_paned_add2(GTK_PANED(vpaned), vbox2);
gtk_paned_add2(GTK_PANED(hpaned), vpaned);
#else
gtk_box_pack_start(GTK_BOX(vbox), vbox2, TRUE, TRUE, 0);
#endif
gtk_widget_show_all(vbox);
/* widgets */
mailer->ab_window = NULL;
mailer->pr_window = NULL;
/* show window */
gtk_widget_show_all(vbox);
gtk_widget_hide(mailer->hdr_vbox);
gtk_widget_show(mailer->window);
gtk_widget_show(mailer->fo_window);
gtk_widget_show(mailer->he_window);
gtk_widget_show(mailer->bo_window);
/* load configuration */
mailer->source = g_idle_add(_new_config_load, mailer);
return mailer;
@ -404,10 +504,10 @@ static GtkWidget * _new_folders_view(Mailer * mailer)
GtkCellRenderer * renderer;
GtkTreeSelection * treesel;
mailer->folders = gtk_tree_store_new(MFC_COUNT, G_TYPE_POINTER,
mailer->fo_store = gtk_tree_store_new(MFC_COUNT, G_TYPE_POINTER,
G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_POINTER,
GDK_TYPE_PIXBUF, G_TYPE_STRING);
widget = gtk_tree_view_new_with_model(GTK_TREE_MODEL(mailer->folders));
widget = gtk_tree_view_new_with_model(GTK_TREE_MODEL(mailer->fo_store));
renderer = gtk_cell_renderer_pixbuf_new();
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(widget), -1,
NULL, renderer, "pixbuf", MFC_ICON, NULL);
@ -435,8 +535,7 @@ static void _on_folders_changed(GtkTreeSelection * selection, gpointer data)
{
mailer->account_cur = NULL;
mailer->folder_cur = NULL;
gtk_tree_view_set_model(GTK_TREE_VIEW(mailer->view_headers),
NULL);
gtk_tree_view_set_model(GTK_TREE_VIEW(mailer->he_view), NULL);
_mailer_update_status(mailer);
return;
}
@ -453,12 +552,12 @@ static void _on_folders_changed(GtkTreeSelection * selection, gpointer data)
/* display relevant columns */
sent = (mailer->folder_cur != NULL && folder_get_type(
mailer->folder_cur) == FT_SENT) ? TRUE : FALSE;
gtk_tree_view_column_set_visible(mailer->view_from, !sent);
gtk_tree_view_column_set_visible(mailer->view_to, sent);
gtk_tree_view_column_set_visible(mailer->he_view_from, !sent);
gtk_tree_view_column_set_visible(mailer->he_view_to, sent);
/* display headers */
model = (mailer->folder_cur != NULL) ? GTK_TREE_MODEL(
folder_get_messages(mailer->folder_cur)) : NULL;
gtk_tree_view_set_model(GTK_TREE_VIEW(mailer->view_headers), model);
gtk_tree_view_set_model(GTK_TREE_VIEW(mailer->he_view), model);
_mailer_update_status(mailer);
}
@ -474,9 +573,9 @@ static GtkWidget * _new_headers_view(Mailer * mailer)
_headers_view_column_pixbuf(treeview, "", MHC_ICON, MHC_READ);
_headers_view_column_text(treeview, _("Subject"), MHC_SUBJECT,
MHC_SUBJECT, MHC_WEIGHT);
mailer->view_from = _headers_view_column_text(treeview, _("From"),
mailer->he_view_from = _headers_view_column_text(treeview, _("From"),
MHC_FROM, MHC_FROM, MHC_WEIGHT);
mailer->view_to = _headers_view_column_text(treeview, _("To"),
mailer->he_view_to = _headers_view_column_text(treeview, _("To"),
MHC_TO, MHC_TO, MHC_WEIGHT);
_headers_view_column_text(treeview, _("Date"), MHC_DATE_DISPLAY,
MHC_DATE, MHC_WEIGHT);
@ -506,8 +605,8 @@ static void _on_headers_changed(GtkTreeSelection * selection, gpointer data)
if(sel == NULL || sel->next != NULL) /* empty or multiple */
{
gtk_widget_hide(mailer->hdr_vbox);
gtk_text_view_set_buffer(GTK_TEXT_VIEW(mailer->view_body),
mailer->view_buffer);
gtk_text_view_set_buffer(GTK_TEXT_VIEW(mailer->bo_view),
mailer->bo_buffer);
g_list_foreach(sel, (GFunc)gtk_tree_path_free, NULL);
g_list_free(sel);
return;
@ -542,8 +641,7 @@ static void _on_headers_changed(GtkTreeSelection * selection, gpointer data)
gtk_widget_show(mailer->hdr_vbox);
if((tbuf = account_select(mailer->account_cur, mailer->folder_cur,
message)) != NULL)
gtk_text_view_set_buffer(GTK_TEXT_VIEW(mailer->view_body),
tbuf);
gtk_text_view_set_buffer(GTK_TEXT_VIEW(mailer->bo_view), tbuf);
g_list_foreach(sel, (GFunc)gtk_tree_path_free, NULL);
g_list_free(sel);
}
@ -621,11 +719,12 @@ static GtkWidget * _new_headers(Mailer * mailer)
gtk_misc_set_alignment(GTK_MISC(widget), 1.0, 0.0);
gtk_size_group_add_widget(GTK_SIZE_GROUP(group), widget);
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0);
*(widgets[i].widget) = gtk_label_new("");
gtk_misc_set_alignment(GTK_MISC(*(widgets[i].widget)), 0.0,
0.0);
gtk_box_pack_start(GTK_BOX(hbox), *(widgets[i].widget), TRUE,
TRUE, 0);
widget = gtk_label_new("");
*(widgets[i].widget) = widget;
gtk_label_set_ellipsize(GTK_LABEL(widget),
PANGO_ELLIPSIZE_MIDDLE);
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.0);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(mailer->hdr_vbox), hbox, FALSE,
FALSE, 0);
}
@ -653,7 +752,7 @@ static gboolean _new_config_load(gpointer data)
if((value = config_get(mailer->config, NULL, "messages_font")) != NULL)
{
font = pango_font_description_from_string(value);
gtk_widget_modify_font(mailer->view_body, font);
gtk_widget_modify_font(mailer->bo_view, font);
pango_font_description_free(font);
}
if((value = config_get(mailer->config, NULL, "accounts")) == NULL
@ -724,7 +823,7 @@ int mailer_error(Mailer * mailer, char const * message, int ret)
if(mailer == NULL)
return error_set_print("mailer", ret, "%s", message);
dialog = gtk_message_dialog_new(GTK_WINDOW(mailer->window),
dialog = gtk_message_dialog_new(GTK_WINDOW(mailer->fo_window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
#if GTK_CHECK_VERSION(2, 6, 0)
@ -734,7 +833,7 @@ int mailer_error(Mailer * mailer, char const * message, int ret)
"%s", message);
gtk_window_set_title(GTK_WINDOW(dialog), _("Error"));
gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(
mailer->window));
mailer->fo_window));
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(
gtk_widget_destroy), NULL);
gtk_widget_show(dialog);
@ -808,11 +907,11 @@ void mailer_delete_selected(Mailer * mailer)
GtkTreePath * path;
GtkTreeRowReference * reference;
if((model = gtk_tree_view_get_model(GTK_TREE_VIEW(
mailer->view_headers))) == NULL)
if((model = gtk_tree_view_get_model(GTK_TREE_VIEW(mailer->he_view)))
== NULL)
return;
if((treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(
mailer->view_headers))) == NULL)
mailer->he_view))) == NULL)
return;
if((selected = gtk_tree_selection_get_selected_rows(treesel, NULL))
== NULL)
@ -845,8 +944,8 @@ static void _mailer_delete_selected_foreach(GtkTreeRowReference * reference,
GtkTreeIter iter;
Message * message;
if((model = gtk_tree_view_get_model(GTK_TREE_VIEW(
mailer->view_headers))) == NULL)
if((model = gtk_tree_view_get_model(GTK_TREE_VIEW(mailer->he_view)))
== NULL)
return;
if(reference == NULL)
return;
@ -865,12 +964,12 @@ void mailer_copy(Mailer * mailer)
GtkTextBuffer * buffer;
GtkClipboard * clipboard;
if(gtk_window_get_focus(GTK_WINDOW(mailer->window))
== mailer->view_body)
if(gtk_window_get_focus(GTK_WINDOW(mailer->fo_window))
== mailer->bo_view)
{
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(
mailer->view_body));
clipboard = gtk_widget_get_clipboard(mailer->view_body,
mailer->bo_view));
clipboard = gtk_widget_get_clipboard(mailer->bo_view,
GDK_SELECTION_CLIPBOARD);
gtk_text_buffer_copy_clipboard(buffer, clipboard);
}
@ -884,12 +983,12 @@ void mailer_cut(Mailer * mailer)
GtkTextBuffer * buffer;
GtkClipboard * clipboard;
if(gtk_window_get_focus(GTK_WINDOW(mailer->window))
== mailer->view_body) /* XXX copies, really */
if(gtk_window_get_focus(GTK_WINDOW(mailer->fo_window))
== mailer->bo_view) /* XXX copies, really */
{
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(
mailer->view_body));
clipboard = gtk_widget_get_clipboard(mailer->view_body,
mailer->bo_view));
clipboard = gtk_widget_get_clipboard(mailer->bo_view,
GDK_SELECTION_CLIPBOARD);
gtk_text_buffer_cut_clipboard(buffer, clipboard, FALSE);
}
@ -952,12 +1051,12 @@ void mailer_paste(Mailer * mailer)
GtkTextBuffer * buffer;
GtkClipboard * clipboard;
if(gtk_window_get_focus(GTK_WINDOW(mailer->window))
== mailer->view_body) /* XXX does nothing, really */
if(gtk_window_get_focus(GTK_WINDOW(mailer->fo_window))
== mailer->bo_view) /* XXX does nothing, really */
{
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(
mailer->view_body));
clipboard = gtk_widget_get_clipboard(mailer->view_body,
mailer->bo_view));
clipboard = gtk_widget_get_clipboard(mailer->bo_view,
GDK_SELECTION_CLIPBOARD);
gtk_text_buffer_paste_clipboard(buffer, clipboard, NULL, FALSE);
}
@ -1037,19 +1136,17 @@ void mailer_select_all(Mailer * mailer)
#endif
#if GTK_CHECK_VERSION(2, 4, 0)
if(gtk_window_get_focus(GTK_WINDOW(mailer->window))
== mailer->view_body)
if(gtk_window_get_focus(GTK_WINDOW(mailer->fo_window))
== mailer->bo_view)
{
tbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(
mailer->view_body));
tbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(mailer->bo_view));
gtk_text_buffer_get_start_iter(tbuf, &start);
gtk_text_buffer_get_end_iter(tbuf, &end);
gtk_text_buffer_select_range(tbuf, &start, &end);
return;
}
#endif
treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(
mailer->view_headers));
treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(mailer->he_view));
gtk_tree_selection_select_all(treesel);
}
@ -1074,7 +1171,7 @@ void mailer_show_about(Mailer * mailer, gboolean show)
g_signal_connect_swapped(G_OBJECT(dialog), "delete-event", G_CALLBACK(
_about_on_closex), mailer);
gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(
mailer->window));
mailer->fo_window));
desktop_about_dialog_set_name(dialog, PACKAGE);
desktop_about_dialog_set_version(dialog, VERSION);
desktop_about_dialog_set_authors(dialog, _authors);
@ -1146,7 +1243,7 @@ void mailer_show_preferences(Mailer * mailer, gboolean show)
gtk_window_set_title(GTK_WINDOW(mailer->pr_window),
_("Mailer preferences"));
gtk_window_set_transient_for(GTK_WINDOW(mailer->pr_window), GTK_WINDOW(
mailer->window));
mailer->fo_window));
g_signal_connect_swapped(G_OBJECT(mailer->pr_window), "delete-event",
G_CALLBACK(_on_preferences_closex), mailer);
vbox = gtk_vbox_new(FALSE, 4);
@ -1937,7 +2034,7 @@ static void _account_edit(Mailer * mailer, Account * account)
account_get_title(account));
gtk_window_set_title(GTK_WINDOW(window), buf);
gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(
mailer->window));
mailer->fo_window));
gtk_window_set_modal(GTK_WINDOW(window), TRUE);
vbox = gtk_vbox_new(FALSE, 4);
/* FIXME also allow to modify the identity, plug-in values... */
@ -2021,7 +2118,7 @@ static int _preferences_ok_accounts(Mailer * mailer)
model = gtk_tree_view_get_model(GTK_TREE_VIEW(mailer->pr_accounts));
view_model = gtk_tree_view_get_model(GTK_TREE_VIEW(
mailer->view_folders));
mailer->fo_view));
for(loop = gtk_tree_model_get_iter_first(model, &iter); loop == TRUE;
loop = gtk_tree_model_iter_next(model, &iter))
{
@ -2075,7 +2172,7 @@ static int _preferences_ok_display(Mailer * mailer)
config_set(mailer->config, "", "messages_font", p);
if(p != NULL)
font = pango_font_description_from_string(p);
gtk_widget_modify_font(mailer->view_body, font);
gtk_widget_modify_font(mailer->bo_view, font);
if(font != NULL)
pango_font_description_free(font);
return 0;
@ -2104,20 +2201,18 @@ void mailer_unselect_all(Mailer * mailer)
GtkTextIter iter;
#endif
if(gtk_window_get_focus(GTK_WINDOW(mailer->window))
== mailer->view_body)
if(gtk_window_get_focus(GTK_WINDOW(mailer->fo_window))
== mailer->bo_view)
{
#if GTK_CHECK_VERSION(2, 4, 0)
tbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(
mailer->view_body));
tbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(mailer->bo_view));
mark = gtk_text_buffer_get_mark(tbuf, "insert");
gtk_text_buffer_get_iter_at_mark(tbuf, &iter, mark);
gtk_text_buffer_select_range(tbuf, &iter, &iter);
#endif
return;
}
treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(
mailer->view_headers));
treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(mailer->he_view));
gtk_tree_selection_unselect_all(treesel);
}
@ -2130,7 +2225,7 @@ static gboolean _mailer_confirm(Mailer * mailer, char const * message)
GtkWidget * dialog;
int res;
dialog = gtk_message_dialog_new(GTK_WINDOW(mailer->window),
dialog = gtk_message_dialog_new(GTK_WINDOW(mailer->fo_window),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s",
#if GTK_CHECK_VERSION(2, 8, 0)
@ -2159,11 +2254,11 @@ static void _mailer_foreach_message_selected(Mailer * mailer,
GtkTreePath * path;
GtkTreeIter iter;
if((model = gtk_tree_view_get_model(GTK_TREE_VIEW(
mailer->view_headers))) == NULL)
if((model = gtk_tree_view_get_model(GTK_TREE_VIEW(mailer->he_view)))
== NULL)
return;
if((treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(
mailer->view_headers))) == NULL)
mailer->he_view))) == NULL)
return;
if((selected = gtk_tree_selection_get_selected_rows(treesel, NULL))
== NULL)
@ -2203,8 +2298,8 @@ static void _mailer_update_status(Mailer * mailer)
int cnt;
char buf[256];
if((store = gtk_tree_view_get_model(GTK_TREE_VIEW(
mailer->view_headers))) != NULL)
if((store = gtk_tree_view_get_model(GTK_TREE_VIEW(mailer->he_view)))
!= NULL)
{
cnt = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store),
NULL);