mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-09 18:30:08 +00:00
46a43461c1
The merge request !5235 switched tests and examples from G_APPLICATION_FLAGS_NONE, which has been deprecated in GLib 2.74, to G_APPLICATION_DEFAULT_FLAGS. Sadly, it was done unconditionally, which means we'd have to bump the required version of GLib. To avoid that, let's just use the numeric value of the enum member.
109 lines
3.7 KiB
C
109 lines
3.7 KiB
C
#include <gtk/gtk.h>
|
|
|
|
typedef enum {
|
|
RESPONSE_UNREVEAL,
|
|
} Response;
|
|
|
|
static void
|
|
on_info_bar_response (GtkInfoBar *info_bar,
|
|
int response_id,
|
|
void *user_data)
|
|
{
|
|
switch (response_id)
|
|
{
|
|
case GTK_RESPONSE_CLOSE:
|
|
gtk_widget_hide (GTK_WIDGET (info_bar));
|
|
break;
|
|
|
|
case RESPONSE_UNREVEAL:
|
|
gtk_info_bar_set_revealed (info_bar, FALSE);
|
|
break;
|
|
|
|
default:
|
|
g_assert_not_reached ();
|
|
}
|
|
}
|
|
|
|
static void
|
|
on_activate (GApplication *application,
|
|
void *user_data)
|
|
{
|
|
GtkWidget *box;
|
|
GtkWidget *info_bar;
|
|
GtkWidget *widget;
|
|
|
|
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
|
|
|
|
info_bar = gtk_info_bar_new ();
|
|
gtk_container_add (GTK_CONTAINER (gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar))),
|
|
gtk_label_new ("Hello!\nI am a GtkInfoBar"));
|
|
|
|
widget = gtk_toggle_button_new_with_label ("Toggle :visible");
|
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
|
|
g_object_bind_property (widget, "active",
|
|
info_bar, "visible",
|
|
G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
|
|
gtk_container_add (GTK_CONTAINER (box), widget);
|
|
|
|
widget = gtk_toggle_button_new_with_label ("Toggle :revealed");
|
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
|
|
g_object_bind_property (widget, "active",
|
|
info_bar, "revealed",
|
|
G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
|
|
gtk_container_add (GTK_CONTAINER (box), widget);
|
|
|
|
widget = gtk_toggle_button_new_with_label ("Toggle :show-close-button");
|
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
|
|
g_object_bind_property (widget, "active",
|
|
info_bar, "show-close-button",
|
|
G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
|
|
gtk_container_add (GTK_CONTAINER (box), widget);
|
|
|
|
widget = gtk_combo_box_text_new ();
|
|
gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (widget),
|
|
NULL, "GTK_MESSAGE_INFO");
|
|
gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (widget),
|
|
NULL, "GTK_MESSAGE_WARNING");
|
|
gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (widget),
|
|
NULL, "GTK_MESSAGE_QUESTION");
|
|
gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (widget),
|
|
NULL, "GTK_MESSAGE_ERROR");
|
|
gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (widget),
|
|
NULL, "GTK_MESSAGE_OTHER");
|
|
gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
|
|
g_object_bind_property (widget, "active",
|
|
info_bar, "message-type",
|
|
G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
|
|
gtk_container_add (GTK_CONTAINER (box), widget);
|
|
|
|
gtk_container_add (GTK_CONTAINER (box), info_bar);
|
|
|
|
widget = gtk_button_new_with_label ("Un-reveal");
|
|
gtk_info_bar_add_action_widget (GTK_INFO_BAR (info_bar), widget,
|
|
RESPONSE_UNREVEAL);
|
|
|
|
g_signal_connect (info_bar, "response",
|
|
G_CALLBACK (on_info_bar_response), widget);
|
|
|
|
widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
gtk_container_add (GTK_CONTAINER (widget), box);
|
|
gtk_widget_show_all (widget);
|
|
gtk_application_add_window (GTK_APPLICATION (application),
|
|
GTK_WINDOW (widget));
|
|
}
|
|
|
|
int
|
|
main (int argc,
|
|
char *argv[])
|
|
{
|
|
GtkApplication *application;
|
|
int result;
|
|
|
|
application = gtk_application_new ("org.gtk.test.infobar", 0);
|
|
g_signal_connect (application, "activate", G_CALLBACK (on_activate), NULL);
|
|
result = g_application_run (G_APPLICATION (application), argc, argv);
|
|
g_object_unref (application);
|
|
|
|
return result;
|
|
}
|