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

View File

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