/*
* Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2003-2009 the Claws Mail team
+ * Copyright (C) 2003-2012 the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#ifdef HAVE_CONFIG_H
# include "config.h"
+#include "claws-features.h"
#endif
#include "defs.h"
#include <string.h>
#include <errno.h>
+#if !GTK_CHECK_VERSION(3, 0, 0)
#include "gtkcmoptionmenu.h"
+#endif
#include "main.h"
#include "prefs_gtk.h"
#include "prefs_filtering_action.h"
#include "matcher_parser.h"
#include "colorlabel.h"
#include "combobox.h"
+#include "account.h"
+#ifndef USE_ALT_ADDRBOOK
+ #include "addressbook.h"
+#endif
enum {
PFA_ACTION,
static void prefs_filtering_action_type_selection_changed(GtkWidget *widget,
gpointer user_data);
static void prefs_filtering_action_select_dest(void);
+#ifndef USE_ALT_ADDRBOOK
static void prefs_filtering_action_select_addressbook(void);
+#endif
static void prefs_filtering_action_up(void);
static void prefs_filtering_action_down(void);
static void prefs_filtering_action_set_dialog(GSList *action_list);
GtkWidget *dest_entry;
GtkWidget *dest_btn;
GtkWidget *exec_btn;
+#if !GTK_CHECK_VERSION(3, 0, 0)
GtkWidget *color_optmenu;
+#endif
GtkWidget *header_combo;
GtkWidget *header_entry;
+#ifndef USE_ALT_ADDRBOOK
GtkWidget *addressbook_btn;
+#endif
GtkWidget *score_entry;
GtkWidget *tags_combo;
{ N_("Message flags"), N_("Mark as spam"), ACTION_MARK_AS_SPAM },
{ N_("Message flags"), N_("Mark as ham"), ACTION_MARK_AS_HAM },
{ NULL, N_("Execute"), ACTION_EXECUTE },
+#if !GTK_CHECK_VERSION(3, 0, 0)
{ NULL, N_("Color label"), ACTION_COLOR },
+#endif
{ N_("Resend"), N_("Forward"), ACTION_FORWARD },
{ N_("Resend"), N_("Forward as attachment"), ACTION_FORWARD_AS_ATTACHMENT },
{ N_("Resend"), N_("Redirect"), ACTION_REDIRECT },
if (!filtering_action.window) {
prefs_filtering_action_create();
} else {
+#if !GTK_CHECK_VERSION(3, 0, 0)
/* update color label menu */
gtk_cmoption_menu_set_menu(GTK_CMOPTION_MENU(filtering_action.color_optmenu),
colorlabel_create_color_menu());
+#endif
}
manage_window_set_transient(GTK_WINDOW(filtering_action.window));
prefs_filtering_action_set_dialog(action_list);
gtk_widget_show(filtering_action.window);
+ gtk_window_set_modal(GTK_WINDOW(filtering_action.window), TRUE);
}
/*!
GtkWidget *account_combo;
GtkWidget *header_combo;
GtkWidget *header_entry;
+#ifndef USE_ALT_ADDRBOOK
GtkWidget *addressbook_btn;
+#endif
GtkWidget *dest_entry;
GtkWidget *dest_btn;
GtkWidget *score_entry;
GtkWidget *exec_btn;
+#if !GTK_CHECK_VERSION(3, 0, 0)
GtkWidget *color_optmenu;
+#endif
static GdkGeometry geometry;
window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "prefs_filtering_action");
gtk_container_set_border_width(GTK_CONTAINER(window), VBOX_BORDER);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
- gtk_window_set_modal(GTK_WINDOW(window), TRUE);
gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
vbox = gtk_vbox_new(FALSE, 6);
gtk_table_attach(GTK_TABLE(table), hbox1, 1, 2, 1, 2,
GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
+#if !GTK_CHECK_VERSION(2, 24, 0)
account_combo = gtk_combo_box_new_text ();
+#else
+ account_combo = gtk_combo_box_text_new ();
+#endif
gtk_size_group_add_widget(size_action, account_combo);
for (accounts = account_get_list() ; accounts != NULL;
accounts = accounts->next) {
PrefsAccount *ac = (PrefsAccount *)accounts->data;
gchar *name = g_strdup(ac->account_name);
+#if !GTK_CHECK_VERSION(2, 24, 0)
gtk_combo_box_append_text(GTK_COMBO_BOX(account_combo), (gpointer) name);
+#else
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(account_combo), (gpointer) name);
+#endif
g_free(name);
}
score_entry = gtk_spin_button_new_with_range(-1000, 1000, 1);
gtk_box_pack_start(GTK_BOX(hbox1), score_entry, FALSE, FALSE, 0);
+#if !GTK_CHECK_VERSION(3, 0, 0)
color_optmenu = gtk_cmoption_menu_new();
gtk_size_group_add_widget(size_action, color_optmenu);
gtk_cmoption_menu_set_menu(GTK_CMOPTION_MENU(color_optmenu),
colorlabel_create_color_menu());
prefs_filtering_action_check_widget_width(color_optmenu);
gtk_box_pack_start(GTK_BOX(hbox1), color_optmenu, FALSE, FALSE, 0);
+#endif
+#if !GTK_CHECK_VERSION(2, 24, 0)
tags_combo = gtk_combo_box_new_text ();
+#else
+ tags_combo = gtk_combo_box_text_new ();
+#endif
gtk_size_group_add_widget(size_action, tags_combo);
for (tmp = tags = tags_get_list() ; tmp != NULL;
tmp = tmp->next) {
gchar *name = g_strdup(tags_get_tag(GPOINTER_TO_INT(tmp->data)));
+#if !GTK_CHECK_VERSION(2, 24, 0)
gtk_combo_box_append_text(GTK_COMBO_BOX(tags_combo), (gpointer) name);
+#else
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(tags_combo), (gpointer) name);
+#endif
g_free(name);
}
+ g_slist_free(tags);
prefs_filtering_action_check_widget_width(tags_combo);
gtk_combo_box_set_active(GTK_COMBO_BOX(tags_combo), 0);
gtk_table_attach(GTK_TABLE(table), hbox1, 2, 3, 2, 3,
GTK_FILL, GTK_SHRINK, 0, 0);
- dest_btn = gtk_button_new_with_label (_("Select ..."));
+ dest_btn = gtk_button_new_with_label (_("Select..."));
gtk_box_pack_start (GTK_BOX (hbox1), dest_btn, FALSE, FALSE, 0);
g_signal_connect (G_OBJECT (dest_btn), "clicked",
G_CALLBACK(prefs_filtering_action_select_dest),
NULL);
- addressbook_btn = gtk_button_new_with_label (_("Select ..."));
+#ifndef USE_ALT_ADDRBOOK
+ addressbook_btn = gtk_button_new_with_label (_("Select..."));
gtk_box_pack_start (GTK_BOX (hbox1), addressbook_btn, FALSE, FALSE, 0);
g_signal_connect (G_OBJECT (addressbook_btn), "clicked",
G_CALLBACK(prefs_filtering_action_select_addressbook),
NULL);
+#endif
-#if GTK_CHECK_VERSION(2, 8, 0)
exec_btn = gtk_button_new_from_stock(GTK_STOCK_INFO);
-#else
- exec_btn = gtk_button_new_with_label (_("Info..."));
-#endif
gtk_box_pack_start (GTK_BOX (hbox1), exec_btn, FALSE, FALSE, 0);
g_signal_connect (G_OBJECT (exec_btn), "clicked",
G_CALLBACK(prefs_filtering_action_exec_info),
g_signal_connect(G_OBJECT(reg_btn), "clicked",
G_CALLBACK(prefs_filtering_action_register_cb), NULL);
- subst_btn = gtkut_get_replace_btn(_("Replace"));
+ subst_btn = gtkut_get_replace_btn(_("_Replace"));
gtk_box_pack_start(GTK_BOX(btn_hbox), subst_btn, FALSE, TRUE, 0);
g_signal_connect(G_OBJECT(subst_btn), "clicked",
G_CALLBACK(prefs_filtering_action_substitute_cb),
NULL);
- del_btn = gtk_button_new_from_stock(GTK_STOCK_DELETE);
+ del_btn = gtk_button_new_with_mnemonic (_("D_elete"));
+ gtk_button_set_image(GTK_BUTTON(del_btn),
+ gtk_image_new_from_stock(GTK_STOCK_REMOVE,GTK_ICON_SIZE_BUTTON));
gtk_box_pack_start(GTK_BOX(btn_hbox), del_btn, FALSE, TRUE, 0);
g_signal_connect(G_OBJECT(del_btn), "clicked",
G_CALLBACK(prefs_filtering_action_delete_cb), NULL);
filtering_action.dest_entry = dest_entry;
filtering_action.dest_btn = dest_btn;
filtering_action.exec_btn = exec_btn;
+#if !GTK_CHECK_VERSION(3, 0, 0)
filtering_action.color_optmenu = color_optmenu;
+#endif
filtering_action.score_entry = score_entry;
filtering_action.header_combo = header_combo;
filtering_action.header_entry = header_entry;
+#ifndef USE_ALT_ADDRBOOK
filtering_action.addressbook_btn = addressbook_btn;
+#endif
filtering_action.ok_btn = ok_btn;
filtering_action.action_list_view = action_list_view;
static void prefs_filtering_action_list_view_set_row(GtkTreeIter *row,
FilteringAction *action)
{
- gchar buf[256];
+ gchar *buf;
if (row == NULL && action == NULL) {
prefs_filtering_action_list_view_insert_action
return;
}
- filteringaction_to_string(buf, sizeof buf, action);
+ buf = filteringaction_to_string(action);
prefs_filtering_action_list_view_insert_action
(filtering_action.action_list_view,
row, buf, TRUE);
+ g_free(buf);
}
/*!
return MATCHACTION_REDIRECT;
case ACTION_EXECUTE:
return MATCHACTION_EXECUTE;
+#if !GTK_CHECK_VERSION(3, 0, 0)
case ACTION_COLOR:
return MATCHACTION_COLOR;
+#endif
case ACTION_HIDE:
return MATCHACTION_HIDE;
case ACTION_IGNORE:
return NULL;
}
break;
+#if !GTK_CHECK_VERSION(3, 0, 0)
case ACTION_COLOR:
labelcolor = colorlabel_get_color_menu_active_item(
gtk_cmoption_menu_get_menu(GTK_CMOPTION_MENU(filtering_action.color_optmenu)));
destination = NULL;
break;
+#endif
case ACTION_CHANGE_SCORE:
case ACTION_SET_SCORE:
score = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(
break;
case ACTION_SET_TAG:
case ACTION_UNSET_TAG:
+#if !GTK_CHECK_VERSION(2, 24, 0)
destination = gtk_combo_box_get_active_text(GTK_COMBO_BOX(filtering_action.tags_combo));
+#else
+ destination = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(filtering_action.tags_combo));
+#endif
if (!destination || *destination == '\0') {
if (alert)
alertpanel_error(_("Tag name is empty."));
static gboolean prefs_filtering_action_key_pressed(GtkWidget *widget,
GdkEventKey *event, gpointer data)
{
- if (event && event->keyval == GDK_Escape) {
+ if (event && event->keyval == GDK_KEY_Escape) {
prefs_filtering_action_cancel();
return TRUE;
}
static DescriptionWindow exec_desc_win = {
NULL,
- NULL,
+ NULL,
+ TRUE,
2,
N_("Filtering Action: 'Execute'"),
N_("'Execute' allows you to send a message or message element "
g_free(path);
}
+#ifndef USE_ALT_ADDRBOOK
static void prefs_filtering_action_select_addressbook(void)
{
const gchar *folderpath = NULL;
g_free(new_path);
}
}
+#endif
static void prefs_filtering_action_enable_widget(GtkWidget* widget, const gboolean enable)
{
if(enable == TRUE)
{
+#if !GTK_CHECK_VERSION(2,24,0)
if(GTK_IS_COMBO_BOX(widget) || GTK_IS_COMBO_BOX_ENTRY(widget))
+#else
+ if(GTK_IS_COMBO_BOX(widget))
+#endif
gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 0);
else if(GTK_IS_SPIN_BUTTON(widget))
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), 0);
- else if(GTK_IS_ENTRY(widget)) {
+ else if(GTK_IS_ENTRY(widget))
gtk_entry_set_text(GTK_ENTRY(widget), "");
- } else if(GTK_IS_CMOPTION_MENU(widget))
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ else if(GTK_IS_CMOPTION_MENU(widget))
gtk_cmoption_menu_set_history(GTK_CMOPTION_MENU(widget), 0);
+#endif
gtk_widget_set_sensitive(widget, TRUE);
gtk_widget_show(widget);
prefs_filtering_action_enable_widget(filtering_action.exec_btn,
(value == ACTION_EXECUTE));
+#if !GTK_CHECK_VERSION(3, 0, 0)
prefs_filtering_action_enable_widget(filtering_action.color_optmenu,
(value == ACTION_COLOR));
+#endif
prefs_filtering_action_enable_widget(filtering_action.header_combo,
(value == ACTION_ADD_TO_ADDRESSBOOK));
-
+#ifndef USE_ALT_ADDRBOOK
prefs_filtering_action_enable_widget(filtering_action.addressbook_btn,
(value == ACTION_ADD_TO_ADDRESSBOOK));
-
+#endif
prefs_filtering_action_enable_widget(filtering_action.score_entry,
ACTION_SCORE(value));
case ACTION_MOVE:
gtk_label_set_text(GTK_LABEL(filtering_action.label3), _("Destination"));
break;
+#if !GTK_CHECK_VERSION(3, 0, 0)
case ACTION_COLOR:
gtk_label_set_text(GTK_LABEL(filtering_action.label3), _("Color"));
break;
+#endif
case ACTION_EXECUTE:
gtk_label_set_text(GTK_LABEL(filtering_action.label3), _("Execute"));
break;
gint list_id;
GtkTreeIter iter;
gboolean is_valid;
+ GtkWidget *menu;
if (currently_selected)
return TRUE;
combobox_select_by_data(GTK_COMBO_BOX(filtering_action.action_combo),
ACTION_EXECUTE);
break;
+#if !GTK_CHECK_VERSION(3, 0, 0)
case MATCHACTION_COLOR:
combobox_select_by_data(GTK_COMBO_BOX(filtering_action.action_combo),
ACTION_COLOR);
gtk_cmoption_menu_set_history(GTK_CMOPTION_MENU(filtering_action.color_optmenu),
- action->labelcolor);
+ action->labelcolor + 1);
+ menu = gtk_cmoption_menu_get_menu(GTK_CMOPTION_MENU(
+ filtering_action.color_optmenu));
+ g_signal_emit_by_name(G_OBJECT(menu), "selection-done", menu);
break;
+#endif
case MATCHACTION_CHANGE_SCORE:
combobox_select_by_data(GTK_COMBO_BOX(filtering_action.action_combo),
ACTION_CHANGE_SCORE);
ACTION_CLEAR_TAGS);
break;
default:
- g_warning("unhandled case !\n");
+ g_warning("unhandled action type");
}
if (action->destination)
gtk_entry_set_text(GTK_ENTRY(filtering_action.dest_entry), action->destination);