summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorIgnacio Casal Quinteiro <icq@gnome.org>2010-04-01 15:19:33 +0200
committerIgnacio Casal Quinteiro <icq@gnome.org>2010-04-27 13:37:38 +0200
commit44d5f89c3302d3f539349659b7742780e298776f (patch)
treee6f02ddc9a1e2ee2473994ee47583f9cdc2700a3 /plugins
parentb2c444d72c192ef115b0555fe931e374667b33c6 (diff)
downloadgedit-44d5f89c3302d3f539349659b7742780e298776f.tar.gz
Fix filebrowser plugin to use GFile instead of uris.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/filebrowser/gedit-file-bookmarks-store.c15
-rw-r--r--plugins/filebrowser/gedit-file-bookmarks-store.h2
-rw-r--r--plugins/filebrowser/gedit-file-browser-marshal.list2
-rw-r--r--plugins/filebrowser/gedit-file-browser-messages.c105
-rw-r--r--plugins/filebrowser/gedit-file-browser-plugin.c141
-rw-r--r--plugins/filebrowser/gedit-file-browser-store.c141
-rw-r--r--plugins/filebrowser/gedit-file-browser-store.h24
-rw-r--r--plugins/filebrowser/gedit-file-browser-utils.c15
-rw-r--r--plugins/filebrowser/gedit-file-browser-utils.h1
-rw-r--r--plugins/filebrowser/gedit-file-browser-view.c80
-rw-r--r--plugins/filebrowser/gedit-file-browser-widget.c139
-rw-r--r--plugins/filebrowser/gedit-file-browser-widget.h10
-rw-r--r--plugins/quickopen/quickopen/windowhelper.py9
13 files changed, 287 insertions, 397 deletions
diff --git a/plugins/filebrowser/gedit-file-bookmarks-store.c b/plugins/filebrowser/gedit-file-bookmarks-store.c
index 37c5d78b4..eaec8d48c 100644
--- a/plugins/filebrowser/gedit-file-bookmarks-store.c
+++ b/plugins/filebrowser/gedit-file-bookmarks-store.c
@@ -509,6 +509,7 @@ init_bookmarks (GeditFileBookmarksStore * model)
for (line = lines; *line; ++line) {
if (**line) {
+ GFile *location;
gchar *pos;
gchar *name;
@@ -524,9 +525,11 @@ init_bookmarks (GeditFileBookmarksStore * model)
/* the bookmarks file should contain valid
* URIs, but paranoia is good */
- if (gedit_utils_is_valid_uri (*line)) {
+ location = g_file_new_for_uri (*line);
+ if (gedit_utils_is_valid_location (location)) {
added |= add_bookmark (model, name, *line);
}
+ g_object_unref (location);
}
}
@@ -781,14 +784,14 @@ gedit_file_bookmarks_store_new (void)
return model;
}
-gchar *
-gedit_file_bookmarks_store_get_uri (GeditFileBookmarksStore * model,
- GtkTreeIter * iter)
+GFile *
+gedit_file_bookmarks_store_get_location (GeditFileBookmarksStore * model,
+ GtkTreeIter * iter)
{
GObject * obj;
GFile * file = NULL;
guint flags;
- gchar * ret = NULL;
+ GFile * ret = NULL;
gboolean isfs;
g_return_val_if_fail (GEDIT_IS_FILE_BOOKMARKS_STORE (model), NULL);
@@ -819,7 +822,7 @@ gedit_file_bookmarks_store_get_uri (GeditFileBookmarksStore * model,
if (file)
{
- ret = g_file_get_uri (file);
+ ret = g_file_dup (file);
g_object_unref (file);
}
diff --git a/plugins/filebrowser/gedit-file-bookmarks-store.h b/plugins/filebrowser/gedit-file-bookmarks-store.h
index bd20911e7..d0152c13d 100644
--- a/plugins/filebrowser/gedit-file-bookmarks-store.h
+++ b/plugins/filebrowser/gedit-file-bookmarks-store.h
@@ -80,7 +80,7 @@ GType gedit_file_bookmarks_store_get_type (void) G_GNUC_CONST;
GType gedit_file_bookmarks_store_register_type (GTypeModule * module);
GeditFileBookmarksStore *gedit_file_bookmarks_store_new (void);
-gchar *gedit_file_bookmarks_store_get_uri (GeditFileBookmarksStore * model,
+GFile *gedit_file_bookmarks_store_get_location (GeditFileBookmarksStore * model,
GtkTreeIter * iter);
void gedit_file_bookmarks_store_refresh (GeditFileBookmarksStore * model);
diff --git a/plugins/filebrowser/gedit-file-browser-marshal.list b/plugins/filebrowser/gedit-file-browser-marshal.list
index 5fa72c8bf..9b24776ac 100644
--- a/plugins/filebrowser/gedit-file-browser-marshal.list
+++ b/plugins/filebrowser/gedit-file-browser-marshal.list
@@ -1,5 +1,5 @@
VOID:UINT,STRING
-VOID:STRING,STRING
+VOID:OBJECT,OBJECT
BOOL:OBJECT,POINTER
BOOL:POINTER
BOOL:VOID
diff --git a/plugins/filebrowser/gedit-file-browser-messages.c b/plugins/filebrowser/gedit-file-browser-messages.c
index b587edf1d..7258950aa 100644
--- a/plugins/filebrowser/gedit-file-browser-messages.c
+++ b/plugins/filebrowser/gedit-file-browser-messages.c
@@ -178,13 +178,16 @@ message_get_root_cb (GeditMessageBus *bus,
WindowData *data)
{
GeditFileBrowserStore *store;
- gchar *uri;
+ GFile *location;
store = gedit_file_browser_widget_get_browser_store (data->widget);
- uri = gedit_file_browser_store_get_virtual_root (store);
-
- gedit_message_set (message, "uri", uri, NULL);
- g_free (uri);
+ location = gedit_file_browser_store_get_virtual_root (store);
+
+ if (location)
+ {
+ gedit_message_set (message, "location", location, NULL);
+ g_object_unref (location);
+ }
}
static void
@@ -192,10 +195,10 @@ message_set_root_cb (GeditMessageBus *bus,
GeditMessage *message,
WindowData *data)
{
- gchar *root = NULL;
- gchar *virtual = NULL;
+ GFile *root;
+ GFile *virtual = NULL;
- gedit_message_get (message, "uri", &root, NULL);
+ gedit_message_get (message, "location", &root, NULL);
if (!root)
return;
@@ -207,9 +210,6 @@ message_set_root_cb (GeditMessageBus *bus,
gedit_file_browser_widget_set_root_and_virtual_root (data->widget, root, virtual);
else
gedit_file_browser_widget_set_root (data->widget, root, TRUE);
-
- g_free (root);
- g_free (virtual);
}
static void
@@ -278,23 +278,30 @@ message_set_emblem_cb (GeditMessageBus *bus,
static gchar *
item_id (const gchar *path,
- const gchar *uri)
+ GFile *location)
{
- return g_strconcat (path, "::", uri, NULL);
+ gchar *uri;
+ gchar *id;
+
+ uri = g_file_get_uri (location);
+ id = g_strconcat (path, "::", uri, NULL);
+ g_free (uri);
+
+ return id;
}
static gchar *
track_row (WindowData *data,
GeditFileBrowserStore *store,
GtkTreePath *path,
- const gchar *uri)
+ GFile *location)
{
GtkTreeRowReference *ref;
gchar *id;
gchar *pathstr;
pathstr = gtk_tree_path_to_string (path);
- id = item_id (pathstr, uri);
+ id = item_id (pathstr, location);
ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (store), path);
g_hash_table_insert (data->row_tracking, g_strdup (id), ref);
@@ -311,28 +318,28 @@ set_item_message (WindowData *data,
GeditMessage *message)
{
GeditFileBrowserStore *store;
- gchar *uri = NULL;
+ GFile *location;
guint flags = 0;
gchar *track_id;
store = gedit_file_browser_widget_get_browser_store (data->widget);
gtk_tree_model_get (GTK_TREE_MODEL (store), iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI, &uri,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION, &location,
GEDIT_FILE_BROWSER_STORE_COLUMN_FLAGS, &flags,
-1);
- if (!uri)
+ if (!location)
return;
if (path && gtk_tree_path_get_depth (path) != 0)
- track_id = track_row (data, store, path, uri);
+ track_id = track_row (data, store, path, location);
else
track_id = NULL;
gedit_message_set (message,
"id", track_id,
- "uri", uri,
+ "location", location,
NULL);
if (gedit_message_has_key (message, "is_directory"))
@@ -342,7 +349,6 @@ set_item_message (WindowData *data,
NULL);
}
- g_free (uri);
g_free (track_id);
}
@@ -353,19 +359,18 @@ custom_message_filter_func (GeditFileBrowserWidget *widget,
FilterData *data)
{
WindowData *wdata = get_window_data (data->window);
- gchar *uri = NULL;
+ GFile *location;
guint flags = 0;
gboolean filter = FALSE;
GtkTreePath *path;
gtk_tree_model_get (GTK_TREE_MODEL (store), iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI, &uri,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION, &location,
GEDIT_FILE_BROWSER_STORE_COLUMN_FLAGS, &flags,
-1);
- if (!uri || FILE_IS_DUMMY (flags))
+ if (!location || FILE_IS_DUMMY (flags))
{
- g_free (uri);
return FALSE;
}
@@ -420,7 +425,7 @@ message_add_filter_cb (GeditMessageBus *bus,
// Check if the message type has the correct arguments
if (gedit_message_type_lookup (message_type, "id") != G_TYPE_STRING ||
- gedit_message_type_lookup (message_type, "uri") != G_TYPE_STRING ||
+ gedit_message_type_lookup (message_type, "location") != G_TYPE_FILE ||
gedit_message_type_lookup (message_type, "is_directory") != G_TYPE_BOOLEAN ||
gedit_message_type_lookup (message_type, "filter") != G_TYPE_BOOLEAN)
{
@@ -429,7 +434,7 @@ message_add_filter_cb (GeditMessageBus *bus,
cbmessage = gedit_message_type_instantiate (message_type,
"id", NULL,
- "uri", NULL,
+ "location", NULL,
"is_directory", FALSE,
"filter", FALSE,
NULL);
@@ -647,13 +652,13 @@ register_methods (GeditWindow *window,
gedit_message_bus_register (bus,
MESSAGE_OBJECT_PATH, "get_root",
1,
- "uri", G_TYPE_STRING,
+ "location", G_TYPE_FILE,
NULL);
gedit_message_bus_register (bus,
MESSAGE_OBJECT_PATH, "set_root",
1,
- "uri", G_TYPE_STRING,
+ "location", G_TYPE_FILE,
"virtual", G_TYPE_STRING,
NULL);
@@ -749,11 +754,9 @@ store_row_inserted (GeditFileBrowserStore *store,
GtkTreeIter *iter,
MessageCacheData *data)
{
- gchar *uri = NULL;
guint flags = 0;
gtk_tree_model_get (GTK_TREE_MODEL (store), iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI, &uri,
GEDIT_FILE_BROWSER_STORE_COLUMN_FLAGS, &flags,
-1);
@@ -764,8 +767,6 @@ store_row_inserted (GeditFileBrowserStore *store,
set_item_message (wdata, iter, path, data->message);
gedit_message_bus_send_message_sync (wdata->bus, data->message);
}
-
- g_free (uri);
}
static void
@@ -774,14 +775,12 @@ store_row_deleted (GeditFileBrowserStore *store,
MessageCacheData *data)
{
GtkTreeIter iter;
- gchar *uri = NULL;
guint flags = 0;
if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, path))
return;
- gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI, &uri,
+ gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
GEDIT_FILE_BROWSER_STORE_COLUMN_FLAGS, &flags,
-1);
@@ -792,8 +791,6 @@ store_row_deleted (GeditFileBrowserStore *store,
set_item_message (wdata, &iter, path, data->message);
gedit_message_bus_send_message_sync (wdata->bus, data->message);
}
-
- g_free (uri);
}
static void
@@ -802,20 +799,20 @@ store_virtual_root_changed (GeditFileBrowserStore *store,
MessageCacheData *data)
{
WindowData *wdata = get_window_data (data->window);
- gchar *uri;
+ GFile *vroot;
- uri = gedit_file_browser_store_get_virtual_root (store);
+ vroot = gedit_file_browser_store_get_virtual_root (store);
- if (!uri)
+ if (!vroot)
return;
gedit_message_set (data->message,
- "uri", uri,
+ "location", vroot,
NULL);
gedit_message_bus_send_message_sync (wdata->bus, data->message);
- g_free (uri);
+ g_object_unref (vroot);
}
static void
@@ -870,28 +867,28 @@ register_signals (GeditWindow *window,
MESSAGE_OBJECT_PATH, "root_changed",
0,
"id", G_TYPE_STRING,
- "uri", G_TYPE_STRING,
+ "location", G_TYPE_FILE,
NULL);
begin_loading_type = gedit_message_bus_register (bus,
MESSAGE_OBJECT_PATH, "begin_loading",
0,
"id", G_TYPE_STRING,
- "uri", G_TYPE_STRING,
+ "location", G_TYPE_FILE,
NULL);
end_loading_type = gedit_message_bus_register (bus,
MESSAGE_OBJECT_PATH, "end_loading",
0,
"id", G_TYPE_STRING,
- "uri", G_TYPE_STRING,
+ "location", G_TYPE_FILE,
NULL);
inserted_type = gedit_message_bus_register (bus,
MESSAGE_OBJECT_PATH, "inserted",
0,
"id", G_TYPE_STRING,
- "uri", G_TYPE_STRING,
+ "location", G_TYPE_FILE,
"is_directory", G_TYPE_BOOLEAN,
NULL);
@@ -899,7 +896,7 @@ register_signals (GeditWindow *window,
MESSAGE_OBJECT_PATH, "deleted",
0,
"id", G_TYPE_STRING,
- "uri", G_TYPE_STRING,
+ "location", G_TYPE_FILE,
"is_directory", G_TYPE_BOOLEAN,
NULL);
@@ -907,7 +904,7 @@ register_signals (GeditWindow *window,
message = gedit_message_type_instantiate (inserted_type,
"id", NULL,
- "uri", NULL,
+ "location", NULL,
"is_directory", FALSE,
NULL);
@@ -923,7 +920,7 @@ register_signals (GeditWindow *window,
message = gedit_message_type_instantiate (deleted_type,
"id", NULL,
- "uri", NULL,
+ "location", NULL,
"is_directory", FALSE,
NULL);
data->row_deleted_id =
@@ -936,7 +933,7 @@ register_signals (GeditWindow *window,
message = gedit_message_type_instantiate (root_changed_type,
"id", NULL,
- "uri", NULL,
+ "location", NULL,
NULL);
data->root_changed_id =
g_signal_connect_data (store,
@@ -948,8 +945,8 @@ register_signals (GeditWindow *window,
message = gedit_message_type_instantiate (begin_loading_type,
"id", NULL,
- "uri", NULL,
- NULL);
+ "location", NULL,
+ NULL);
data->begin_loading_id =
g_signal_connect_data (store,
"begin_loading",
@@ -960,7 +957,7 @@ register_signals (GeditWindow *window,
message = gedit_message_type_instantiate (end_loading_type,
"id", NULL,
- "uri", NULL,
+ "location", NULL,
NULL);
data->end_loading_id =
g_signal_connect_data (store,
diff --git a/plugins/filebrowser/gedit-file-browser-plugin.c b/plugins/filebrowser/gedit-file-browser-plugin.c
index ba37e2049..46496f7c2 100644
--- a/plugins/filebrowser/gedit-file-browser-plugin.c
+++ b/plugins/filebrowser/gedit-file-browser-plugin.c
@@ -69,8 +69,8 @@ typedef struct _GeditFileBrowserPluginData
guint confirm_trash_handle;
} GeditFileBrowserPluginData;
-static void on_uri_activated_cb (GeditFileBrowserWidget * widget,
- gchar const *uri,
+static void on_location_activated_cb (GeditFileBrowserWidget * widget,
+ GFile *location,
GeditWindow * window);
static void on_error_cb (GeditFileBrowserWidget * widget,
guint code,
@@ -86,8 +86,8 @@ static void on_filter_mode_changed_cb (GeditFileBrowserStore * model,
GParamSpec * param,
GeditWindow * window);
static void on_rename_cb (GeditFileBrowserStore * model,
- const gchar * olduri,
- const gchar * newuri,
+ GFile * oldfile,
+ GFile * newfile,
GeditWindow * window);
static void on_filter_pattern_changed_cb (GeditFileBrowserWidget * widget,
GParamSpec * param,
@@ -198,25 +198,28 @@ restore_default_location (GeditFileBrowserPluginData *data)
NULL);
if (root != NULL && *root != '\0') {
- GFile *file;
+ GFile *rootfile;
+ GFile *vrootfile;
- file = g_file_new_for_uri (root);
+ rootfile = g_file_new_for_uri (root);
+ vrootfile = g_file_new_for_uri (virtual_root);
- if (remote || g_file_is_native (file)) {
+ if (remote || g_file_is_native (rootfile)) {
if (virtual_root != NULL && *virtual_root != '\0') {
prepare_auto_root (data);
gedit_file_browser_widget_set_root_and_virtual_root (data->tree_widget,
- root,
- virtual_root);
+ rootfile,
+ vrootfile);
} else {
prepare_auto_root (data);
gedit_file_browser_widget_set_root (data->tree_widget,
- root,
+ rootfile,
TRUE);
}
}
- g_object_unref (file);
+ g_object_unref (rootfile);
+ g_object_unref (vrootfile);
}
g_object_unref (client);
@@ -436,16 +439,12 @@ set_root_from_doc (GeditFileBrowserPluginData * data,
parent = g_file_get_parent (file);
if (parent != NULL) {
- gchar * root;
-
- root = g_file_get_uri (parent);
gedit_file_browser_widget_set_root (data->tree_widget,
- root,
+ parent,
TRUE);
g_object_unref (parent);
- g_free (root);
}
g_object_unref (file);
@@ -492,7 +491,6 @@ on_action_open_terminal (GtkAction * action,
{
GeditFileBrowserPluginData * data;
gchar * terminal;
- gchar * wd = NULL;
gchar * local;
gchar * argv[2];
GFile * file;
@@ -509,18 +507,16 @@ on_action_open_terminal (GtkAction * action,
store = gedit_file_browser_widget_get_browser_store (data->tree_widget);
gtk_tree_model_get (GTK_TREE_MODEL (store),
&iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI,
- &wd,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
+ &file,
-1);
- if (wd == NULL)
+ if (file == NULL)
return;
terminal = get_terminal ();
- file = g_file_new_for_uri (wd);
local = g_file_get_path (file);
- g_object_unref (file);
argv[0] = terminal;
argv[1] = NULL;
@@ -535,7 +531,6 @@ on_action_open_terminal (GtkAction * action,
NULL);
g_free (terminal);
- g_free (wd);
g_free (local);
}
@@ -548,7 +543,7 @@ on_selection_changed_cb (GtkTreeSelection *selection,
GtkTreeModel * model;
GtkTreeIter iter;
gboolean sensitive;
- gchar * uri;
+ GFile * location;
data = get_plugin_data (window);
@@ -562,11 +557,10 @@ on_selection_changed_cb (GtkTreeSelection *selection,
if (sensitive) {
gtk_tree_model_get (model, &iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI,
- &uri, -1);
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
+ &location, -1);
- sensitive = gedit_utils_uri_has_file_scheme (uri);
- g_free (uri);
+ sensitive = gedit_utils_location_has_file_scheme (location);
}
gtk_action_set_sensitive (
@@ -697,8 +691,8 @@ impl_activate (GeditPlugin * plugin, GeditWindow * window)
g_free (data_dir);
g_signal_connect (data->tree_widget,
- "uri-activated",
- G_CALLBACK (on_uri_activated_cb), window);
+ "location-activated",
+ G_CALLBACK (on_location_activated_cb), window);
g_signal_connect (data->tree_widget,
"error", G_CALLBACK (on_error_cb), window);
@@ -842,10 +836,10 @@ filetree_plugin_class_init (GeditFileBrowserPluginClass * klass)
/* Callbacks */
static void
-on_uri_activated_cb (GeditFileBrowserWidget * tree_widget,
- gchar const *uri, GeditWindow * window)
+on_location_activated_cb (GeditFileBrowserWidget * tree_widget,
+ GFile *location, GeditWindow * window)
{
- gedit_commands_load_uri (window, uri, NULL, 0);
+ gedit_commands_load_location (window, location, NULL, 0);
}
static void
@@ -981,8 +975,8 @@ on_filter_mode_changed_cb (GeditFileBrowserStore * model,
static void
on_rename_cb (GeditFileBrowserStore * store,
- const gchar * olduri,
- const gchar * newuri,
+ GFile * oldfile,
+ GFile * newfile,
GeditWindow * window)
{
GeditApp * app;
@@ -990,28 +984,20 @@ on_rename_cb (GeditFileBrowserStore * store,
GList * item;
GeditDocument * doc;
GFile * docfile;
- GFile * oldfile;
- GFile * newfile;
- gchar * uri;
/* Find all documents and set its uri to newuri where it matches olduri */
app = gedit_app_get_default ();
documents = gedit_app_get_documents (app);
- oldfile = g_file_new_for_uri (olduri);
- newfile = g_file_new_for_uri (newuri);
-
for (item = documents; item; item = item->next) {
doc = GEDIT_DOCUMENT (item->data);
- uri = gedit_document_get_uri (doc);
+ docfile = gedit_document_get_location (doc);
- if (!uri)
+ if (!docfile)
continue;
-
- docfile = g_file_new_for_uri (uri);
if (g_file_equal (docfile, oldfile)) {
- gedit_document_set_uri (doc, newuri);
+ gedit_document_set_location (doc, newfile);
} else {
gchar *relative;
@@ -1022,24 +1008,17 @@ on_rename_cb (GeditFileBrowserStore * store,
the prefix oldfile */
g_object_unref (docfile);
- g_free (uri);
-
docfile = g_file_get_child (newfile, relative);
- uri = g_file_get_uri (docfile);
- gedit_document_set_uri (doc, uri);
+ gedit_document_set_location (doc, docfile);
}
g_free (relative);
}
- g_free (uri);
g_object_unref (docfile);
}
- g_object_unref (oldfile);
- g_object_unref (newfile);
-
g_list_free (documents);
}
@@ -1078,14 +1057,20 @@ on_virtual_root_changed_cb (GeditFileBrowserStore * store,
GeditWindow * window)
{
GeditFileBrowserPluginData * data = get_plugin_data (window);
- gchar * root;
- gchar * virtual_root;
+ GFile * root;
+ GFile * virtual_root;
+ gchar *uri_root = NULL;
GConfClient * client;
root = gedit_file_browser_store_get_root (store);
if (!root)
return;
+ else
+ {
+ uri_root = g_file_get_uri (root);
+ g_object_unref (root);
+ }
client = gconf_client_get_default ();
@@ -1094,8 +1079,9 @@ on_virtual_root_changed_cb (GeditFileBrowserStore * store,
gconf_client_set_string (client,
FILE_BROWSER_BASE_KEY "/on_load/root",
- root,
+ uri_root,
NULL);
+ g_free (uri_root);
virtual_root = gedit_file_browser_store_get_virtual_root (store);
@@ -1103,13 +1089,19 @@ on_virtual_root_changed_cb (GeditFileBrowserStore * store,
/* Set virtual to same as root then */
gconf_client_set_string (client,
FILE_BROWSER_BASE_KEY "/on_load/virtual_root",
- root,
+ uri_root,
NULL);
- } else {
+ } else {
+ gchar *uri_vroot;
+
+ uri_vroot = g_file_get_uri (virtual_root);
+
gconf_client_set_string (client,
FILE_BROWSER_BASE_KEY "/on_load/virtual_root",
- virtual_root,
- NULL);
+ uri_vroot,
+ NULL);
+ g_free (uri_vroot);
+ g_object_unref (virtual_root);
}
g_signal_handlers_disconnect_by_func (window,
@@ -1117,8 +1109,6 @@ on_virtual_root_changed_cb (GeditFileBrowserStore * store,
data);
g_object_unref (client);
- g_free (root);
- g_free (virtual_root);
}
static void
@@ -1141,19 +1131,22 @@ on_tab_added_cb (GeditWindow * window,
if (open) {
GeditDocument *doc;
- gchar *uri;
+ GFile *location;
doc = gedit_tab_get_document (tab);
- uri = gedit_document_get_uri (doc);
+ location = gedit_document_get_location (doc);
- if (uri != NULL && gedit_utils_uri_has_file_scheme (uri)) {
- prepare_auto_root (data);
- set_root_from_doc (data, doc);
- load_default = FALSE;
+ if (location != NULL)
+ {
+ if (gedit_utils_location_has_file_scheme (location))
+ {
+ prepare_auto_root (data);
+ set_root_from_doc (data, doc);
+ load_default = FALSE;
+ }
+ g_object_unref (location);
}
-
- g_free (uri);
}
if (load_default)
@@ -1171,14 +1164,14 @@ static gchar *
get_filename_from_path (GtkTreeModel *model, GtkTreePath *path)
{
GtkTreeIter iter;
- gchar *uri;
+ GFile *location;
gtk_tree_model_get_iter (model, &iter, path);
gtk_tree_model_get (model, &iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI, &uri,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION, &location,
-1);
- return gedit_file_browser_utils_uri_basename (uri);
+ return gedit_file_browser_utils_file_basename (location);
}
static gboolean
diff --git a/plugins/filebrowser/gedit-file-browser-store.c b/plugins/filebrowser/gedit-file-browser-store.c
index aca8572b4..ae22e1fd6 100644
--- a/plugins/filebrowser/gedit-file-browser-store.c
+++ b/plugins/filebrowser/gedit-file-browser-store.c
@@ -83,7 +83,7 @@ struct _AsyncNode
typedef struct {
GeditFileBrowserStore * model;
- gchar * virtual_root;
+ GFile * virtual_root;
GMountOperation * operation;
GCancellable * cancellable;
} MountInfo;
@@ -270,13 +270,10 @@ static void
set_gvalue_from_node (GValue *value,
FileBrowserNode *node)
{
- gchar * uri;
-
- if (node == NULL || !node->file) {
- g_value_set_string (value, NULL);
+ if (node == NULL) {
+ g_value_set_object (value, NULL);
} else {
- uri = g_file_get_uri (node->file);
- g_value_take_string (value, uri);
+ g_value_set_object (value, node->file);
}
}
@@ -336,17 +333,17 @@ gedit_file_browser_store_class_init (GeditFileBrowserStoreClass * klass)
object_class->set_property = gedit_file_browser_store_set_property;
g_object_class_install_property (object_class, PROP_ROOT,
- g_param_spec_string ("root",
+ g_param_spec_object ("root",
"Root",
- "The root uri",
- NULL,
+ "The root location",
+ G_TYPE_FILE,
G_PARAM_READABLE));
g_object_class_install_property (object_class, PROP_VIRTUAL_ROOT,
- g_param_spec_string ("virtual-root",
+ g_param_spec_object ("virtual-root",
"Virtual Root",
- "The virtual root uri",
- NULL,
+ "The virtual root location",
+ G_TYPE_FILE,
G_PARAM_READABLE));
g_object_class_install_property (object_class, PROP_FILTER_MODE,
@@ -393,10 +390,10 @@ gedit_file_browser_store_class_init (GeditFileBrowserStoreClass * klass)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GeditFileBrowserStoreClass,
rename), NULL, NULL,
- gedit_file_browser_marshal_VOID__STRING_STRING,
+ gedit_file_browser_marshal_VOID__OBJECT_OBJECT,
G_TYPE_NONE, 2,
- G_TYPE_STRING,
- G_TYPE_STRING);
+ G_TYPE_FILE,
+ G_TYPE_FILE);
model_signals[BEGIN_REFRESH] =
g_signal_new ("begin-refresh",
G_OBJECT_CLASS_TYPE (object_class),
@@ -419,9 +416,9 @@ gedit_file_browser_store_class_init (GeditFileBrowserStoreClass * klass)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GeditFileBrowserStoreClass,
unload), NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
+ g_cclosure_marshal_VOID__OBJECT,
G_TYPE_NONE, 1,
- G_TYPE_STRING);
+ G_TYPE_FILE);
g_type_class_add_private (object_class,
sizeof (GeditFileBrowserStorePrivate));
@@ -458,8 +455,8 @@ gedit_file_browser_store_init (GeditFileBrowserStore * obj)
{
obj->priv = GEDIT_FILE_BROWSER_STORE_GET_PRIVATE (obj);
- obj->priv->column_types[GEDIT_FILE_BROWSER_STORE_COLUMN_URI] =
- G_TYPE_STRING;
+ obj->priv->column_types[GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION] =
+ G_TYPE_FILE;
obj->priv->column_types[GEDIT_FILE_BROWSER_STORE_COLUMN_NAME] =
G_TYPE_STRING;
obj->priv->column_types[GEDIT_FILE_BROWSER_STORE_COLUMN_FLAGS] =
@@ -680,7 +677,7 @@ gedit_file_browser_store_get_value (GtkTreeModel * tree_model,
g_value_init (value, GEDIT_FILE_BROWSER_STORE (tree_model)->priv->column_types[column]);
switch (column) {
- case GEDIT_FILE_BROWSER_STORE_COLUMN_URI:
+ case GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION:
set_gvalue_from_node (value, node);
break;
case GEDIT_FILE_BROWSER_STORE_COLUMN_NAME:
@@ -947,7 +944,7 @@ gedit_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,
GtkSelectionData * selection_data)
{
GtkTreeIter iter;
- gchar *uri;
+ GFile *location;
gchar *uris[2] = {0, };
gboolean ret;
@@ -958,15 +955,15 @@ gedit_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,
}
gtk_tree_model_get (GTK_TREE_MODEL (drag_source), &iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI, &uri,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION, &location,
-1);
- g_assert (uri);
+ g_assert (location);
- uris[0] = uri;
+ uris[0] = g_file_get_uri (location);
ret = gtk_selection_data_set_uris (selection_data, uris);
- g_free (uri);
+ g_free (uris[0]);
return ret;
}
@@ -1345,8 +1342,6 @@ static void
file_browser_node_free (GeditFileBrowserStore * model,
FileBrowserNode * node)
{
- gchar *uri;
-
if (node == NULL)
return;
@@ -1376,10 +1371,8 @@ file_browser_node_free (GeditFileBrowserStore * model,
if (node->file)
{
- uri = g_file_get_uri (node->file);
- g_signal_emit (model, model_signals[UNLOAD], 0, uri);
+ g_signal_emit (model, model_signals[UNLOAD], 0, node->file);
- g_free (uri);
g_object_unref (node->file);
}
@@ -2663,14 +2656,14 @@ unique_new_name (GFile * directory, gchar const * name)
}
static GeditFileBrowserStoreResult
-model_root_mounted (GeditFileBrowserStore * model, gchar const * virtual_root)
+model_root_mounted (GeditFileBrowserStore * model, GFile * virtual_root)
{
model_check_dummy (model, model->priv->root);
g_object_notify (G_OBJECT (model), "root");
if (virtual_root != NULL)
return
- gedit_file_browser_store_set_virtual_root_from_string
+ gedit_file_browser_store_set_virtual_root_from_location
(model, virtual_root);
else
set_virtual_root_from_node (model,
@@ -2746,7 +2739,7 @@ mount_cb (GFile * file,
}
static GeditFileBrowserStoreResult
-model_mount_root (GeditFileBrowserStore * model, gchar const * virtual_root)
+model_mount_root (GeditFileBrowserStore * model, GFile * virtual_root)
{
GFileInfo * info;
GError * error = NULL;
@@ -2765,7 +2758,7 @@ model_mount_root (GeditFileBrowserStore * model, gchar const * virtual_root)
mount_info = g_new(MountInfo, 1);
mount_info->model = model;
- mount_info->virtual_root = g_strdup (virtual_root);
+ mount_info->virtual_root = g_file_dup (virtual_root);
/* FIXME: we should be setting the correct window */
mount_info->operation = gtk_mount_operation_new (NULL);
@@ -2799,7 +2792,7 @@ model_mount_root (GeditFileBrowserStore * model, gchar const * virtual_root)
/* Public */
GeditFileBrowserStore *
-gedit_file_browser_store_new (gchar const *root)
+gedit_file_browser_store_new (GFile *root)
{
GeditFileBrowserStore *obj =
GEDIT_FILE_BROWSER_STORE (g_object_new
@@ -2870,29 +2863,29 @@ gedit_file_browser_store_set_virtual_root (GeditFileBrowserStore * model,
}
GeditFileBrowserStoreResult
-gedit_file_browser_store_set_virtual_root_from_string
- (GeditFileBrowserStore * model, gchar const *root) {
- GFile *file;
+gedit_file_browser_store_set_virtual_root_from_location
+ (GeditFileBrowserStore * model, GFile *root) {
g_return_val_if_fail (GEDIT_IS_FILE_BROWSER_STORE (model),
GEDIT_FILE_BROWSER_STORE_RESULT_NO_CHANGE);
- file = g_file_new_for_uri (root);
- if (file == NULL) {
- g_warning ("Invalid uri (%s)", root);
+ if (root == NULL) {
+ gchar *uri;
+
+ uri = g_file_get_uri (root);
+ g_warning ("Invalid uri (%s)", uri);
+ g_free (uri);
return GEDIT_FILE_BROWSER_STORE_RESULT_NO_CHANGE;
}
/* Check if uri is already the virtual root */
if (model->priv->virtual_root &&
- g_file_equal (model->priv->virtual_root->file, file)) {
- g_object_unref (file);
+ g_file_equal (model->priv->virtual_root->file, root)) {
return GEDIT_FILE_BROWSER_STORE_RESULT_NO_CHANGE;
}
/* Check if uri is the root itself */
- if (g_file_equal (model->priv->root->file, file)) {
- g_object_unref (file);
+ if (g_file_equal (model->priv->root->file, root)) {
/* Always clear the model before altering the nodes */
model_clear (model, FALSE);
@@ -2900,11 +2893,11 @@ gedit_file_browser_store_set_virtual_root_from_string
return GEDIT_FILE_BROWSER_STORE_RESULT_OK;
}
- if (!g_file_has_prefix (file, model->priv->root->file)) {
+ if (!g_file_has_prefix (root, model->priv->root->file)) {
gchar *str, *str1;
str = g_file_get_parse_name (model->priv->root->file);
- str1 = g_file_get_parse_name (file);
+ str1 = g_file_get_parse_name (root);
g_warning
("Virtual root (%s) is not below actual root (%s)",
@@ -2913,12 +2906,10 @@ gedit_file_browser_store_set_virtual_root_from_string
g_free (str);
g_free (str1);
- g_object_unref (file);
return GEDIT_FILE_BROWSER_STORE_RESULT_ERROR;
}
- set_virtual_root_from_file (model, file);
- g_object_unref (file);
+ set_virtual_root_from_file (model, root);
return GEDIT_FILE_BROWSER_STORE_RESULT_OK;
}
@@ -3009,11 +3000,9 @@ gedit_file_browser_store_cancel_mount_operation (GeditFileBrowserStore *store)
GeditFileBrowserStoreResult
gedit_file_browser_store_set_root_and_virtual_root (GeditFileBrowserStore *
model,
- gchar const *root,
- gchar const *virtual_root)
+ GFile *root,
+ GFile *virtual_root)
{
- GFile * file = NULL;
- GFile * vfile = NULL;
FileBrowserNode * node;
gboolean equal = FALSE;
@@ -3023,31 +3012,18 @@ gedit_file_browser_store_set_root_and_virtual_root (GeditFileBrowserStore *
if (root == NULL && model->priv->root == NULL)
return GEDIT_FILE_BROWSER_STORE_RESULT_NO_CHANGE;
- if (root != NULL) {
- file = g_file_new_for_uri (root);
- }
-
if (root != NULL && model->priv->root != NULL) {
- equal = g_file_equal (file, model->priv->root->file);
+ equal = g_file_equal (root, model->priv->root->file);
if (equal && virtual_root == NULL) {
- g_object_unref (file);
return GEDIT_FILE_BROWSER_STORE_RESULT_NO_CHANGE;
}
}
if (virtual_root) {
- vfile = g_file_new_for_uri (virtual_root);
-
- if (equal && g_file_equal (vfile, model->priv->virtual_root->file)) {
- if (file)
- g_object_unref (file);
-
- g_object_unref (vfile);
+ if (equal && g_file_equal (virtual_root, model->priv->virtual_root->file)) {
return GEDIT_FILE_BROWSER_STORE_RESULT_NO_CHANGE;
}
-
- g_object_unref (vfile);
}
/* make sure to cancel any previous mount operations */
@@ -3060,11 +3036,9 @@ gedit_file_browser_store_set_root_and_virtual_root (GeditFileBrowserStore *
model->priv->root = NULL;
model->priv->virtual_root = NULL;
- if (file != NULL) {
+ if (root != NULL) {
/* Create the root node */
- node = file_browser_node_dir_new (model, file, NULL);
-
- g_object_unref (file);
+ node = file_browser_node_dir_new (model, root, NULL);
model->priv->root = node;
return model_mount_root (model, virtual_root);
@@ -3078,7 +3052,7 @@ gedit_file_browser_store_set_root_and_virtual_root (GeditFileBrowserStore *
GeditFileBrowserStoreResult
gedit_file_browser_store_set_root (GeditFileBrowserStore * model,
- gchar const *root)
+ GFile *root)
{
g_return_val_if_fail (GEDIT_IS_FILE_BROWSER_STORE (model),
GEDIT_FILE_BROWSER_STORE_RESULT_NO_CHANGE);
@@ -3087,7 +3061,7 @@ gedit_file_browser_store_set_root (GeditFileBrowserStore * model,
NULL);
}
-gchar *
+GFile *
gedit_file_browser_store_get_root (GeditFileBrowserStore * model)
{
g_return_val_if_fail (GEDIT_IS_FILE_BROWSER_STORE (model), NULL);
@@ -3095,10 +3069,10 @@ gedit_file_browser_store_get_root (GeditFileBrowserStore * model)
if (model->priv->root == NULL || model->priv->root->file == NULL)
return NULL;
else
- return g_file_get_uri (model->priv->root->file);
+ return g_file_dup (model->priv->root->file);
}
-gchar *
+GFile *
gedit_file_browser_store_get_virtual_root (GeditFileBrowserStore * model)
{
g_return_val_if_fail (GEDIT_IS_FILE_BROWSER_STORE (model), NULL);
@@ -3106,7 +3080,7 @@ gedit_file_browser_store_get_virtual_root (GeditFileBrowserStore * model)
if (model->priv->virtual_root == NULL || model->priv->virtual_root->file == NULL)
return NULL;
else
- return g_file_get_uri (model->priv->virtual_root->file);
+ return g_file_dup (model->priv->virtual_root->file);
}
void
@@ -3258,8 +3232,6 @@ gedit_file_browser_store_rename (GeditFileBrowserStore * model,
GFile * parent;
GFile * previous;
GError * err = NULL;
- gchar * olduri;
- gchar * newuri;
GtkTreePath *path;
g_return_val_if_fail (GEDIT_IS_FILE_BROWSER_STORE (model), FALSE);
@@ -3306,14 +3278,9 @@ gedit_file_browser_store_rename (GeditFileBrowserStore * model,
return FALSE;
}
- olduri = g_file_get_uri (previous);
- newuri = g_file_get_uri (node->file);
-
- g_signal_emit (model, model_signals[RENAME], 0, olduri, newuri);
+ g_signal_emit (model, model_signals[RENAME], 0, previous, node->file);
g_object_unref (previous);
- g_free (olduri);
- g_free (newuri);
return TRUE;
} else {
diff --git a/plugins/filebrowser/gedit-file-browser-store.h b/plugins/filebrowser/gedit-file-browser-store.h
index f31da3270..635e72fa8 100644
--- a/plugins/filebrowser/gedit-file-browser-store.h
+++ b/plugins/filebrowser/gedit-file-browser-store.h
@@ -37,7 +37,7 @@ typedef enum
{
GEDIT_FILE_BROWSER_STORE_COLUMN_ICON = 0,
GEDIT_FILE_BROWSER_STORE_COLUMN_NAME,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
GEDIT_FILE_BROWSER_STORE_COLUMN_FLAGS,
GEDIT_FILE_BROWSER_STORE_COLUMN_EMBLEM,
GEDIT_FILE_BROWSER_STORE_COLUMN_NUM
@@ -107,32 +107,32 @@ struct _GeditFileBrowserStoreClass {
gboolean (*no_trash) (GeditFileBrowserStore * model,
GList * files);
void (*rename) (GeditFileBrowserStore * model,
- const gchar * olduri,
- const gchar * newuri);
+ GFile * oldfile,
+ GFile * newfile);
void (*begin_refresh) (GeditFileBrowserStore * model);
void (*end_refresh) (GeditFileBrowserStore * model);
void (*unload) (GeditFileBrowserStore * model,
- const gchar * uri);
+ GFile * location);
};
GType gedit_file_browser_store_get_type (void) G_GNUC_CONST;
GType gedit_file_browser_store_register_type (GTypeModule * module);
-GeditFileBrowserStore *gedit_file_browser_store_new (gchar const *root);
+GeditFileBrowserStore *gedit_file_browser_store_new (GFile *root);
GeditFileBrowserStoreResult
gedit_file_browser_store_set_root_and_virtual_root (GeditFileBrowserStore * model,
- gchar const *root,
- gchar const *virtual_root);
+ GFile *root,
+ GFile *virtual_root);
GeditFileBrowserStoreResult
gedit_file_browser_store_set_root (GeditFileBrowserStore * model,
- gchar const *root);
+ GFile *root);
GeditFileBrowserStoreResult
gedit_file_browser_store_set_virtual_root (GeditFileBrowserStore * model,
GtkTreeIter * iter);
GeditFileBrowserStoreResult
-gedit_file_browser_store_set_virtual_root_from_string (GeditFileBrowserStore * model,
- gchar const *root);
+gedit_file_browser_store_set_virtual_root_from_location (GeditFileBrowserStore * model,
+ GFile *root);
GeditFileBrowserStoreResult
gedit_file_browser_store_set_virtual_root_up (GeditFileBrowserStore * model);
GeditFileBrowserStoreResult
@@ -143,8 +143,8 @@ gedit_file_browser_store_get_iter_virtual_root (GeditFileBrowserStore * m
GtkTreeIter * iter);
gboolean gedit_file_browser_store_get_iter_root (GeditFileBrowserStore * model,
GtkTreeIter * iter);
-gchar * gedit_file_browser_store_get_root (GeditFileBrowserStore * model);
-gchar * gedit_file_browser_store_get_virtual_root (GeditFileBrowserStore * model);
+GFile * gedit_file_browser_store_get_root (GeditFileBrowserStore * model);
+GFile * gedit_file_browser_store_get_virtual_root (GeditFileBrowserStore * model);
gboolean gedit_file_browser_store_iter_equal (GeditFileBrowserStore * model,
GtkTreeIter * iter1,
diff --git a/plugins/filebrowser/gedit-file-browser-utils.c b/plugins/filebrowser/gedit-file-browser-utils.c
index d8f4028ab..87e2e9d0d 100644
--- a/plugins/filebrowser/gedit-file-browser-utils.c
+++ b/plugins/filebrowser/gedit-file-browser-utils.c
@@ -128,20 +128,7 @@ gedit_file_browser_utils_pixbuf_from_file (GFile * file,
gchar *
gedit_file_browser_utils_file_basename (GFile * file)
{
- gchar *uri;
- gchar *ret;
-
- uri = g_file_get_uri (file);
- ret = gedit_file_browser_utils_uri_basename (uri);
- g_free (uri);
-
- return ret;
-}
-
-gchar *
-gedit_file_browser_utils_uri_basename (gchar const * uri)
-{
- return gedit_utils_basename_for_display (uri);
+ return gedit_utils_basename_for_display (file);
}
gboolean
diff --git a/plugins/filebrowser/gedit-file-browser-utils.h b/plugins/filebrowser/gedit-file-browser-utils.h
index fc9acbce6..fa5c99915 100644
--- a/plugins/filebrowser/gedit-file-browser-utils.h
+++ b/plugins/filebrowser/gedit-file-browser-utils.h
@@ -13,7 +13,6 @@ GdkPixbuf *gedit_file_browser_utils_pixbuf_from_file (GFile * file,
GtkIconSize size);
gchar * gedit_file_browser_utils_file_basename (GFile * file);
-gchar * gedit_file_browser_utils_uri_basename (gchar const * uri);
gboolean gedit_file_browser_utils_confirmation_dialog (GeditWindow * window,
GtkMessageType type,
diff --git a/plugins/filebrowser/gedit-file-browser-view.c b/plugins/filebrowser/gedit-file-browser-view.c
index 022a720c4..4aa8dcf24 100644
--- a/plugins/filebrowser/gedit-file-browser-view.c
+++ b/plugins/filebrowser/gedit-file-browser-view.c
@@ -99,7 +99,7 @@ static void on_end_refresh (GeditFileBrowserStore * model,
GeditFileBrowserView * view);
static void on_unload (GeditFileBrowserStore * model,
- gchar const * uri,
+ GFile * location,
GeditFileBrowserView * view);
static void on_row_inserted (GeditFileBrowserStore * model,
@@ -132,36 +132,24 @@ gedit_file_browser_view_finalize (GObject * object)
static void
add_expand_state (GeditFileBrowserView * view,
- gchar const * uri)
+ GFile * location)
{
- GFile * file;
-
- if (!uri)
+ if (!location)
return;
-
- file = g_file_new_for_uri (uri);
if (view->priv->expand_state)
- g_hash_table_insert (view->priv->expand_state, file, file);
- else
- g_object_unref (file);
+ g_hash_table_insert (view->priv->expand_state, location, g_object_ref (location));
}
static void
remove_expand_state (GeditFileBrowserView * view,
- gchar const * uri)
+ GFile * location)
{
- GFile * file;
-
- if (!uri)
+ if (!location)
return;
- file = g_file_new_for_uri (uri);
-
if (view->priv->expand_state)
- g_hash_table_remove (view->priv->expand_state, file);
-
- g_object_unref (file);
+ g_hash_table_remove (view->priv->expand_state, location);
}
static void
@@ -170,7 +158,7 @@ row_expanded (GtkTreeView * tree_view,
GtkTreePath * path)
{
GeditFileBrowserView *view = GEDIT_FILE_BROWSER_VIEW (tree_view);
- gchar * uri;
+ GFile *location;
if (GTK_TREE_VIEW_CLASS (gedit_file_browser_view_parent_class)->row_expanded)
GTK_TREE_VIEW_CLASS (gedit_file_browser_view_parent_class)->row_expanded (tree_view, iter, path);
@@ -182,12 +170,11 @@ row_expanded (GtkTreeView * tree_view,
{
gtk_tree_model_get (view->priv->model,
iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI,
- &uri,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
+ &location,
-1);
- add_expand_state (view, uri);
- g_free (uri);
+ add_expand_state (view, location);
}
_gedit_file_browser_store_iter_expanded (GEDIT_FILE_BROWSER_STORE (view->priv->model),
@@ -200,7 +187,7 @@ row_collapsed (GtkTreeView * tree_view,
GtkTreePath * path)
{
GeditFileBrowserView *view = GEDIT_FILE_BROWSER_VIEW (tree_view);
- gchar * uri;
+ GFile * location;
if (GTK_TREE_VIEW_CLASS (gedit_file_browser_view_parent_class)->row_collapsed)
GTK_TREE_VIEW_CLASS (gedit_file_browser_view_parent_class)->row_collapsed (tree_view, iter, path);
@@ -212,12 +199,11 @@ row_collapsed (GtkTreeView * tree_view,
{
gtk_tree_model_get (view->priv->model,
iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI,
- &uri,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
+ &location,
-1);
- remove_expand_state (view, uri);
- g_free (uri);
+ remove_expand_state (view, location);
}
_gedit_file_browser_store_iter_collapsed (GEDIT_FILE_BROWSER_STORE (view->priv->model),
@@ -676,7 +662,7 @@ fill_expand_state (GeditFileBrowserView * view, GtkTreeIter * iter)
{
GtkTreePath * path;
GtkTreeIter child;
- gchar * uri;
+ GFile *location;
if (!gtk_tree_model_iter_has_child (view->priv->model, iter))
return;
@@ -685,14 +671,13 @@ fill_expand_state (GeditFileBrowserView * view, GtkTreeIter * iter)
if (gtk_tree_view_row_expanded (GTK_TREE_VIEW (view), path))
{
- gtk_tree_model_get (view->priv->model,
- iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI,
- &uri,
+ gtk_tree_model_get (view->priv->model,
+ iter,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
+ &location,
-1);
- add_expand_state (view, uri);
- g_free (uri);
+ add_expand_state (view, location);
}
if (gtk_tree_model_iter_children (view->priv->model, &child, iter))
@@ -1186,15 +1171,15 @@ on_end_refresh (GeditFileBrowserStore * model,
}
static void
-on_unload (GeditFileBrowserStore * model,
- gchar const * uri,
- GeditFileBrowserView * view)
+on_unload (GeditFileBrowserStore *model,
+ GFile *location,
+ GeditFileBrowserView *view)
{
/* Don't remove the expand state if we are refreshing */
if (!view->priv->restore_expand_state || view->priv->is_refresh)
return;
- remove_expand_state (view, uri);
+ remove_expand_state (view, location);
}
static void
@@ -1202,23 +1187,21 @@ restore_expand_state (GeditFileBrowserView * view,
GeditFileBrowserStore * model,
GtkTreeIter * iter)
{
- gchar * uri;
- GFile * file;
+ GFile * location;
GtkTreePath * path;
gtk_tree_model_get (GTK_TREE_MODEL (model),
iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI,
- &uri,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
+ &location,
-1);
- if (!uri)
+ if (!location)
return;
- file = g_file_new_for_uri (uri);
path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), iter);
- if (g_hash_table_lookup (view->priv->expand_state, file))
+ if (g_hash_table_lookup (view->priv->expand_state, location))
{
gtk_tree_view_expand_row (GTK_TREE_VIEW (view),
path,
@@ -1226,9 +1209,6 @@ restore_expand_state (GeditFileBrowserView * view,
}
gtk_tree_path_free (path);
-
- g_object_unref (file);
- g_free (uri);
}
static void
diff --git a/plugins/filebrowser/gedit-file-browser-widget.c b/plugins/filebrowser/gedit-file-browser-widget.c
index b1fd808ce..a30504778 100644
--- a/plugins/filebrowser/gedit-file-browser-widget.c
+++ b/plugins/filebrowser/gedit-file-browser-widget.c
@@ -79,7 +79,7 @@ enum
/* Signals */
enum
{
- URI_ACTIVATED,
+ LOCATION_ACTIVATED,
ERROR,
CONFIRM_DELETE,
CONFIRM_NO_TRASH,
@@ -432,14 +432,14 @@ gedit_file_browser_widget_class_init (GeditFileBrowserWidgetClass * klass)
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT));
- signals[URI_ACTIVATED] =
- g_signal_new ("uri-activated",
+ signals[LOCATION_ACTIVATED] =
+ g_signal_new ("location-activated",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GeditFileBrowserWidgetClass,
- uri_activated), NULL, NULL,
- g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1,
- G_TYPE_STRING);
+ location_activated), NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1,
+ G_TYPE_FILE);
signals[ERROR] =
g_signal_new ("error", G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
@@ -1059,21 +1059,17 @@ add_bookmark_hash (GeditFileBrowserWidget * obj,
GtkTreeModel *model;
GdkPixbuf * pixbuf;
gchar * name;
- gchar * uri;
- GFile * file;
+ GFile * location;
NameIcon * item;
model = GTK_TREE_MODEL (obj->priv->bookmarks_store);
- uri = gedit_file_bookmarks_store_get_uri (obj->priv->
- bookmarks_store,
- iter);
+ location = gedit_file_bookmarks_store_get_location (obj->priv->
+ bookmarks_store,
+ iter);
- if (uri == NULL)
+ if (location == NULL)
return;
-
- file = g_file_new_for_uri (uri);
- g_free (uri);
gtk_tree_model_get (model, iter,
GEDIT_FILE_BOOKMARKS_STORE_COLUMN_ICON,
@@ -1086,7 +1082,7 @@ add_bookmark_hash (GeditFileBrowserWidget * obj,
item->icon = pixbuf;
g_hash_table_insert (obj->priv->bookmarks_hash,
- file,
+ location,
item);
}
@@ -1578,8 +1574,6 @@ jump_to_location (GeditFileBrowserWidget * obj, GList * item,
GList *(*iter_func) (GList *);
GtkWidget *menu_from;
GtkWidget *menu_to;
- gchar *root;
- gchar *virtual_root;
if (!obj->priv->locations)
return;
@@ -1638,15 +1632,9 @@ jump_to_location (GeditFileBrowserWidget * obj, GList * item,
loc = (Location *) (obj->priv->current_location->data);
/* Set the new root + virtual root */
- root = g_file_get_uri (loc->root);
- virtual_root = g_file_get_uri (loc->virtual_root);
-
gedit_file_browser_widget_set_root_and_virtual_root (obj,
- root,
- virtual_root);
-
- g_free (root);
- g_free (virtual_root);
+ loc->root,
+ loc->virtual_root);
obj->priv->changing_location = FALSE;
}
@@ -1835,8 +1823,8 @@ gedit_file_browser_widget_show_files (GeditFileBrowserWidget * obj)
void
gedit_file_browser_widget_set_root_and_virtual_root (GeditFileBrowserWidget *obj,
- gchar const *root,
- gchar const *virtual_root)
+ GFile *root,
+ GFile *virtual_root)
{
GeditFileBrowserStoreResult result;
@@ -1855,12 +1843,10 @@ gedit_file_browser_widget_set_root_and_virtual_root (GeditFileBrowserWidget *obj
void
gedit_file_browser_widget_set_root (GeditFileBrowserWidget * obj,
- gchar const *root,
+ GFile *root,
gboolean virtual_root)
{
- GFile *file;
GFile *parent;
- gchar *str;
if (!virtual_root) {
gedit_file_browser_widget_set_root_and_virtual_root (obj,
@@ -1872,16 +1858,11 @@ gedit_file_browser_widget_set_root (GeditFileBrowserWidget * obj,
if (!root)
return;
- file = g_file_new_for_uri (root);
- parent = get_topmost_file (file);
- str = g_file_get_uri (parent);
+ parent = get_topmost_file (root);
gedit_file_browser_widget_set_root_and_virtual_root
- (obj, str, root);
+ (obj, parent, root);
- g_free (str);
-
- g_object_unref (file);
g_object_unref (parent);
}
@@ -2107,7 +2088,6 @@ activate_mount (GeditFileBrowserWidget *widget,
GMount *mount)
{
GFile *root;
- gchar *uri;
if (!mount)
{
@@ -2129,11 +2109,9 @@ activate_mount (GeditFileBrowserWidget *widget,
}
root = g_mount_get_root (mount);
- uri = g_file_get_uri (root);
- gedit_file_browser_widget_set_root (widget, uri, FALSE);
+ gedit_file_browser_widget_set_root (widget, root, FALSE);
- g_free (uri);
g_object_unref (root);
}
@@ -2364,7 +2342,7 @@ bookmark_open (GeditFileBrowserWidget *obj,
GtkTreeModel *model,
GtkTreeIter *iter)
{
- gchar *uri;
+ GFile *location;
gint flags;
gtk_tree_model_get (model, iter,
@@ -2386,11 +2364,11 @@ bookmark_open (GeditFileBrowserWidget *obj,
return;
}
- uri =
- gedit_file_bookmarks_store_get_uri
+ location =
+ gedit_file_bookmarks_store_get_location
(GEDIT_FILE_BOOKMARKS_STORE (model), iter);
- if (uri) {
+ if (location) {
/* here we check if the bookmark is a mount point, or if it
is a remote bookmark. If that's the case, we will set the
root to the uri of the bookmark and not try to set the
@@ -2399,18 +2377,18 @@ bookmark_open (GeditFileBrowserWidget *obj,
if ((flags & GEDIT_FILE_BOOKMARKS_STORE_IS_MOUNT) ||
(flags & GEDIT_FILE_BOOKMARKS_STORE_IS_REMOTE_BOOKMARK)) {
gedit_file_browser_widget_set_root (obj,
- uri,
+ location,
FALSE);
} else {
gedit_file_browser_widget_set_root (obj,
- uri,
+ location,
TRUE);
}
+
+ g_object_unref (location);
} else {
g_warning ("No uri!");
}
-
- g_free (uri);
}
static void
@@ -2418,19 +2396,17 @@ file_open (GeditFileBrowserWidget *obj,
GtkTreeModel *model,
GtkTreeIter *iter)
{
- gchar *uri;
+ GFile *location;
gint flags;
gtk_tree_model_get (model, iter,
GEDIT_FILE_BROWSER_STORE_COLUMN_FLAGS, &flags,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI, &uri,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION, &location,
-1);
if (!FILE_IS_DIR (flags) && !FILE_IS_DUMMY (flags)) {
- g_signal_emit (obj, signals[URI_ACTIVATED], 0, uri);
+ g_signal_emit (obj, signals[LOCATION_ACTIVATED], 0, location);
}
-
- g_free (uri);
}
static gboolean
@@ -2440,17 +2416,20 @@ directory_open (GeditFileBrowserWidget *obj,
{
gboolean result = FALSE;
GError *error = NULL;
- gchar *uri = NULL;
+ GFile *location;
GeditFileBrowserStoreFlag flags;
gtk_tree_model_get (model, iter,
GEDIT_FILE_BROWSER_STORE_COLUMN_FLAGS, &flags,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI, &uri,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION, &location,
-1);
- if (FILE_IS_DIR (flags)) {
+ if (FILE_IS_DIR (flags) && location) {
+ gchar *uri;
result = TRUE;
+ uri = g_file_get_uri (location);
+
if (!gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (obj)), uri, GDK_CURRENT_TIME, &error)) {
g_signal_emit (obj, signals[ERROR], 0,
GEDIT_FILE_BROWSER_ERROR_OPEN_DIRECTORY,
@@ -2459,9 +2438,9 @@ directory_open (GeditFileBrowserWidget *obj,
g_error_free (error);
error = NULL;
}
- }
- g_free (uri);
+ g_free (uri);
+ }
return result;
}
@@ -2508,8 +2487,7 @@ on_virtual_root_changed (GeditFileBrowserStore * model,
GeditFileBrowserWidget * obj)
{
GtkTreeIter iter;
- gchar *uri;
- gchar *root_uri;
+ GFile *location;
GtkTreeIter root;
GtkAction *action;
Location *loc;
@@ -2523,8 +2501,8 @@ on_virtual_root_changed (GeditFileBrowserStore * model,
if (gedit_file_browser_store_get_iter_virtual_root (model, &iter)) {
gtk_tree_model_get (GTK_TREE_MODEL (model), &iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_URI,
- &uri, -1);
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
+ &location, -1);
if (gedit_file_browser_store_get_iter_root (model, &root)) {
if (!obj->priv->changing_location) {
@@ -2532,14 +2510,9 @@ on_virtual_root_changed (GeditFileBrowserStore * model,
if (obj->priv->current_location)
clear_next_locations (obj);
- root_uri =
- gedit_file_browser_store_get_root
- (model);
-
loc = g_new (Location, 1);
- loc->root = g_file_new_for_uri (root_uri);
- loc->virtual_root = g_file_new_for_uri (uri);
- g_free (root_uri);
+ loc->root = gedit_file_browser_store_get_root (model);
+ loc->virtual_root = g_object_ref (location);
if (obj->priv->current_location) {
/* Add current location to the menu so we can go back
@@ -2608,7 +2581,6 @@ on_virtual_root_changed (GeditFileBrowserStore * model,
}
check_current_item (obj, TRUE);
- g_free (uri);
} else {
g_message ("NO!");
}
@@ -2688,7 +2660,6 @@ on_combo_changed (GtkComboBox * combo, GeditFileBrowserWidget * obj)
{
GtkTreeIter iter;
guint id;
- gchar * uri;
GFile * file;
if (!gtk_combo_box_get_active_iter (combo, &iter))
@@ -2706,12 +2677,10 @@ on_combo_changed (GtkComboBox * combo, GeditFileBrowserWidget * obj)
gtk_tree_model_get (GTK_TREE_MODEL
(obj->priv->combo_model), &iter,
COLUMN_FILE, &file, -1);
+
+ gedit_file_browser_store_set_virtual_root_from_location
+ (obj->priv->file_store, file);
- uri = g_file_get_uri (file);
- gedit_file_browser_store_set_virtual_root_from_string
- (obj->priv->file_store, uri);
-
- g_free (uri);
g_object_unref (file);
break;
}
@@ -2896,22 +2865,20 @@ on_bookmarks_row_deleted (GtkTreeModel * model,
GeditFileBrowserWidget *obj)
{
GtkTreeIter iter;
- gchar * uri;
- GFile * file;
+ GFile * location;
if (!gtk_tree_model_get_iter (model, &iter, path))
return;
- uri = gedit_file_bookmarks_store_get_uri (obj->priv->bookmarks_store, &iter);
+ location = gedit_file_bookmarks_store_get_location (obj->priv->bookmarks_store,
+ &iter);
- if (!uri)
+ if (!location)
return;
- file = g_file_new_for_uri (uri);
- g_hash_table_remove (obj->priv->bookmarks_hash, file);
+ g_hash_table_remove (obj->priv->bookmarks_hash, location);
- g_object_unref (file);
- g_free (uri);
+ g_object_unref (location);
}
static void
diff --git a/plugins/filebrowser/gedit-file-browser-widget.h b/plugins/filebrowser/gedit-file-browser-widget.h
index e9cc2a0ec..393629369 100644
--- a/plugins/filebrowser/gedit-file-browser-widget.h
+++ b/plugins/filebrowser/gedit-file-browser-widget.h
@@ -58,8 +58,8 @@ struct _GeditFileBrowserWidgetClass
GtkVBoxClass parent_class;
/* Signals */
- void (*uri_activated) (GeditFileBrowserWidget * widget,
- gchar const *uri);
+ void (*location_activated) (GeditFileBrowserWidget * widget,
+ GFile *location);
void (*error) (GeditFileBrowserWidget * widget,
guint code,
gchar const *message);
@@ -79,12 +79,12 @@ void gedit_file_browser_widget_show_bookmarks (GeditFileBrowserWidget * ob
void gedit_file_browser_widget_show_files (GeditFileBrowserWidget * obj);
void gedit_file_browser_widget_set_root (GeditFileBrowserWidget * obj,
- gchar const *root,
+ GFile *root,
gboolean virtual_root);
void
gedit_file_browser_widget_set_root_and_virtual_root (GeditFileBrowserWidget * obj,
- gchar const *root,
- gchar const *virtual_root);
+ GFile *root,
+ GFile *virtual_root);
gboolean
gedit_file_browser_widget_get_selected_directory (GeditFileBrowserWidget * obj,
diff --git a/plugins/quickopen/quickopen/windowhelper.py b/plugins/quickopen/quickopen/windowhelper.py
index 603acf551..30cefaef0 100644
--- a/plugins/quickopen/quickopen/windowhelper.py
+++ b/plugins/quickopen/quickopen/windowhelper.py
@@ -95,13 +95,10 @@ class WindowHelper:
msg = bus.send_sync('/plugins/filebrowser', 'get_root')
if msg:
- uri = msg.get_value('uri')
+ gfile = msg.get_value('location')
- if uri:
- gfile = gio.File(uri)
-
- if gfile.is_native():
- paths.append(gfile)
+ if gfile and gfile.is_native():
+ paths.append(gfile)
except StandardError:
pass