diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-06-19 18:13:34 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-06-19 18:16:19 -0400 |
commit | afd75070a24e7407c829a96229559c6719ba488e (patch) | |
tree | fb8aa54f0928c5a23521ba04c30dcf02c633a2d0 /demos/gtk-demo/overlay.c | |
parent | d4b0694c02d7d361e35e211f13a97c901713bd55 (diff) | |
download | gtk+-afd75070a24e7407c829a96229559c6719ba488e.tar.gz |
gtk-demo: A better overlay demo
This shows the new passthrough feature.
Diffstat (limited to 'demos/gtk-demo/overlay.c')
-rw-r--r-- | demos/gtk-demo/overlay.c | 185 |
1 files changed, 45 insertions, 140 deletions
diff --git a/demos/gtk-demo/overlay.c b/demos/gtk-demo/overlay.c index 60f419f67f..c39189eced 100644 --- a/demos/gtk-demo/overlay.c +++ b/demos/gtk-demo/overlay.c @@ -1,10 +1,16 @@ /* Overlay * - * Stack widgets in static positions over a main widget + * Stack widgets in static positions over a main widget. */ #include <gtk/gtk.h> +static void +do_number (GtkButton *button, GtkEntry *entry) +{ + gtk_entry_set_text (entry, gtk_button_get_label (button)); +} + GtkWidget * do_overlay (GtkWidget *do_widget) { @@ -12,157 +18,56 @@ do_overlay (GtkWidget *do_widget) if (!window) { - GtkWidget *view; - GtkWidget *sw; GtkWidget *overlay; - GtkWidget *entry; + GtkWidget *grid; + GtkWidget *button; + GtkWidget *vbox; GtkWidget *label; + GtkWidget *entry; + int i, j; + char *text; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_screen (GTK_WINDOW (window), - gtk_widget_get_screen (do_widget)); - gtk_window_set_default_size (GTK_WINDOW (window), - 450, 450); - - g_signal_connect (window, "destroy", - G_CALLBACK (gtk_widget_destroyed), &window); - + gtk_window_set_default_size (GTK_WINDOW (window), 500, 510); gtk_window_set_title (GTK_WINDOW (window), "Overlay"); - gtk_container_set_border_width (GTK_CONTAINER (window), 0); - - view = gtk_text_view_new (); - - sw = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_container_add (GTK_CONTAINER (sw), view); overlay = gtk_overlay_new (); - gtk_container_add (GTK_CONTAINER (overlay), sw); - gtk_container_add (GTK_CONTAINER (window), overlay); - - entry = gtk_entry_new (); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry); - gtk_widget_set_halign (entry, GTK_ALIGN_END); - gtk_widget_set_valign (entry, GTK_ALIGN_END); - - label = gtk_label_new ("Hello world"); - gtk_widget_set_halign (label, GTK_ALIGN_END); - gtk_widget_set_valign (label, GTK_ALIGN_END); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label); - gtk_widget_set_margin_start (label, 20); - gtk_widget_set_margin_end (label, 20); - gtk_widget_set_margin_top (label, 5); - gtk_widget_set_margin_bottom (label, 5); + grid = gtk_grid_new (); + gtk_container_add (GTK_CONTAINER (overlay), grid); entry = gtk_entry_new (); - gtk_widget_set_halign (entry, GTK_ALIGN_START); - gtk_widget_set_valign (entry, GTK_ALIGN_END); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry); - - label = gtk_label_new ("Hello world"); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_END); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label); - gtk_widget_set_margin_start (label, 20); - gtk_widget_set_margin_end (label, 20); - gtk_widget_set_margin_top (label, 5); - gtk_widget_set_margin_bottom (label, 5); - entry = gtk_entry_new (); - gtk_widget_set_halign (entry, GTK_ALIGN_END); - gtk_widget_set_valign (entry, GTK_ALIGN_START); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry); - - label = gtk_label_new ("Hello world"); - gtk_widget_set_halign (label, GTK_ALIGN_END); - gtk_widget_set_valign (label, GTK_ALIGN_START); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label); - gtk_widget_set_margin_start (label, 20); - gtk_widget_set_margin_end (label, 20); - gtk_widget_set_margin_top (label, 5); - gtk_widget_set_margin_bottom (label, 5); - - entry = gtk_entry_new (); - gtk_widget_set_halign (entry, GTK_ALIGN_START); - gtk_widget_set_valign (entry, GTK_ALIGN_START); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry); - - label = gtk_label_new ("Hello world"); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_START); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label); - gtk_widget_set_margin_start (label, 20); - gtk_widget_set_margin_end (label, 20); - gtk_widget_set_margin_top (label, 5); - gtk_widget_set_margin_bottom (label, 5); - - entry = gtk_entry_new (); - gtk_widget_set_halign (entry, GTK_ALIGN_END); - gtk_widget_set_valign (entry, GTK_ALIGN_CENTER); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry); - - label = gtk_label_new ("Hello world"); - gtk_widget_set_halign (label, GTK_ALIGN_END); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label); - gtk_widget_set_margin_start (label, 20); - gtk_widget_set_margin_end (label, 20); - gtk_widget_set_margin_top (label, 5); - gtk_widget_set_margin_bottom (label, 5); - - entry = gtk_entry_new (); - gtk_widget_set_halign (entry, GTK_ALIGN_START); - gtk_widget_set_valign (entry, GTK_ALIGN_CENTER); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry); - - label = gtk_label_new ("Hello world"); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label); - gtk_widget_set_margin_start (label, 20); - gtk_widget_set_margin_end (label, 20); - gtk_widget_set_margin_top (label, 5); - gtk_widget_set_margin_bottom (label, 5); + for (j = 0; j < 5; j++) + { + for (i = 0; i < 5; i++) + { + text = g_strdup_printf ("%d", 5*j + i); + button = gtk_button_new_with_label (text); + g_free (text); + gtk_widget_set_hexpand (button, TRUE); + gtk_widget_set_vexpand (button, TRUE); + g_signal_connect (button, "clicked", G_CALLBACK (do_number), entry); + gtk_grid_attach (GTK_GRID (grid), button, i, j, 1, 1); + } + } + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10); + gtk_overlay_add_overlay (GTK_OVERLAY (overlay), vbox); + gtk_overlay_set_overlay_pass_through (GTK_OVERLAY (overlay), vbox, TRUE); + gtk_widget_set_halign (vbox, GTK_ALIGN_CENTER); + gtk_widget_set_valign (vbox, GTK_ALIGN_CENTER); + + label = gtk_label_new ("<span foreground='blue' weight='ultrabold' font='40'>Numbers</span>"); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 8); + + gtk_entry_set_placeholder_text (GTK_ENTRY (entry), "Your Lucky Number"); + gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 8); - entry = gtk_entry_new (); - gtk_widget_set_halign (entry, GTK_ALIGN_CENTER); - gtk_widget_set_valign (entry, GTK_ALIGN_START); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry); - - label = gtk_label_new ("Hello world"); - gtk_widget_set_halign (label, GTK_ALIGN_CENTER); - gtk_widget_set_valign (label, GTK_ALIGN_START); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label); - gtk_widget_set_margin_start (label, 20); - gtk_widget_set_margin_end (label, 20); - gtk_widget_set_margin_top (label, 5); - gtk_widget_set_margin_bottom (label, 5); - - entry = gtk_entry_new (); - gtk_widget_set_halign (entry, GTK_ALIGN_CENTER); - gtk_widget_set_valign (entry, GTK_ALIGN_END); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry); - - label = gtk_label_new ("Hello world"); - gtk_widget_set_halign (label, GTK_ALIGN_CENTER); - gtk_widget_set_valign (label, GTK_ALIGN_END); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label); - gtk_widget_set_margin_start (label, 10); - gtk_widget_set_margin_end (label, 10); - gtk_widget_set_margin_top (label, 5); - gtk_widget_set_margin_bottom (label, 5); + gtk_container_add (GTK_CONTAINER (window), overlay); - entry = gtk_entry_new (); - gtk_widget_set_halign (entry, GTK_ALIGN_CENTER); - gtk_widget_set_valign (entry, GTK_ALIGN_CENTER); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry); - - label = gtk_label_new ("Hello world"); - gtk_widget_set_halign (label, GTK_ALIGN_CENTER); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label); + g_signal_connect (window, "destroy", + G_CALLBACK (gtk_widget_destroyed), &window); gtk_widget_show_all (overlay); } |