summaryrefslogtreecommitdiff
path: root/gconf/testgconfclient.c
diff options
context:
space:
mode:
authorGeorge Lebl <jirka@5z.com>2000-07-24 23:43:25 +0000
committerGeorge Lebl <jirka@src.gnome.org>2000-07-24 23:43:25 +0000
commit377edb91b0af687f6ae5784d94bc2320b8f38d44 (patch)
treedc27ef3f5a1922352e62f70c02f0bcd059e7c9d6 /gconf/testgconfclient.c
parenta42fa312c9a9d5c891de8be468fe8ffc67decfc6 (diff)
downloadgconf-377edb91b0af687f6ae5784d94bc2320b8f38d44.tar.gz
Allow adding overlapping subdirectories. What happens is that the real
Mon Jul 24 16:39:01 2000 George Lebl <jirka@5z.com> * wrappers/gtk/gconf-client.[ch]: Allow adding overlapping subdirectories. What happens is that the real gconf notify is not added for subdirectories. When directories are added or removed the hash is traversed and fixed up. This is done in a simple and incredibly inefficent manner and needs to be fixed. Also this change adds an "err" argument to the _remove_dir call as errors can now happen. Also fix a minor warning by casting. * wrappers/gtk/testgconfclient.c: Add some testing of overlapping directories. Add buttons to add/remove the main directory and the subdirectory. This way you can see if things get proper notifications.
Diffstat (limited to 'gconf/testgconfclient.c')
-rw-r--r--gconf/testgconfclient.c124
1 files changed, 119 insertions, 5 deletions
diff --git a/gconf/testgconfclient.c b/gconf/testgconfclient.c
index 225d00c4..a3928aaf 100644
--- a/gconf/testgconfclient.c
+++ b/gconf/testgconfclient.c
@@ -153,14 +153,98 @@ quit_callback(GtkWidget* button, gpointer data)
gtk_main_quit();
}
+
+static void
+addsub_callback(GtkWidget* button, gpointer data)
+{
+ GtkWidget* win = data;
+ GConfClient* client = gtk_object_get_data(GTK_OBJECT(win), "client");
+ GtkWidget* label = gtk_object_get_data(GTK_OBJECT(win), "label");
+ int subdir = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(win), "subdir"));
+ int maindir = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(win), "maindir"));
+ char *s;
+
+ subdir++;
+
+ gtk_object_set_data(GTK_OBJECT(win), "subdir", GINT_TO_POINTER(subdir));
+
+ gconf_client_add_dir(client, "/apps/gnome/testgconfclient/subdir", GCONF_CLIENT_PRELOAD_NONE, NULL);
+
+ s = g_strdup_printf("Maindir added %d times\nSubdir added %d times", maindir, subdir);
+ gtk_label_set(GTK_LABEL(label), s);
+ g_free(s);
+}
+
+static void
+removesub_callback(GtkWidget* button, gpointer data)
+{
+ GtkWidget* win = data;
+ GConfClient* client = gtk_object_get_data(GTK_OBJECT(win), "client");
+ GtkWidget* label = gtk_object_get_data(GTK_OBJECT(win), "label");
+ int subdir = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(win), "subdir"));
+ int maindir = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(win), "maindir"));
+ char *s;
+
+ subdir--;
+
+ gtk_object_set_data(GTK_OBJECT(win), "subdir", GINT_TO_POINTER(subdir));
+
+ gconf_client_remove_dir(client, "/apps/gnome/testgconfclient/subdir", NULL);
+
+ s = g_strdup_printf("Maindir added %d times\nSubdir added %d times", maindir, subdir);
+ gtk_label_set(GTK_LABEL(label), s);
+ g_free(s);
+}
+
+static void
+addmain_callback(GtkWidget* button, gpointer data)
+{
+ GtkWidget* win = data;
+ GConfClient* client = gtk_object_get_data(GTK_OBJECT(win), "client");
+ GtkWidget* label = gtk_object_get_data(GTK_OBJECT(win), "label");
+ int subdir = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(win), "subdir"));
+ int maindir = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(win), "maindir"));
+ char *s;
+
+ maindir++;
+
+ gtk_object_set_data(GTK_OBJECT(win), "maindir", GINT_TO_POINTER(maindir));
+
+ gconf_client_add_dir(client, "/apps/gnome/testgconfclient", GCONF_CLIENT_PRELOAD_NONE, NULL);
+
+ s = g_strdup_printf("Maindir added %d times\nSubdir added %d times", maindir, subdir);
+ gtk_label_set(GTK_LABEL(label), s);
+ g_free(s);
+}
+static void
+removemain_callback(GtkWidget* button, gpointer data)
+{
+ GtkWidget* win = data;
+ GConfClient* client = gtk_object_get_data(GTK_OBJECT(win), "client");
+ GtkWidget* label = gtk_object_get_data(GTK_OBJECT(win), "label");
+ int subdir = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(win), "subdir"));
+ int maindir = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(win), "maindir"));
+ char *s;
+
+ maindir--;
+
+ gtk_object_set_data(GTK_OBJECT(win), "maindir", GINT_TO_POINTER(maindir));
+
+ gconf_client_remove_dir(client, "/apps/gnome/testgconfclient", NULL);
+
+ s = g_strdup_printf("Maindir added %d times\nSubdir added %d times", maindir, subdir);
+ gtk_label_set(GTK_LABEL(label), s);
+ g_free(s);
+}
static void
create_controls(GConfClient* client)
{
GtkWidget* win;
+ GtkWidget* label;
GtkWidget* vbox;
- GtkWidget* quit_button;
+ GtkWidget* button;
GtkWidget* entry;
/* Reference held by the window */
@@ -178,13 +262,37 @@ create_controls(GConfClient* client)
gtk_container_add(GTK_CONTAINER(win), vbox);
- quit_button = gtk_button_new_with_label("Quit");
+ label = gtk_label_new("Maindir added 1 times\nSubdir added 0 times");
+ gtk_box_pack_end(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+ gtk_object_set_data(GTK_OBJECT(win), "label", label);
+ gtk_object_set_data(GTK_OBJECT(win), "subdir", GINT_TO_POINTER(0));
+ gtk_object_set_data(GTK_OBJECT(win), "maindir", GINT_TO_POINTER(1));
- gtk_signal_connect(GTK_OBJECT(quit_button), "clicked",
+ button = gtk_button_new_with_label("Quit");
+ gtk_signal_connect(GTK_OBJECT(button), "clicked",
GTK_SIGNAL_FUNC(quit_callback), win);
+ gtk_box_pack_end(GTK_BOX(vbox), button, FALSE, FALSE, 0);
- gtk_box_pack_end(GTK_BOX(vbox), quit_button, FALSE, FALSE, 0);
-
+ button = gtk_button_new_with_label("Remove subdir");
+ gtk_signal_connect(GTK_OBJECT(button), "clicked",
+ GTK_SIGNAL_FUNC(removesub_callback), win);
+ gtk_box_pack_end(GTK_BOX(vbox), button, FALSE, FALSE, 0);
+
+ button = gtk_button_new_with_label("Add subdir");
+ gtk_signal_connect(GTK_OBJECT(button), "clicked",
+ GTK_SIGNAL_FUNC(addsub_callback), win);
+ gtk_box_pack_end(GTK_BOX(vbox), button, FALSE, FALSE, 0);
+
+ button = gtk_button_new_with_label("Remove maindir");
+ gtk_signal_connect(GTK_OBJECT(button), "clicked",
+ GTK_SIGNAL_FUNC(removemain_callback), win);
+ gtk_box_pack_end(GTK_BOX(vbox), button, FALSE, FALSE, 0);
+
+ button = gtk_button_new_with_label("Add maindir");
+ gtk_signal_connect(GTK_OBJECT(button), "clicked",
+ GTK_SIGNAL_FUNC(addmain_callback), win);
+ gtk_box_pack_end(GTK_BOX(vbox), button, FALSE, FALSE, 0);
+
entry = entry_attached_to(client, "/apps/gnome/testgconfclient/blah");
gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
@@ -193,6 +301,12 @@ create_controls(GConfClient* client)
entry = entry_attached_to(client, "/apps/gnome/testgconfclient/bar");
gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
+
+ entry = entry_attached_to(client, "/apps/gnome/testgconfclient/subdir/testsub1");
+ gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
+
+ entry = entry_attached_to(client, "/apps/gnome/testgconfclient/subdir/testsub2");
+ gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
gtk_widget_show_all(win);
}