summaryrefslogtreecommitdiff
path: root/demos/gtk-demo/spinner.c
diff options
context:
space:
mode:
Diffstat (limited to 'demos/gtk-demo/spinner.c')
-rw-r--r--demos/gtk-demo/spinner.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/demos/gtk-demo/spinner.c b/demos/gtk-demo/spinner.c
new file mode 100644
index 0000000000..f18e1a17eb
--- /dev/null
+++ b/demos/gtk-demo/spinner.c
@@ -0,0 +1,90 @@
+/* Spinner
+ *
+ * GtkSpinner allows to show that background activity is on-going.
+ *
+ */
+
+#include <gtk/gtk.h>
+
+static GtkWidget *window = NULL;
+static GtkWidget *spinner_sensitive = NULL;
+static GtkWidget *spinner_unsensitive = NULL;
+
+static void
+on_play_clicked (GtkButton *button, gpointer user_data)
+{
+ gtk_spinner_start (GTK_SPINNER (spinner_sensitive));
+ gtk_spinner_start (GTK_SPINNER (spinner_unsensitive));
+}
+
+static void
+on_stop_clicked (GtkButton *button, gpointer user_data)
+{
+ gtk_spinner_stop (GTK_SPINNER (spinner_sensitive));
+ gtk_spinner_stop (GTK_SPINNER (spinner_unsensitive));
+}
+
+GtkWidget *
+do_spinner (GtkWidget *do_widget)
+{
+ GtkWidget *vbox;
+ GtkWidget *hbox;
+ GtkWidget *button;
+ GtkWidget *spinner;
+
+ if (!window)
+ {
+ window = gtk_dialog_new_with_buttons ("GtkSpinner",
+ GTK_WINDOW (do_widget),
+ 0,
+ GTK_STOCK_CLOSE,
+ GTK_RESPONSE_NONE,
+ NULL);
+ gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
+
+ g_signal_connect (window, "response",
+ G_CALLBACK (gtk_widget_destroy), NULL);
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (gtk_widget_destroyed), &window);
+
+ vbox = gtk_vbox_new (FALSE, 5);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
+
+ /* Sensitive */
+ hbox = gtk_hbox_new (FALSE, 5);
+ spinner = gtk_spinner_new ();
+ gtk_container_add (GTK_CONTAINER (hbox), spinner);
+ gtk_container_add (GTK_CONTAINER (hbox), gtk_entry_new ());
+ gtk_container_add (GTK_CONTAINER (vbox), hbox);
+ spinner_sensitive = spinner;
+
+ /* Disabled */
+ hbox = gtk_hbox_new (FALSE, 5);
+ spinner = gtk_spinner_new ();
+ gtk_container_add (GTK_CONTAINER (hbox), spinner);
+ gtk_container_add (GTK_CONTAINER (hbox), gtk_entry_new ());
+ gtk_container_add (GTK_CONTAINER (vbox), hbox);
+ spinner_unsensitive = spinner;
+ gtk_widget_set_sensitive (hbox, FALSE);
+
+ button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY);
+ g_signal_connect (G_OBJECT (button), "clicked",
+ G_CALLBACK (on_play_clicked), spinner);
+ gtk_container_add (GTK_CONTAINER (vbox), button);
+
+ button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_STOP);
+ g_signal_connect (G_OBJECT (button), "clicked",
+ G_CALLBACK (on_stop_clicked), spinner);
+ gtk_container_add (GTK_CONTAINER (vbox), button);
+ }
+
+ if (!GTK_WIDGET_VISIBLE (window))
+ gtk_widget_show_all (window);
+ else
+ gtk_widget_destroy (window);
+
+ return window;
+}
+
+