[gthumb] folder tree: added root and root-uri properties
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] folder tree: added root and root-uri properties
- Date: Sun, 24 Nov 2019 12:26:39 +0000 (UTC)
commit d2958c99d09f3d0f8dc47bd9f40130bd88c18851
Author: Paolo Bacchilega <paobac src gnome org>
Date: Fri Nov 1 14:29:27 2019 +0100
folder tree: added root and root-uri properties
If no root is specified use the VFS root (gthumb-vfs:///).
gthumb/gth-folder-tree.c | 106 +++++++++++++++++++++++++++++++++++++++++++----
gthumb/gth-folder-tree.h | 2 +-
2 files changed, 98 insertions(+), 10 deletions(-)
---
diff --git a/gthumb/gth-folder-tree.c b/gthumb/gth-folder-tree.c
index 703a7a2a..e4036f19 100644
--- a/gthumb/gth-folder-tree.c
+++ b/gthumb/gth-folder-tree.c
@@ -34,6 +34,7 @@
#include "gth-request-dialog.h"
+#define DEFAULT_URI "gthumb-vfs:///"
#define EMPTY_URI "..."
#define LOADING_URI "."
#define PARENT_URI ".."
@@ -63,6 +64,14 @@ enum {
NUM_COLUMNS
};
+
+enum {
+ PROP_0,
+ PROP_ROOT,
+ PROP_ROOT_URI
+};
+
+
enum {
FOLDER_POPUP,
LIST_CHILDREN,
@@ -116,6 +125,70 @@ G_DEFINE_TYPE_WITH_CODE (GthFolderTree,
G_ADD_PRIVATE (GthFolderTree))
+static void
+gth_folder_tree_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GthFolderTree *self;
+ const char *uri;
+
+ self = GTH_FOLDER_TREE (object);
+
+ switch (property_id) {
+ case PROP_ROOT:
+ _g_object_unref (self->priv->root);
+ self->priv->root = _g_object_ref (g_value_get_object (value));
+ if (self->priv->root == NULL)
+ self->priv->root = g_file_new_for_uri (DEFAULT_URI);
+ break;
+
+ case PROP_ROOT_URI:
+ _g_object_unref (self->priv->root);
+ self->priv->root = NULL;
+ uri = g_value_get_string (value);
+ if (uri != NULL)
+ self->priv->root = g_file_new_for_uri (uri);
+ if (self->priv->root == NULL)
+ self->priv->root = g_file_new_for_uri (DEFAULT_URI);
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+static void
+gth_folder_tree_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GthFolderTree *self;
+ char *uri;
+
+ self = GTH_FOLDER_TREE (object);
+
+ switch (property_id) {
+ case PROP_ROOT:
+ g_value_set_object (value, self->priv->root);
+ break;
+
+ case PROP_ROOT_URI:
+ uri = g_file_get_uri (self->priv->root);
+ g_value_set_string (value, uri);
+ g_free (uri);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+
static void remove_all_locations_from_the_monitor (GthFolderTree *folder_tree);
@@ -153,11 +226,32 @@ gth_folder_tree_class_init (GthFolderTreeClass *class)
GtkWidgetClass *widget_class;
object_class = (GObjectClass*) class;
+ object_class->set_property = gth_folder_tree_set_property;
+ object_class->get_property = gth_folder_tree_get_property;
object_class->finalize = gth_folder_tree_finalize;
widget_class = (GtkWidgetClass*) class;
widget_class->drag_begin = NULL;
+ /* properties */
+
+ g_object_class_install_property (object_class,
+ PROP_ROOT,
+ g_param_spec_object ("root",
+ "Root",
+ "The root of the folder tree",
+ G_TYPE_FILE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_ROOT_URI,
+ g_param_spec_string ("root-uri",
+ "Root uri",
+ "The root of the folder tree as an uri",
+ NULL,
+ G_PARAM_READWRITE));
+
+ /* signals */
+
gth_folder_tree_signals[FOLDER_POPUP] =
g_signal_new ("folder_popup",
G_TYPE_FROM_CLASS (class),
@@ -1264,7 +1358,7 @@ gth_folder_tree_init (GthFolderTree *folder_tree)
GtkTreeSelection *selection;
folder_tree->priv = gth_folder_tree_get_instance_private (folder_tree);
- folder_tree->priv->root = NULL;
+ folder_tree->priv->root = g_file_new_for_uri (DEFAULT_URI);
folder_tree->priv->entry_points = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal,
g_object_unref, NULL);
folder_tree->priv->recalc_entry_points = FALSE;
folder_tree->priv->tree_store = gtk_tree_store_new (NUM_COLUMNS,
@@ -1347,15 +1441,9 @@ gth_folder_tree_init (GthFolderTree *folder_tree)
GtkWidget *
-gth_folder_tree_new (const char *uri)
+gth_folder_tree_new (const char *root)
{
- GthFolderTree *folder_tree;
-
- folder_tree = g_object_new (GTH_TYPE_FOLDER_TREE, NULL);
- if (uri != NULL)
- folder_tree->priv->root = g_file_new_for_uri (uri);
-
- return (GtkWidget *) folder_tree;
+ return g_object_new (GTH_TYPE_FOLDER_TREE, "root-uri", root, NULL);
}
diff --git a/gthumb/gth-folder-tree.h b/gthumb/gth-folder-tree.h
index dc835327..b8e4446e 100644
--- a/gthumb/gth-folder-tree.h
+++ b/gthumb/gth-folder-tree.h
@@ -65,7 +65,7 @@ struct _GthFolderTreeClass {
};
GType gth_folder_tree_get_type (void);
-GtkWidget * gth_folder_tree_new (const char *uri);
+GtkWidget * gth_folder_tree_new (const char *root);
void gth_folder_tree_set_list (GthFolderTree *folder_tree,
GFile *root,
GList *files,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]