static void compose_actions_execute_cb (Compose *compose,
guint action_nb,
GtkWidget *widget);
+static void msgview_actions_execute_cb (MessageView *msgview,
+ guint action_nb,
+ GtkWidget *widget);
static guint get_action_type (gchar *action);
static gboolean execute_actions (gchar *action,
compose);
}
+
void actions_execute(gpointer data,
guint action_nb,
GtkWidget *widget,
{
if (source == TOOLBAR_MAIN)
mainwin_actions_execute_cb((MainWindow*)data, action_nb, widget);
-
else if (source == TOOLBAR_COMPOSE)
compose_actions_execute_cb((Compose*)data, action_nb, widget);
+ else if (source == TOOLBAR_MSGVIEW)
+ msgview_actions_execute_cb((MessageView*)data, action_nb, widget);
}
textview->msgfont, textview->body_pos, mimeview);
}
+/* FIXME: Code duplication mainwindow_actions_execute_cb
+ */
+static void msgview_actions_execute_cb(MessageView *msgview, guint action_nb,
+ GtkWidget *widget)
+{
+ TextView *textview = NULL;
+ gchar *buf,
+ *action;
+ MimeView *mimeview = NULL;
+
+ g_return_if_fail(action_nb < g_slist_length(prefs_common.actions_list));
+
+ buf = (gchar *)g_slist_nth_data(prefs_common.actions_list, action_nb);
+
+ g_return_if_fail(buf);
+ g_return_if_fail(action = strstr(buf, ": "));
+
+ /* Point to the beginning of the command-line */
+ action += 2;
+
+ switch (msgview->type) {
+ case MVIEW_TEXT:
+ if (msgview->textview && msgview->textview->text)
+ textview = msgview->textview;
+ break;
+ case MVIEW_MIME:
+ if (msgview->mimeview) {
+ mimeview = msgview->mimeview;
+ if (msgview->mimeview->type == MIMEVIEW_TEXT &&
+ msgview->mimeview->textview &&
+ msgview->mimeview->textview->text)
+ textview = msgview->mimeview->textview;
+ }
+ break;
+ }
+
+ execute_actions(action, msgview->window, NULL, textview->text,
+ textview->msgfont, textview->body_pos, mimeview);
+}
+
static gboolean execute_actions(gchar *action, GtkWidget *window,
GtkCTree *ctree, GtkWidget *text,
GdkFont *msgfont, gint body_pos,
return FALSE;
}
+/* depending on toolbar type this function
+ returns a list of available toolbar events being
+ displayed by prefs_toolbar
+*/
GList *toolbar_get_action_items(ToolbarType source)
{
GList *items = NULL;
gint i = 0;
if (source == TOOLBAR_MAIN) {
- gint main_items[13] = { A_RECEIVE_ALL, A_RECEIVE_CUR, A_SEND_QUEUED,
+ 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,
- A_SYL_ACTIONS };
+ A_ADDRBOOK, A_SYL_ACTIONS };
for (i = 0; i < sizeof(main_items)/sizeof(main_items[0]); i++)
items = g_list_append(items, gettext(toolbar_text[main_items[i]].descr));
items = g_list_append(items, gettext(toolbar_text[comp_items[i]].descr));
}
else if (source == TOOLBAR_MSGVIEW) {
- gint msgv_items[8] = { A_COMPOSE_EMAIL, A_REPLY_MESSAGE, A_REPLY_SENDER,
- A_REPLY_ALL, A_REPLY_ML, A_FORWARD,
- A_DELETE, A_GOTO_NEXT };
+ gint msgv_items[10] = { 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++)
items = g_list_append(items, gettext(toolbar_text[msgv_items[i]].descr));
g_return_if_fail(toolbar_item != NULL);
switch (toolbar_item->type) {
+ case TOOLBAR_MAIN:
+ case TOOLBAR_MSGVIEW:
+ compose = NULL;
+ break;
case TOOLBAR_COMPOSE:
compose = (Compose *)toolbar_item->parent;
break;
default:
- compose = NULL;
+ return;
}
addressbook_open(compose);
}
GSList *action_list;
MainWindow *mainwin;
Compose *compose;
+ MessageView *msgview;
+ gpointer parent = toolbar_item->parent;
g_return_if_fail(toolbar_item != NULL);
switch (toolbar_item->type) {
case TOOLBAR_MAIN:
- mainwin = (MainWindow*)toolbar_item->parent;
+ mainwin = (MainWindow*)parent;
action_list = mainwin->toolbar->action_list;
break;
case TOOLBAR_COMPOSE:
- compose = (Compose*)toolbar_item->parent;
+ compose = (Compose*)parent;
action_list = compose->toolbar->action_list;
break;
- /* case TOOLBAR_MSGVIEW: not supported yet */
+ case TOOLBAR_MSGVIEW:
+ msgview = (MessageView*)parent;
+ action_list = msgview->toolbar->action_list;
+ break;
default:
debug_print("toolbar event not supported\n");
return;
}
-
- toolbar_action_execute(widget, action_list, toolbar_item->parent, toolbar_item->type);
+ toolbar_action_execute(widget, action_list, parent, toolbar_item->type);
}
static MainWindow *get_mainwin(gpointer data)