summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-05-10 21:26:19 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-05-11 08:15:56 -0400
commitd2430c70bd2166f086214880043258cf19bb3e8f (patch)
treeefc20eec503846fa269780f4df2e4f1bf5932f22 /examples
parent4de4957aa34b39b313cceff760d390003795b325 (diff)
downloadgtk+-d2430c70bd2166f086214880043258cf19bb3e8f.tar.gz
Refresh the tutorial examples
Redo this series of examples from 2013, and adapt it to modern way of doing things. The biggest differences are that we use a headerbar right from the start, and don't mention the app menu. Fixes: #2730
Diffstat (limited to 'examples')
-rw-r--r--examples/application1/README2
-rw-r--r--examples/application10/Makefile.example35
-rw-r--r--examples/application10/exampleapp.c114
-rw-r--r--examples/application10/exampleapp.gresource.xml9
-rw-r--r--examples/application10/exampleapp.h14
-rw-r--r--examples/application10/exampleappprefs.c59
-rw-r--r--examples/application10/exampleappprefs.h15
-rw-r--r--examples/application10/exampleappwin.c295
-rw-r--r--examples/application10/exampleappwin.h16
-rw-r--r--examples/application10/gears-menu.ui14
-rw-r--r--examples/application10/main.c16
-rw-r--r--examples/application10/meson.build14
-rw-r--r--examples/application10/org.gtk.exampleapp.gschema.xml25
-rw-r--r--examples/application10/prefs.ui67
-rw-r--r--examples/application10/window.ui81
-rw-r--r--examples/application2/README1
-rw-r--r--examples/application2/window.ui10
-rw-r--r--examples/application3/README1
-rw-r--r--examples/application3/window.ui20
-rw-r--r--examples/application4/README1
-rw-r--r--examples/application4/exampleapp.c7
-rw-r--r--examples/application4/exampleapp.gresource.xml2
-rw-r--r--examples/application4/exampleappwin.c10
-rw-r--r--examples/application4/gears-menu.ui (renamed from examples/application6/app-menu.ui)3
-rw-r--r--examples/application4/window.ui25
-rw-r--r--examples/application5/exampleapp.c7
-rw-r--r--examples/application5/exampleapp.gresource.xml2
-rw-r--r--examples/application5/exampleappwin.c12
-rw-r--r--examples/application5/gears-menu.ui (renamed from examples/application10/app-menu.ui)3
-rw-r--r--examples/application5/window.ui25
-rw-r--r--examples/application6/exampleapp.c7
-rw-r--r--examples/application6/exampleapp.gresource.xml2
-rw-r--r--examples/application6/exampleappwin.c11
-rw-r--r--examples/application6/gears-menu.ui (renamed from examples/application4/app-menu.ui)3
-rw-r--r--examples/application6/prefs.ui14
-rw-r--r--examples/application6/window.ui25
-rw-r--r--examples/application7/README1
-rw-r--r--examples/application7/app-menu.ui16
-rw-r--r--examples/application7/exampleapp.c7
-rw-r--r--examples/application7/exampleapp.gresource.xml2
-rw-r--r--examples/application7/exampleappwin.c11
-rw-r--r--examples/application7/gears-menu.ui (renamed from examples/application5/app-menu.ui)3
-rw-r--r--examples/application7/prefs.ui14
-rw-r--r--examples/application7/window.ui36
-rw-r--r--examples/application8/README1
-rw-r--r--examples/application8/app-menu.ui16
-rw-r--r--examples/application8/exampleapp.c7
-rw-r--r--examples/application8/exampleapp.gresource.xml1
-rw-r--r--examples/application8/exampleappwin.c15
-rw-r--r--examples/application8/gears-menu.ui11
-rw-r--r--examples/application8/prefs.ui14
-rw-r--r--examples/application8/window.ui44
-rw-r--r--examples/application9/README1
-rw-r--r--examples/application9/app-menu.ui16
-rw-r--r--examples/application9/exampleapp.c7
-rw-r--r--examples/application9/exampleapp.gresource.xml1
-rw-r--r--examples/application9/exampleappwin.c15
-rw-r--r--examples/application9/gears-menu.ui11
-rw-r--r--examples/application9/prefs.ui14
-rw-r--r--examples/application9/window.ui66
-rw-r--r--examples/meson.build1
61 files changed, 263 insertions, 1035 deletions
diff --git a/examples/application1/README b/examples/application1/README
index 739ecd967d..d075ef3217 100644
--- a/examples/application1/README
+++ b/examples/application1/README
@@ -1,3 +1,5 @@
+Step 1: A trivial application
+
To make gnome-shell use the desktop file and icon for this example
while running it uninstalled, do the following:
diff --git a/examples/application10/Makefile.example b/examples/application10/Makefile.example
deleted file mode 100644
index 4c8396568f..0000000000
--- a/examples/application10/Makefile.example
+++ /dev/null
@@ -1,35 +0,0 @@
-CC ?= gcc
-PKGCONFIG = $(shell which pkg-config)
-CFLAGS = $(shell $(PKGCONFIG) --cflags gtk4)
-LIBS = $(shell $(PKGCONFIG) --libs gtk4)
-GLIB_COMPILE_RESOURCES = $(shell $(PKGCONFIG) --variable=glib_compile_resources gio-2.0)
-GLIB_COMPILE_SCHEMAS = $(shell $(PKGCONFIG) --variable=glib_compile_schemas gio-2.0)
-
-SRC = exampleapp.c exampleappwin.c exampleappprefs.c main.c
-BUILT_SRC = resources.c
-
-OBJS = $(BUILT_SRC:.c=.o) $(SRC:.c=.o)
-
-all: exampleapp
-
-org.gtk.exampleapp.gschema.valid: org.gtk.exampleapp.gschema.xml
- $(GLIB_COMPILE_SCHEMAS) --strict --dry-run --schema-file=$< && mkdir -p $(@D) && touch $@
-
-gschemas.compiled: org.gtk.exampleapp.gschema.valid
- $(GLIB_COMPILE_SCHEMAS) .
-
-resources.c: exampleapp.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=. --generate-dependencies exampleapp.gresource.xml)
- $(GLIB_COMPILE_RESOURCES) exampleapp.gresource.xml --target=$@ --sourcedir=. --generate-source
-
-%.o: %.c
- $(CC) -c -o $(@F) $(CFLAGS) $<
-
-exampleapp: $(OBJS) gschemas.compiled
- $(CC) -o $(@F) $(OBJS) $(LIBS)
-
-clean:
- rm -f org.gtk.exampleapp.gschema.valid
- rm -f gschemas.compiled
- rm -f $(BUILT_SRC)
- rm -f $(OBJS)
- rm -f exampleapp
diff --git a/examples/application10/exampleapp.c b/examples/application10/exampleapp.c
deleted file mode 100644
index 64a3ceb100..0000000000
--- a/examples/application10/exampleapp.c
+++ /dev/null
@@ -1,114 +0,0 @@
-#include <gtk/gtk.h>
-
-#include "exampleapp.h"
-#include "exampleappwin.h"
-#include "exampleappprefs.h"
-
-struct _ExampleApp
-{
- GtkApplication parent;
-};
-
-G_DEFINE_TYPE(ExampleApp, example_app, GTK_TYPE_APPLICATION);
-
-static void
-example_app_init (ExampleApp *app)
-{
-}
-
-static void
-preferences_activated (GSimpleAction *action,
- GVariant *parameter,
- gpointer app)
-{
- ExampleAppPrefs *prefs;
- GtkWindow *win;
-
- win = gtk_application_get_active_window (GTK_APPLICATION (app));
- prefs = example_app_prefs_new (EXAMPLE_APP_WINDOW (win));
- gtk_window_present (GTK_WINDOW (prefs));
-}
-
-static void
-quit_activated (GSimpleAction *action,
- GVariant *parameter,
- gpointer app)
-{
- g_application_quit (G_APPLICATION (app));
-}
-
-static GActionEntry app_entries[] =
-{
- { "preferences", preferences_activated, NULL, NULL, NULL },
- { "quit", quit_activated, NULL, NULL, NULL }
-};
-
-static void
-example_app_startup (GApplication *app)
-{
- GtkBuilder *builder;
- GMenuModel *app_menu;
- const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
-
- G_APPLICATION_CLASS (example_app_parent_class)->startup (app);
-
- g_action_map_add_action_entries (G_ACTION_MAP (app),
- app_entries, G_N_ELEMENTS (app_entries),
- app);
- gtk_application_set_accels_for_action (GTK_APPLICATION (app),
- "app.quit",
- quit_accels);
-
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/app-menu.ui");
- app_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "appmenu"));
- gtk_application_set_app_menu (GTK_APPLICATION (app), app_menu);
- g_object_unref (builder);
-}
-
-static void
-example_app_activate (GApplication *app)
-{
- ExampleAppWindow *win;
-
- win = example_app_window_new (EXAMPLE_APP (app));
- gtk_window_present (GTK_WINDOW (win));
-}
-
-static void
-example_app_open (GApplication *app,
- GFile **files,
- gint n_files,
- const gchar *hint)
-{
- GList *windows;
- ExampleAppWindow *win;
- int i;
-
- windows = gtk_application_get_windows (GTK_APPLICATION (app));
- if (windows)
- win = EXAMPLE_APP_WINDOW (windows->data);
- else
- win = example_app_window_new (EXAMPLE_APP (app));
-
- for (i = 0; i < n_files; i++)
- example_app_window_open (win, files[i]);
-
- gtk_window_present (GTK_WINDOW (win));
-}
-
-static void
-example_app_class_init (ExampleAppClass *class)
-{
- G_APPLICATION_CLASS (class)->startup = example_app_startup;
- G_APPLICATION_CLASS (class)->activate = example_app_activate;
- G_APPLICATION_CLASS (class)->open = example_app_open;
-}
-
-ExampleApp *
-example_app_new (void)
-{
- return g_object_new (EXAMPLE_APP_TYPE,
- "application-id", "org.gtk.exampleapp",
- "flags", G_APPLICATION_HANDLES_OPEN,
- NULL);
-}
diff --git a/examples/application10/exampleapp.gresource.xml b/examples/application10/exampleapp.gresource.xml
deleted file mode 100644
index ace59c8bb7..0000000000
--- a/examples/application10/exampleapp.gresource.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<gresources>
- <gresource prefix="/org/gtk/exampleapp">
- <file preprocess="xml-stripblanks">window.ui</file>
- <file preprocess="xml-stripblanks">app-menu.ui</file>
- <file preprocess="xml-stripblanks">gears-menu.ui</file>
- <file preprocess="xml-stripblanks">prefs.ui</file>
- </gresource>
-</gresources>
diff --git a/examples/application10/exampleapp.h b/examples/application10/exampleapp.h
deleted file mode 100644
index 51093791a3..0000000000
--- a/examples/application10/exampleapp.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef __EXAMPLEAPP_H
-#define __EXAMPLEAPP_H
-
-#include <gtk/gtk.h>
-
-
-#define EXAMPLE_APP_TYPE (example_app_get_type ())
-G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication)
-
-
-ExampleApp *example_app_new (void);
-
-
-#endif /* __EXAMPLEAPP_H */
diff --git a/examples/application10/exampleappprefs.c b/examples/application10/exampleappprefs.c
deleted file mode 100644
index 4bdf6542ca..0000000000
--- a/examples/application10/exampleappprefs.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include <gtk/gtk.h>
-
-#include "exampleapp.h"
-#include "exampleappwin.h"
-#include "exampleappprefs.h"
-
-struct _ExampleAppPrefs
-{
- GtkDialog parent;
-
- GSettings *settings;
- GtkWidget *font;
- GtkWidget *transition;
-};
-
-G_DEFINE_TYPE (ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
-
-static void
-example_app_prefs_init (ExampleAppPrefs *prefs)
-{
- gtk_widget_init_template (GTK_WIDGET (prefs));
- prefs->settings = g_settings_new ("org.gtk.exampleapp");
-
- g_settings_bind (prefs->settings, "font",
- prefs->font, "font",
- G_SETTINGS_BIND_DEFAULT);
- g_settings_bind (prefs->settings, "transition",
- prefs->transition, "active-id",
- G_SETTINGS_BIND_DEFAULT);
-}
-
-static void
-example_app_prefs_dispose (GObject *object)
-{
- ExampleAppPrefs *prefs;
-
- prefs = EXAMPLE_APP_PREFS (object);
-
- g_clear_object (&prefs->settings);
-
- G_OBJECT_CLASS (example_app_prefs_parent_class)->dispose (object);
-}
-
-static void
-example_app_prefs_class_init (ExampleAppPrefsClass *class)
-{
- G_OBJECT_CLASS (class)->dispose = example_app_prefs_dispose;
-
- gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
- "/org/gtk/exampleapp/prefs.ui");
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppPrefs, font);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppPrefs, transition);
-}
-
-ExampleAppPrefs *
-example_app_prefs_new (ExampleAppWindow *win)
-{
- return g_object_new (EXAMPLE_APP_PREFS_TYPE, "transient-for", win, "use-header-bar", TRUE, NULL);
-}
diff --git a/examples/application10/exampleappprefs.h b/examples/application10/exampleappprefs.h
deleted file mode 100644
index 2f08819ffb..0000000000
--- a/examples/application10/exampleappprefs.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __EXAMPLEAPPPREFS_H
-#define __EXAMPLEAPPPREFS_H
-
-#include <gtk/gtk.h>
-#include "exampleappwin.h"
-
-
-#define EXAMPLE_APP_PREFS_TYPE (example_app_prefs_get_type ())
-G_DECLARE_FINAL_TYPE (ExampleAppPrefs, example_app_prefs, EXAMPLE, APP_PREFS, GtkDialog)
-
-
-ExampleAppPrefs *example_app_prefs_new (ExampleAppWindow *win);
-
-
-#endif /* __EXAMPLEAPPPREFS_H */
diff --git a/examples/application10/exampleappwin.c b/examples/application10/exampleappwin.c
deleted file mode 100644
index 16a8658f36..0000000000
--- a/examples/application10/exampleappwin.c
+++ /dev/null
@@ -1,295 +0,0 @@
-#include <gtk/gtk.h>
-
-#include "exampleapp.h"
-#include "exampleappwin.h"
-
-struct _ExampleAppWindow
-{
- GtkApplicationWindow parent;
-
- GSettings *settings;
- GtkWidget *stack;
- GtkWidget *search;
- GtkWidget *searchbar;
- GtkWidget *searchentry;
- GtkWidget *gears;
- GtkWidget *sidebar;
- GtkWidget *words;
- GtkWidget *lines;
- GtkWidget *lines_label;
-};
-
-G_DEFINE_TYPE (ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW)
-
-static void
-search_text_changed (GtkEntry *entry,
- ExampleAppWindow *win)
-{
- const gchar *text;
- GtkWidget *tab;
- GtkWidget *view;
- GtkTextBuffer *buffer;
- GtkTextIter start, match_start, match_end;
-
- text = gtk_editable_get_text (GTK_EDITABLE (entry));
-
- if (text[0] == '\0')
- return;
-
- tab = gtk_stack_get_visible_child (GTK_STACK (win->stack));
- view = gtk_scrolled_window_get_child (GTK_SCROLLED_WINDOW (tab));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-
- /* Very simple-minded search implementation */
- gtk_text_buffer_get_start_iter (buffer, &start);
- if (gtk_text_iter_forward_search (&start, text, GTK_TEXT_SEARCH_CASE_INSENSITIVE,
- &match_start, &match_end, NULL))
- {
- gtk_text_buffer_select_range (buffer, &match_start, &match_end);
- gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW (view), &match_start,
- 0.0, FALSE, 0.0, 0.0);
- }
-}
-
-static void
-find_word (GtkButton *button,
- ExampleAppWindow *win)
-{
- const gchar *word;
-
- word = gtk_button_get_label (button);
- gtk_editable_set_text (GTK_EDITABLE (win->searchentry), word);
-}
-
-static void
-update_words (ExampleAppWindow *win)
-{
- GHashTable *strings;
- GHashTableIter iter;
- GtkWidget *tab, *view, *row;
- GtkTextBuffer *buffer;
- GtkTextIter start, end;
- GList *children, *l;
- gchar *word, *key;
-
- tab = gtk_stack_get_visible_child (GTK_STACK (win->stack));
-
- if (tab == NULL)
- return;
-
- view = gtk_scrolled_window_get_child (GTK_SCROLLED_WINDOW (tab));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-
- strings = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-
- gtk_text_buffer_get_start_iter (buffer, &start);
- while (!gtk_text_iter_is_end (&start))
- {
- while (!gtk_text_iter_starts_word (&start))
- {
- if (!gtk_text_iter_forward_char (&start))
- goto done;
- }
- end = start;
- if (!gtk_text_iter_forward_word_end (&end))
- goto done;
- word = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
- g_hash_table_add (strings, g_utf8_strdown (word, -1));
- g_free (word);
- start = end;
- }
-
-done:
- children = gtk_container_get_children (GTK_CONTAINER (win->words));
- for (l = children; l; l = l->next)
- gtk_container_remove (GTK_CONTAINER (win->words), GTK_WIDGET (l->data));
- g_list_free (children);
-
- g_hash_table_iter_init (&iter, strings);
- while (g_hash_table_iter_next (&iter, (gpointer *)&key, NULL))
- {
- row = gtk_button_new_with_label (key);
- g_signal_connect (row, "clicked",
- G_CALLBACK (find_word), win);
- gtk_container_add (GTK_CONTAINER (win->words), row);
- }
-
- g_hash_table_unref (strings);
-}
-
-static void
-update_lines (ExampleAppWindow *win)
-{
- GtkWidget *tab, *view;
- GtkTextBuffer *buffer;
- int count;
- gchar *lines;
-
- tab = gtk_stack_get_visible_child (GTK_STACK (win->stack));
-
- if (tab == NULL)
- return;
-
- view = gtk_scrolled_window_get_child (GTK_SCROLLED_WINDOW (tab));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-
- count = gtk_text_buffer_get_line_count (buffer);
- lines = g_strdup_printf ("%d", count);
- gtk_label_set_text (GTK_LABEL (win->lines), lines);
- g_free (lines);
-}
-
-static void
-visible_child_changed (GObject *stack,
- GParamSpec *pspec,
- ExampleAppWindow *win)
-{
- if (gtk_widget_in_destruction (GTK_WIDGET (stack)))
- return;
-
- gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (win->searchbar), FALSE);
- update_words (win);
- update_lines (win);
-}
-
-static void
-words_changed (GObject *sidebar,
- GParamSpec *pspec,
- ExampleAppWindow *win)
-{
- update_words (win);
-}
-
-static void
-example_app_window_init (ExampleAppWindow *win)
-{
- GtkBuilder *builder;
- GMenuModel *menu;
- GAction *action;
-
- gtk_widget_init_template (GTK_WIDGET (win));
- win->settings = g_settings_new ("org.gtk.exampleapp");
-
- g_settings_bind (win->settings, "transition",
- win->stack, "transition-type",
- G_SETTINGS_BIND_DEFAULT);
-
- g_settings_bind (win->settings, "show-words",
- win->sidebar, "reveal-child",
- G_SETTINGS_BIND_DEFAULT);
-
- g_object_bind_property (win->search, "active",
- win->searchbar, "search-mode-enabled",
- G_BINDING_BIDIRECTIONAL);
-
- g_signal_connect (win->sidebar, "notify::reveal-child",
- G_CALLBACK (words_changed), win);
-
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
- menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
- gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->gears), menu);
- g_object_unref (builder);
-
- action = g_settings_create_action (win->settings, "show-words");
- g_action_map_add_action (G_ACTION_MAP (win), action);
- g_object_unref (action);
-
- action = (GAction*) g_property_action_new ("show-lines", win->lines, "visible");
- g_action_map_add_action (G_ACTION_MAP (win), action);
- g_object_unref (action);
-
- g_object_bind_property (win->lines, "visible",
- win->lines_label, "visible",
- G_BINDING_DEFAULT);
-
- g_object_set (gtk_settings_get_default (), "gtk-shell-shows-app-menu", FALSE, NULL);
- gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (win), TRUE);
-}
-
-static void
-example_app_window_dispose (GObject *object)
-{
- ExampleAppWindow *win;
-
- win = EXAMPLE_APP_WINDOW (object);
-
- g_clear_object (&win->settings);
-
- G_OBJECT_CLASS (example_app_window_parent_class)->dispose (object);
-}
-
-static void
-example_app_window_class_init (ExampleAppWindowClass *class)
-{
- G_OBJECT_CLASS (class)->dispose = example_app_window_dispose;
-
- gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
- "/org/gtk/exampleapp/window.ui");
-
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, search);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchbar);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchentry);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, words);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, sidebar);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, lines);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, lines_label);
-
- gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), search_text_changed);
- gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), visible_child_changed);
-}
-
-ExampleAppWindow *
-example_app_window_new (ExampleApp *app)
-{
- return g_object_new (EXAMPLE_APP_WINDOW_TYPE, "application", app, NULL);
-}
-
-void
-example_app_window_open (ExampleAppWindow *win,
- GFile *file)
-{
- gchar *basename;
- GtkWidget *scrolled, *view;
- gchar *contents;
- gsize length;
- GtkTextBuffer *buffer;
- GtkTextTag *tag;
- GtkTextIter start_iter, end_iter;
-
- basename = g_file_get_basename (file);
-
- scrolled = gtk_scrolled_window_new (NULL, NULL);
- gtk_widget_set_hexpand (scrolled, TRUE);
- gtk_widget_set_vexpand (scrolled, TRUE);
- view = gtk_text_view_new ();
- gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
- gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolled), view);
- gtk_stack_add_titled (GTK_STACK (win->stack), scrolled, basename, basename);
-
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-
- if (g_file_load_contents (file, NULL, &contents, &length, NULL, NULL))
- {
- gtk_text_buffer_set_text (buffer, contents, length);
- g_free (contents);
- }
-
- tag = gtk_text_buffer_create_tag (buffer, NULL, NULL);
- g_settings_bind (win->settings, "font",
- tag, "font",
- G_SETTINGS_BIND_DEFAULT);
-
- gtk_text_buffer_get_start_iter (buffer, &start_iter);
- gtk_text_buffer_get_end_iter (buffer, &end_iter);
- gtk_text_buffer_apply_tag (buffer, tag, &start_iter, &end_iter);
-
- g_free (basename);
-
- gtk_widget_set_sensitive (win->search, TRUE);
-
- update_words (win);
- update_lines (win);
-}
diff --git a/examples/application10/exampleappwin.h b/examples/application10/exampleappwin.h
deleted file mode 100644
index 88de502f88..0000000000
--- a/examples/application10/exampleappwin.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef __EXAMPLEAPPWIN_H
-#define __EXAMPLEAPPWIN_H
-
-#include <gtk/gtk.h>
-#include "exampleapp.h"
-
-
-#define EXAMPLE_APP_WINDOW_TYPE (example_app_window_get_type ())
-G_DECLARE_FINAL_TYPE (ExampleAppWindow, example_app_window, EXAMPLE, APP_WINDOW, GtkApplicationWindow)
-
-ExampleAppWindow *example_app_window_new (ExampleApp *app);
-void example_app_window_open (ExampleAppWindow *win,
- GFile *file);
-
-
-#endif /* __EXAMPLEAPPWIN_H */
diff --git a/examples/application10/gears-menu.ui b/examples/application10/gears-menu.ui
deleted file mode 100644
index 0b3d15e1be..0000000000
--- a/examples/application10/gears-menu.ui
+++ /dev/null
@@ -1,14 +0,0 @@
-<interface>
- <menu id="menu">
- <section>
- <item>
- <attribute name="label" translatable="yes">_Words</attribute>
- <attribute name="action">win.show-words</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_Lines</attribute>
- <attribute name="action">win.show-lines</attribute>
- </item>
- </section>
- </menu>
-</interface>
diff --git a/examples/application10/main.c b/examples/application10/main.c
deleted file mode 100644
index ad5b022b3f..0000000000
--- a/examples/application10/main.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#include <gtk/gtk.h>
-
-#include "exampleapp.h"
-
-int
-main (int argc, char *argv[])
-{
- /* Since this example is running uninstalled,
- * we have to help it find its schema. This
- * is *not* necessary in properly installed
- * application.
- */
- g_setenv ("GSETTINGS_SCHEMA_DIR", ".", FALSE);
-
- return g_application_run (G_APPLICATION (example_app_new ()), argc, argv);
-}
diff --git a/examples/application10/meson.build b/examples/application10/meson.build
deleted file mode 100644
index ee07654567..0000000000
--- a/examples/application10/meson.build
+++ /dev/null
@@ -1,14 +0,0 @@
-app10_resources = gnome.compile_resources('exampleapp10 resources',
- 'exampleapp.gresource.xml',
- source_dir: '.')
-
-app10_schemas = gnome.compile_schemas()
-
-executable('exampleapp10',
- 'main.c',
- 'exampleapp.c',
- 'exampleappwin.c',
- 'exampleappprefs.c',
- app10_resources,
- app10_schemas,
- dependencies: libgtk_dep)
diff --git a/examples/application10/org.gtk.exampleapp.gschema.xml b/examples/application10/org.gtk.exampleapp.gschema.xml
deleted file mode 100644
index a6929a859b..0000000000
--- a/examples/application10/org.gtk.exampleapp.gschema.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<schemalist>
- <schema path="/org/gtk/exampleapp/" id="org.gtk.exampleapp">
- <key name="font" type="s">
- <default>'Monospace 12'</default>
- <summary>Font</summary>
- <description>The font to be used for content.</description>
- </key>
- <key name="transition" type="s">
- <choices>
- <choice value='none'/>
- <choice value='crossfade'/>
- <choice value='slide-left-right'/>
- </choices>
- <default>'none'</default>
- <summary>Transition</summary>
- <description>The transition to use when switching tabs.</description>
- </key>
- <key name="show-words" type="b">
- <default>false</default>
- <summary>Show words</summary>
- <description>Whether to show a word list in the sidebar</description>
- </key>
- </schema>
-</schemalist>
diff --git a/examples/application10/prefs.ui b/examples/application10/prefs.ui
deleted file mode 100644
index 9551758c8f..0000000000
--- a/examples/application10/prefs.ui
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <template class="ExampleAppPrefs" parent="GtkDialog">
- <property name="title" translatable="yes">Preferences</property>
- <property name="resizable">0</property>
- <property name="modal">1</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="vbox">
- <child>
- <object class="GtkGrid" id="grid">
- <property name="margin-start">6</property>
- <property name="margin-end">6</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
- <property name="row-spacing">12</property>
- <property name="column-spacing">6</property>
- <child>
- <object class="GtkLabel" id="fontlabel">
- <property name="label">_Font:</property>
- <property name="use-underline">1</property>
- <property name="mnemonic-widget">font</property>
- <property name="xalign">1</property>
- <layout>
- <property name="left-attach">0</property>
- <property name="top-attach">0</property>
- </layout>
- </object>
- </child>
- <child>
- <object class="GtkFontButton" id="font">
- <layout>
- <property name="left-attach">1</property>
- <property name="top-attach">0</property>
- </layout>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="transitionlabel">
- <property name="label">_Transition:</property>
- <property name="use-underline">1</property>
- <property name="mnemonic-widget">transition</property>
- <property name="xalign">1</property>
- <layout>
- <property name="left-attach">0</property>
- <property name="top-attach">1</property>
- </layout>
- </object>
- </child>
- <child>
- <object class="GtkComboBoxText" id="transition">
- <items>
- <item translatable="yes" id="none">None</item>
- <item translatable="yes" id="crossfade">Fade</item>
- <item translatable="yes" id="slide-left-right">Slide</item>
- </items>
- <layout>
- <property name="left-attach">1</property>
- <property name="top-attach">1</property>
- </layout>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </template>
-</interface>
diff --git a/examples/application10/window.ui b/examples/application10/window.ui
deleted file mode 100644
index d3f737fa28..0000000000
--- a/examples/application10/window.ui
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <template class="ExampleAppWindow" parent="GtkApplicationWindow">
- <property name="title" translatable="yes">Example Application</property>
- <property name="default-width">600</property>
- <property name="default-height">400</property>
- <child type="titlebar">
- <object class="GtkHeaderBar" id="header">
- <property name="show-title-buttons">1</property>
- <child>
- <object class="GtkLabel" id="lines_label">
- <property name="visible">0</property>
- <property name="label" translatable="yes">Lines:</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="lines">
- <property name="visible">0</property>
- </object>
- </child>
- <child type="title">
- <object class="GtkStackSwitcher" id="tabs">
- <property name="stack">stack</property>
- </object>
- </child>
- <child type="end">
- <object class="GtkToggleButton" id="search">
- <property name="sensitive">0</property>
- <property name="icon-name">edit-find-symbolic</property>
- </object>
- </child>
- <child type="end">
- <object class="GtkMenuButton" id="gears">
- <property name="direction">none</property>
- <style>
- <class name="image-button"/>
- </style>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="content_box">
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkSearchBar" id="searchbar">
- <child>
- <object class="GtkSearchEntry" id="searchentry">
- <signal name="search-changed" handler="search_text_changed"/>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="hbox">
- <child>
- <object class="GtkRevealer" id="sidebar">
- <property name="transition-type">slide-right</property>
- <child>
- <object class="GtkScrolledWindow" id="sidebar-sw">
- <property name="hscrollbar-policy">never</property>
- <child>
- <object class="GtkListBox" id="words">
- <property name="selection-mode">none</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkStack" id="stack">
- <signal name="notify::visible-child" handler="visible_child_changed"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </template>
-</interface>
diff --git a/examples/application2/README b/examples/application2/README
new file mode 100644
index 0000000000..5b0ae68635
--- /dev/null
+++ b/examples/application2/README
@@ -0,0 +1 @@
+Step 2: Populating the window
diff --git a/examples/application2/window.ui b/examples/application2/window.ui
index 595df79ef0..5b0eb1d58e 100644
--- a/examples/application2/window.ui
+++ b/examples/application2/window.ui
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ExampleAppWindow" parent="GtkApplicationWindow">
<property name="title" translatable="yes">Example Application</property>
@@ -7,15 +8,6 @@
<object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
<child>
- <object class="GtkHeaderBar" id="header">
- <child type="title">
- <object class="GtkStackSwitcher" id="tabs">
- <property name="stack">stack</property>
- </object>
- </child>
- </object>
- </child>
- <child>
<object class="GtkStack" id="stack"/>
</child>
</object>
diff --git a/examples/application3/README b/examples/application3/README
new file mode 100644
index 0000000000..5e391213ff
--- /dev/null
+++ b/examples/application3/README
@@ -0,0 +1 @@
+Step 3: Opening files, add a stack switcher
diff --git a/examples/application3/window.ui b/examples/application3/window.ui
index 595df79ef0..5d2d5a4249 100644
--- a/examples/application3/window.ui
+++ b/examples/application3/window.ui
@@ -1,21 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ExampleAppWindow" parent="GtkApplicationWindow">
<property name="title" translatable="yes">Example Application</property>
<property name="default-width">600</property>
<property name="default-height">400</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="header">
+ <property name="show-title-buttons">1</property>
+ <child type="title">
+ <object class="GtkStackSwitcher" id="tabs">
+ <property name="stack">stack</property>
+ </object>
+ </child>
+ </object>
+ </child>
<child>
<object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
<child>
- <object class="GtkHeaderBar" id="header">
- <child type="title">
- <object class="GtkStackSwitcher" id="tabs">
- <property name="stack">stack</property>
- </object>
- </child>
- </object>
- </child>
- <child>
<object class="GtkStack" id="stack"/>
</child>
</object>
diff --git a/examples/application4/README b/examples/application4/README
new file mode 100644
index 0000000000..a92e45749a
--- /dev/null
+++ b/examples/application4/README
@@ -0,0 +1 @@
+Step 4: Add a menu
diff --git a/examples/application4/exampleapp.c b/examples/application4/exampleapp.c
index 0f01fb388a..6ab68aebc3 100644
--- a/examples/application4/exampleapp.c
+++ b/examples/application4/exampleapp.c
@@ -39,8 +39,6 @@ static GActionEntry app_entries[] =
static void
example_app_startup (GApplication *app)
{
- GtkBuilder *builder;
- GMenuModel *app_menu;
const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
G_APPLICATION_CLASS (example_app_parent_class)->startup (app);
@@ -51,11 +49,6 @@ example_app_startup (GApplication *app)
gtk_application_set_accels_for_action (GTK_APPLICATION (app),
"app.quit",
quit_accels);
-
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/app-menu.ui");
- app_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "appmenu"));
- gtk_application_set_app_menu (GTK_APPLICATION (app), app_menu);
- g_object_unref (builder);
}
static void
diff --git a/examples/application4/exampleapp.gresource.xml b/examples/application4/exampleapp.gresource.xml
index 1c9b11821f..5a5da01ba2 100644
--- a/examples/application4/exampleapp.gresource.xml
+++ b/examples/application4/exampleapp.gresource.xml
@@ -2,6 +2,6 @@
<gresources>
<gresource prefix="/org/gtk/exampleapp">
<file preprocess="xml-stripblanks">window.ui</file>
- <file preprocess="xml-stripblanks">app-menu.ui</file>
+ <file preprocess="xml-stripblanks">gears-menu.ui</file>
</gresource>
</gresources>
diff --git a/examples/application4/exampleappwin.c b/examples/application4/exampleappwin.c
index 9ed0b88452..bcc72807af 100644
--- a/examples/application4/exampleappwin.c
+++ b/examples/application4/exampleappwin.c
@@ -8,6 +8,7 @@ struct _ExampleAppWindow
GtkApplicationWindow parent;
GtkWidget *stack;
+ GtkWidget *gears;
};
G_DEFINE_TYPE (ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW)
@@ -15,7 +16,15 @@ G_DEFINE_TYPE (ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW
static void
example_app_window_init (ExampleAppWindow *win)
{
+ GtkBuilder *builder;
+ GMenuModel *menu;
+
gtk_widget_init_template (GTK_WIDGET (win));
+
+ builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
+ menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->gears), menu);
+ g_object_unref (builder);
}
static void
@@ -24,6 +33,7 @@ example_app_window_class_init (ExampleAppWindowClass *class)
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
"/org/gtk/exampleapp/window.ui");
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
+ gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
}
ExampleAppWindow *
diff --git a/examples/application6/app-menu.ui b/examples/application4/gears-menu.ui
index 13bf8fd342..30e292ef9a 100644
--- a/examples/application6/app-menu.ui
+++ b/examples/application4/gears-menu.ui
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <menu id="appmenu">
+ <menu id="menu">
<section>
<item>
<attribute name="label" translatable="yes">_Preferences</attribute>
diff --git a/examples/application4/window.ui b/examples/application4/window.ui
index 595df79ef0..eee9127573 100644
--- a/examples/application4/window.ui
+++ b/examples/application4/window.ui
@@ -1,21 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ExampleAppWindow" parent="GtkApplicationWindow">
<property name="title" translatable="yes">Example Application</property>
<property name="default-width">600</property>
<property name="default-height">400</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="header">
+ <property name="show-title-buttons">1</property>
+ <child type="title">
+ <object class="GtkStackSwitcher" id="tabs">
+ <property name="stack">stack</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton" id="gears">
+ <property name="direction">none</property>
+ </object>
+ </child>
+ </object>
+ </child>
<child>
<object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
<child>
- <object class="GtkHeaderBar" id="header">
- <child type="title">
- <object class="GtkStackSwitcher" id="tabs">
- <property name="stack">stack</property>
- </object>
- </child>
- </object>
- </child>
- <child>
<object class="GtkStack" id="stack"/>
</child>
</object>
diff --git a/examples/application5/exampleapp.c b/examples/application5/exampleapp.c
index 0f01fb388a..6ab68aebc3 100644
--- a/examples/application5/exampleapp.c
+++ b/examples/application5/exampleapp.c
@@ -39,8 +39,6 @@ static GActionEntry app_entries[] =
static void
example_app_startup (GApplication *app)
{
- GtkBuilder *builder;
- GMenuModel *app_menu;
const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
G_APPLICATION_CLASS (example_app_parent_class)->startup (app);
@@ -51,11 +49,6 @@ example_app_startup (GApplication *app)
gtk_application_set_accels_for_action (GTK_APPLICATION (app),
"app.quit",
quit_accels);
-
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/app-menu.ui");
- app_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "appmenu"));
- gtk_application_set_app_menu (GTK_APPLICATION (app), app_menu);
- g_object_unref (builder);
}
static void
diff --git a/examples/application5/exampleapp.gresource.xml b/examples/application5/exampleapp.gresource.xml
index 1c9b11821f..5a5da01ba2 100644
--- a/examples/application5/exampleapp.gresource.xml
+++ b/examples/application5/exampleapp.gresource.xml
@@ -2,6 +2,6 @@
<gresources>
<gresource prefix="/org/gtk/exampleapp">
<file preprocess="xml-stripblanks">window.ui</file>
- <file preprocess="xml-stripblanks">app-menu.ui</file>
+ <file preprocess="xml-stripblanks">gears-menu.ui</file>
</gresource>
</gresources>
diff --git a/examples/application5/exampleappwin.c b/examples/application5/exampleappwin.c
index 16d11f4c70..5425b44a4d 100644
--- a/examples/application5/exampleappwin.c
+++ b/examples/application5/exampleappwin.c
@@ -9,6 +9,7 @@ struct _ExampleAppWindow
GSettings *settings;
GtkWidget *stack;
+ GtkWidget *gears;
};
G_DEFINE_TYPE (ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW)
@@ -16,9 +17,17 @@ G_DEFINE_TYPE (ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW
static void
example_app_window_init (ExampleAppWindow *win)
{
+ GtkBuilder *builder;
+ GMenuModel *menu;
+
gtk_widget_init_template (GTK_WIDGET (win));
- win->settings = g_settings_new ("org.gtk.exampleapp");
+ builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
+ menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->gears), menu);
+ g_object_unref (builder);
+
+ win->settings = g_settings_new ("org.gtk.exampleapp");
g_settings_bind (win->settings, "transition",
win->stack, "transition-type",
G_SETTINGS_BIND_DEFAULT);
@@ -44,6 +53,7 @@ example_app_window_class_init (ExampleAppWindowClass *class)
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
"/org/gtk/exampleapp/window.ui");
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
+ gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
}
ExampleAppWindow *
diff --git a/examples/application10/app-menu.ui b/examples/application5/gears-menu.ui
index 13bf8fd342..30e292ef9a 100644
--- a/examples/application10/app-menu.ui
+++ b/examples/application5/gears-menu.ui
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <menu id="appmenu">
+ <menu id="menu">
<section>
<item>
<attribute name="label" translatable="yes">_Preferences</attribute>
diff --git a/examples/application5/window.ui b/examples/application5/window.ui
index 595df79ef0..eee9127573 100644
--- a/examples/application5/window.ui
+++ b/examples/application5/window.ui
@@ -1,21 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ExampleAppWindow" parent="GtkApplicationWindow">
<property name="title" translatable="yes">Example Application</property>
<property name="default-width">600</property>
<property name="default-height">400</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="header">
+ <property name="show-title-buttons">1</property>
+ <child type="title">
+ <object class="GtkStackSwitcher" id="tabs">
+ <property name="stack">stack</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton" id="gears">
+ <property name="direction">none</property>
+ </object>
+ </child>
+ </object>
+ </child>
<child>
<object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
<child>
- <object class="GtkHeaderBar" id="header">
- <child type="title">
- <object class="GtkStackSwitcher" id="tabs">
- <property name="stack">stack</property>
- </object>
- </child>
- </object>
- </child>
- <child>
<object class="GtkStack" id="stack"/>
</child>
</object>
diff --git a/examples/application6/exampleapp.c b/examples/application6/exampleapp.c
index 64a3ceb100..8ac0ebd529 100644
--- a/examples/application6/exampleapp.c
+++ b/examples/application6/exampleapp.c
@@ -46,8 +46,6 @@ static GActionEntry app_entries[] =
static void
example_app_startup (GApplication *app)
{
- GtkBuilder *builder;
- GMenuModel *app_menu;
const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
G_APPLICATION_CLASS (example_app_parent_class)->startup (app);
@@ -58,11 +56,6 @@ example_app_startup (GApplication *app)
gtk_application_set_accels_for_action (GTK_APPLICATION (app),
"app.quit",
quit_accels);
-
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/app-menu.ui");
- app_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "appmenu"));
- gtk_application_set_app_menu (GTK_APPLICATION (app), app_menu);
- g_object_unref (builder);
}
static void
diff --git a/examples/application6/exampleapp.gresource.xml b/examples/application6/exampleapp.gresource.xml
index 797688586b..c40f6419b7 100644
--- a/examples/application6/exampleapp.gresource.xml
+++ b/examples/application6/exampleapp.gresource.xml
@@ -2,7 +2,7 @@
<gresources>
<gresource prefix="/org/gtk/exampleapp">
<file preprocess="xml-stripblanks">window.ui</file>
- <file preprocess="xml-stripblanks">app-menu.ui</file>
+ <file preprocess="xml-stripblanks">gears-menu.ui</file>
<file preprocess="xml-stripblanks">prefs.ui</file>
</gresource>
</gresources>
diff --git a/examples/application6/exampleappwin.c b/examples/application6/exampleappwin.c
index 16d11f4c70..7f332181ea 100644
--- a/examples/application6/exampleappwin.c
+++ b/examples/application6/exampleappwin.c
@@ -9,6 +9,7 @@ struct _ExampleAppWindow
GSettings *settings;
GtkWidget *stack;
+ GtkWidget *gears;
};
G_DEFINE_TYPE (ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW)
@@ -16,7 +17,16 @@ G_DEFINE_TYPE (ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW
static void
example_app_window_init (ExampleAppWindow *win)
{
+ GtkBuilder *builder;
+ GMenuModel *menu;
+
gtk_widget_init_template (GTK_WIDGET (win));
+
+ builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
+ menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->gears), menu);
+ g_object_unref (builder);
+
win->settings = g_settings_new ("org.gtk.exampleapp");
g_settings_bind (win->settings, "transition",
@@ -44,6 +54,7 @@ example_app_window_class_init (ExampleAppWindowClass *class)
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
"/org/gtk/exampleapp/window.ui");
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
+ gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
}
ExampleAppWindow *
diff --git a/examples/application4/app-menu.ui b/examples/application6/gears-menu.ui
index 13bf8fd342..30e292ef9a 100644
--- a/examples/application4/app-menu.ui
+++ b/examples/application6/gears-menu.ui
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <menu id="appmenu">
+ <menu id="menu">
<section>
<item>
<attribute name="label" translatable="yes">_Preferences</attribute>
diff --git a/examples/application6/prefs.ui b/examples/application6/prefs.ui
index 9551758c8f..c4cfcb621a 100644
--- a/examples/application6/prefs.ui
+++ b/examples/application6/prefs.ui
@@ -4,16 +4,16 @@
<property name="title" translatable="yes">Preferences</property>
<property name="resizable">0</property>
<property name="modal">1</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="vbox">
+ <child internal-child="content_area">
+ <object class="GtkBox" id="content_area">
<child>
<object class="GtkGrid" id="grid">
- <property name="margin-start">6</property>
- <property name="margin-end">6</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
<property name="row-spacing">12</property>
- <property name="column-spacing">6</property>
+ <property name="column-spacing">12</property>
<child>
<object class="GtkLabel" id="fontlabel">
<property name="label">_Font:</property>
diff --git a/examples/application6/window.ui b/examples/application6/window.ui
index 595df79ef0..eee9127573 100644
--- a/examples/application6/window.ui
+++ b/examples/application6/window.ui
@@ -1,21 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ExampleAppWindow" parent="GtkApplicationWindow">
<property name="title" translatable="yes">Example Application</property>
<property name="default-width">600</property>
<property name="default-height">400</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="header">
+ <property name="show-title-buttons">1</property>
+ <child type="title">
+ <object class="GtkStackSwitcher" id="tabs">
+ <property name="stack">stack</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton" id="gears">
+ <property name="direction">none</property>
+ </object>
+ </child>
+ </object>
+ </child>
<child>
<object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
<child>
- <object class="GtkHeaderBar" id="header">
- <child type="title">
- <object class="GtkStackSwitcher" id="tabs">
- <property name="stack">stack</property>
- </object>
- </child>
- </object>
- </child>
- <child>
<object class="GtkStack" id="stack"/>
</child>
</object>
diff --git a/examples/application7/README b/examples/application7/README
new file mode 100644
index 0000000000..b5232e3017
--- /dev/null
+++ b/examples/application7/README
@@ -0,0 +1 @@
+Step 7: A search bar
diff --git a/examples/application7/app-menu.ui b/examples/application7/app-menu.ui
deleted file mode 100644
index 13bf8fd342..0000000000
--- a/examples/application7/app-menu.ui
+++ /dev/null
@@ -1,16 +0,0 @@
-<interface>
- <menu id="appmenu">
- <section>
- <item>
- <attribute name="label" translatable="yes">_Preferences</attribute>
- <attribute name="action">app.preferences</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Quit</attribute>
- <attribute name="action">app.quit</attribute>
- </item>
- </section>
- </menu>
-</interface>
diff --git a/examples/application7/exampleapp.c b/examples/application7/exampleapp.c
index 64a3ceb100..8ac0ebd529 100644
--- a/examples/application7/exampleapp.c
+++ b/examples/application7/exampleapp.c
@@ -46,8 +46,6 @@ static GActionEntry app_entries[] =
static void
example_app_startup (GApplication *app)
{
- GtkBuilder *builder;
- GMenuModel *app_menu;
const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
G_APPLICATION_CLASS (example_app_parent_class)->startup (app);
@@ -58,11 +56,6 @@ example_app_startup (GApplication *app)
gtk_application_set_accels_for_action (GTK_APPLICATION (app),
"app.quit",
quit_accels);
-
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/app-menu.ui");
- app_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "appmenu"));
- gtk_application_set_app_menu (GTK_APPLICATION (app), app_menu);
- g_object_unref (builder);
}
static void
diff --git a/examples/application7/exampleapp.gresource.xml b/examples/application7/exampleapp.gresource.xml
index 797688586b..c40f6419b7 100644
--- a/examples/application7/exampleapp.gresource.xml
+++ b/examples/application7/exampleapp.gresource.xml
@@ -2,7 +2,7 @@
<gresources>
<gresource prefix="/org/gtk/exampleapp">
<file preprocess="xml-stripblanks">window.ui</file>
- <file preprocess="xml-stripblanks">app-menu.ui</file>
+ <file preprocess="xml-stripblanks">gears-menu.ui</file>
<file preprocess="xml-stripblanks">prefs.ui</file>
</gresource>
</gresources>
diff --git a/examples/application7/exampleappwin.c b/examples/application7/exampleappwin.c
index f15cf3ba42..cea8941dbc 100644
--- a/examples/application7/exampleappwin.c
+++ b/examples/application7/exampleappwin.c
@@ -9,6 +9,7 @@ struct _ExampleAppWindow
GSettings *settings;
GtkWidget *stack;
+ GtkWidget *gears;
GtkWidget *search;
GtkWidget *searchbar;
};
@@ -59,7 +60,16 @@ visible_child_changed (GObject *stack,
static void
example_app_window_init (ExampleAppWindow *win)
{
+ GtkBuilder *builder;
+ GMenuModel *menu;
+
gtk_widget_init_template (GTK_WIDGET (win));
+
+ builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
+ menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->gears), menu);
+ g_object_unref (builder);
+
win->settings = g_settings_new ("org.gtk.exampleapp");
g_settings_bind (win->settings, "transition",
@@ -92,6 +102,7 @@ example_app_window_class_init (ExampleAppWindowClass *class)
"/org/gtk/exampleapp/window.ui");
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
+ gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, search);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchbar);
diff --git a/examples/application5/app-menu.ui b/examples/application7/gears-menu.ui
index 13bf8fd342..30e292ef9a 100644
--- a/examples/application5/app-menu.ui
+++ b/examples/application7/gears-menu.ui
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <menu id="appmenu">
+ <menu id="menu">
<section>
<item>
<attribute name="label" translatable="yes">_Preferences</attribute>
diff --git a/examples/application7/prefs.ui b/examples/application7/prefs.ui
index 9551758c8f..c4cfcb621a 100644
--- a/examples/application7/prefs.ui
+++ b/examples/application7/prefs.ui
@@ -4,16 +4,16 @@
<property name="title" translatable="yes">Preferences</property>
<property name="resizable">0</property>
<property name="modal">1</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="vbox">
+ <child internal-child="content_area">
+ <object class="GtkBox" id="content_area">
<child>
<object class="GtkGrid" id="grid">
- <property name="margin-start">6</property>
- <property name="margin-end">6</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
<property name="row-spacing">12</property>
- <property name="column-spacing">6</property>
+ <property name="column-spacing">12</property>
<child>
<object class="GtkLabel" id="fontlabel">
<property name="label">_Font:</property>
diff --git a/examples/application7/window.ui b/examples/application7/window.ui
index 761daef776..d4280f6354 100644
--- a/examples/application7/window.ui
+++ b/examples/application7/window.ui
@@ -4,25 +4,31 @@
<property name="title" translatable="yes">Example Application</property>
<property name="default-width">600</property>
<property name="default-height">400</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="header">
+ <property name="show-title-buttons">1</property>
+ <child type="title">
+ <object class="GtkStackSwitcher" id="tabs">
+ <property name="stack">stack</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton" id="gears">
+ <property name="direction">none</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkToggleButton" id="search">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-find-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
<child>
<object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
<child>
- <object class="GtkHeaderBar" id="header">
- <child type="title">
- <object class="GtkStackSwitcher" id="tabs">
- <property name="stack">stack</property>
- </object>
- </child>
- <child type="end">
- <object class="GtkToggleButton" id="search">
- <property name="sensitive">0</property>
- <property name="icon-name">edit-find-symbolic</property>
- </object>
- </child>
- </object>
- </child>
- <child>
<object class="GtkSearchBar" id="searchbar">
<child>
<object class="GtkSearchEntry" id="searchentry">
diff --git a/examples/application8/README b/examples/application8/README
new file mode 100644
index 0000000000..03788221b2
--- /dev/null
+++ b/examples/application8/README
@@ -0,0 +1 @@
+Step 8: Adding a sidebar
diff --git a/examples/application8/app-menu.ui b/examples/application8/app-menu.ui
deleted file mode 100644
index 13bf8fd342..0000000000
--- a/examples/application8/app-menu.ui
+++ /dev/null
@@ -1,16 +0,0 @@
-<interface>
- <menu id="appmenu">
- <section>
- <item>
- <attribute name="label" translatable="yes">_Preferences</attribute>
- <attribute name="action">app.preferences</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Quit</attribute>
- <attribute name="action">app.quit</attribute>
- </item>
- </section>
- </menu>
-</interface>
diff --git a/examples/application8/exampleapp.c b/examples/application8/exampleapp.c
index 64a3ceb100..8ac0ebd529 100644
--- a/examples/application8/exampleapp.c
+++ b/examples/application8/exampleapp.c
@@ -46,8 +46,6 @@ static GActionEntry app_entries[] =
static void
example_app_startup (GApplication *app)
{
- GtkBuilder *builder;
- GMenuModel *app_menu;
const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
G_APPLICATION_CLASS (example_app_parent_class)->startup (app);
@@ -58,11 +56,6 @@ example_app_startup (GApplication *app)
gtk_application_set_accels_for_action (GTK_APPLICATION (app),
"app.quit",
quit_accels);
-
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/app-menu.ui");
- app_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "appmenu"));
- gtk_application_set_app_menu (GTK_APPLICATION (app), app_menu);
- g_object_unref (builder);
}
static void
diff --git a/examples/application8/exampleapp.gresource.xml b/examples/application8/exampleapp.gresource.xml
index ace59c8bb7..c40f6419b7 100644
--- a/examples/application8/exampleapp.gresource.xml
+++ b/examples/application8/exampleapp.gresource.xml
@@ -2,7 +2,6 @@
<gresources>
<gresource prefix="/org/gtk/exampleapp">
<file preprocess="xml-stripblanks">window.ui</file>
- <file preprocess="xml-stripblanks">app-menu.ui</file>
<file preprocess="xml-stripblanks">gears-menu.ui</file>
<file preprocess="xml-stripblanks">prefs.ui</file>
</gresource>
diff --git a/examples/application8/exampleappwin.c b/examples/application8/exampleappwin.c
index f21eeec5cc..1ae4756d02 100644
--- a/examples/application8/exampleappwin.c
+++ b/examples/application8/exampleappwin.c
@@ -9,10 +9,10 @@ struct _ExampleAppWindow
GSettings *settings;
GtkWidget *stack;
+ GtkWidget *gears;
GtkWidget *search;
GtkWidget *searchbar;
GtkWidget *searchentry;
- GtkWidget *gears;
GtkWidget *sidebar;
GtkWidget *words;
};
@@ -143,6 +143,12 @@ example_app_window_init (ExampleAppWindow *win)
GAction *action;
gtk_widget_init_template (GTK_WIDGET (win));
+
+ builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
+ menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->gears), menu);
+ g_object_unref (builder);
+
win->settings = g_settings_new ("org.gtk.exampleapp");
g_settings_bind (win->settings, "transition",
@@ -160,11 +166,6 @@ example_app_window_init (ExampleAppWindow *win)
g_signal_connect (win->sidebar, "notify::reveal-child",
G_CALLBACK (words_changed), win);
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
- menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
- gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->gears), menu);
- g_object_unref (builder);
-
action = g_settings_create_action (win->settings, "show-words");
g_action_map_add_action (G_ACTION_MAP (win), action);
g_object_unref (action);
@@ -191,10 +192,10 @@ example_app_window_class_init (ExampleAppWindowClass *class)
"/org/gtk/exampleapp/window.ui");
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
+ gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, search);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchbar);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchentry);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, words);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, sidebar);
diff --git a/examples/application8/gears-menu.ui b/examples/application8/gears-menu.ui
index 32cec0b28d..735a699af4 100644
--- a/examples/application8/gears-menu.ui
+++ b/examples/application8/gears-menu.ui
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<menu id="menu">
<section>
@@ -5,6 +6,16 @@
<attribute name="label" translatable="yes">_Words</attribute>
<attribute name="action">win.show-words</attribute>
</item>
+ <item>
+ <attribute name="label" translatable="yes">_Preferences</attribute>
+ <attribute name="action">app.preferences</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Quit</attribute>
+ <attribute name="action">app.quit</attribute>
+ </item>
</section>
</menu>
</interface>
diff --git a/examples/application8/prefs.ui b/examples/application8/prefs.ui
index 9551758c8f..c4cfcb621a 100644
--- a/examples/application8/prefs.ui
+++ b/examples/application8/prefs.ui
@@ -4,16 +4,16 @@
<property name="title" translatable="yes">Preferences</property>
<property name="resizable">0</property>
<property name="modal">1</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="vbox">
+ <child internal-child="content_area">
+ <object class="GtkBox" id="content_area">
<child>
<object class="GtkGrid" id="grid">
- <property name="margin-start">6</property>
- <property name="margin-end">6</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
<property name="row-spacing">12</property>
- <property name="column-spacing">6</property>
+ <property name="column-spacing">12</property>
<child>
<object class="GtkLabel" id="fontlabel">
<property name="label">_Font:</property>
diff --git a/examples/application8/window.ui b/examples/application8/window.ui
index e7935e55e2..165ebacbcb 100644
--- a/examples/application8/window.ui
+++ b/examples/application8/window.ui
@@ -4,33 +4,31 @@
<property name="title" translatable="yes">Example Application</property>
<property name="default-width">600</property>
<property name="default-height">400</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="header">
+ <property name="show-title-buttons">1</property>
+ <child type="title">
+ <object class="GtkStackSwitcher" id="tabs">
+ <property name="stack">stack</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkToggleButton" id="search">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-find-symbolic</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton" id="gears">
+ <property name="direction">none</property>
+ </object>
+ </child>
+ </object>
+ </child>
<child>
<object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
<child>
- <object class="GtkHeaderBar" id="header">
- <child type="title">
- <object class="GtkStackSwitcher" id="tabs">
- <property name="stack">stack</property>
- </object>
- </child>
- <child type="end">
- <object class="GtkToggleButton" id="search">
- <property name="sensitive">0</property>
- <property name="icon-name">edit-find-symbolic</property>
- </object>
- </child>
- <child type="end">
- <object class="GtkMenuButton" id="gears">
- <property name="direction">none</property>
- <style>
- <class name="image-button"/>
- </style>
- </object>
- </child>
- </object>
- </child>
- <child>
<object class="GtkSearchBar" id="searchbar">
<child>
<object class="GtkSearchEntry" id="searchentry">
diff --git a/examples/application9/README b/examples/application9/README
new file mode 100644
index 0000000000..4b43848ff7
--- /dev/null
+++ b/examples/application9/README
@@ -0,0 +1 @@
+Step 9: Using properties
diff --git a/examples/application9/app-menu.ui b/examples/application9/app-menu.ui
deleted file mode 100644
index 13bf8fd342..0000000000
--- a/examples/application9/app-menu.ui
+++ /dev/null
@@ -1,16 +0,0 @@
-<interface>
- <menu id="appmenu">
- <section>
- <item>
- <attribute name="label" translatable="yes">_Preferences</attribute>
- <attribute name="action">app.preferences</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Quit</attribute>
- <attribute name="action">app.quit</attribute>
- </item>
- </section>
- </menu>
-</interface>
diff --git a/examples/application9/exampleapp.c b/examples/application9/exampleapp.c
index 64a3ceb100..8ac0ebd529 100644
--- a/examples/application9/exampleapp.c
+++ b/examples/application9/exampleapp.c
@@ -46,8 +46,6 @@ static GActionEntry app_entries[] =
static void
example_app_startup (GApplication *app)
{
- GtkBuilder *builder;
- GMenuModel *app_menu;
const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
G_APPLICATION_CLASS (example_app_parent_class)->startup (app);
@@ -58,11 +56,6 @@ example_app_startup (GApplication *app)
gtk_application_set_accels_for_action (GTK_APPLICATION (app),
"app.quit",
quit_accels);
-
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/app-menu.ui");
- app_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "appmenu"));
- gtk_application_set_app_menu (GTK_APPLICATION (app), app_menu);
- g_object_unref (builder);
}
static void
diff --git a/examples/application9/exampleapp.gresource.xml b/examples/application9/exampleapp.gresource.xml
index ace59c8bb7..c40f6419b7 100644
--- a/examples/application9/exampleapp.gresource.xml
+++ b/examples/application9/exampleapp.gresource.xml
@@ -2,7 +2,6 @@
<gresources>
<gresource prefix="/org/gtk/exampleapp">
<file preprocess="xml-stripblanks">window.ui</file>
- <file preprocess="xml-stripblanks">app-menu.ui</file>
<file preprocess="xml-stripblanks">gears-menu.ui</file>
<file preprocess="xml-stripblanks">prefs.ui</file>
</gresource>
diff --git a/examples/application9/exampleappwin.c b/examples/application9/exampleappwin.c
index 725ee67df1..c585094f4c 100644
--- a/examples/application9/exampleappwin.c
+++ b/examples/application9/exampleappwin.c
@@ -9,10 +9,10 @@ struct _ExampleAppWindow
GSettings *settings;
GtkWidget *stack;
+ GtkWidget *gears;
GtkWidget *search;
GtkWidget *searchbar;
GtkWidget *searchentry;
- GtkWidget *gears;
GtkWidget *sidebar;
GtkWidget *words;
GtkWidget *lines;
@@ -168,6 +168,12 @@ example_app_window_init (ExampleAppWindow *win)
GAction *action;
gtk_widget_init_template (GTK_WIDGET (win));
+
+ builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
+ menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->gears), menu);
+ g_object_unref (builder);
+
win->settings = g_settings_new ("org.gtk.exampleapp");
g_settings_bind (win->settings, "transition",
@@ -185,11 +191,6 @@ example_app_window_init (ExampleAppWindow *win)
g_signal_connect (win->sidebar, "notify::reveal-child",
G_CALLBACK (words_changed), win);
- builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
- menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
- gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->gears), menu);
- g_object_unref (builder);
-
action = g_settings_create_action (win->settings, "show-words");
g_action_map_add_action (G_ACTION_MAP (win), action);
g_object_unref (action);
@@ -224,10 +225,10 @@ example_app_window_class_init (ExampleAppWindowClass *class)
"/org/gtk/exampleapp/window.ui");
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
+ gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, search);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchbar);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchentry);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, words);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, sidebar);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), ExampleAppWindow, lines);
diff --git a/examples/application9/gears-menu.ui b/examples/application9/gears-menu.ui
index 0b3d15e1be..d16d93a8ab 100644
--- a/examples/application9/gears-menu.ui
+++ b/examples/application9/gears-menu.ui
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<menu id="menu">
<section>
@@ -9,6 +10,16 @@
<attribute name="label" translatable="yes">_Lines</attribute>
<attribute name="action">win.show-lines</attribute>
</item>
+ <item>
+ <attribute name="label" translatable="yes">_Preferences</attribute>
+ <attribute name="action">app.preferences</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Quit</attribute>
+ <attribute name="action">app.quit</attribute>
+ </item>
</section>
</menu>
</interface>
diff --git a/examples/application9/prefs.ui b/examples/application9/prefs.ui
index 9551758c8f..c4cfcb621a 100644
--- a/examples/application9/prefs.ui
+++ b/examples/application9/prefs.ui
@@ -4,16 +4,16 @@
<property name="title" translatable="yes">Preferences</property>
<property name="resizable">0</property>
<property name="modal">1</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="vbox">
+ <child internal-child="content_area">
+ <object class="GtkBox" id="content_area">
<child>
<object class="GtkGrid" id="grid">
- <property name="margin-start">6</property>
- <property name="margin-end">6</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
<property name="row-spacing">12</property>
- <property name="column-spacing">6</property>
+ <property name="column-spacing">12</property>
<child>
<object class="GtkLabel" id="fontlabel">
<property name="label">_Font:</property>
diff --git a/examples/application9/window.ui b/examples/application9/window.ui
index 59f6e8c71a..29af168d26 100644
--- a/examples/application9/window.ui
+++ b/examples/application9/window.ui
@@ -4,44 +4,42 @@
<property name="title" translatable="yes">Example Application</property>
<property name="default-width">600</property>
<property name="default-height">400</property>
- <child>
- <object class="GtkBox" id="content_box">
- <property name="orientation">vertical</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="header">
+ <property name="show-title-buttons">1</property>
<child>
- <object class="GtkHeaderBar" id="header">
- <child>
- <object class="GtkLabel" id="lines_label">
- <property name="visible">0</property>
- <property name="label" translatable="yes">Lines:</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="lines">
- <property name="visible">0</property>
- </object>
- </child>
- <child type="title">
- <object class="GtkStackSwitcher" id="tabs">
- <property name="stack">stack</property>
- </object>
- </child>
- <child type="end">
- <object class="GtkToggleButton" id="search">
- <property name="sensitive">0</property>
- <property name="icon-name">edit-find-symbolic</property>
- </object>
- </child>
- <child type="end">
- <object class="GtkMenuButton" id="gears">
- <property name="direction">none</property>
- <style>
- <class name="image-button"/>
- </style>
- </object>
- </child>
+ <object class="GtkLabel" id="lines_label">
+ <property name="visible">0</property>
+ <property name="label" translatable="yes">Lines:</property>
</object>
</child>
<child>
+ <object class="GtkLabel" id="lines">
+ <property name="visible">0</property>
+ </object>
+ </child>
+ <child type="title">
+ <object class="GtkStackSwitcher" id="tabs">
+ <property name="stack">stack</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkToggleButton" id="search">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-find-symbolic</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton" id="gears">
+ <property name="direction">none</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="content_box">
+ <property name="orientation">vertical</property>
+ <child>
<object class="GtkSearchBar" id="searchbar">
<child>
<object class="GtkSearchEntry" id="searchentry">
diff --git a/examples/meson.build b/examples/meson.build
index 8fcc04d547..22e74f34d4 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -31,4 +31,3 @@ subdir('application6')
subdir('application7')
subdir('application8')
subdir('application9')
-subdir('application10')