comparison 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
comparison
equal deleted inserted replaced
987:2f6924c67846 988:63555c9744c2
20 #include "gftp-gtk.h" 20 #include "gftp-gtk.h"
21 static const char cvsid[] = "$Id$"; 21 static const char cvsid[] = "$Id$";
22 22
23 static GtkWidget * bm_dialog = NULL, * edit_bookmarks_dialog = NULL; 23 static GtkWidget * bm_dialog = NULL, * edit_bookmarks_dialog = NULL;
24 static GtkWidget * bm_hostedit, * bm_portedit, * bm_localdiredit, 24 static GtkWidget * bm_hostedit, * bm_portedit, * bm_localdiredit,
25 * bm_remotediredit, * bm_useredit, * bm_passedit, * tree, 25 * bm_remotediredit, * bm_useredit, * bm_passedit, * tree,
26 * bm_acctedit, * anon_chk, * bm_pathedit, * bm_protocol; 26 * bm_acctedit, * anon_chk, * bm_pathedit, * bm_protocol,
27 * bm_charsetedit;
27 static GHashTable * new_bookmarks_htable = NULL; 28 static GHashTable * new_bookmarks_htable = NULL;
28 static gftp_bookmarks_var * new_bookmarks = NULL; 29 static gftp_bookmarks_var * new_bookmarks = NULL;
29 static GtkItemFactory * edit_factory; 30 static GtkItemFactory * edit_factory;
30 31
31 32
214 if (tempentry->local_dir) 215 if (tempentry->local_dir)
215 newentry->local_dir = g_strdup (tempentry->local_dir); 216 newentry->local_dir = g_strdup (tempentry->local_dir);
216 217
217 if (tempentry->remote_dir) 218 if (tempentry->remote_dir)
218 newentry->remote_dir = g_strdup (tempentry->remote_dir); 219 newentry->remote_dir = g_strdup (tempentry->remote_dir);
220
221 if (tempentry->remote_charset)
222 newentry->remote_charset = g_strdup (tempentry->remote_charset);
219 223
220 if (tempentry->user) 224 if (tempentry->user)
221 newentry->user = g_strdup (tempentry->user); 225 newentry->user = g_strdup (tempentry->user);
222 226
223 if (tempentry->pass) 227 if (tempentry->pass)
713 str = gtk_entry_get_text (GTK_ENTRY (bm_localdiredit)); 717 str = gtk_entry_get_text (GTK_ENTRY (bm_localdiredit));
714 if (entry->local_dir != NULL) 718 if (entry->local_dir != NULL)
715 g_free (entry->local_dir); 719 g_free (entry->local_dir);
716 entry->local_dir = g_strdup (str); 720 entry->local_dir = g_strdup (str);
717 721
722 /* charset */
723 str = gtk_entry_get_text (GTK_ENTRY (bm_charsetedit));
724 if (entry->remote_charset != NULL)
725 g_free (entry->remote_charset);
726 entry->remote_charset = g_strdup (str);
727
728 /* user */
718 if (GTK_TOGGLE_BUTTON (anon_chk)->active) 729 if (GTK_TOGGLE_BUTTON (anon_chk)->active)
719 str = GFTP_ANONYMOUS_USER; 730 str = GFTP_ANONYMOUS_USER;
720 else 731 else
721 str = gtk_entry_get_text (GTK_ENTRY (bm_useredit)); 732 str = gtk_entry_get_text (GTK_ENTRY (bm_useredit));
722 733
823 834
824 static void 835 static void
825 edit_entry (gpointer data) 836 edit_entry (gpointer data)
826 { 837 {
827 GtkWidget * table, * tempwid, * menu, * notebook; 838 GtkWidget * table, * tempwid, * menu, * notebook;
828 gftp_bookmarks_var * entry; 839 volatile gftp_bookmarks_var * entry;
829 unsigned int num, i; 840 unsigned int num, i;
830 char *pos; 841 char *pos;
831 842
832 if (bm_dialog != NULL) 843 if (bm_dialog != NULL)
833 { 844 {
978 gtk_widget_set_sensitive (bm_localdiredit, 0); 989 gtk_widget_set_sensitive (bm_localdiredit, 0);
979 else if (entry->local_dir) 990 else if (entry->local_dir)
980 gtk_entry_set_text (GTK_ENTRY (bm_localdiredit), entry->local_dir); 991 gtk_entry_set_text (GTK_ENTRY (bm_localdiredit), entry->local_dir);
981 gtk_widget_show (bm_localdiredit); 992 gtk_widget_show (bm_localdiredit);
982 993
994 /* remote charset */
995 tempwid = gtk_label_new (_("Remote Charset:"));
996 gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);
997 gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 6, 7);
998 gtk_widget_show (tempwid);
999
1000 bm_charsetedit = gtk_entry_new ();
1001 gtk_table_attach_defaults (GTK_TABLE (table), bm_charsetedit, 1, 2, 6, 7);
1002 if (entry->isfolder)
1003 gtk_widget_set_sensitive (bm_charsetedit, 0);
1004 else if (entry->remote_charset) {
1005 gtk_entry_set_text (GTK_ENTRY (bm_charsetedit), entry->remote_charset);
1006 }
1007 gtk_widget_show (bm_charsetedit);
1008
1009 /* separator line */
983 tempwid = gtk_hseparator_new (); 1010 tempwid = gtk_hseparator_new ();
984 gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 2, 7, 8); 1011 gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 2, 8, 9);
985 gtk_widget_show (tempwid); 1012 gtk_widget_show (tempwid);
986 1013
1014 /* user name */
987 tempwid = gtk_label_new (_("Username:")); 1015 tempwid = gtk_label_new (_("Username:"));
988 gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5); 1016 gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);
989 gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 8, 9); 1017 gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 9, 10);
990 gtk_widget_show (tempwid); 1018 gtk_widget_show (tempwid);
991 1019
992 bm_useredit = gtk_entry_new (); 1020 bm_useredit = gtk_entry_new ();
993 gtk_table_attach_defaults (GTK_TABLE (table), bm_useredit, 1, 2, 8, 9); 1021 gtk_table_attach_defaults (GTK_TABLE (table), bm_useredit, 1, 2, 9, 10);
994 if (entry->isfolder) 1022 if (entry->isfolder)
995 gtk_widget_set_sensitive (bm_useredit, 0); 1023 gtk_widget_set_sensitive (bm_useredit, 0);
996 else if (entry->user) 1024 else if (entry->user)
997 gtk_entry_set_text (GTK_ENTRY (bm_useredit), entry->user); 1025 gtk_entry_set_text (GTK_ENTRY (bm_useredit), entry->user);
998 gtk_widget_show (bm_useredit); 1026 gtk_widget_show (bm_useredit);
999 1027
1000 tempwid = gtk_label_new (_("Password:")); 1028 tempwid = gtk_label_new (_("Password:"));
1001 gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5); 1029 gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);
1002 gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 9, 10); 1030 gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 10, 11);
1003 gtk_widget_show (tempwid); 1031 gtk_widget_show (tempwid);
1004 1032
1005 bm_passedit = gtk_entry_new (); 1033 bm_passedit = gtk_entry_new ();
1006 gtk_table_attach_defaults (GTK_TABLE (table), bm_passedit, 1, 2, 9, 10); 1034 gtk_table_attach_defaults (GTK_TABLE (table), bm_passedit, 1, 2, 10, 11);
1007 gtk_entry_set_visibility (GTK_ENTRY (bm_passedit), FALSE); 1035 gtk_entry_set_visibility (GTK_ENTRY (bm_passedit), FALSE);
1008 if (entry->isfolder) 1036 if (entry->isfolder)
1009 gtk_widget_set_sensitive (bm_passedit, 0); 1037 gtk_widget_set_sensitive (bm_passedit, 0);
1010 else if (entry->pass) 1038 else if (entry->pass)
1011 gtk_entry_set_text (GTK_ENTRY (bm_passedit), entry->pass); 1039 gtk_entry_set_text (GTK_ENTRY (bm_passedit), entry->pass);
1012 gtk_widget_show (bm_passedit); 1040 gtk_widget_show (bm_passedit);
1013 1041
1014 tempwid = gtk_label_new (_("Account:")); 1042 tempwid = gtk_label_new (_("Account:"));
1015 gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5); 1043 gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);
1016 gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 10, 11); 1044 gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 11, 12);
1017 gtk_widget_show (tempwid); 1045 gtk_widget_show (tempwid);
1018 1046
1019 bm_acctedit = gtk_entry_new (); 1047 bm_acctedit = gtk_entry_new ();
1020 gtk_table_attach_defaults (GTK_TABLE (table), bm_acctedit, 1, 2, 10, 11); 1048 gtk_table_attach_defaults (GTK_TABLE (table), bm_acctedit, 1, 2, 11, 12);
1021 gtk_entry_set_visibility (GTK_ENTRY (bm_acctedit), FALSE); 1049 gtk_entry_set_visibility (GTK_ENTRY (bm_acctedit), FALSE);
1022 if (entry->isfolder) 1050 if (entry->isfolder)
1023 gtk_widget_set_sensitive (bm_acctedit, 0); 1051 gtk_widget_set_sensitive (bm_acctedit, 0);
1024 else if (entry->acct) 1052 else if (entry->acct)
1025 gtk_entry_set_text (GTK_ENTRY (bm_acctedit), entry->acct); 1053 gtk_entry_set_text (GTK_ENTRY (bm_acctedit), entry->acct);
1026 gtk_widget_show (bm_acctedit); 1054 gtk_widget_show (bm_acctedit);
1027 1055
1028 anon_chk = gtk_check_button_new_with_label (_("Log in as ANONYMOUS")); 1056 anon_chk = gtk_check_button_new_with_label (_("Log in as ANONYMOUS"));
1029 gtk_table_attach_defaults (GTK_TABLE (table), anon_chk, 0, 2, 11, 12); 1057 gtk_table_attach_defaults (GTK_TABLE (table), anon_chk, 0, 2, 12, 13);
1030 if (entry->isfolder) 1058 if (entry->isfolder)
1031 gtk_widget_set_sensitive (anon_chk, 0); 1059 gtk_widget_set_sensitive (anon_chk, 0);
1032 else 1060 else
1033 { 1061 {
1034 gtk_signal_connect (GTK_OBJECT (anon_chk), "toggled", 1062 gtk_signal_connect (GTK_OBJECT (anon_chk), "toggled",