[Xfce4-commits] <parole:master> Last opened file sets last opened directory. (Bug #7157)

Sean Davis noreply at xfce.org
Tue Jul 24 22:42:01 CEST 2012


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

commit e408a4853df1bd2ae90e10dcd1c1bba9ff1213a7
Author: Sean Davis <smd.seandavis at gmail.com>
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);


More information about the Xfce4-commits mailing list