sync with 0.7.4cvs39
[claws.git] / src / mainwindow.c
index fb23b9abb03981522b2d5dc5411cbac7b88abf6f..24c6c49646da0c7f2b213e72be1589c9c584ade2 100644 (file)
@@ -461,6 +461,10 @@ static void addr_gather_cb  ( MainWindow  *mainwin,
                                   guint       action,
                                   GtkWidget   *widget );
 
+static void addr_gather_msg_cb  ( MainWindow  *mainwin,
+                                  guint       action,
+                                  GtkWidget   *widget );
+
 #define  SEPARATE_ACTION  667
 
 static GtkItemFactoryEntry mainwin_entries[] =
@@ -492,16 +496,24 @@ static GtkItemFactoryEntry mainwin_entries[] =
                                                "<control>F", search_cb, 0, NULL},
        {N_("/_Edit/_Search folder..."),        "<shift><control>F", search_cb, 1, NULL},
        {N_("/_View"),                          NULL, NULL, 0, "<Branch>"},
+       {N_("/_View/Show or hi_de"),            NULL, NULL, 0, "<Branch>"},
+       {N_("/_View/Show or hi_de/_Toolbar"),
+                                               NULL, NULL, 0, "<Branch>"},
+       {N_("/_View/Show or hi_de/_Toolbar/Icon _and text"),
+                                               NULL, toggle_toolbar_cb, TOOLBAR_BOTH, "<RadioItem>"},
+       {N_("/_View/Show or hi_de/_Toolbar/_Icon"),
+                                               NULL, toggle_toolbar_cb, TOOLBAR_ICON, "/View/Show or hide/Toolbar/Icon and text"},
+       {N_("/_View/Show or hi_de/_Toolbar/_Text"),
+                                               NULL, toggle_toolbar_cb, TOOLBAR_TEXT, "/View/Show or hide/Toolbar/Icon and text"},
+       {N_("/_View/Show or hi_de/_Toolbar/_None"),
+                                               NULL, toggle_toolbar_cb, TOOLBAR_NONE, "/View/Show or hide/Toolbar/Icon and text"},
+       {N_("/_View/Show or hi_de/Status _bar"),
+                                               NULL, toggle_statusbar_cb, 0, "<ToggleItem>"},
+       {N_("/_View/---"),                      NULL, NULL, 0, "<Separator>"},
        {N_("/_View/Separate _Folder Tree"),    NULL, NULL, SEPARATE_ACTION + SEPARATE_FOLDER,  "<ToggleItem>"},
        {N_("/_View/Separate _Message View"),   NULL, NULL, SEPARATE_ACTION + SEPARATE_MESSAGE, "<ToggleItem>"},
        {N_("/_View/E_xpand Summary View"),     "V", toggle_expand_summaryview_cb, 0, "<ToggleItem>"},
        {N_("/_View/Ex_pand Message View"),     "<shift>V", toggle_expand_messageview_cb, 0, "<ToggleItem>"},
-       {N_("/_View/_Toolbar"),                 NULL, NULL, 0, "<Branch>"},
-       {N_("/_View/_Toolbar/Icon _and text"),  NULL, toggle_toolbar_cb, TOOLBAR_BOTH, "<RadioItem>"},
-       {N_("/_View/_Toolbar/_Icon"),           NULL, toggle_toolbar_cb, TOOLBAR_ICON, "/View/Toolbar/Icon and text"},
-       {N_("/_View/_Toolbar/_Text"),           NULL, toggle_toolbar_cb, TOOLBAR_TEXT, "/View/Toolbar/Icon and text"},
-       {N_("/_View/_Toolbar/_None"),           NULL, toggle_toolbar_cb, TOOLBAR_NONE, "/View/Toolbar/Icon and text"},
-       {N_("/_View/Status _bar"),              NULL, toggle_statusbar_cb, 0, "<ToggleItem>"},
        {N_("/_View/---"),                      NULL, NULL, 0, "<Separator>"},
        {N_("/_View/_Sort"),                    NULL, NULL, 0, "<Branch>"},
        {N_("/_View/_Sort/Sort by _number"),    NULL, sort_summary_cb, SORT_BY_NUMBER, NULL},
@@ -521,6 +533,28 @@ static GtkItemFactoryEntry mainwin_entries[] =
        {N_("/_View/Th_read view"),             "<control>T",        thread_cb, 0, "<ToggleItem>"},
        {N_("/_View/_Hide read messages"),      NULL, hide_read_messages, 0, "<ToggleItem>"},
        {N_("/_View/Set display _item..."),     NULL, set_display_item_cb, 0, NULL},
+
+       {N_("/_View/---"),                      NULL, NULL, 0, "<Separator>"},
+       {N_("/_View/_Go to"),                   NULL, NULL, 0, "<Branch>"},
+       {N_("/_View/_Go to/_Prev message"),     "P", prev_cb, 0, NULL},
+       {N_("/_View/_Go to/_Next message"),     "N", next_cb, 0, NULL},
+       {N_("/_View/_Go to/---"),               NULL, NULL, 0, "<Separator>"},
+       {N_("/_View/_Go to/P_rev unread message"),
+                                               "<shift>P", prev_unread_cb, 0, NULL},
+       {N_("/_View/_Go to/N_ext unread message"),
+                                               "<shift>N", next_unread_cb, 0, NULL},
+       {N_("/_View/_Go to/---"),               NULL, NULL, 0, "<Separator>"},
+       {N_("/_View/_Go to/Prev _marked message"),
+                                               NULL, prev_marked_cb, 0, NULL},
+       {N_("/_View/_Go to/Next m_arked message"),
+                                               NULL, next_marked_cb, 0, NULL},
+       {N_("/_View/_Go to/---"),               NULL, NULL, 0, "<Separator>"},
+       {N_("/_View/_Go to/Prev _labeled message"),
+                                               NULL, prev_labeled_cb, 0, NULL},
+       {N_("/_View/_Go to/Next la_beled message"),
+                                               NULL, next_labeled_cb, 0, NULL},
+       {N_("/_View/_Go to/---"),               NULL, NULL, 0, "<Separator>"},
+       {N_("/_View/_Go to/Other _folder..."),  "G", goto_folder_cb, 0, NULL},
        {N_("/_View/---"),                      NULL, NULL, 0, "<Separator>"},
 
 #define CODESET_SEPARATOR \
@@ -603,27 +637,6 @@ static GtkItemFactoryEntry mainwin_entries[] =
 #undef CODESET_SEPARATOR
 #undef CODESET_ACTION
 
-       {N_("/_View/---"),                      NULL, NULL, 0, "<Separator>"},
-       {N_("/_View/_Go to"),                   NULL, NULL, 0, "<Branch>"},
-       {N_("/_View/_Go to/_Prev message"),     "P", prev_cb, 0, NULL},
-       {N_("/_View/_Go to/_Next message"),     "N", next_cb, 0, NULL},
-       {N_("/_View/_Go to/---"),               NULL, NULL, 0, "<Separator>"},
-       {N_("/_View/_Go to/P_rev unread message"),
-                                               "<shift>P", prev_unread_cb, 0, NULL},
-       {N_("/_View/_Go to/N_ext unread message"),
-                                               "<shift>N", next_unread_cb, 0, NULL},
-       {N_("/_View/_Go to/---"),               NULL, NULL, 0, "<Separator>"},
-       {N_("/_View/_Go to/Prev _marked message"),
-                                               NULL, prev_marked_cb, 0, NULL},
-       {N_("/_View/_Go to/Next m_arked message"),
-                                               NULL, next_marked_cb, 0, NULL},
-       {N_("/_View/_Go to/---"),               NULL, NULL, 0, "<Separator>"},
-       {N_("/_View/_Go to/Prev _labeled message"),
-                                               NULL, prev_labeled_cb, 0, NULL},
-       {N_("/_View/_Go to/Next la_beled message"),
-                                               NULL, next_labeled_cb, 0, NULL},
-       {N_("/_View/_Go to/---"),               NULL, NULL, 0, "<Separator>"},
-       {N_("/_View/_Go to/Other _folder..."),  "G", goto_folder_cb, 0, NULL},
        {N_("/_View/---"),                      NULL, NULL, 0, "<Separator>"},
        {N_("/_View/Open in new _window"),      "<control><alt>N", open_msg_cb, 0, NULL},
        {N_("/_View/Mess_age source"),          "<control>U", view_source_cb, 0, NULL},
@@ -669,7 +682,9 @@ static GtkItemFactoryEntry mainwin_entries[] =
        {N_("/_Tools/_Address book..."),        "<shift><control>A", addressbook_open_cb, 0, NULL},
        {N_("/_Tools/Add sender to address boo_k"),
                                                NULL, add_address_cb, 0, NULL},
-       {N_("/_Tools/_Gather addresses..."),    NULL, addr_gather_cb, 0, NULL},
+       {N_("/_Tools/_Gather addresses"),       NULL, NULL, 0, "<Branch>"},
+       {N_("/_Tools/_Gather addresses/from _Folder..."),       NULL, addr_gather_cb, 0, NULL},
+       {N_("/_Tools/_Gather addresses/from _Messages..."),     NULL, addr_gather_msg_cb, 0, NULL},
        {N_("/_Tools/---"),                     NULL, NULL, 0, "<Separator>"},
        {N_("/_Tools/_Filter messages"),                NULL, filter_cb, 0, NULL},
        {N_("/_Tools/_Create filter rule"),     NULL, NULL, 0, "<Branch>"},
@@ -957,24 +972,25 @@ MainWindow *main_window_create(SeparateType type)
        switch (prefs_common.toolbar_style) {
        case TOOLBAR_NONE:
                menuitem = gtk_item_factory_get_item
-                       (ifactory, "/View/Toolbar/None");
+                       (ifactory, "/View/Show or hide/Toolbar/None");
                break;
        case TOOLBAR_ICON:
                menuitem = gtk_item_factory_get_item
-                       (ifactory, "/View/Toolbar/Icon");
+                       (ifactory, "/View/Show or hide/Toolbar/Icon");
                break;
        case TOOLBAR_TEXT:
                menuitem = gtk_item_factory_get_item
-                       (ifactory, "/View/Toolbar/Text");
+                       (ifactory, "/View/Show or hide/Toolbar/Text");
                break;
        case TOOLBAR_BOTH:
                menuitem = gtk_item_factory_get_item
-                       (ifactory, "/View/Toolbar/Icon and text");
+                       (ifactory, "/View/Show or hide/Toolbar/Icon and text");
        }
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);
 
        gtk_widget_hide(mainwin->hbox_stat);
-       menuitem = gtk_item_factory_get_item(ifactory, "/View/Status bar");
+       menuitem = gtk_item_factory_get_item
+               (ifactory, "/View/Show or hide/Status bar");
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem),
                                       prefs_common.show_statusbar);
 #if 0 /* FIXED SEPARATE WINDOWS */
@@ -1592,7 +1608,7 @@ void main_window_set_menu_sensitive(MainWindow *mainwin)
 
                {"/Tools/Selective download..."     , M_HAVE_ACCOUNT|M_UNLOCKED},
                {"/Tools/Add sender to address book", M_SINGLE_TARGET_EXIST},
-               {"/Tools/Gather addresses..."       , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
+               {"/Tools/Gather addresses"          , M_TARGET_EXIST|M_UNLOCKED},
                {"/Tools/Filter messages"           , M_MSG_EXIST|M_EXEC|M_UNLOCKED},
                {"/Tools/Create filter rule"        , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
                {"/Tools/Execute"                   , M_MSG_EXIST|M_EXEC|M_UNLOCKED},
@@ -2574,16 +2590,14 @@ static void send_queue_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
 {
        GList *list;
 
-       if (procmsg_send_queue(prefs_common.savemsg) < 0)
-               alertpanel_error(_("Some errors occurred while sending queued messages."));
-
-       statusbar_pop_all();
-
        for (list = folder_get_list(); list != NULL; list = list->next) {
-               Folder *folder;
+               Folder *folder = list->data;
 
-               folder = list->data;
                if (folder->queue) {
+                       if (procmsg_send_queue
+                               (folder->queue, prefs_common.savemsg) < 0)
+                               alertpanel_error(_("Some errors occurred while sending queued messages."));
+                       statusbar_pop_all();
                        folder_item_scan(folder->queue);
                        folderview_update_item(folder->queue, TRUE);
                }
@@ -3096,11 +3110,24 @@ static void set_toolbar_style(MainWindow *mainwin)
        }
 }
 
+/*
+ * Gather addresses for selected folder.
+ */
 static void addr_gather_cb( MainWindow *mainwin,
                            guint action,
                            GtkWidget *widget )
 {
-       addressbook_gather( mainwin->summaryview->folder_item );
+       addressbook_gather( mainwin->summaryview->folder_item, NULL );
+}
+
+/*
+ * Gather addresses for selected messages in summary view.
+ */
+static void addr_gather_msg_cb( MainWindow *mainwin,
+                           guint action,
+                           GtkWidget *widget )
+{
+       summary_gather_address( mainwin->summaryview );
 }
 
 /*