* src/compose.c
[claws.git] / src / toolbar.c
index 005ec4a29ff386a8a135e7479cc652699af8da10..35dd21481cb7b1648d7905a89c22a56749d42e94 100644 (file)
@@ -115,6 +115,12 @@ static void toolbar_forward_cb                     (GtkWidget      *widget,
 static void toolbar_next_unread_cb             (GtkWidget      *widget,
                                                 gpointer        data);
 
+static void toolbar_ignore_thread_cb           (GtkWidget      *widget,
+                                                gpointer        data);
+
+static void toolbar_print_cb                   (GtkWidget      *widget,
+                                                gpointer        data);
+
 static void toolbar_actions_execute_cb         (GtkWidget      *widget,
                                                 gpointer        data);
 
@@ -137,7 +143,10 @@ static void toolbar_linewrap_cb                    (GtkWidget      *widget,
                                                 gpointer        data);
 static void toolbar_addrbook_cb                (GtkWidget      *widget, 
                                                 gpointer        data);
-
+#ifdef USE_ASPELL
+static void toolbar_check_spelling_cb                  (GtkWidget      *widget, 
+                                                gpointer        data);
+#endif
 static void toolbar_popup_cb                   (gpointer        data, 
                                                 guint           action, 
                                                 GtkWidget      *widget);
@@ -158,6 +167,8 @@ struct {
        { "A_DELETE",        N_("Delete Message")                       },
        { "A_EXECUTE",       N_("Execute")                              },
        { "A_GOTO_NEXT",     N_("Goto Next Message")                    },
+       { "A_IGNORE_THREAD", N_("Ignore thread")                        },
+       { "A_PRINT",         N_("Print")                                },
 
        { "A_SEND",          N_("Send Message")                         },
        { "A_SENDL",         N_("Put into queue folder and send later") },
@@ -168,7 +179,9 @@ struct {
        { "A_EXTEDITOR",     N_("Edit with external editor")            },
        { "A_LINEWRAP",      N_("Wrap all long lines")                  }, 
        { "A_ADDRBOOK",      N_("Address book")                         },
-
+#ifdef USE_ASPELL
+       { "A_CHECK_SPELLING",N_("Check spelling")                       },
+#endif
        { "A_SYL_ACTIONS",   N_("Sylpheed Actions Feature")             }, 
        { "A_SEPARATOR",     "Separator"                                }
 };
@@ -278,31 +291,41 @@ GList *toolbar_get_action_items(ToolbarType source)
        gint i = 0;
        
        if (source == TOOLBAR_MAIN) {
-               gint main_items[14] = { A_RECEIVE_ALL,   A_RECEIVE_CUR,   A_SEND_QUEUED,
-                                       A_COMPOSE_EMAIL, A_REPLY_MESSAGE, A_REPLY_SENDER,  
-                                       A_REPLY_ALL,     A_REPLY_ML,      A_FORWARD,       
-                                       A_DELETE,        A_EXECUTE,       A_GOTO_NEXT,      
+               gint main_items[]   = { A_RECEIVE_ALL,   A_RECEIVE_CUR,   A_SEND_QUEUED,
+                                       A_COMPOSE_EMAIL, A_REPLY_MESSAGE, A_REPLY_SENDER, 
+                                       A_REPLY_ALL,     A_REPLY_ML,      A_FORWARD, 
+                                       A_DELETE,        A_EXECUTE,       A_GOTO_NEXT, 
+                                       A_IGNORE_THREAD, A_PRINT,  
                                        A_ADDRBOOK,      A_SYL_ACTIONS };
 
-               for (i = 0; i < sizeof(main_items)/sizeof(main_items[0]); i++) 
+               for (i = 0; i < sizeof main_items / sizeof main_items[0]; i++)  {
                        items = g_list_append(items, gettext(toolbar_text[main_items[i]].descr));
+                       if (main_items[i] == A_PRINT) {
+                               g_print("$$$ descr %s, trans %s\n",
+                                       toolbar_text[main_items[i]].descr,
+                                       gettext(toolbar_text[main_items[i]].descr));
+                       }
+               }       
        }
        else if (source == TOOLBAR_COMPOSE) {
-               gint comp_items[10] = { A_SEND,          A_SENDL,        A_DRAFT,
+               gint comp_items[] =   { A_SEND,          A_SENDL,        A_DRAFT,
                                        A_INSERT,        A_ATTACH,       A_SIG,
                                        A_EXTEDITOR,     A_LINEWRAP,     A_ADDRBOOK,
+#ifdef USE_ASPELL
+                                       A_CHECK_SPELLING, 
+#endif
                                        A_SYL_ACTIONS };        
 
-               for (i = 0; i < sizeof(comp_items)/sizeof(comp_items[0]); i++) 
+               for (i = 0; i < sizeof comp_items / sizeof comp_items[0]; i++) 
                        items = g_list_append(items, gettext(toolbar_text[comp_items[i]].descr));
        }
        else if (source == TOOLBAR_MSGVIEW) {
-               gint msgv_items[10] = { A_COMPOSE_EMAIL, A_REPLY_MESSAGE, A_REPLY_SENDER,
+               gint msgv_items[] =   { A_COMPOSE_EMAIL, A_REPLY_MESSAGE, A_REPLY_SENDER,
                                        A_REPLY_ALL,     A_REPLY_ML,      A_FORWARD,
                                        A_DELETE,        A_GOTO_NEXT,     A_ADDRBOOK,
                                        A_SYL_ACTIONS };        
 
-               for (i = 0; i < sizeof(msgv_items)/sizeof(msgv_items[0]); i++) 
+               for (i = 0; i < sizeof msgv_items / sizeof msgv_items[0]; i++) 
                        items = g_list_append(items, gettext(toolbar_text[msgv_items[i]].descr));
        }
 
@@ -1236,6 +1259,50 @@ static void toolbar_next_unread_cb(GtkWidget *widget, gpointer data)
        }
 }
 
+static void toolbar_ignore_thread_cb(GtkWidget *widget, gpointer data)
+{
+       ToolbarItem *toolbar_item = (ToolbarItem*)data;
+       MainWindow *mainwin;
+
+       g_return_if_fail(toolbar_item != NULL);
+
+       switch (toolbar_item->type) {
+       case TOOLBAR_MAIN:
+               mainwin = (MainWindow *) toolbar_item->parent;
+               summary_toggle_ignore_thread(mainwin->summaryview);
+               break;
+       case TOOLBAR_MSGVIEW:
+               /* TODO: see toolbar_next_unread_cb() if you need
+                * this in the message view */
+               break;
+       default:
+               debug_print("toolbar event not supported\n");
+               break;
+       }
+}
+
+static void toolbar_print_cb(GtkWidget *widget, gpointer data)
+{
+       ToolbarItem *toolbar_item = (ToolbarItem*)data;
+       MainWindow *mainwin;
+
+       g_return_if_fail(toolbar_item != NULL);
+
+       switch (toolbar_item->type) {
+       case TOOLBAR_MAIN:
+               mainwin = (MainWindow *) toolbar_item->parent;
+               summary_print(mainwin->summaryview);
+               break;
+       case TOOLBAR_MSGVIEW:
+               /* TODO: see toolbar_next_unread_cb() if you need
+                * this in the message view */
+               break;
+       default:
+               debug_print("toolbar event not supported\n");
+               break;
+       }
+}
+
 static void toolbar_send_cb(GtkWidget *widget, gpointer data)
 {
        compose_toolbar_cb(A_SEND, data);
@@ -1276,6 +1343,12 @@ static void toolbar_linewrap_cb(GtkWidget *widget, gpointer data)
        compose_toolbar_cb(A_LINEWRAP, data);
 }
 
+#ifdef USE_ASPELL
+static void toolbar_check_spelling_cb(GtkWidget *widget, gpointer data)
+{
+       compose_toolbar_cb(A_CHECK_SPELLING, data);
+}
+#endif
 /*
  * Execute actions from toolbar
  */
@@ -1375,6 +1448,8 @@ static void toolbar_buttons_cb(GtkWidget   *widget,
                { A_DELETE,             toolbar_delete_cb               },
                { A_EXECUTE,            toolbar_exec_cb                 },
                { A_GOTO_NEXT,          toolbar_next_unread_cb          },
+               { A_IGNORE_THREAD,      toolbar_ignore_thread_cb        },
+               { A_PRINT,              toolbar_print_cb                },
 
                { A_SEND,               toolbar_send_cb                 },
                { A_SENDL,              toolbar_send_later_cb           },
@@ -1385,7 +1460,9 @@ static void toolbar_buttons_cb(GtkWidget   *widget,
                { A_EXTEDITOR,          toolbar_ext_editor_cb           },
                { A_LINEWRAP,           toolbar_linewrap_cb             },
                { A_ADDRBOOK,           toolbar_addrbook_cb             },
-
+#ifdef USE_ASPELL
+               { A_CHECK_SPELLING,     toolbar_check_spelling_cb       },
+#endif
                { A_SYL_ACTIONS,        toolbar_actions_execute_cb      }
        };
 
@@ -1689,6 +1766,14 @@ Toolbar *toolbar_create(ToolbarType       type,
                                             toolbar_data->addrbook_btn,
                                             _("Address book"), NULL);
                        break;
+#ifdef USE_ASPELL
+               case A_CHECK_SPELLING:
+                       toolbar_data->spellcheck_btn = item;
+                       gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips), 
+                                            toolbar_data->spellcheck_btn,
+                                            _("Check spelling"), NULL);
+                       break;
+#endif
 
                case A_SYL_ACTIONS:
                        action_item = g_new0(ToolbarSylpheedActions, 1);
@@ -1706,6 +1791,12 @@ Toolbar *toolbar_create(ToolbarType       type,
                        gtk_widget_show(item);
                        break;
                default:
+                       /* find and set the tool tip text */
+                       gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
+                                            item,
+                                            toolbar_ret_descr_from_val
+                                               (toolbar_item->index),
+                                            NULL);
                        break;
                }
 
@@ -1877,6 +1968,10 @@ void toolbar_comp_set_sensitive(gpointer data, gboolean sensitive)
                gtk_widget_set_sensitive(compose->toolbar->linewrap_btn, sensitive);
        if (compose->toolbar->addrbook_btn)
                gtk_widget_set_sensitive(compose->toolbar->addrbook_btn, sensitive);
+#ifdef USE_ASPELL
+       if (compose->toolbar->spellcheck_btn)
+               gtk_widget_set_sensitive(compose->toolbar->spellcheck_btn, sensitive);
+#endif
        for (; items != NULL; items = g_slist_next(items)) {
                ToolbarSylpheedActions *item = (ToolbarSylpheedActions *)items->data;
                gtk_widget_set_sensitive(item->widget, sensitive);
@@ -1912,6 +2007,9 @@ void toolbar_init(Toolbar * toolbar) {
        toolbar->exteditor_btn    = NULL;       
        toolbar->linewrap_btn     = NULL;       
        toolbar->addrbook_btn     = NULL;       
+#ifdef USE_ASPELL
+       toolbar->spellcheck_btn   = NULL;
+#endif
 
        toolbar_destroy(toolbar);
 }
@@ -1968,7 +2066,7 @@ void inc_all_account_mail_cb(gpointer data, guint action, GtkWidget *widget)
 {
        MainWindow *mainwin = (MainWindow*)data;
 
-       inc_all_account_mail(mainwin, prefs_common.newmail_notify_manu);
+       inc_all_account_mail(mainwin, FALSE, prefs_common.newmail_notify_manu);
 }
 
 void send_queue_cb(gpointer data, guint action, GtkWidget *widget)