summaryrefslogtreecommitdiff
path: root/tests/testsocket_common.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-07-03 16:07:15 +0000
committerOwen Taylor <otaylor@src.gnome.org>2001-07-03 16:07:15 +0000
commit337054a3ec68d0b944bfe1073a4e737771410046 (patch)
tree09cef5b85c4edfec7b6710b6b9e53682ab2145df /tests/testsocket_common.c
parentf409cd9b7f6513acf816e5b3335231bc733f29a6 (diff)
downloadgtk+-337054a3ec68d0b944bfe1073a4e737771410046.tar.gz
Extended to test different type of adding plugs to sockets
Mon Jul 2 16:53:25 2001 Owen Taylor <otaylor@redhat.com> * tests/testsocket.c tests/testsocket_child.c tests/testsocket_common.c tests/Makefile.am: Extended to test different type of adding plugs to sockets (local,active,passive), and to test mapping/unmapping the plug.
Diffstat (limited to 'tests/testsocket_common.c')
-rw-r--r--tests/testsocket_common.c123
1 files changed, 123 insertions, 0 deletions
diff --git a/tests/testsocket_common.c b/tests/testsocket_common.c
new file mode 100644
index 0000000000..265b9af0db
--- /dev/null
+++ b/tests/testsocket_common.c
@@ -0,0 +1,123 @@
+#include "x11/gdkx.h"
+#include <gtk/gtk.h>
+
+static void
+remove_buttons (GtkWidget *widget, GtkWidget *other_button)
+{
+ gtk_widget_destroy (other_button);
+ gtk_widget_destroy (widget);
+}
+
+static gboolean
+blink_cb (gpointer data)
+{
+ GtkWidget *widget = data;
+
+ gtk_widget_show (widget);
+ g_object_set_data (G_OBJECT (widget), "blink", GPOINTER_TO_UINT (0));
+
+ return FALSE;
+}
+
+static void
+blink (GtkWidget *widget,
+ GtkWidget *window)
+{
+ guint blink_timeout = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (window), "blink"));
+
+ if (!blink_timeout)
+ {
+ blink_timeout = g_timeout_add (1000, blink_cb, window);
+ gtk_widget_hide (window);
+
+ g_object_set_data (G_OBJECT (window), "blink", GUINT_TO_POINTER (blink_timeout));
+ }
+}
+
+static void
+local_destroy (GtkWidget *window)
+{
+ guint blink_timeout = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (window), "blink"));
+ if (blink_timeout)
+ g_source_remove (blink_timeout);
+}
+
+static void
+remote_destroy (GtkWidget *window)
+{
+ local_destroy (window);
+ gtk_main_quit ();
+}
+
+static void
+add_buttons (GtkWidget *widget, GtkWidget *box)
+{
+ GtkWidget *add_button;
+ GtkWidget *remove_button;
+
+ add_button = gtk_button_new_with_mnemonic ("_Add");
+ gtk_box_pack_start (GTK_BOX (box), add_button, TRUE, TRUE, 0);
+ gtk_widget_show (add_button);
+
+ gtk_signal_connect (GTK_OBJECT (add_button), "clicked",
+ GTK_SIGNAL_FUNC (add_buttons),
+ box);
+
+ remove_button = gtk_button_new_with_mnemonic ("_Remove");
+ gtk_box_pack_start (GTK_BOX (box), remove_button, TRUE, TRUE, 0);
+ gtk_widget_show (remove_button);
+
+ gtk_signal_connect (GTK_OBJECT (remove_button), "clicked",
+ GTK_SIGNAL_FUNC (remove_buttons),
+ add_button);
+}
+
+guint32
+create_child_plug (guint32 xid,
+ gboolean local)
+{
+ GtkWidget *window;
+ GtkWidget *hbox;
+ GtkWidget *entry;
+ GtkWidget *button;
+ GtkWidget *label;
+
+ window = gtk_plug_new (xid);
+
+ gtk_signal_connect (GTK_OBJECT (window), "destroy",
+ local ? GTK_SIGNAL_FUNC (local_destroy) : GTK_SIGNAL_FUNC (remote_destroy),
+ NULL);
+ gtk_container_set_border_width (GTK_CONTAINER (window), 0);
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window), hbox);
+
+ label = gtk_label_new (local ? "Local:" : "Remote:");
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+
+ entry = gtk_entry_new ();
+ gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
+
+ button = gtk_button_new_with_mnemonic ("_Close");
+ gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
+
+ gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
+ GTK_SIGNAL_FUNC (gtk_widget_destroy),
+ GTK_OBJECT (window));
+
+ button = gtk_button_new_with_mnemonic ("_Blink");
+ gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
+
+ gtk_signal_connect (GTK_OBJECT (button), "clicked",
+ GTK_SIGNAL_FUNC (blink),
+ GTK_OBJECT (window));
+
+ add_buttons (NULL, hbox);
+
+ gtk_widget_show_all (window);
+
+ if (GTK_WIDGET_REALIZED (window))
+ return GDK_WINDOW_XID (window->window);
+ else
+ return 0;
+}