[libdazzle] tests: add simple file-browser test for DzlTree
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libdazzle] tests: add simple file-browser test for DzlTree
- Date: Sat, 2 Dec 2017 23:40:17 +0000 (UTC)
commit a1f726025d3b15678fe51d26fd0796f450a44f78
Author: Christian Hergert <chergert redhat com>
Date: Sat Dec 2 15:39:58 2017 -0800
tests: add simple file-browser test for DzlTree
tests/meson.build | 6 +++
tests/test-tree.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 104 insertions(+), 0 deletions(-)
---
diff --git a/tests/meson.build b/tests/meson.build
index e037414..7097ddb 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -350,4 +350,10 @@ test_recursive_monitor = executable('test-recursive-monitor', 'test-recursive-mo
)
test('test-recursive-monitor', test_recursive_monitor, env: test_env)
+test_tree = executable('test-tree', 'test-tree.c',
+ c_args: test_cflags,
+ link_args: test_link_args,
+ dependencies: libdazzle_deps + [libdazzle_dep],
+)
+
endif
diff --git a/tests/test-tree.c b/tests/test-tree.c
new file mode 100644
index 0000000..0665a4c
--- /dev/null
+++ b/tests/test-tree.c
@@ -0,0 +1,98 @@
+#include <dazzle.h>
+
+static void
+build_node_cb (DzlTreeBuilder *builder,
+ DzlTreeNode *node)
+{
+ GFile *file;
+
+ g_assert (DZL_IS_TREE_BUILDER (builder));
+ g_assert (DZL_IS_TREE_NODE (node));
+
+ file = G_FILE (dzl_tree_node_get_item (node));
+ g_assert (G_IS_FILE (file));
+
+ if (g_file_query_file_type (file, 0, NULL) == G_FILE_TYPE_DIRECTORY)
+ {
+ g_autoptr(GFileEnumerator) enumerator = NULL;
+ gpointer infoptr;
+
+ enumerator = g_file_enumerate_children (file,
+ G_FILE_ATTRIBUTE_STANDARD_NAME","
+ G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ 0, NULL, NULL);
+
+ if (enumerator == NULL)
+ return;
+
+ while (!!(infoptr = g_file_enumerator_next_file (enumerator, NULL, NULL)))
+ {
+ g_autoptr(GFileInfo) info = infoptr;
+ g_autoptr(GFile) child = g_file_get_child (file, g_file_info_get_name (info));
+ DzlTreeNode *child_node;
+
+ child_node = dzl_tree_node_new ();
+ dzl_tree_node_set_item (child_node, G_OBJECT (child));
+ dzl_tree_node_set_text (child_node, g_file_info_get_name (info));
+ dzl_tree_node_set_reset_on_collapse (child_node, TRUE);
+
+ if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY)
+ {
+ dzl_tree_node_set_children_possible (child_node, TRUE);
+ dzl_tree_node_set_icon_name (child_node, "folder-symbolic");
+ }
+ else
+ dzl_tree_node_set_icon_name (child_node, "text-x-generic-symbolic");
+
+ dzl_tree_node_append (node, child_node);
+ }
+
+ g_file_enumerator_close (enumerator, NULL, NULL);
+ }
+}
+
+gint
+main (gint argc,
+ gchar *argv[])
+{
+ GtkWidget *window;
+ GtkWidget *scroller;
+ GtkWidget *tree;
+ DzlTreeBuilder *builder;
+ DzlTreeNode *root;
+ g_autoptr(GFile) file = NULL;
+
+ gtk_init (&argc, &argv);
+
+ window = g_object_new (GTK_TYPE_WINDOW,
+ "default-width", 300,
+ "default-height", 700,
+ "title", "Tree Test",
+ "visible", TRUE,
+ NULL);
+ scroller = g_object_new (GTK_TYPE_SCROLLED_WINDOW,
+ "visible", TRUE,
+ NULL);
+ gtk_container_add (GTK_CONTAINER (window), scroller);
+ tree = g_object_new (DZL_TYPE_TREE,
+ "headers-visible", FALSE,
+ "visible", TRUE,
+ NULL);
+ gtk_container_add (GTK_CONTAINER (scroller), tree);
+
+ builder = dzl_tree_builder_new ();
+ g_signal_connect (builder, "build-node", G_CALLBACK (build_node_cb), NULL);
+ dzl_tree_add_builder (DZL_TREE (tree), builder);
+
+ root = dzl_tree_node_new ();
+ file = g_file_new_for_path ("/");
+ dzl_tree_node_set_item (root, G_OBJECT (file));
+
+ dzl_tree_set_root (DZL_TREE (tree), root);
+
+ g_signal_connect (window, "delete-event", gtk_main_quit, NULL);
+ gtk_window_present (GTK_WINDOW (window));
+ gtk_main ();
+
+ return 0;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]