/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2005 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2012 Hiroyuki Yamamoto and 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
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
+#include "claws-features.h"
#endif
#include "defs.h"
GtkWidget *cancel_btn;
GtkWidget *hdr_combo;
- GtkWidget *hdr_entry;
GtkWidget *key_check;
GtkWidget *headers_list_view;
GtkWidget *hidden_headers_list_view;
static GtkWidget *prefs_display_header_list_view_create (const gchar *name);
static void prefs_filtering_create_list_view_columns (GtkWidget *list_view,
const gchar *name);
-static void headers_list_model_row_changed (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- GtkTreeView *list_view);
static void headers_list_model_rows_reordered (GtkTreeModel *model,
GtkTreePath *path,
GtkTreeIter *iter,
gpointer arg,
GtkTreeView *list_view);
-static void drag_begin (GtkTreeView *list_view,
- GdkDragContext *context,
- gpointer data);
-
static void drag_end (GtkTreeView *list_view,
GdkDragContext *context,
gpointer data);
+#ifndef GENERIC_UMPC
static gchar *defaults[] =
{
"From",
"To",
"Cc",
+ "Bcc",
+ "Subject",
+ "Date",
"Reply-To",
+ "Sender",
+ "User-Agent",
+ "X-Mailer",
"Newsgroups",
"Followup-To",
- "Subject",
- "Date",
- "Sender",
"Organization",
- "X-Mailer",
"X-Newsreader",
- "User-Agent",
"-Received",
"-Message-ID",
"-In-Reply-To",
"-References",
- "-Mime-Version",
+ "-MIME-Version",
"-Content-Type",
"-Content-Transfer-Encoding",
"-X-UIDL",
"-Priority",
"-X-Face"
};
-
+#else
+static gchar *defaults[] =
+{
+ "From",
+ "To",
+ "Cc",
+ "Bcc",
+ "Subject",
+ "Date",
+ "Newsgroups",
+ "Followup-To",
+ "-Reply-To",
+ "-Sender",
+ "-User-Agent",
+ "-X-Mailer",
+ "-Organization",
+ "-X-Newsreader",
+ "-Received",
+ "-Message-ID",
+ "-In-Reply-To",
+ "-References",
+ "-MIME-Version",
+ "-Content-Type",
+ "-Content-Transfer-Encoding",
+ "-X-UIDL",
+ "-Precedence",
+ "-Status",
+ "-Priority",
+ "-X-Face"
+};
+#endif
static void prefs_display_header_set_default(void)
{
gint i;
prefs_display_header_set_dialog();
gtk_widget_show(dispheader.window);
+ gtk_window_set_modal(GTK_WINDOW(dispheader.window), TRUE);
}
static void prefs_display_header_create(void)
GtkWidget *hidden_headers_list_view;
GtkWidget *checkbtn_other_headers;
-
+ gint i;
+
debug_print("Creating display header setting window...\n");
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "prefs_display_header");
gtk_container_set_border_width (GTK_CONTAINER (window), 8);
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_widget_show (btn_hbox);
gtk_box_pack_end (GTK_BOX (vbox), btn_hbox, FALSE, FALSE, 0);
- gtkut_stock_button_set_create(&confirm_area, &ok_btn, GTK_STOCK_OK,
- &cancel_btn, GTK_STOCK_CANCEL,
+ gtkut_stock_button_set_create(&confirm_area, &cancel_btn, GTK_STOCK_CANCEL,
+ &ok_btn, GTK_STOCK_OK,
NULL, NULL);
gtk_widget_show (confirm_area);
gtk_box_pack_end (GTK_BOX(btn_hbox), confirm_area, FALSE, FALSE, 0);
gtk_widget_show (hdr_label);
gtk_box_pack_start (GTK_BOX (hbox1), hdr_label, FALSE, FALSE, 0);
- hdr_combo = gtk_combo_new ();
+#if !GTK_CHECK_VERSION(2, 24, 0)
+ hdr_combo = gtk_combo_box_entry_new_text();
+#else
+ hdr_combo = gtk_combo_box_text_new_with_entry();
+#endif
+ for(i=0; i < 9 ; i++)
+#if !GTK_CHECK_VERSION(2, 24, 0)
+ gtk_combo_box_append_text(GTK_COMBO_BOX (hdr_combo),
+#else
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT (hdr_combo),
+#endif
+ (*defaults[i] == '-') ? defaults[i]+1 : defaults[i]);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(hdr_combo), 0);
gtk_widget_show (hdr_combo);
gtk_box_pack_start (GTK_BOX (hbox1), hdr_combo, TRUE, TRUE, 0);
gtk_widget_set_size_request (hdr_combo, 150, -1);
- gtkut_combo_set_items (GTK_COMBO (hdr_combo),
- "From", "To", "Cc", "Subject", "Date",
- "Reply-To", "Sender", "User-Agent", "X-Mailer",
- NULL);
list_view_hbox = gtk_hbox_new (FALSE, 10);
gtk_widget_show (list_view_hbox);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (list_view_scrolledwin),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(list_view_scrolledwin),
+ GTK_SHADOW_IN);
headers_list_view = prefs_display_header_list_view_create
(_("Displayed Headers"));
gtk_container_add(GTK_CONTAINER(list_view_scrolledwin), headers_list_view);
gtk_tree_view_set_reorderable(GTK_TREE_VIEW(headers_list_view), TRUE);
- g_signal_connect(G_OBJECT(headers_list_view), "drag_begin",
- G_CALLBACK(drag_begin),
- headers_list_view);
-
g_signal_connect(G_OBJECT(headers_list_view), "drag_end",
G_CALLBACK(drag_end),
headers_list_view);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (list_view_scrolledwin),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(list_view_scrolledwin),
+ GTK_SHADOW_IN);
hidden_headers_list_view = prefs_display_header_list_view_create
(_("Hidden headers"));
G_CALLBACK
(prefs_display_header_register_cb),
GINT_TO_POINTER(TRUE));
- del_btn = gtk_button_new_from_stock (GTK_STOCK_REMOVE);
+ del_btn = gtk_button_new_from_stock (GTK_STOCK_DELETE);
gtk_widget_show (del_btn);
gtk_box_pack_start (GTK_BOX (btn_vbox), del_btn, FALSE, TRUE, 0);
g_signal_connect (G_OBJECT (del_btn), "clicked",
G_CALLBACK (prefs_display_header_delete_cb),
hidden_headers_list_view);
- PACK_CHECK_BUTTON (btn_hbox, checkbtn_other_headers,
+
+
+ PACK_CHECK_BUTTON (vbox, checkbtn_other_headers,
_("Show all unspecified headers"));
SET_TOGGLE_SENSITIVITY (checkbtn_other_headers, list_view_hbox2);
dispheader.cancel_btn = cancel_btn;
dispheader.hdr_combo = hdr_combo;
- dispheader.hdr_entry = GTK_COMBO (hdr_combo)->entry;
dispheader.headers_list_view = headers_list_view;
dispheader.hidden_headers_list_view = hidden_headers_list_view;
rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S,
DISPLAY_HEADER_RC, NULL);
- if ((fp = fopen(rcpath, "rb")) == NULL) {
+ if ((fp = g_fopen(rcpath, "rb")) == NULL) {
if (ENOENT != errno) FILE_OP_ERROR(rcpath, "fopen");
g_free(rcpath);
prefs_common.disphdr_list = NULL;
fclose(fp);
}
-void prefs_display_header_write_config(void)
+static void prefs_display_header_write_config(void)
{
gchar *rcpath;
PrefFile *pfile;
DISPLAY_HEADER_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;
}
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;
}
}
{
GtkTreeView *list_view;
DisplayHeaderProp *dp;
- const gchar *entry_text;
+ gchar *entry_text;
GtkTreeModel *model;
- entry_text = gtk_entry_get_text(GTK_ENTRY(dispheader.hdr_entry));
- if (entry_text[0] == '\0') {
+#if !GTK_CHECK_VERSION(2, 24, 0)
+ entry_text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(dispheader.hdr_combo));
+#else
+ entry_text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(dispheader.hdr_combo));
+#endif
+ if (!entry_text)
+ entry_text = gtk_editable_get_chars(
+ GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(dispheader.hdr_combo))),0,-1);
+ if (!entry_text || entry_text[0] == '\0') {
alertpanel_error(_("Header name is not set."));
return;
}
dp->name, dp);
prefs_display_header_set_list();
+
+ g_free(entry_text);
}
static void prefs_display_header_register_cb(GtkButton *btn,
{
GtkTreePath *prev, *sel, *try;
GtkTreeIter isel;
- GtkListStore *store;
+ GtkListStore *store = NULL;
+ GtkTreeModel *model = NULL;
GtkTreeIter iprev;
if (!gtk_tree_selection_get_selected
(gtk_tree_view_get_selection
(GTK_TREE_VIEW(dispheader.headers_list_view)),
- (GtkTreeModel **) &store,
+ &model,
&isel))
return;
-
+ store = (GtkListStore *)model;
sel = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &isel);
if (!sel)
return;
static void prefs_display_header_down(void)
{
- GtkListStore *store;
+ GtkListStore *store = NULL;
+ GtkTreeModel *model = NULL;
GtkTreeIter next, sel;
GtkTreePath *try;
if (!gtk_tree_selection_get_selected
(gtk_tree_view_get_selection
(GTK_TREE_VIEW(dispheader.headers_list_view)),
- (GtkTreeModel **) &store,
+ &model,
&sel))
return;
-
+ store = (GtkListStore *)model;
try = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &sel);
if (!try)
return;
GdkEventKey *event,
gpointer data)
{
- if (event && event->keyval == GDK_Escape)
+ if (event && event->keyval == GDK_KEY_Escape)
prefs_display_header_cancel();
return FALSE;
}
(GTK_TOGGLE_BUTTON(dispheader.other_headers));
prefs_display_header_write_config();
gtk_widget_hide(dispheader.window);
+ gtk_window_set_modal(GTK_WINDOW(dispheader.window), FALSE);
}
static void prefs_display_header_cancel(void)
{
prefs_display_header_read_config();
gtk_widget_hide(dispheader.window);
+ gtk_window_set_modal(GTK_WINDOW(dispheader.window), FALSE);
}
static gint prefs_display_header_deleted(GtkWidget *widget, GdkEventAny *event,
/* add new */
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
- PREFS_HDR_HEADER, name,
+ PREFS_HDR_HEADER,
+ name,
PREFS_HDR_DATA, dp,
-1);
}
g_object_unref(G_OBJECT(model));
gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(list_view),
- prefs_common.enable_rules_hint);
+ prefs_common.use_stripes_everywhere);
selector = gtk_tree_view_get_selection(GTK_TREE_VIEW(list_view));
gtk_tree_selection_set_mode(selector, GTK_SELECTION_BROWSE);
gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), column);
}
-/*!
- *\brief Called as a result of a drag & drop
- */
-static void headers_list_model_row_changed(GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- GtkTreeView *list_view)
-{
- prefs_display_header_set_list();
-}
-
/*!
*\brief Called as a result of a gtk_list_store_swap()
*/
prefs_display_header_set_list();
}
-static void drag_begin(GtkTreeView *list_view,
- GdkDragContext *context,
- gpointer data)
-{
- /* XXX unfortunately a completed drag & drop does not emit
- * a "rows_reordered" signal, but a "row_changed" signal.
- * So during drag and drop, listen to "row_changed", and
- * update the account list accordingly */
-
- GtkTreeModel *model = gtk_tree_view_get_model(list_view);
- g_signal_connect(G_OBJECT(model), "row_changed",
- G_CALLBACK(headers_list_model_row_changed),
- list_view);
-}
-
+/*!
+ *\brief Called as a result of a drag & drop
+ */
static void drag_end(GtkTreeView *list_view,
GdkDragContext *context,
gpointer data)
{
- GtkTreeModel *model = gtk_tree_view_get_model(list_view);
- g_signal_handlers_disconnect_by_func(G_OBJECT(model),
- G_CALLBACK(headers_list_model_row_changed),
- list_view);
+ prefs_display_header_set_list();
}