filebrowser: Support new location of gtk bookmarks file
Also remove an old bit of code that was left over when some of the ifdef's for
windows and mac specific code was removed.
54d69eb93c
This commit is contained in:
@@ -234,23 +234,23 @@ init_special_directories (XedFileBookmarksStore * model)
|
||||
g_object_unref (file);
|
||||
}
|
||||
|
||||
path = g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP);
|
||||
if (path != NULL)
|
||||
{
|
||||
file = g_file_new_for_path (path);
|
||||
add_file (model, file, NULL, XED_FILE_BOOKMARKS_STORE_IS_DESKTOP |
|
||||
XED_FILE_BOOKMARKS_STORE_IS_SPECIAL_DIR, NULL);
|
||||
g_object_unref (file);
|
||||
}
|
||||
// path = g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP);
|
||||
// if (path != NULL)
|
||||
// {
|
||||
// file = g_file_new_for_path (path);
|
||||
// add_file (model, file, NULL, XED_FILE_BOOKMARKS_STORE_IS_DESKTOP |
|
||||
// XED_FILE_BOOKMARKS_STORE_IS_SPECIAL_DIR, NULL);
|
||||
// g_object_unref (file);
|
||||
// }
|
||||
|
||||
path = g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
|
||||
if (path != NULL)
|
||||
{
|
||||
file = g_file_new_for_path (path);
|
||||
add_file (model, file, NULL, XED_FILE_BOOKMARKS_STORE_IS_DOCUMENTS |
|
||||
XED_FILE_BOOKMARKS_STORE_IS_SPECIAL_DIR, NULL);
|
||||
g_object_unref (file);
|
||||
}
|
||||
// path = g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
|
||||
// if (path != NULL)
|
||||
// {
|
||||
// file = g_file_new_for_path (path);
|
||||
// add_file (model, file, NULL, XED_FILE_BOOKMARKS_STORE_IS_DOCUMENTS |
|
||||
// XED_FILE_BOOKMARKS_STORE_IS_SPECIAL_DIR, NULL);
|
||||
// g_object_unref (file);
|
||||
// }
|
||||
|
||||
file = g_file_new_for_uri ("file:///");
|
||||
add_file (model, file, _("File System"), XED_FILE_BOOKMARKS_STORE_IS_ROOT, NULL);
|
||||
@@ -514,75 +514,106 @@ add_bookmark (XedFileBookmarksStore * model,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
init_bookmarks (XedFileBookmarksStore * model)
|
||||
static gchar *
|
||||
get_bookmarks_file (void)
|
||||
{
|
||||
return g_build_filename (g_get_user_config_dir (), "gtk-3.0", "bookmarks", NULL);
|
||||
}
|
||||
|
||||
static gchar *
|
||||
get_legacy_bookmarks_file (void)
|
||||
{
|
||||
return g_build_filename (g_get_home_dir (), ".gtk-bookmarks", NULL);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
parse_bookmarks_file (XedFileBookmarksStore *model,
|
||||
const gchar *bookmarks,
|
||||
gboolean *added)
|
||||
|
||||
{
|
||||
gchar *bookmarks;
|
||||
GError *error = NULL;
|
||||
gchar *contents;
|
||||
gchar **lines;
|
||||
gchar **line;
|
||||
gboolean added = FALSE;
|
||||
|
||||
/* Read the bookmarks file */
|
||||
bookmarks = g_build_filename (g_get_home_dir (), ".gtk-bookmarks", NULL);
|
||||
|
||||
if (g_file_get_contents (bookmarks, &contents, NULL, &error))
|
||||
{
|
||||
lines = g_strsplit (contents, "\n", 0);
|
||||
|
||||
for (line = lines; *line; ++line)
|
||||
{
|
||||
if (**line)
|
||||
{
|
||||
GFile *location;
|
||||
gchar *pos;
|
||||
gchar *name;
|
||||
|
||||
/* CHECK: is this really utf8? */
|
||||
pos = g_utf8_strchr (*line, -1, ' ');
|
||||
|
||||
if (pos != NULL)
|
||||
{
|
||||
*pos = '\0';
|
||||
name = pos + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
name = NULL;
|
||||
}
|
||||
|
||||
/* the bookmarks file should contain valid
|
||||
* URIs, but paranoia is good */
|
||||
location = g_file_new_for_uri (*line);
|
||||
if (xed_utils_is_valid_location (location))
|
||||
{
|
||||
added |= add_bookmark (model, name, *line);
|
||||
}
|
||||
g_object_unref (location);
|
||||
}
|
||||
}
|
||||
|
||||
g_strfreev (lines);
|
||||
g_free (contents);
|
||||
|
||||
/* Add a watch */
|
||||
if (model->priv->bookmarks_monitor == NULL)
|
||||
{
|
||||
GFile * file;
|
||||
|
||||
file = g_file_new_for_path (bookmarks);
|
||||
model->priv->bookmarks_monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, NULL);
|
||||
g_object_unref (file);
|
||||
|
||||
g_signal_connect (model->priv->bookmarks_monitor, "changed",
|
||||
(GCallback)on_bookmarks_file_changed, model);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (!g_file_get_contents (bookmarks, &contents, NULL, &error))
|
||||
{
|
||||
/* The bookmarks file doesn't exist (which is perfectly fine) */
|
||||
g_error_free (error);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
lines = g_strsplit (contents, "\n", 0);
|
||||
|
||||
for (line = lines; *line; ++line)
|
||||
{
|
||||
if (**line)
|
||||
{
|
||||
GFile *location;
|
||||
|
||||
gchar *pos;
|
||||
gchar *name;
|
||||
|
||||
/* CHECK: is this really utf8? */
|
||||
pos = g_utf8_strchr (*line, -1, ' ');
|
||||
|
||||
if (pos != NULL)
|
||||
{
|
||||
*pos = '\0';
|
||||
name = pos + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
name = NULL;
|
||||
}
|
||||
|
||||
/* the bookmarks file should contain valid
|
||||
* URIs, but paranoia is good */
|
||||
location = g_file_new_for_uri (*line);
|
||||
if (xed_utils_is_valid_location (location))
|
||||
{
|
||||
*added |= add_bookmark (model, name, *line);
|
||||
}
|
||||
g_object_unref (location);
|
||||
}
|
||||
}
|
||||
|
||||
g_strfreev (lines);
|
||||
g_free (contents);
|
||||
|
||||
/* Add a watch */
|
||||
if (model->priv->bookmarks_monitor == NULL)
|
||||
{
|
||||
GFile * file;
|
||||
|
||||
file = g_file_new_for_path (bookmarks);
|
||||
model->priv->bookmarks_monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, NULL);
|
||||
g_object_unref (file);
|
||||
|
||||
g_signal_connect (model->priv->bookmarks_monitor, "changed",
|
||||
G_CALLBACK (on_bookmarks_file_changed), model);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
init_bookmarks (XedFileBookmarksStore *model)
|
||||
{
|
||||
gchar *bookmarks;
|
||||
gboolean added = FALSE;
|
||||
|
||||
bookmarks = get_bookmarks_file ();
|
||||
|
||||
if (!parse_bookmarks_file (model, bookmarks, &added))
|
||||
{
|
||||
g_free (bookmarks);
|
||||
|
||||
/* try the old location (gtk <= 3.4) */
|
||||
bookmarks = get_legacy_bookmarks_file ();
|
||||
parse_bookmarks_file (model, bookmarks, &added);
|
||||
}
|
||||
|
||||
if (added)
|
||||
|
Reference in New Issue
Block a user