[byzanz] Record the full last saved filename



commit c80600a77a5e6deb6ff7e8447c92545861c3994b
Author: Benjamin Otte <otte gnome org>
Date:   Sat Aug 15 23:14:29 2009 +0200

    Record the full last saved filename
    
    This way, we can preselect the filename, so it's easier to override a
    repeated recording by just pressing enter twice.

 src/byzanz.schemas.in |    6 +++---
 src/byzanzapplet.c    |   27 ++++++++++++++++-----------
 2 files changed, 19 insertions(+), 14 deletions(-)
---
diff --git a/src/byzanz.schemas.in b/src/byzanz.schemas.in
index 25853fa..31be411 100644
--- a/src/byzanz.schemas.in
+++ b/src/byzanz.schemas.in
@@ -2,13 +2,13 @@
     <schemalist>    
 
       <schema>
-        <key>/schemas/apps/byzanz-applet/prefs/save_directory</key>
+        <key>/schemas/apps/byzanz-applet/prefs/save_filename</key>
         <owner>byzanz-applet</owner>
         <type>string</type>
         <default></default>
         <locale name="C">
-          <short>Directory to save in</short>
-          <long>This is the directory that Byzanz will default to when saving a file.</long>
+          <short>Save filename</short>
+          <long>URI for the filename Byzanz will suggest when starting a recording.</long>
         </locale>
       </schema>
       
diff --git a/src/byzanzapplet.c b/src/byzanzapplet.c
index 3683b30..1efc89a 100644
--- a/src/byzanzapplet.c
+++ b/src/byzanzapplet.c
@@ -141,12 +141,11 @@ static void
 pending_recording_response (GtkWidget *dialog, int response, PendingRecording *pending)
 {
   if (response == GTK_RESPONSE_ACCEPT) {
-    char *dir;
     pending->destination = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
-    dir = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog));
-    if (dir) {
-      panel_applet_gconf_set_string (pending->priv->applet, "save_directory", dir, NULL);
-      g_free (dir);
+    if (pending->destination) {
+      char *uri = g_file_get_uri (pending->destination);
+      panel_applet_gconf_set_string (pending->priv->applet, "save_filename", uri, NULL);
+      g_free (uri);
     }
   }
   gtk_widget_destroy (dialog);
@@ -158,7 +157,7 @@ pending_recording_launch (AppletPrivate *priv, ByzanzRecorder *rec, const char *
 {
   PendingRecording *pending;
   GtkWidget *dialog;
-  char *start_dir;
+  char *uri;
   
   pending = g_new0 (PendingRecording, 1);
   pending->priv = priv;
@@ -171,12 +170,18 @@ pending_recording_launch (AppletPrivate *priv, ByzanzRecorder *rec, const char *
       GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
       NULL);
   gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (dialog), FALSE);
-  start_dir = panel_applet_gconf_get_string (priv->applet, "save_directory", NULL);
-  if (!start_dir || start_dir[0] == '\0' ||
-      !gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dialog), start_dir)) {
-    gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), g_get_home_dir ());
+  uri = panel_applet_gconf_get_string (priv->applet, "save_filename", NULL);
+  if (!uri || uri[0] == '\0' ||
+      !gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dialog), uri)) {
+    g_free (uri);
+    /* Try the key used by old versions. Maybe it's still set. */
+    uri = panel_applet_gconf_get_string (priv->applet, "save_directory", NULL);
+    if (!uri || uri[0] == '\0' ||
+	!gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dialog), uri)) {
+      gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), g_get_home_dir ());
+    }
   }
-  g_free (start_dir);
+  g_free (uri);
   gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
   g_signal_connect (dialog, "response", G_CALLBACK (pending_recording_response), pending);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]