diff options
author | Ignacio Casal Quinteiro <icq@gnome.org> | 2010-04-01 15:19:33 +0200 |
---|---|---|
committer | Ignacio Casal Quinteiro <icq@gnome.org> | 2010-04-27 13:37:38 +0200 |
commit | 44d5f89c3302d3f539349659b7742780e298776f (patch) | |
tree | e6f02ddc9a1e2ee2473994ee47583f9cdc2700a3 /plugins | |
parent | b2c444d72c192ef115b0555fe931e374667b33c6 (diff) | |
download | gedit-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.c | 15 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-bookmarks-store.h | 2 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-marshal.list | 2 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-messages.c | 105 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-plugin.c | 141 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-store.c | 141 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-store.h | 24 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-utils.c | 15 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-utils.h | 1 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-view.c | 80 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-widget.c | 139 | ||||
-rw-r--r-- | plugins/filebrowser/gedit-file-browser-widget.h | 10 | ||||
-rw-r--r-- | plugins/quickopen/quickopen/windowhelper.py | 9 |
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 |