#include "gtkutils.h"
#include "alertpanel.h"
-static struct Headers {
+static struct CustomHdr {
GtkWidget *window;
GtkWidget *ok_btn;
GtkWidget *hdr_combo;
GtkWidget *hdr_entry;
GtkWidget *key_entry;
- GtkWidget *headers_clist;
-} headers;
+ GtkWidget *customhdr_clist;
+} customhdr;
#define VSPACING 12
#define VSPACING_NARROW 4
#define PREFSBUFSIZE 1024
/* widget creating functions */
-static void prefs_headers_create (void);
+static void prefs_custom_header_create (void);
-static void prefs_headers_set_dialog (PrefsAccount *ac);
-static void prefs_headers_set_list (PrefsAccount *ac);
-static gint prefs_headers_clist_set_row (PrefsAccount *ac,
- gint row);
+static void prefs_custom_header_set_dialog (PrefsAccount *ac);
+static void prefs_custom_header_set_list (PrefsAccount *ac);
+static gint prefs_custom_header_clist_set_row (PrefsAccount *ac,
+ gint row);
/* callback functions */
-static void prefs_headers_register_cb (void);
-static void prefs_headers_substitute_cb (void);
-static void prefs_headers_delete_cb (void);
-static void prefs_headers_up (void);
-static void prefs_headers_down (void);
-static void prefs_headers_select (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event);
-
-static void prefs_headers_key_pressed (GtkWidget *widget,
- GdkEventKey *event,
- gpointer data);
-static void prefs_headers_ok (GtkButton *button);
-static void prefs_headers_cancel (GtkButton *button);
-static gint prefs_headers_deleted (GtkWidget *widget,
- GdkEventAny *event,
- gpointer data);
+static void prefs_custom_header_add_cb (void);
+static void prefs_custom_header_delete_cb (void);
+static void prefs_custom_header_up (void);
+static void prefs_custom_header_down (void);
+static void prefs_custom_header_select (GtkCList *clist,
+ gint row,
+ gint column,
+ GdkEvent *event);
+
+static void prefs_custom_header_row_moved (GtkCList *clist,
+ gint source_row,
+ gint dest_row,
+ gpointer data);
+
+static void prefs_custom_header_key_pressed (GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer data);
+static void prefs_custom_header_ok (void);
+static void prefs_custom_header_cancel (void);
+static gint prefs_custom_header_deleted (GtkWidget *widget,
+ GdkEventAny *event,
+ gpointer data);
static PrefsAccount *cur_ac = NULL;
-void prefs_headers_open(PrefsAccount *ac)
+void prefs_custom_header_open(PrefsAccount *ac)
{
- if (!headers.window) {
- prefs_headers_create();
+ if (!customhdr.window) {
+ prefs_custom_header_create();
}
- manage_window_set_transient(GTK_WINDOW(headers.window));
- gtk_widget_grab_focus(headers.ok_btn);
+ manage_window_set_transient(GTK_WINDOW(customhdr.window));
+ gtk_widget_grab_focus(customhdr.ok_btn);
- prefs_headers_set_dialog(ac);
+ prefs_custom_header_set_dialog(ac);
cur_ac = ac;
- gtk_widget_show(headers.window);
+ gtk_widget_show(customhdr.window);
}
-static void prefs_headers_create(void)
+static void prefs_custom_header_create(void)
{
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *reg_hbox;
GtkWidget *btn_hbox;
GtkWidget *arrow;
- GtkWidget *reg_btn;
- GtkWidget *subst_btn;
+ GtkWidget *add_btn;
GtkWidget *del_btn;
GtkWidget *ch_hbox;
GtkWidget *ch_scrolledwin;
- GtkWidget *headers_clist;
+ GtkWidget *customhdr_clist;
GtkWidget *btn_vbox;
GtkWidget *up_btn;
gchar *title[] = {_("Custom headers")};
- debug_print(_("Creating headers setting window...\n"));
+ debug_print(_("Creating custom header setting window...\n"));
window = gtk_window_new (GTK_WINDOW_DIALOG);
gtk_container_set_border_width (GTK_CONTAINER (window), 8);
gtk_box_pack_end (GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
gtk_widget_grab_default (ok_btn);
- gtk_window_set_title (GTK_WINDOW(window),
- _("Headers setting"));
- gtk_signal_connect (GTK_OBJECT(window), "delete_event",
- GTK_SIGNAL_FUNC(prefs_headers_deleted), NULL);
- gtk_signal_connect (GTK_OBJECT(window), "key_press_event",
- GTK_SIGNAL_FUNC(prefs_headers_key_pressed), NULL);
+ gtk_window_set_title (GTK_WINDOW(window), _("Custom header setting"));
gtk_signal_connect (GTK_OBJECT(window), "focus_in_event",
GTK_SIGNAL_FUNC(manage_window_focus_in), NULL);
gtk_signal_connect (GTK_OBJECT(window), "focus_out_event",
GTK_SIGNAL_FUNC(manage_window_focus_out), NULL);
+ gtk_signal_connect (GTK_OBJECT(window), "delete_event",
+ GTK_SIGNAL_FUNC(prefs_custom_header_deleted),
+ NULL);
+ gtk_signal_connect (GTK_OBJECT(window), "key_press_event",
+ GTK_SIGNAL_FUNC(prefs_custom_header_key_pressed),
+ NULL);
gtk_signal_connect (GTK_OBJECT(ok_btn), "clicked",
- GTK_SIGNAL_FUNC(prefs_headers_ok), NULL);
+ GTK_SIGNAL_FUNC(prefs_custom_header_ok), NULL);
gtk_signal_connect (GTK_OBJECT(cancel_btn), "clicked",
- GTK_SIGNAL_FUNC(prefs_headers_cancel), NULL);
+ GTK_SIGNAL_FUNC(prefs_custom_header_cancel), NULL);
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
gtk_table_attach (GTK_TABLE (table1), hdr_combo, 0, 1, 1, 2,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
0, 0, 0);
- gtk_widget_set_usize (hdr_combo, 150 /* 96 */, -1);
+ gtk_widget_set_usize (hdr_combo, 150, -1);
gtkut_combo_set_items (GTK_COMBO (hdr_combo),
"User-Agent", "X-Operating-System", NULL);
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
0, 0, 0);
- /* register / substitute / delete */
+ /* add / delete */
reg_hbox = gtk_hbox_new (FALSE, 4);
gtk_widget_show (reg_hbox);
- gtk_box_pack_start (GTK_BOX (vbox1), reg_hbox,
- FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox1), reg_hbox, FALSE, FALSE, 0);
arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
gtk_widget_show (arrow);
gtk_widget_show (btn_hbox);
gtk_box_pack_start (GTK_BOX (reg_hbox), btn_hbox, FALSE, FALSE, 0);
- reg_btn = gtk_button_new_with_label (_("Add"));
- gtk_widget_show (reg_btn);
- gtk_box_pack_start (GTK_BOX (btn_hbox), reg_btn, FALSE, TRUE, 0);
- gtk_signal_connect (GTK_OBJECT (reg_btn), "clicked",
- GTK_SIGNAL_FUNC (prefs_headers_register_cb), NULL);
-
- subst_btn = gtk_button_new_with_label (_(" Substitute "));
- gtk_widget_show (subst_btn);
- gtk_box_pack_start (GTK_BOX (btn_hbox), subst_btn, FALSE, TRUE, 0);
- gtk_signal_connect (GTK_OBJECT (subst_btn), "clicked",
- GTK_SIGNAL_FUNC (prefs_headers_substitute_cb),
+ add_btn = gtk_button_new_with_label (_("Add"));
+ gtk_widget_show (add_btn);
+ gtk_box_pack_start (GTK_BOX (btn_hbox), add_btn, FALSE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (add_btn), "clicked",
+ GTK_SIGNAL_FUNC (prefs_custom_header_add_cb),
NULL);
- del_btn = gtk_button_new_with_label (_("Delete"));
+ del_btn = gtk_button_new_with_label (_(" Delete "));
gtk_widget_show (del_btn);
gtk_box_pack_start (GTK_BOX (btn_hbox), del_btn, FALSE, TRUE, 0);
gtk_signal_connect (GTK_OBJECT (del_btn), "clicked",
- GTK_SIGNAL_FUNC (prefs_headers_delete_cb), NULL);
+ GTK_SIGNAL_FUNC (prefs_custom_header_delete_cb),
+ NULL);
ch_hbox = gtk_hbox_new (FALSE, 8);
gtk_widget_show (ch_hbox);
- gtk_box_pack_start (GTK_BOX (vbox1), ch_hbox,
- TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox1), ch_hbox, TRUE, TRUE, 0);
ch_scrolledwin = gtk_scrolled_window_new (NULL, NULL);
- gtk_widget_set_usize (ch_scrolledwin, -1, 100);
+ gtk_widget_set_usize (ch_scrolledwin, -1, 150);
gtk_widget_show (ch_scrolledwin);
- gtk_box_pack_start (GTK_BOX (ch_hbox), ch_scrolledwin,
- TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (ch_hbox), ch_scrolledwin, TRUE, TRUE, 0);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (ch_scrolledwin),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
- headers_clist = gtk_clist_new_with_titles(1, title);
- gtk_widget_show (headers_clist);
- gtk_container_add (GTK_CONTAINER (ch_scrolledwin), headers_clist);
- gtk_clist_set_column_width (GTK_CLIST (headers_clist), 0, 80);
- gtk_clist_set_selection_mode (GTK_CLIST (headers_clist),
+ customhdr_clist = gtk_clist_new_with_titles(1, title);
+ gtk_widget_show (customhdr_clist);
+ gtk_container_add (GTK_CONTAINER (ch_scrolledwin), customhdr_clist);
+ gtk_clist_set_column_width (GTK_CLIST (customhdr_clist), 0, 80);
+ gtk_clist_set_selection_mode (GTK_CLIST (customhdr_clist),
GTK_SELECTION_BROWSE);
- GTK_WIDGET_UNSET_FLAGS (GTK_CLIST (headers_clist)->column[0].button,
+ gtk_clist_set_reorderable (GTK_CLIST (customhdr_clist), TRUE);
+ gtk_clist_set_use_drag_icons (GTK_CLIST (customhdr_clist), FALSE);
+ GTK_WIDGET_UNSET_FLAGS (GTK_CLIST (customhdr_clist)->column[0].button,
GTK_CAN_FOCUS);
- gtk_signal_connect (GTK_OBJECT (headers_clist), "select_row",
- GTK_SIGNAL_FUNC (prefs_headers_select),
+ gtk_signal_connect (GTK_OBJECT (customhdr_clist), "select_row",
+ GTK_SIGNAL_FUNC (prefs_custom_header_select),
NULL);
-
+ gtk_signal_connect_after
+ (GTK_OBJECT (customhdr_clist), "row_move",
+ GTK_SIGNAL_FUNC (prefs_custom_header_row_moved), NULL);
btn_vbox = gtk_vbox_new (FALSE, 8);
gtk_widget_show (btn_vbox);
gtk_widget_show (up_btn);
gtk_box_pack_start (GTK_BOX (btn_vbox), up_btn, FALSE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT (up_btn), "clicked",
- GTK_SIGNAL_FUNC (prefs_headers_up), NULL);
+ GTK_SIGNAL_FUNC (prefs_custom_header_up), NULL);
down_btn = gtk_button_new_with_label (_("Down"));
gtk_widget_show (down_btn);
gtk_box_pack_start (GTK_BOX (btn_vbox), down_btn, FALSE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT (down_btn), "clicked",
- GTK_SIGNAL_FUNC (prefs_headers_down), NULL);
+ GTK_SIGNAL_FUNC (prefs_custom_header_down), NULL);
gtk_widget_show_all(window);
- headers.window = window;
- headers.ok_btn = ok_btn;
- headers.cancel_btn = cancel_btn;
+ customhdr.window = window;
+ customhdr.ok_btn = ok_btn;
+ customhdr.cancel_btn = cancel_btn;
- headers.hdr_combo = hdr_combo;
- headers.hdr_entry = GTK_COMBO (hdr_combo)->entry;
- headers.key_entry = key_entry;
+ customhdr.hdr_combo = hdr_combo;
+ customhdr.hdr_entry = GTK_COMBO (hdr_combo)->entry;
+ customhdr.key_entry = key_entry;
- headers.headers_clist = headers_clist;
+ customhdr.customhdr_clist = customhdr_clist;
}
-void prefs_headers_read_config(PrefsAccount *ac)
+void prefs_custom_header_read_config(PrefsAccount *ac)
{
gchar *rcpath;
FILE *fp;
gchar buf[PREFSBUFSIZE];
CustomHeader *ch;
- debug_print(_("Reading headers configuration...\n"));
+ debug_print(_("Reading custom header configuration...\n"));
rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S,
CUSTOM_HEADER_RC, NULL);
fclose(fp);
}
-void prefs_headers_write_config(PrefsAccount *ac)
+void prefs_custom_header_write_config(PrefsAccount *ac)
{
gchar *rcpath;
PrefFile *pfile;
GSList *all_hdrs = NULL;
- debug_print(_("Writing headers configuration...\n"));
+ debug_print(_("Writing custom header configuration...\n"));
rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S,
CUSTOM_HEADER_RC, NULL);
}
}
-static void prefs_headers_set_dialog(PrefsAccount *ac)
+static void prefs_custom_header_set_dialog(PrefsAccount *ac)
{
- GtkCList *clist = GTK_CLIST(headers.headers_clist);
+ GtkCList *clist = GTK_CLIST(customhdr.customhdr_clist);
GSList *cur;
gchar *ch_str[1];
gint row;
gtk_clist_freeze(clist);
gtk_clist_clear(clist);
- ch_str[0] = _("(New)");
- row = gtk_clist_append(clist, ch_str);
- gtk_clist_set_row_data(clist, row, NULL);
-
for (cur = ac->customhdr_list; cur != NULL; cur = cur->next) {
CustomHeader *ch = (CustomHeader *)cur->data;
- ch_str[0] = g_strdup_printf("%s: %s", ch->name, ch->value);
+ ch_str[0] = g_strdup_printf("%s: %s", ch->name,
+ ch->value ? ch->value : "");
row = gtk_clist_append(clist, ch_str);
gtk_clist_set_row_data(clist, row, ch);
gtk_clist_thaw(clist);
}
-static void prefs_headers_set_list(PrefsAccount *ac)
+static void prefs_custom_header_set_list(PrefsAccount *ac)
{
- gint row = 1;
+ gint row = 0;
CustomHeader *ch;
g_slist_free(ac->customhdr_list);
ac->customhdr_list = NULL;
- while ((ch = gtk_clist_get_row_data(GTK_CLIST(headers.headers_clist),
- row)) != NULL) {
- ac->customhdr_list = g_slist_append(ac->customhdr_list,
- ch);
+ while ((ch = gtk_clist_get_row_data
+ (GTK_CLIST(customhdr.customhdr_clist), row)) != NULL) {
+ ac->customhdr_list = g_slist_append(ac->customhdr_list, ch);
row++;
}
}
-static gint prefs_headers_clist_set_row(PrefsAccount *ac, gint row)
+static gint prefs_custom_header_clist_set_row(PrefsAccount *ac, gint row)
{
- GtkCList *clist = GTK_CLIST(headers.headers_clist);
+ GtkCList *clist = GTK_CLIST(customhdr.customhdr_clist);
CustomHeader *ch;
gchar *entry_text;
gchar *ch_str[1];
- g_return_val_if_fail(row != 0, -1);
-
- entry_text = gtk_entry_get_text(GTK_ENTRY(headers.hdr_entry));
+ entry_text = gtk_entry_get_text(GTK_ENTRY(customhdr.hdr_entry));
if (entry_text[0] == '\0') {
alertpanel_error(_("Header name is not set."));
return -1;
ch->name = g_strdup(entry_text);
- entry_text = gtk_entry_get_text(GTK_ENTRY(headers.key_entry));
+ entry_text = gtk_entry_get_text(GTK_ENTRY(customhdr.key_entry));
if (entry_text[0] != '\0')
ch->value = g_strdup(entry_text);
- ch_str[0] = g_strdup_printf("%s: %s", ch->name, ch->value);
+ ch_str[0] = g_strdup_printf("%s: %s", ch->name,
+ ch->value ? ch->value : "");
if (row < 0)
row = gtk_clist_append(clist, ch_str);
else {
- CustomHeader *tmpch;
+ CustomHeader *tmp_ch;
gtk_clist_set_text(clist, row, 0, ch_str[0]);
- tmpch = gtk_clist_get_row_data(clist, row);
- if (tmpch)
- custom_header_free(tmpch);
+ tmp_ch = gtk_clist_get_row_data(clist, row);
+ if (tmp_ch)
+ custom_header_free(tmp_ch);
}
gtk_clist_set_row_data(clist, row, ch);
g_free(ch_str[0]);
- prefs_headers_set_list(cur_ac);
+ prefs_custom_header_set_list(cur_ac);
return row;
}
-static void prefs_headers_register_cb(void)
-{
- prefs_headers_clist_set_row(cur_ac, -1);
-}
-
-static void prefs_headers_substitute_cb(void)
+static void prefs_custom_header_add_cb(void)
{
- GtkCList *clist = GTK_CLIST(headers.headers_clist);
- CustomHeader *ch;
- gint row;
-
- if (!clist->selection) return;
-
- row = GPOINTER_TO_INT(clist->selection->data);
- if (row == 0) return;
-
- ch = gtk_clist_get_row_data(clist, row);
- if (!ch) return;
-
- prefs_headers_clist_set_row(cur_ac, row);
+ prefs_custom_header_clist_set_row(cur_ac, -1);
}
-static void prefs_headers_delete_cb(void)
+static void prefs_custom_header_delete_cb(void)
{
- GtkCList *clist = GTK_CLIST(headers.headers_clist);
+ GtkCList *clist = GTK_CLIST(customhdr.customhdr_clist);
CustomHeader *ch;
gint row;
if (!clist->selection) return;
row = GPOINTER_TO_INT(clist->selection->data);
- if (row == 0) return;
if (alertpanel(_("Delete header"),
_("Do you really want to delete this header?"),
cur_ac->customhdr_list = g_slist_remove(cur_ac->customhdr_list, ch);
}
-static void prefs_headers_up(void)
+static void prefs_custom_header_up(void)
{
- GtkCList *clist = GTK_CLIST(headers.headers_clist);
+ GtkCList *clist = GTK_CLIST(customhdr.customhdr_clist);
gint row;
if (!clist->selection) return;
row = GPOINTER_TO_INT(clist->selection->data);
- if (row > 1) {
+ if (row > 0)
gtk_clist_row_move(clist, row, row - 1);
- prefs_headers_set_list(cur_ac);
- }
}
-static void prefs_headers_down(void)
+static void prefs_custom_header_down(void)
{
- GtkCList *clist = GTK_CLIST(headers.headers_clist);
+ GtkCList *clist = GTK_CLIST(customhdr.customhdr_clist);
gint row;
if (!clist->selection) return;
row = GPOINTER_TO_INT(clist->selection->data);
- if (row > 0 && row < clist->rows - 1) {
+ if (row >= 0 && row < clist->rows - 1)
gtk_clist_row_move(clist, row, row + 1);
- prefs_headers_set_list(cur_ac);
- }
}
#define ENTRY_SET_TEXT(entry, str) \
gtk_entry_set_text(GTK_ENTRY(entry), str ? str : "")
-static void prefs_headers_select(GtkCList *clist, gint row, gint column,
- GdkEvent *event)
+static void prefs_custom_header_select(GtkCList *clist, gint row, gint column,
+ GdkEvent *event)
{
- CustomHeader *ch;
- CustomHeader default_ch = { 0, "", NULL };
-
- ch = gtk_clist_get_row_data(clist, row);
- if (!ch)
- ch = &default_ch;
-
- ENTRY_SET_TEXT(headers.hdr_entry, ch->name);
- ENTRY_SET_TEXT(headers.key_entry, ch->value);
+ CustomHeader *ch;
+ CustomHeader default_ch = { 0, "", NULL };
+
+ ch = gtk_clist_get_row_data(clist, row);
+ if (!ch) ch = &default_ch;
+
+ ENTRY_SET_TEXT(customhdr.hdr_entry, ch->name);
+ ENTRY_SET_TEXT(customhdr.key_entry, ch->value);
}
#undef ENTRY_SET_TEXT
-static void prefs_headers_key_pressed(GtkWidget *widget, GdkEventKey *event,
- gpointer data)
+static void prefs_custom_header_row_moved(GtkCList *clist, gint source_row,
+ gint dest_row, gpointer data)
+{
+ prefs_custom_header_set_list(cur_ac);
+}
+
+static void prefs_custom_header_key_pressed(GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer data)
{
if (event && event->keyval == GDK_Escape)
- gtk_widget_hide(headers.window);
+ prefs_custom_header_cancel();
}
-static void prefs_headers_ok(GtkButton *button)
+static void prefs_custom_header_ok(void)
{
- prefs_headers_write_config(cur_ac);
- gtk_widget_hide(headers.window);
+ prefs_custom_header_write_config(cur_ac);
+ gtk_widget_hide(customhdr.window);
}
-static void prefs_headers_cancel(GtkButton *button)
+static void prefs_custom_header_cancel(void)
{
- prefs_headers_read_config(cur_ac);
- gtk_widget_hide(headers.window);
+ prefs_custom_header_read_config(cur_ac);
+ gtk_widget_hide(customhdr.window);
}
-static gint prefs_headers_deleted(GtkWidget *widget, GdkEventAny *event,
- gpointer data)
+static gint prefs_custom_header_deleted(GtkWidget *widget, GdkEventAny *event,
+ gpointer data)
{
- prefs_headers_cancel(GTK_BUTTON(widget));
+ prefs_custom_header_cancel();
return TRUE;
}