forked from AuroraMiddleware/gtk
d732c869c2
Add the names of the main widgets as keywords to our demos, but also things like "game". This helps finding relevant demos in our growing list. You can now for example type "label", and find the "error states" and "links" demos showing GtkLabel features.
65 lines
2.1 KiB
C
65 lines
2.1 KiB
C
/* Header Bar
|
|
* #Keywords: GtkWindowHandle, GtkWindowControls
|
|
*
|
|
* GtkHeaderBar is a container that is suitable for implementing
|
|
* window titlebars. One of its features is that it can position
|
|
* a title centered with regard to the full width, regardless of
|
|
* variable-width content at the left or right.
|
|
*
|
|
* It is commonly used with gtk_window_set_titlebar()
|
|
*/
|
|
|
|
#include <gtk/gtk.h>
|
|
|
|
GtkWidget *
|
|
do_headerbar (GtkWidget *do_widget)
|
|
{
|
|
static GtkWidget *window = NULL;
|
|
GtkWidget *header;
|
|
GtkWidget *button;
|
|
GtkWidget *box;
|
|
GtkWidget *image;
|
|
GIcon *icon;
|
|
|
|
if (!window)
|
|
{
|
|
window = gtk_window_new ();
|
|
gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
|
|
gtk_window_set_title (GTK_WINDOW (window), "Welcome to Facebook - Log in, sign up or learn more");
|
|
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
|
|
|
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
|
|
|
header = gtk_header_bar_new ();
|
|
|
|
button = gtk_button_new ();
|
|
icon = g_themed_icon_new ("mail-send-receive-symbolic");
|
|
image = gtk_image_new_from_gicon (icon);
|
|
g_object_unref (icon);
|
|
gtk_button_set_child (GTK_BUTTON (button), image);
|
|
gtk_header_bar_pack_end (GTK_HEADER_BAR (header), button);
|
|
|
|
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
|
gtk_widget_add_css_class (box, "linked");
|
|
button = gtk_button_new ();
|
|
gtk_button_set_child (GTK_BUTTON (button), gtk_image_new_from_icon_name ("pan-start-symbolic"));
|
|
gtk_box_append (GTK_BOX (box), button);
|
|
button = gtk_button_new ();
|
|
gtk_button_set_child (GTK_BUTTON (button), gtk_image_new_from_icon_name ("pan-end-symbolic"));
|
|
gtk_box_append (GTK_BOX (box), button);
|
|
|
|
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), box);
|
|
|
|
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
|
|
|
gtk_window_set_child (GTK_WINDOW (window), gtk_text_view_new ());
|
|
}
|
|
|
|
if (!gtk_widget_get_visible (window))
|
|
gtk_widget_show (window);
|
|
else
|
|
gtk_window_destroy (GTK_WINDOW (window));
|
|
|
|
return window;
|
|
}
|