From 6c0b23d2dccd854708f326ff592de2bbb4de448a Mon Sep 17 00:00:00 2001 From: Bruce Cowan <bruce@bcowan.me.uk> Date: Sat, 3 Sep 2022 18:53:36 +0100 Subject: [PATCH] Use blueprint --- .gitignore | 2 + data/interface.ui | 95 ----------------------------- data/meson.build | 12 +++- data/prefs.blp | 62 +++++++++++++++++++ data/prefs.ui | 79 ------------------------ data/rugby.gresource.xml | 4 +- data/window.blp | 66 ++++++++++++++++++++ src/rugby-app-window.c | 2 +- subprojects/blueprint-compiler.wrap | 8 +++ 9 files changed, 152 insertions(+), 178 deletions(-) delete mode 100644 data/interface.ui create mode 100644 data/prefs.blp delete mode 100644 data/prefs.ui create mode 100644 data/window.blp create mode 100644 subprojects/blueprint-compiler.wrap diff --git a/.gitignore b/.gitignore index 3d28c05..c44bdfd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later .flatpak* + +/subprojects/blueprint-compiler diff --git a/data/interface.ui b/data/interface.ui deleted file mode 100644 index 42bd470..0000000 --- a/data/interface.ui +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - SPDX-FileCopyrightText: 2012-2022 Bruce Cowan <bruce@bcowan.me.uk> - - SPDX-License-Identifier: GPL-3.0-or-later ---> -<interface> - <requires lib="gtk" version="4.0"/> - <requires lib="libadwaita" version="1.0"/> - <menu id="menu"> - <section> - <item> - <attribute name="label" translatable="yes">_Preferences</attribute> - <attribute name="action">app.prefs</attribute> - </item> - </section> - <section> - <item> - <attribute name="label" translatable="yes">_About Rugby</attribute> - <attribute name="action">app.about</attribute> - </item> - </section> - </menu> - <template class="RugbyAppWindow" parent="GtkApplicationWindow"> - <property name="title" translatable="yes">Rugby</property> - <property name="default-height">600</property> - <property name="default-width">400</property> - <style> - <class name="devel"/> - </style> - <child> - <object class="GtkScrolledWindow"> - <child> - <object class="AdwClampScrollable"> - <property name="maximum-size">600</property> - <child> - <object class="GtkListView" id="listview"> - <property name="model"> - <object class="GtkNoSelection"> - <property name="model"> - <object class="RugbyListStore"> - <binding name="score"> - <lookup name="value">scorespin</lookup> - </binding> - </object> - </property> - </object> - </property> - <property name="factory"> - <object class="GtkBuilderListItemFactory"> - <property name="resource">/uk/me/bcowan/rugby/score-item.ui</property> - </object> - </property> - <style> - <class name="rich-list"/> - </style> - </object> - </child> - </object> - </child> - </object> - </child> - <child type="titlebar"> - <object class="GtkHeaderBar"> - <child> - <object class="GtkSpinButton" id="scorespin"> - <property name="adjustment"> - <object class="GtkAdjustment"> - <property name="step-increment">1</property> - <property name="upper">200</property> - </object> - </property> - <property name="focusable">1</property> - <property name="tooltip-text">Score</property> - </object> - </child> - <child type="title"> - <object class="GtkLabel"> - <property name="label">Rugby</property> - <style> - <class name="title"/> - </style> - </object> - </child> - <child type="end"> - <object class="GtkMenuButton" id="menu_button"> - <property name="direction">none</property> - <property name="menu_model">menu</property> - </object> - </child> - </object> - </child> - </template> -</interface> - diff --git a/data/meson.build b/data/meson.build index 9dc5c0a..2632f11 100644 --- a/data/meson.build +++ b/data/meson.build @@ -2,9 +2,19 @@ # # SPDX-License-Identifier: GPL-3.0-or-later +blueprints = custom_target('blueprints', + input: files( + 'prefs.blp', + 'window.blp' + ), + output: '.', + command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], +) + resources = gnome.compile_resources('gen-resources', 'rugby.gresource.xml', - source_dir: 'data') + source_dir: 'data', + dependencies: blueprints) desktop_file = 'uk.me.bcowan.Rugby.desktop' install_data(desktop_file, diff --git a/data/prefs.blp b/data/prefs.blp new file mode 100644 index 0000000..7b9ba93 --- /dev/null +++ b/data/prefs.blp @@ -0,0 +1,62 @@ +// SPDX-FileCopyrightText: 2022 Bruce Cowan <bruce@bcowan.me.uk> +// +// SPDX-License-Identifier: GPL-3.0-or-later + +using Gtk 4.0; +using Adw 1; + +template RugbyPrefWindow : Adw.PreferencesWindow { + default-height: 300; + default-width: 400; + title: "Preferences"; + modal: true; + + Adw.PreferencesPage { + Adw.PreferencesGroup { + title: "Scoring"; + + Adw.ActionRow { + title: "Points for a converted tries"; + + SpinButton try_spin { + adjustment: Adjustment { + lower: 1; + upper: 7; + step-increment: 1; + }; + max-width-chars: 3; + valign: center; + } + } + + Adw.ActionRow { + title: "Points for an unconverted try"; + + SpinButton utry_spin { + adjustment: Adjustment { + lower: 1; + upper: 5; + step-increment: 1; + }; + max-width-chars: 3; + valign: center; + } + } + + Adw.ActionRow { + title: "Points for a kick"; + + SpinButton kick_spin { + adjustment: Adjustment { + lower: 1; + upper: 3; + step-increment: 1; + }; + max-width-chars: 3; + valign: center; + } + } + } + } +} + diff --git a/data/prefs.ui b/data/prefs.ui deleted file mode 100644 index 50cb79e..0000000 --- a/data/prefs.ui +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - SPDX-FileCopyrightText: 2020-2022 Bruce Cowan <bruce@bcowan.me.uk> - - SPDX-License-Identifier: GPL-3.0-or-later ---> -<interface> - <requires lib="gtk" version="4.0"/> - <requires lib="libadwaita" version="1.0"/> - <template class="RugbyPrefWindow" parent="AdwPreferencesWindow"> - <property name="default-height">300</property> - <property name="default-width">400</property> - <property name="title">Preferences</property> - <property name="modal">True</property> - <child> - <object class="AdwPreferencesPage"> - <child> - <object class="AdwPreferencesGroup"> - <property name="title" translatable="yes">Scoring</property> - <child> - <object class="AdwActionRow"> - <property name="title" translatable="yes">Points for a converted try</property> - <child> - <object class="GtkSpinButton" id="try_spin"> - <property name="adjustment"> - <object class="GtkAdjustment"> - <property name="lower">1</property> - <property name="upper">7</property> - <property name="step_increment">1</property> - </object> - </property> - <property name="max-width-chars">3</property> - <property name="valign">center</property> - </object> - </child> - </object> - </child> - <child> - <object class="AdwActionRow"> - <property name="title" translatable="yes">Points for a unconverted try</property> - <child> - <object class="GtkSpinButton" id="utry_spin"> - <property name="adjustment"> - <object class="GtkAdjustment"> - <property name="lower">1</property> - <property name="upper">5</property> - <property name="step_increment">1</property> - </object> - </property> - <property name="max-width-chars">3</property> - <property name="valign">center</property> - </object> - </child> - </object> - </child> - <child> - <object class="AdwActionRow"> - <property name="title" translatable="yes">Points for a kick</property> - <child> - <object class="GtkSpinButton" id="kick_spin"> - <property name="adjustment"> - <object class="GtkAdjustment"> - <property name="lower">1</property> - <property name="upper">3</property> - <property name="step_increment">1</property> - </object> - </property> - <property name="max-width-chars">3</property> - <property name="valign">center</property> - </object> - </child> - </object> - </child> - </object> - </child> - </object> - </child> - </template> -</interface> diff --git a/data/rugby.gresource.xml b/data/rugby.gresource.xml index d0aed4a..1c63d2e 100644 --- a/data/rugby.gresource.xml +++ b/data/rugby.gresource.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - SPDX-FileCopyrightText: 2012-2021 Bruce Cowan <bruce@bcowan.me.uk> + SPDX-FileCopyrightText: 2012-2022 Bruce Cowan <bruce@bcowan.me.uk> SPDX-License-Identifier: GPL-3.0-or-later --> <gresources> <gresource prefix="/uk/me/bcowan/rugby"> - <file preprocess="xml-stripblanks" compressed="true">interface.ui</file> <file preprocess="xml-stripblanks" compressed="true">prefs.ui</file> <file preprocess="xml-stripblanks" compressed="true">score-item.ui</file> + <file preprocess="xml-stripblanks" compressed="true">window.ui</file> </gresource> </gresources> diff --git a/data/window.blp b/data/window.blp new file mode 100644 index 0000000..5964747 --- /dev/null +++ b/data/window.blp @@ -0,0 +1,66 @@ +// SPDX-FileCopyrightText: 2022 Bruce Cowan <bruce@bcowan.me.uk> +// +// SPDX-License-Identifier: GPL-3.0-or-later + +using Gtk 4.0; +using Adw 1; + +template RugbyAppWindow : ApplicationWindow { + title: "Rugby"; + default-height: 600; + default-width: 400; + styles ["devel"] + + [titlebar] + HeaderBar { + SpinButton scorespin { + adjustment: Adjustment { + step-increment: 1; + upper: 200; + }; + focusable: true; + tooltip-text: "Score"; + } + + [title] + Label { + styles ["title"] + + label: "Rugby"; + } + + [end] + MenuButton menu_button { + direction: none; + menu-model: app_menu; + } + } + + ScrolledWindow { + Adw.ClampScrollable { + maximum-size: 600; + + ListView listview { + styles ["rich-list"] + + model: NoSelection { + model: .RugbyListStore { + score: bind scorespin.value; + }; + }; + factory: BuilderListItemFactory { + resource: "/uk/me/bcowan/rugby/score-item.ui"; + }; + } + } + } +} + +menu app_menu { + section { + item ("_Preferences", "app.prefs") + } + section { + item ("_About Rugby", "app.about") + } +} diff --git a/src/rugby-app-window.c b/src/rugby-app-window.c index ca1b448..3ed4d1f 100644 --- a/src/rugby-app-window.c +++ b/src/rugby-app-window.c @@ -85,7 +85,7 @@ rugby_app_window_class_init (RugbyAppWindowClass *klass) g_type_ensure (RUGBY_TYPE_LIST_STORE); gtk_widget_class_set_template_from_resource (widget_class, - "/uk/me/bcowan/rugby/interface.ui"); + "/uk/me/bcowan/rugby/window.ui"); gtk_widget_class_bind_template_callback (widget_class, item_tooltip_cb); } diff --git a/subprojects/blueprint-compiler.wrap b/subprojects/blueprint-compiler.wrap new file mode 100644 index 0000000..72aee57 --- /dev/null +++ b/subprojects/blueprint-compiler.wrap @@ -0,0 +1,8 @@ +[wrap-git] +directory = blueprint-compiler +url = https://gitlab.gnome.org/jwestman/blueprint-compiler.git +revision = v0.2.0 +depth = 1 + +[provide] +program_names = blueprint-compiler -- GitLab