/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2012 Hiroyuki Yamamoto & The Claws Mail Team
+ * Copyright (C) 1999-2013 Hiroyuki Yamamoto & 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
#include "prefs_filtering_action.h"
#include "matcher_parser.h"
#include "prefs_toolbar.h"
+#include "file-utils.h"
enum {
PREFS_ACTIONS_STRING, /*!< string pointer managed by list store,
gtk_container_set_border_width(GTK_CONTAINER (window), 8);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
+ gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG);
vbox = gtk_vbox_new(FALSE, 6);
gtk_widget_show(vbox);
CLAWS_SET_TIP(reg_btn,
_("Append the new action above to the list"));
- subst_btn = gtkut_get_replace_btn(_("Replace"));
+ subst_btn = gtkut_get_replace_btn(_("_Replace"));
gtk_widget_show(subst_btn);
gtk_box_pack_start(GTK_BOX(btn_hbox), subst_btn, FALSE, TRUE, 0);
g_signal_connect(G_OBJECT(subst_btn), "clicked",
CLAWS_SET_TIP(subst_btn,
_("Replace the selected action in list with the action above"));
- 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_widget_show(del_btn);
gtk_box_pack_start(GTK_BOX(btn_hbox), del_btn, FALSE, TRUE, 0);
g_signal_connect(G_OBJECT(del_btn), "clicked",
CLAWS_SET_TIP(del_btn,
_("Delete the selected action from the list"));
- clear_btn = gtk_button_new_from_stock (GTK_STOCK_CLEAR);
+ clear_btn = gtk_button_new_with_mnemonic (_("C_lear"));
+ gtk_button_set_image(GTK_BUTTON(clear_btn),
+ gtk_image_new_from_stock(GTK_STOCK_CLEAR,GTK_ICON_SIZE_BUTTON));
gtk_widget_show (clear_btn);
gtk_box_pack_start (GTK_BOX (btn_hbox), clear_btn, FALSE, TRUE, 0);
g_signal_connect(G_OBJECT (clear_btn), "clicked",
debug_print("Reading actions configurations...\n");
rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, ACTIONS_RC, NULL);
- if ((fp = g_fopen(rcpath, "rb")) == NULL) {
- if (ENOENT != errno) FILE_OP_ERROR(rcpath, "fopen");
+ if ((fp = claws_fopen(rcpath, "rb")) == NULL) {
+ if (ENOENT != errno) FILE_OP_ERROR(rcpath, "claws_fopen");
g_free(rcpath);
return;
}
g_free(act);
}
- while (fgets(buf, sizeof(buf), fp) != NULL) {
+ while (claws_fgets(buf, sizeof(buf), fp) != NULL) {
const gchar *src_codeset = conv_get_locale_charset_str();
const gchar *dest_codeset = CS_UTF_8;
gchar *tmp;
tmp = conv_codeset_strdup(buf, src_codeset, dest_codeset);
if (!tmp) {
- g_warning("Failed to convert character set of action configuration\n");
+ g_warning("Failed to convert character set of action configuration");
tmp = g_strdup(buf);
}
else
g_free(tmp);
}
- fclose(fp);
+ claws_fclose(fp);
}
void prefs_actions_write_config(void)
rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, ACTIONS_RC, NULL);
if ((pfile= prefs_write_open(rcpath)) == NULL) {
- g_warning("Failed to write configuration to file\n");
+ g_warning("failed to write configuration to file");
g_free(rcpath);
return;
}
act = conv_codeset_strdup(tmp, src_codeset, dest_codeset);
if (!act) {
- g_warning("Failed to convert character set of action configuration\n");
+ g_warning("Failed to convert character set of action configuration");
act = g_strdup(act);
}
- if (fputs(act, pfile->fp) == EOF ||
- fputc('\n', pfile->fp) == EOF) {
- FILE_OP_ERROR(rcpath, "fputs || fputc");
+ if (claws_fputs(act, pfile->fp) == EOF ||
+ claws_fputc('\n', pfile->fp) == EOF) {
+ FILE_OP_ERROR(rcpath, "claws_fputs || claws_fputc");
prefs_file_close_revert(pfile);
g_free(act);
g_free(rcpath);
g_free(rcpath);
if (prefs_file_close(pfile) < 0) {
- g_warning("failed to write configuration to file\n");
+ g_warning("failed to write configuration to file");
return;
}
}
static gint prefs_actions_clist_set_row(gint row)
{
const gchar *entry_text;
- gint len, action_nb;
+ gint len;
gchar action[PREFSBUFSIZE];
gchar *new_action;
return -1;
}
- action_nb = prefs_actions_find_by_name(entry_text);
- if ((action_nb != -1) && ((row == -1) || (row != action_nb + 1))) {
- alertpanel_error(_("There is an action with this name already."));
- return -1;
- }
-
strncpy(action, entry_text, PREFSBUFSIZE - 1);
while (strstr(action, "//")) {
if (alertpanel(_("Delete action"),
_("Do you really want to delete this action?"),
- GTK_STOCK_CANCEL, GTK_STOCK_DELETE, NULL) != G_ALERTALTERNATE)
+ GTK_STOCK_CANCEL, GTK_STOCK_DELETE, NULL, ALERTFOCUS_FIRST) != G_ALERTALTERNATE)
return;
/* XXX: Here's the reason why we need to store the original
if (alertpanel(_("Delete all actions"),
_("Do you really want to delete all the actions?"),
- GTK_STOCK_CANCEL, GTK_STOCK_DELETE, NULL) != G_ALERTDEFAULT)
+ GTK_STOCK_CANCEL, GTK_STOCK_DELETE, NULL, ALERTFOCUS_FIRST) != G_ALERTDEFAULT)
return;
list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(actions.actions_list_view)));
if (modified && alertpanel(_("Entry not saved"),
_("The entry was not saved. Close anyway?"),
- GTK_STOCK_CLOSE, _("+_Continue editing"),
- NULL) != G_ALERTDEFAULT) {
+ GTK_STOCK_CLOSE, _("_Continue editing"), NULL,
+ ALERTFOCUS_SECOND) != G_ALERTDEFAULT) {
return;
} else if (modified_list && alertpanel(_("Actions list not saved"),
_("The actions list has been modified. Close anyway?"),
- GTK_STOCK_CLOSE, _("+_Continue editing"),
- NULL) != G_ALERTDEFAULT) {
+ GTK_STOCK_CLOSE, _("_Continue editing"), NULL,
+ ALERTFOCUS_SECOND) != G_ALERTDEFAULT) {
return;
}
modified = FALSE;
static void prefs_actions_ok(GtkWidget *widget, gpointer data)
{
MainWindow *mainwin = (MainWindow *) data;
- GList *list;
- GList *iter;
+ const GList *list;
+ const GList *iter;
MessageView *msgview;
Compose *compose;
GtkListStore *store;
if (modified && alertpanel(_("Entry not saved"),
_("The entry was not saved. Close anyway?"),
- GTK_STOCK_CLOSE, _("+_Continue editing"),
- NULL) != G_ALERTDEFAULT) {
+ GTK_STOCK_CLOSE, _("_Continue editing"),
+ NULL, ALERTFOCUS_SECOND) != G_ALERTDEFAULT) {
return;
}
modified = FALSE;
static GtkActionEntry prefs_actions_popup_entries[] =
{
- {"PrefsActionsPopup", NULL, "PrefsActionsPopup" },
+ {"PrefsActionsPopup", NULL, "PrefsActionsPopup", NULL, NULL, NULL },
{"PrefsActionsPopup/Delete", NULL, N_("_Delete"), NULL, NULL, G_CALLBACK(prefs_actions_delete_cb) },
{"PrefsActionsPopup/DeleteAll", NULL, N_("Delete _all"), NULL, NULL, G_CALLBACK(prefs_actions_delete_all_cb) },
{"PrefsActionsPopup/Duplicate", NULL, N_("D_uplicate"), NULL, NULL, G_CALLBACK(prefs_actions_duplicate_cb) },
list_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(model));
g_object_unref(model);
-#ifndef MAEMO
g_signal_connect(G_OBJECT(list_view), "popup-menu",
G_CALLBACK(prefs_actions_list_popup_menu), list_view);
-#else
- gtk_widget_tap_and_hold_setup(GTK_WIDGET(list_view), NULL, NULL,
- GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
- g_signal_connect(G_OBJECT(list_view), "tap-and-hold",
- G_CALLBACK(prefs_actions_list_popup_menu), list_view);
-#endif
g_signal_connect(G_OBJECT(list_view), "button-press-event",
G_CALLBACK(prefs_actions_list_btn_pressed), list_view);
if(modified && alertpanel(_("Entry was modified"),
_("Opening the filter action dialog will clear current modifications "
"of the command line."),
- GTK_STOCK_CANCEL, _("+_Continue editing"), NULL) != G_ALERTDEFAULT)
+ GTK_STOCK_CANCEL, _("_Continue editing"), NULL, ALERTFOCUS_SECOND) != G_ALERTDEFAULT)
return;
*/
action_str = gtk_editable_get_chars(GTK_EDITABLE(actions.cmd_entry), 0, -1);
g_strfreev(tokens);
}
+ prefs_actions_write_config();
}
gint prefs_actions_find_by_name(const gchar *name)