Updating branch refs/heads/master
         to e408a4853df1bd2ae90e10dcd1c1bba9ff1213a7 (commit)
       from d299ca3aa35fd16520196082f09428400970ad1a (commit)

commit e408a4853df1bd2ae90e10dcd1c1bba9ff1213a7
Author: Sean Davis <[email protected]>
Date:   Tue Jul 24 16:40:14 2012 -0400

    Last opened file sets last opened directory.  (Bug #7157)

 src/misc/parole-file.c |   50 +++++++++++++++++++++++++++++++++++++++++++++++-
 src/misc/parole-file.h |    2 +
 src/parole-player.c    |    1 +
 3 files changed, 52 insertions(+), 1 deletions(-)

diff --git a/src/misc/parole-file.c b/src/misc/parole-file.c
index d46487d..006a2e9 100644
--- a/src/misc/parole-file.c
+++ b/src/misc/parole-file.c
@@ -46,6 +46,7 @@ struct _ParoleFilePrivate
     gchar      *display_name;
     gchar      *uri;
     gchar       *content_type;
+       gchar   *directory;
     
 };
 
@@ -55,7 +56,8 @@ enum
     PROP_PATH,
     PROP_DISPLAY_NAME,
     PROP_URI,
-    PROP_CONTENT_TYPE
+    PROP_CONTENT_TYPE,
+       PROP_DIRECTORY
 };
 
 G_DEFINE_TYPE (ParoleFile, parole_file, G_TYPE_OBJECT)
@@ -80,6 +82,9 @@ parole_file_finalize (GObject *object)
        
     if ( priv->content_type )
        g_free (priv->content_type);
+       
+       if ( priv->directory )
+       g_free (priv->directory);
     
     G_OBJECT_CLASS (parole_file_parent_class)->finalize (object);
 }
@@ -99,6 +104,9 @@ parole_file_set_property (GObject *object, guint prop_id,
        case PROP_DISPLAY_NAME:
            PAROLE_FILE_GET_PRIVATE (file)->display_name = g_value_dup_string 
(value);
            break;
+       case PROP_DIRECTORY:
+               PAROLE_FILE_GET_PRIVATE (file)->directory = g_value_dup_string 
(value);
+               break;
        default:
            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
            break;
@@ -127,6 +135,9 @@ parole_file_get_property (GObject *object, guint prop_id,
        case PROP_DISPLAY_NAME:
            g_value_set_string (value, PAROLE_FILE_GET_PRIVATE 
(file)->display_name);
            break;
+       case PROP_DIRECTORY:
+           g_value_set_string (value, PAROLE_FILE_GET_PRIVATE 
(file)->directory);
+           break;
        default:
            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
            break;
@@ -152,6 +163,9 @@ parole_file_constructed (GObject *object)
                              0,
                              NULL,
                              &error);
+                                 
+               
+       priv->directory = g_file_get_path (g_file_get_parent( gfile ));
 
     if ( error )
     {
@@ -286,6 +300,22 @@ parole_file_class_init (ParoleFileClass *klass)
                                                          "The content type of 
the file",
                                                          NULL,
                                                          G_PARAM_READABLE));
+                                                         
+       /**
+     * ParoleFile:directory:
+     * 
+     * The parent directory of the file.
+     * 
+     * Since: 0.2 
+     **/
+    g_object_class_install_property (object_class,
+                                    PROP_DIRECTORY,
+                                    g_param_spec_string ("directory",
+                                                         "Parent directory", 
+                                                         "The parent directory 
of the file",
+                                                         NULL,
+                                                         
G_PARAM_CONSTRUCT_ONLY|
+                                                         G_PARAM_READWRITE));
 
     g_type_class_add_private (klass, sizeof (ParoleFilePrivate));
 }
@@ -301,6 +331,7 @@ parole_file_init (ParoleFile *file)
     priv->display_name = NULL;
     priv->uri          = NULL;
     priv->content_type    = NULL;
+       priv->directory                 = NULL;
 }
 
 /**
@@ -409,3 +440,20 @@ parole_file_get_content_type (const ParoleFile *file)
     
     return PAROLE_FILE_GET_PRIVATE (file)->content_type;
 }
+
+/**
+ * parole_file_get_directory:
+ * @file: a #ParoleFile.
+ *  
+ * 
+ * Returns: A string containing the parent directory path.
+ * 
+ * Since: 0.2
+ **/
+const gchar *
+parole_file_get_directory (const ParoleFile *file)
+{
+    g_return_val_if_fail (PAROLE_IS_FILE (file), NULL);
+    
+    return PAROLE_FILE_GET_PRIVATE (file)->directory;
+}
diff --git a/src/misc/parole-file.h b/src/misc/parole-file.h
index 7430f9c..b286d82 100644
--- a/src/misc/parole-file.h
+++ b/src/misc/parole-file.h
@@ -52,6 +52,8 @@ ParoleFile                   *parole_file_new                 
  (const gchar *filename)
 
 ParoleFile                    *parole_file_new_with_display_name (const gchar 
*filename,
                                                                   const gchar 
*display_name);
+                                   
+const gchar   G_CONST_RETURN   *parole_file_get_directory        (const 
ParoleFile *file) G_GNUC_PURE;
 
 const gchar   G_CONST_RETURN   *parole_file_get_file_name        (const 
ParoleFile *file) G_GNUC_PURE;
 
diff --git a/src/parole-player.c b/src/parole-player.c
index 85b2cf8..aff774c 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -811,6 +811,7 @@ parole_player_media_activated_cb (ParoleMediaList *list, 
GtkTreeRowReference *ro
            g_free (sub);
            
            gtk_window_set_title (GTK_WINDOW (player->priv->window), 
parole_file_get_display_name(file));
+               parole_rc_write_entry_string ("media-chooser-folder", 
PAROLE_RC_GROUP_GENERAL, parole_file_get_directory(file));
                
 
            g_object_unref (file);
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to