mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-14 06:10:21 +00:00
gtk-demo: Improve the GtkApplication demo
Following suggestions in bug 667968
This commit is contained in:
parent
7328cc73aa
commit
2a6a354aa8
@ -70,12 +70,13 @@ bin_PROGRAMS = gtk3-demo gtk3-demo-application
|
|||||||
|
|
||||||
BUILT_SOURCES = demos.h application_resources.c
|
BUILT_SOURCES = demos.h application_resources.c
|
||||||
|
|
||||||
EXTRA_DIST += \
|
EXTRA_DIST += \
|
||||||
$(IMAGEFILES) \
|
$(IMAGEFILES) \
|
||||||
demo.ui \
|
demo.ui \
|
||||||
application.gresource.xml \
|
application.gresource.xml \
|
||||||
application.ui \
|
application.ui \
|
||||||
gtk-logo-24.png \
|
menus.ui \
|
||||||
|
gtk-logo-24.png \
|
||||||
gtk-logo-48.png
|
gtk-logo-48.png
|
||||||
|
|
||||||
demos.h: @REBUILD@ $(demos) geninclude.pl
|
demos.h: @REBUILD@ $(demos) geninclude.pl
|
||||||
@ -97,8 +98,8 @@ gtk3_demo_application_SOURCES = \
|
|||||||
|
|
||||||
gtk3_demo_application_LDADD = $(LDADDS)
|
gtk3_demo_application_LDADD = $(LDADDS)
|
||||||
|
|
||||||
application_resources.c: application.gresource.xml gtk-logo-24.png gtk-logo-48.png application.ui
|
application_resources.c: application.gresource.xml gtk-logo-24.png gtk-logo-48.png application.ui menus.ui
|
||||||
glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-source $(srcdir)/application.gresource.xml
|
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $(srcdir)/application.gresource.xml
|
||||||
|
|
||||||
IMAGEFILES= alphatest.png \
|
IMAGEFILES= alphatest.png \
|
||||||
apple-red.png \
|
apple-red.png \
|
||||||
|
@ -293,6 +293,25 @@ clicked_cb (GtkWidget *widget, GtkWidget *info)
|
|||||||
gtk_widget_hide (info);
|
gtk_widget_hide (info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
startup (GApplication *app)
|
||||||
|
{
|
||||||
|
GtkBuilder *builder;
|
||||||
|
GMenuModel *appmenu;
|
||||||
|
GMenuModel *menubar;
|
||||||
|
|
||||||
|
builder = gtk_builder_new ();
|
||||||
|
gtk_builder_add_from_resource (builder, "/ui/menus.ui", NULL);
|
||||||
|
|
||||||
|
appmenu = (GMenuModel *)gtk_builder_get_object (builder, "appmenu");
|
||||||
|
menubar = (GMenuModel *)gtk_builder_get_object (builder, "menubar");
|
||||||
|
|
||||||
|
gtk_application_set_app_menu (GTK_APPLICATION (app), appmenu);
|
||||||
|
gtk_application_set_menubar (GTK_APPLICATION (app), menubar);
|
||||||
|
|
||||||
|
g_object_unref (builder);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
activate (GApplication *app)
|
activate (GApplication *app)
|
||||||
{
|
{
|
||||||
@ -305,10 +324,6 @@ activate (GApplication *app)
|
|||||||
GtkWidget *button;
|
GtkWidget *button;
|
||||||
GtkWidget *infobar;
|
GtkWidget *infobar;
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
GMenuModel *appmenu, *menubar;
|
|
||||||
GBytes *bytes;
|
|
||||||
const gchar *data;
|
|
||||||
gsize size;
|
|
||||||
|
|
||||||
window = gtk_application_window_new (GTK_APPLICATION (app));
|
window = gtk_application_window_new (GTK_APPLICATION (app));
|
||||||
gtk_window_set_title (GTK_WINDOW (window), "Application Class");
|
gtk_window_set_title (GTK_WINDOW (window), "Application Class");
|
||||||
@ -320,15 +335,9 @@ activate (GApplication *app)
|
|||||||
window);
|
window);
|
||||||
|
|
||||||
builder = gtk_builder_new ();
|
builder = gtk_builder_new ();
|
||||||
|
gtk_builder_add_from_resource (builder, "/ui/application.ui", NULL);
|
||||||
bytes = g_resources_lookup_data ("/ui/application.ui", 0, NULL);
|
|
||||||
data = g_bytes_get_data (bytes, &size);
|
|
||||||
gtk_builder_add_from_string (builder, data, size, NULL);
|
|
||||||
g_bytes_unref (bytes);
|
|
||||||
|
|
||||||
grid = (GtkWidget *)gtk_builder_get_object (builder, "grid");
|
grid = (GtkWidget *)gtk_builder_get_object (builder, "grid");
|
||||||
appmenu = (GMenuModel *)gtk_builder_get_object (builder, "appmenu");
|
|
||||||
menubar = (GMenuModel *)gtk_builder_get_object (builder, "menubar");
|
|
||||||
contents = (GtkWidget *)gtk_builder_get_object (builder, "contents");
|
contents = (GtkWidget *)gtk_builder_get_object (builder, "contents");
|
||||||
status = (GtkWidget *)gtk_builder_get_object (builder, "status");
|
status = (GtkWidget *)gtk_builder_get_object (builder, "status");
|
||||||
message = (GtkWidget *)gtk_builder_get_object (builder, "message");
|
message = (GtkWidget *)gtk_builder_get_object (builder, "message");
|
||||||
@ -339,8 +348,6 @@ activate (GApplication *app)
|
|||||||
g_object_set_data (G_OBJECT (window), "infobar", infobar);
|
g_object_set_data (G_OBJECT (window), "infobar", infobar);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (window), grid);
|
gtk_container_add (GTK_CONTAINER (window), grid);
|
||||||
gtk_application_set_app_menu (GTK_APPLICATION (app), appmenu);
|
|
||||||
gtk_application_set_menubar (GTK_APPLICATION (app), menubar);
|
|
||||||
|
|
||||||
gtk_widget_grab_focus (contents);
|
gtk_widget_grab_focus (contents);
|
||||||
g_signal_connect (button, "clicked", G_CALLBACK (clicked_cb), infobar);
|
g_signal_connect (button, "clicked", G_CALLBACK (clicked_cb), infobar);
|
||||||
@ -355,6 +362,8 @@ activate (GApplication *app)
|
|||||||
update_statusbar (buffer, GTK_STATUSBAR (status));
|
update_statusbar (buffer, GTK_STATUSBAR (status));
|
||||||
|
|
||||||
gtk_widget_show_all (window);
|
gtk_widget_show_all (window);
|
||||||
|
|
||||||
|
g_object_unref (builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -372,6 +381,7 @@ main (int argc, char *argv[])
|
|||||||
app_entries, G_N_ELEMENTS (app_entries),
|
app_entries, G_N_ELEMENTS (app_entries),
|
||||||
app);
|
app);
|
||||||
|
|
||||||
|
g_signal_connect (app, "startup", G_CALLBACK (startup), NULL);
|
||||||
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
|
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
|
||||||
|
|
||||||
g_application_run (G_APPLICATION (app), 0, NULL);
|
g_application_run (G_APPLICATION (app), 0, NULL);
|
||||||
|
@ -6,5 +6,6 @@
|
|||||||
</gresource>
|
</gresource>
|
||||||
<gresource prefix="/ui">
|
<gresource prefix="/ui">
|
||||||
<file>application.ui</file>
|
<file>application.ui</file>
|
||||||
|
<file>menus.ui</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
@ -106,45 +106,4 @@
|
|||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<menu id="appmenu">
|
|
||||||
<section>
|
|
||||||
<item label="_New" action="app.new" accel="<Primary>n"/>
|
|
||||||
<item label="_Open" action="app.open"/>
|
|
||||||
<item label="_Save" action="app.save" accel="<Primary>s"/>
|
|
||||||
<item label="Save _As..." action="app.save-as" accel="<Primary>s"/>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<item label="_Quit" action="app.quit" accel="<Primary>q"/>
|
|
||||||
</section>
|
|
||||||
</menu>
|
|
||||||
<menu id="menubar">
|
|
||||||
<section>
|
|
||||||
<submenu label="_Preferences">
|
|
||||||
<section>
|
|
||||||
<item label="_Prefer Dark Theme" action="app.dark"/>
|
|
||||||
<item label="_Hide Titlebar when maximized" action="win.titlebar"/>
|
|
||||||
<submenu label="_Color">
|
|
||||||
<section>
|
|
||||||
<item label="_Red" action="win.color" target="red" accel="<Primary>r"/>
|
|
||||||
<item label="_Green" action="win.color" target="green" accel="<Primary>g"/>
|
|
||||||
<item label="_Blue" action="win.color" target="blue" accel="<Primary>b"/>
|
|
||||||
</section>
|
|
||||||
</submenu>
|
|
||||||
<submenu label="_Shape">
|
|
||||||
<section>
|
|
||||||
<item label="_Square" action="win.shape" target="square" accel="<Primary>s"/>
|
|
||||||
<item label="_Rectangle" action="win.shape" target="rectangle" accel="<Primary>r"/>
|
|
||||||
<item label="_Oval" action="win.shape" target="oval" accel="<Primary>o"/>
|
|
||||||
</section>
|
|
||||||
</submenu>
|
|
||||||
<item label="_Bold" action="win.bold" accel="<Primary>b"/>
|
|
||||||
</section>
|
|
||||||
</submenu>
|
|
||||||
<submenu label="_Help">
|
|
||||||
<section>
|
|
||||||
<item label="_About" action="win.about" accel="<Primary>a"/>
|
|
||||||
</section>
|
|
||||||
</submenu>
|
|
||||||
</section>
|
|
||||||
</menu>
|
|
||||||
</interface>
|
</interface>
|
||||||
|
34
demos/gtk-demo/menus.ui
Normal file
34
demos/gtk-demo/menus.ui
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<interface>
|
||||||
|
<menu id="appmenu">
|
||||||
|
<section>
|
||||||
|
<item label="_New" action="app.new" accel="<Primary>n"/>
|
||||||
|
<item label="_Open" action="app.open"/>
|
||||||
|
<item label="_Save" action="app.save" accel="<Primary>s"/>
|
||||||
|
<item label="Save _As..." action="app.save-as" accel="<Primary>s"/>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<item label="_Quit" action="app.quit" accel="<Primary>q"/>
|
||||||
|
</section>
|
||||||
|
</menu>
|
||||||
|
<menu id="menubar">
|
||||||
|
<submenu label="_Preferences">
|
||||||
|
<item label="_Prefer Dark Theme" action="app.dark"/>
|
||||||
|
<item label="_Hide Titlebar when maximized" action="win.titlebar"/>
|
||||||
|
<submenu label="_Color">
|
||||||
|
<item label="_Red" action="win.color" target="red" accel="<Primary>r"/>
|
||||||
|
<item label="_Green" action="win.color" target="green" accel="<Primary>g"/>
|
||||||
|
<item label="_Blue" action="win.color" target="blue" accel="<Primary>b"/>
|
||||||
|
</submenu>
|
||||||
|
<submenu label="_Shape">
|
||||||
|
<item label="_Square" action="win.shape" target="square" accel="<Primary>s"/>
|
||||||
|
<item label="_Rectangle" action="win.shape" target="rectangle" accel="<Primary>r"/>
|
||||||
|
<item label="_Oval" action="win.shape" target="oval" accel="<Primary>o"/>
|
||||||
|
</submenu>
|
||||||
|
<item label="_Bold" action="win.bold" accel="<Primary>b"/>
|
||||||
|
</submenu>
|
||||||
|
<submenu label="_Help">
|
||||||
|
<item label="_About" action="win.about" accel="<Primary>a"/>
|
||||||
|
</submenu>
|
||||||
|
</menu>
|
||||||
|
</interface>
|
Loading…
Reference in New Issue
Block a user