Mercurial > gftp.yaz
diff src/gtk/bookmarks.c @ 988:63555c9744c2
remote charset should be specified by each bookmark entry.
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Fri, 14 Aug 2009 07:54:55 +0900 |
parents | 19b6d55e2646 |
children |
line wrap: on
line diff
--- a/src/gtk/bookmarks.c Wed Apr 08 11:07:35 2009 +0000 +++ b/src/gtk/bookmarks.c Fri Aug 14 07:54:55 2009 +0900 @@ -22,8 +22,9 @@ static GtkWidget * bm_dialog = NULL, * edit_bookmarks_dialog = NULL; static GtkWidget * bm_hostedit, * bm_portedit, * bm_localdiredit, - * bm_remotediredit, * bm_useredit, * bm_passedit, * tree, - * bm_acctedit, * anon_chk, * bm_pathedit, * bm_protocol; + * bm_remotediredit, * bm_useredit, * bm_passedit, * tree, + * bm_acctedit, * anon_chk, * bm_pathedit, * bm_protocol, + * bm_charsetedit; static GHashTable * new_bookmarks_htable = NULL; static gftp_bookmarks_var * new_bookmarks = NULL; static GtkItemFactory * edit_factory; @@ -217,6 +218,9 @@ if (tempentry->remote_dir) newentry->remote_dir = g_strdup (tempentry->remote_dir); + if (tempentry->remote_charset) + newentry->remote_charset = g_strdup (tempentry->remote_charset); + if (tempentry->user) newentry->user = g_strdup (tempentry->user); @@ -715,6 +719,13 @@ g_free (entry->local_dir); entry->local_dir = g_strdup (str); + /* charset */ + str = gtk_entry_get_text (GTK_ENTRY (bm_charsetedit)); + if (entry->remote_charset != NULL) + g_free (entry->remote_charset); + entry->remote_charset = g_strdup (str); + + /* user */ if (GTK_TOGGLE_BUTTON (anon_chk)->active) str = GFTP_ANONYMOUS_USER; else @@ -825,7 +836,7 @@ edit_entry (gpointer data) { GtkWidget * table, * tempwid, * menu, * notebook; - gftp_bookmarks_var * entry; + volatile gftp_bookmarks_var * entry; unsigned int num, i; char *pos; @@ -980,17 +991,34 @@ gtk_entry_set_text (GTK_ENTRY (bm_localdiredit), entry->local_dir); gtk_widget_show (bm_localdiredit); - tempwid = gtk_hseparator_new (); - gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 2, 7, 8); + /* remote charset */ + tempwid = gtk_label_new (_("Remote Charset:")); + gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 6, 7); gtk_widget_show (tempwid); + bm_charsetedit = gtk_entry_new (); + gtk_table_attach_defaults (GTK_TABLE (table), bm_charsetedit, 1, 2, 6, 7); + if (entry->isfolder) + gtk_widget_set_sensitive (bm_charsetedit, 0); + else if (entry->remote_charset) { + gtk_entry_set_text (GTK_ENTRY (bm_charsetedit), entry->remote_charset); + } + gtk_widget_show (bm_charsetedit); + + /* separator line */ + tempwid = gtk_hseparator_new (); + gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 2, 8, 9); + gtk_widget_show (tempwid); + + /* user name */ tempwid = gtk_label_new (_("Username:")); gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 8, 9); + gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 9, 10); gtk_widget_show (tempwid); bm_useredit = gtk_entry_new (); - gtk_table_attach_defaults (GTK_TABLE (table), bm_useredit, 1, 2, 8, 9); + gtk_table_attach_defaults (GTK_TABLE (table), bm_useredit, 1, 2, 9, 10); if (entry->isfolder) gtk_widget_set_sensitive (bm_useredit, 0); else if (entry->user) @@ -999,11 +1027,11 @@ tempwid = gtk_label_new (_("Password:")); gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 9, 10); + gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 10, 11); gtk_widget_show (tempwid); bm_passedit = gtk_entry_new (); - gtk_table_attach_defaults (GTK_TABLE (table), bm_passedit, 1, 2, 9, 10); + gtk_table_attach_defaults (GTK_TABLE (table), bm_passedit, 1, 2, 10, 11); gtk_entry_set_visibility (GTK_ENTRY (bm_passedit), FALSE); if (entry->isfolder) gtk_widget_set_sensitive (bm_passedit, 0); @@ -1013,11 +1041,11 @@ tempwid = gtk_label_new (_("Account:")); gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 10, 11); + gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 11, 12); gtk_widget_show (tempwid); bm_acctedit = gtk_entry_new (); - gtk_table_attach_defaults (GTK_TABLE (table), bm_acctedit, 1, 2, 10, 11); + gtk_table_attach_defaults (GTK_TABLE (table), bm_acctedit, 1, 2, 11, 12); gtk_entry_set_visibility (GTK_ENTRY (bm_acctedit), FALSE); if (entry->isfolder) gtk_widget_set_sensitive (bm_acctedit, 0); @@ -1026,7 +1054,7 @@ gtk_widget_show (bm_acctedit); anon_chk = gtk_check_button_new_with_label (_("Log in as ANONYMOUS")); - gtk_table_attach_defaults (GTK_TABLE (table), anon_chk, 0, 2, 11, 12); + gtk_table_attach_defaults (GTK_TABLE (table), anon_chk, 0, 2, 12, 13); if (entry->isfolder) gtk_widget_set_sensitive (anon_chk, 0); else