0.8.10claws76
[claws.git] / src / mainwindow.c
index af1f2bfde30517111c78a03c5afb535df99af42e..8aeeadbb0b8a6b29d88be47d53607b693667fd73 100644 (file)
@@ -85,6 +85,8 @@
 #include "sslcertwindow.h"
 #include "prefs_gtk.h"
 #include "pluginwindow.h"
+#include "hooks.h"
+#include "progressindicator.h"
 
 #define AC_LABEL_WIDTH 240
 
@@ -397,7 +399,11 @@ static void addr_harvest_msg_cb     ( MainWindow  *mainwin,
 static gboolean mainwindow_focus_in_event      (GtkWidget      *widget, 
                                                 GdkEventFocus  *focus,
                                                 gpointer        data);
-
+void main_window_reply_cb                      (MainWindow     *mainwin, 
+                                                guint           action,
+                                                GtkWidget      *widget);
+gboolean mainwindow_progressindicator_hook     (gpointer        source,
+                                                gpointer        userdata);
 #define  SEPARATE_ACTION 500 
 
 static GtkItemFactoryEntry mainwin_entries[] =
@@ -604,16 +610,16 @@ static GtkItemFactoryEntry mainwin_entries[] =
        {N_("/_Message/---"),                   NULL, NULL, 0, "<Separator>"},
        {N_("/_Message/Compose a_n email message"),     "<control>M", compose_mail_cb, 0, NULL},
        {N_("/_Message/Compose a news message"),        NULL,   compose_news_cb, 0, NULL},
-       {N_("/_Message/_Reply"),                "<control>R",   reply_cb, COMPOSE_REPLY, NULL},
+       {N_("/_Message/_Reply"),                "<control>R",   main_window_reply_cb, COMPOSE_REPLY, NULL},
        {N_("/_Message/Repl_y to"),             NULL, NULL, 0, "<Branch>"},
-       {N_("/_Message/Repl_y to/_all"),        "<shift><control>R", reply_cb, COMPOSE_REPLY_TO_ALL, NULL},
-       {N_("/_Message/Repl_y to/_sender"),     NULL, reply_cb, COMPOSE_REPLY_TO_SENDER, NULL},
+       {N_("/_Message/Repl_y to/_all"),        "<shift><control>R", main_window_reply_cb, COMPOSE_REPLY_TO_ALL, NULL},
+       {N_("/_Message/Repl_y to/_sender"),     NULL, main_window_reply_cb, COMPOSE_REPLY_TO_SENDER, NULL},
        {N_("/_Message/Repl_y to/mailing _list"),
-                                               "<control>L", reply_cb, COMPOSE_REPLY_TO_LIST, NULL},
-       {N_("/_Message/Follow-up and reply to"),NULL, reply_cb, COMPOSE_FOLLOWUP_AND_REPLY_TO, NULL},
+                                               "<control>L", main_window_reply_cb, COMPOSE_REPLY_TO_LIST, NULL},
+       {N_("/_Message/Follow-up and reply to"),NULL, main_window_reply_cb, COMPOSE_FOLLOWUP_AND_REPLY_TO, NULL},
        {N_("/_Message/---"),                   NULL, NULL, 0, "<Separator>"},
-       {N_("/_Message/_Forward"),              "<control><alt>F", reply_cb, COMPOSE_FORWARD, NULL},
-       {N_("/_Message/Redirect"),              NULL, reply_cb, COMPOSE_REDIRECT, NULL},
+       {N_("/_Message/_Forward"),              "<control><alt>F", main_window_reply_cb, COMPOSE_FORWARD, NULL},
+       {N_("/_Message/Redirect"),              NULL, main_window_reply_cb, COMPOSE_REDIRECT, NULL},
        {N_("/_Message/---"),                   NULL, NULL, 0, "<Separator>"},
        {N_("/_Message/Re-_edit"),              NULL, reedit_cb, 0, NULL},
        {N_("/_Message/---"),                   NULL, NULL, 0, "<Separator>"},
@@ -718,6 +724,9 @@ MainWindow *main_window_create(SeparateType type)
        GtkWidget *offline_pixmap;
        GtkWidget *online_switch;
        GtkWidget *offline_switch;
+       GtkTooltips *offline_tip;
+       GtkTooltips *online_tip;
+       GtkTooltips *sel_ac_tip;
 
        FolderView *folderview;
        SummaryView *summaryview;
@@ -809,8 +818,14 @@ MainWindow *main_window_create(SeparateType type)
 
        online_pixmap = stock_pixmap_widget(hbox_stat, STOCK_PIXMAP_WORK_ONLINE);
        offline_pixmap = stock_pixmap_widget(hbox_stat, STOCK_PIXMAP_WORK_OFFLINE);
+       online_tip = gtk_tooltips_new();
        online_switch = gtk_button_new ();
+       gtk_tooltips_set_tip(GTK_TOOLTIPS(online_tip),
+                            online_switch, _("Go offline"), NULL);
+       offline_tip = gtk_tooltips_new();
        offline_switch = gtk_button_new ();
+       gtk_tooltips_set_tip(GTK_TOOLTIPS(offline_tip),
+                            offline_switch, _("Go online"), NULL);
        gtk_container_add (GTK_CONTAINER(online_switch), online_pixmap);
        gtk_button_set_relief (GTK_BUTTON(online_switch), GTK_RELIEF_NONE);
        gtk_signal_connect (GTK_OBJECT(online_switch), "clicked", (GtkSignalFunc)online_switch_clicked, mainwin);
@@ -823,7 +838,10 @@ MainWindow *main_window_create(SeparateType type)
        statuslabel = gtk_label_new("");
        gtk_box_pack_start(GTK_BOX(hbox_stat), statuslabel, FALSE, FALSE, 0);
 
+       sel_ac_tip = gtk_tooltips_new();
        ac_button = gtk_button_new();
+       gtk_tooltips_set_tip(GTK_TOOLTIPS(sel_ac_tip),
+                            ac_button, _("Select account"), NULL);
        gtk_button_set_relief(GTK_BUTTON(ac_button), GTK_RELIEF_NONE);
        GTK_WIDGET_UNSET_FLAGS(ac_button, GTK_CAN_FOCUS);
        gtk_widget_set_usize(ac_button, -1, 1);
@@ -883,8 +901,8 @@ MainWindow *main_window_create(SeparateType type)
        summaryview->color_dim.red = summaryview->color_dim.green =
                summaryview->color_dim.blue = COLOR_DIM;
 
-       folderview->color_new.red = (guint16)55000;
-       folderview->color_new.green = folderview->color_new.blue = 15000;
+       gtkut_convert_int_to_gdk_color(prefs_common.color_new,
+                                      &folderview->color_new);
 
        gtkut_convert_int_to_gdk_color(prefs_common.tgt_folder_col,
                                       &folderview->color_op);
@@ -995,6 +1013,9 @@ MainWindow *main_window_create(SeparateType type)
        mainwin->menu_lock_count = 0;
        mainwin->cursor_count = 0;
 
+       mainwin->progressindicator_hook =
+               hooks_register_hook(PROGRESSINDICATOR_HOOKLIST, mainwindow_progressindicator_hook, mainwin);
+
        if (!watch_cursor)
                watch_cursor = gdk_cursor_new(GDK_WATCH);
 
@@ -2138,7 +2159,24 @@ static void toggle_toolbar_cb(MainWindow *mainwin, guint action,
        toolbar_toggle(action, mainwin);
 }
 
-/* END Toolbar Stuff */
+void main_window_reply_cb(MainWindow *mainwin, guint action,
+                         GtkWidget *widget)
+{
+       MessageView *msgview = (MessageView*)mainwin->messageview;
+       GSList *msginfo_list = NULL;
+       gchar *body;
+
+       g_return_if_fail(msgview != NULL);
+
+       msginfo_list = summary_get_selection(mainwin->summaryview);
+       g_return_if_fail(msginfo_list != NULL);
+       
+       body = messageview_get_selection(msgview);
+       compose_reply_mode((ComposeMode)action, msginfo_list, body);
+       g_free(body);
+       g_slist_free(msginfo_list);
+}
+
 
 static void toggle_statusbar_cb(MainWindow *mainwin, guint action,
                                GtkWidget *widget)
@@ -2708,6 +2746,25 @@ MainWindow *mainwindow_get_mainwindow(void)
                return NULL;
 }
 
+gboolean mainwindow_progressindicator_hook(gpointer source, gpointer userdata)
+{
+       ProgressData *data = (ProgressData *) source;
+       MainWindow *mainwin = (MainWindow *) userdata;
+
+       switch (data->cmd) {
+       case PROGRESS_COMMAND_START:
+       case PROGRESS_COMMAND_STOP:
+               gtk_progress_set_percentage(GTK_PROGRESS(mainwin->progressbar), 0.0);
+               break;
+       case PROGRESS_COMMAND_SET_PERCENTAGE:
+               gtk_progress_set_percentage(GTK_PROGRESS(mainwin->progressbar), data->value);
+               break;          
+       }
+       while (gtk_events_pending()) gtk_main_iteration ();
+
+       return FALSE;
+}
+
 /*
 * End of Source.
 */