1 /* Header Bar
2  *
3  * GtkHeaderBar is a container that is suitable for implementing
4  * window titlebars. One of its features is that it can position
5  * a title (and optional subtitle) centered with regard to the
6  * full width, regardless of variable-width content at the left
7  * or right.
8  *
9  * It is commonly used with gtk_window_set_titlebar()
10  */
11 
12 #include <gtk/gtk.h>
13 
14 GtkWidget *
do_headerbar(GtkWidget * do_widget)15 do_headerbar (GtkWidget *do_widget)
16 {
17   static GtkWidget *window = NULL;
18   GtkWidget *header;
19   GtkWidget *button;
20   GtkWidget *box;
21   GtkWidget *image;
22   GIcon *icon;
23 
24   if (!window)
25     {
26       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
27       gtk_window_set_screen (GTK_WINDOW (window), gtk_widget_get_screen (do_widget));
28       g_signal_connect (window, "destroy",
29                         G_CALLBACK (gtk_widget_destroyed), &window);
30       gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
31 
32       header = gtk_header_bar_new ();
33       gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (header), TRUE);
34       gtk_header_bar_set_title (GTK_HEADER_BAR (header), "Welcome to Facebook - Log in, sign up or learn more");
35       gtk_header_bar_set_has_subtitle (GTK_HEADER_BAR (header), FALSE);
36 
37       button = gtk_button_new ();
38       icon = g_themed_icon_new ("mail-send-receive-symbolic");
39       image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_BUTTON);
40       g_object_unref (icon);
41       gtk_container_add (GTK_CONTAINER (button), image);
42       gtk_header_bar_pack_end (GTK_HEADER_BAR (header), button);
43 
44       box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
45       gtk_style_context_add_class (gtk_widget_get_style_context (box), "linked");
46       button = gtk_button_new ();
47       gtk_container_add (GTK_CONTAINER (button), gtk_image_new_from_icon_name ("pan-start-symbolic", GTK_ICON_SIZE_BUTTON));
48       gtk_container_add (GTK_CONTAINER (box), button);
49       button = gtk_button_new ();
50       gtk_container_add (GTK_CONTAINER (button), gtk_image_new_from_icon_name ("pan-end-symbolic", GTK_ICON_SIZE_BUTTON));
51       gtk_container_add (GTK_CONTAINER (box), button);
52 
53       gtk_header_bar_pack_start (GTK_HEADER_BAR (header), box);
54 
55       gtk_window_set_titlebar (GTK_WINDOW (window), header);
56 
57       gtk_container_add (GTK_CONTAINER (window), gtk_text_view_new ());
58     }
59 
60   if (!gtk_widget_get_visible (window))
61     gtk_widget_show_all (window);
62   else
63     gtk_widget_destroy (window);
64 
65   return window;
66 }
67