* src/mainwindow.c
[claws.git] / src / mainwindow.c
index cadc7d52eacfd221589f4b5457ab1f09e13d0a58..a6993ecf84e6efa9f6ae36347037b0db03b8d7cf 100644 (file)
@@ -64,9 +64,9 @@
 #include "prefs_filtering.h"
 #include "prefs_scoring.h"
 #include "prefs_account.h"
-#include "prefs_folder_item.h"
 #include "prefs_summary_column.h"
 #include "prefs_template.h"
+#include "action.h"
 #include "account.h"
 #include "addressbook.h"
 #include "logwindow.h"
@@ -413,8 +413,9 @@ static GtkItemFactoryEntry mainwin_entries[] =
        {N_("/_File/_Folder/---"),                      NULL, NULL, 0, "<Separator>"},
        {N_("/_File/_Folder/_Check for new messages in all folders"),
                                                NULL, update_folderview_cb, 0, NULL},
-       {N_("/_File/_Add mailbox..."),          NULL, add_mailbox_cb, 0, NULL},
-       {N_("/_File/_Add mbox mailbox..."),     NULL, add_mbox_cb, 0, NULL},
+       {N_("/_File/_Add mailbox"),             NULL, NULL, 0, "<Branch>"},
+       {N_("/_File/_Add mailbox/MH..."),       NULL, add_mailbox_cb, 0, NULL},
+       {N_("/_File/_Add mailbox/mbox..."),     NULL, add_mbox_cb, 0, NULL},
        {N_("/_File/_Import mbox file..."),     NULL, import_mbox_cb, 0, NULL},
        {N_("/_File/_Export to mbox file..."),  NULL, export_mbox_cb, 0, NULL},
        {N_("/_File/Empty _trash"),             "<shift>D", empty_trash_cb, 0, NULL},
@@ -697,6 +698,8 @@ static GtkItemFactoryEntry mainwin_entries[] =
        {N_("/_Help/_FAQ (Local)"),             NULL, manual_open_cb, MANUAL_FAQ_LOCAL, NULL},
        {N_("/_Help/_FAQ (Sylpheed Doc Homepage)"),
                                                NULL, manual_open_cb, MANUAL_FAQ_SYLDOC, NULL},
+       {N_("/_Help/_Claws FAQ (Claws Documentation)"),
+                                               NULL, manual_open_cb, MANUAL_FAQ_CLAWS, NULL},
        {N_("/_Help/---"),                      NULL, NULL, 0, "<Separator>"},
        {N_("/_Help/_About"),                   NULL, about_show, 0, NULL}
 };
@@ -972,7 +975,7 @@ MainWindow *main_window_create(SeparateType type)
        toolbar_main_set_sensitive(mainwin);
 
        /* create actions menu */
-       update_mainwin_actions_menu(ifactory, mainwin);
+       action_update_mainwin_menu(ifactory, mainwin);
 
        /* attach accel groups to main window */
 #define        ADD_MENU_ACCEL_GROUP_TO_WINDOW(menu,win)        \
@@ -1198,7 +1201,7 @@ void main_window_separation_change(MainWindow *mainwin, SeparateType type)
 {
        GtkWidget *folder_wid  = GTK_WIDGET_PTR(mainwin->folderview);
        GtkWidget *summary_wid = GTK_WIDGET_PTR(mainwin->summaryview);
-       //GtkWidget *message_wid = GTK_WIDGET_PTR(mainwin->messageview);
+       /* GtkWidget *message_wid = GTK_WIDGET_PTR(mainwin->messageview); */
        GtkWidget *message_wid = mainwin->messageview->vbox;
 
        debug_print("Changing window separation type from %d to %d\n",
@@ -1528,9 +1531,10 @@ void main_window_set_menu_sensitive(MainWindow *mainwin)
                SensitiveCond cond;
        } entry[] = {
                {"/File/Folder"                               , M_UNLOCKED},
-               {"/File/Add mailbox..."                       , M_UNLOCKED},
-                {"/File/Add mbox mailbox..."                         , M_UNLOCKED},
-               {"/File/Import mbox file..."                  , M_UNLOCKED},
+               {"/File/Add mailbox"                          , M_UNLOCKED},
+
+                {"/File/Add mailbox/MH..."                   , M_UNLOCKED},
+               {"/File/Add mailbox/mbox..."                  , M_UNLOCKED},
                {"/File/Export to mbox file..."               , M_UNLOCKED},
                {"/File/Empty trash"                          , M_UNLOCKED},
                {"/File/Work offline"                         , M_UNLOCKED},
@@ -1550,9 +1554,7 @@ void main_window_set_menu_sensitive(MainWindow *mainwin)
                {"/View/Go to/Prev message"        , M_MSG_EXIST},
                {"/View/Go to/Next message"        , M_MSG_EXIST},
                {"/View/Go to/Prev unread message" , M_MSG_EXIST},
-               {"/View/Go to/Next unread message" , M_MSG_EXIST},
                {"/View/Go to/Prev new message"    , M_MSG_EXIST},
-               {"/View/Go to/Next new message"    , M_MSG_EXIST},
                {"/View/Go to/Prev marked message" , M_MSG_EXIST},
                {"/View/Go to/Next marked message" , M_MSG_EXIST},
                {"/View/Go to/Prev labeled message", M_MSG_EXIST},
@@ -1685,6 +1687,48 @@ void main_window_popup(MainWindow *mainwin)
        }
 }
 
+void main_window_show(MainWindow *mainwin)
+{
+       gtk_widget_show(mainwin->window);
+       gtk_widget_show(mainwin->vbox_body);
+
+       switch (mainwin->type) {
+       case SEPARATE_FOLDER:
+               gtk_widget_show(mainwin->win.sep_folder.folderwin);
+               break;
+       case SEPARATE_MESSAGE:
+               gtk_widget_show(mainwin->win.sep_message.messagewin);
+               break;
+       case SEPARATE_BOTH:
+               gtk_widget_show(mainwin->win.sep_both.folderwin);
+               gtk_widget_show(mainwin->win.sep_both.messagewin);
+               break;
+       default:
+               break;
+       }
+}
+
+void main_window_hide(MainWindow *mainwin)
+{
+       gtk_widget_hide(mainwin->window);
+       gtk_widget_hide(mainwin->vbox_body);
+
+       switch (mainwin->type) {
+       case SEPARATE_FOLDER:
+               gtk_widget_hide(mainwin->win.sep_folder.folderwin);
+               break;
+       case SEPARATE_MESSAGE:
+               gtk_widget_hide(mainwin->win.sep_message.messagewin);
+               break;
+       case SEPARATE_BOTH:
+               gtk_widget_hide(mainwin->win.sep_both.folderwin);
+               gtk_widget_hide(mainwin->win.sep_both.messagewin);
+               break;
+       default:
+               break;
+       }
+}
+
 static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
 {
        GtkWidget *folderwin = NULL;
@@ -1766,10 +1810,6 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
                                     prefs_common.mainwin_height);
                gtk_widget_show_all(vpaned);
 
-               /* CLAWS: previous "gtk_widget_show_all" makes noticeview
-                * lose track of its visibility state */
-               if (!noticeview_is_visible(mainwin->messageview->noticeview)) 
-                       gtk_widget_hide(GTK_WIDGET_PTR(mainwin->messageview->noticeview));
 
                mainwin->win.sep_none.hpaned = hpaned;
                mainwin->win.sep_none.vpaned = vpaned;
@@ -1811,11 +1851,6 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
 
                gtk_widget_show_all(folderwin);
                
-               /* CLAWS: previous "gtk_widget_show_all" makes noticeview
-                * lose track of its visibility state */
-               if (!noticeview_is_visible(mainwin->messageview->noticeview)) 
-                       gtk_widget_hide(GTK_WIDGET_PTR(mainwin->messageview->noticeview));
-               
                /* remove headerview if not in prefs */
                headerview_set_visibility(mainwin->messageview->headerview,
                                          prefs_common.display_header_pane);
@@ -1847,10 +1882,6 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
 
                gtk_widget_show_all(messagewin);
                
-               /* CLAWS: previous "gtk_widget_show_all" makes noticeview
-                * lose track of its visibility state */
-               if (!noticeview_is_visible(mainwin->messageview->noticeview)) 
-                       gtk_widget_hide(GTK_WIDGET_PTR(mainwin->messageview->noticeview));
                break;
        case SEPARATE_BOTH:
                gtk_box_pack_start(GTK_BOX(vbox_body),
@@ -1873,13 +1904,18 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
                gtk_widget_show_all(folderwin);
                gtk_widget_show_all(messagewin);
 
-               /* CLAWS: previous "gtk_widget_show_all" makes noticeview
-                * lose track of its visibility state */
-               if (!noticeview_is_visible(mainwin->messageview->noticeview)) 
-                       gtk_widget_hide(GTK_WIDGET_PTR(mainwin->messageview->noticeview));
                break;
        }
 
+       /* CLAWS: previous "gtk_widget_show_all" makes noticeview
+        * and mimeview icon list/ctree lose track of their visibility states */
+       if (!noticeview_is_visible(mainwin->messageview->noticeview)) 
+               gtk_widget_hide(GTK_WIDGET_PTR(mainwin->messageview->noticeview));
+       if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mainwin->messageview->mimeview->mime_toggle)))
+               gtk_widget_hide(mainwin->messageview->mimeview->icon_mainbox);
+       else 
+               gtk_widget_hide(mainwin->messageview->mimeview->ctree_mainbox);
+
        /* rehide quick search if necessary */
        if (!prefs_common.show_searchbar)
                gtk_widget_hide(mainwin->summaryview->hbox_search);