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