[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