/* * SPDX-FileCopyrightText: 2012-2022 Bruce Cowan <bruce@bcowan.me.uk> * SPDX-License-Identifier: GPL-3.0-or-later */ #include <config.h> #include "rugby-app-window.h" #include "rugby-pref-window.h" static GtkWidget *window = NULL; static void on_activate ( GApplication *app, G_GNUC_UNUSED gpointer user_data) { if (!window) window = GTK_WIDGET (rugby_app_window_new (GTK_APPLICATION (app))); if (DEVELOPMENT) gtk_widget_add_css_class (GTK_WIDGET (window), "devel"); gtk_window_present (GTK_WINDOW (window)); } static void about_activated (G_GNUC_UNUSED GSimpleAction *simple, G_GNUC_UNUSED GVariant *parameter, gpointer user_data) { GtkApplication *app = GTK_APPLICATION (user_data); GtkWindow *window = gtk_application_get_active_window (app); adw_show_about_window (window, "application-icon", "face-wink", "application-name", "Rugby", "copyright", "Copyright 2012–2022 Bruce Cowan", "license-type", GTK_LICENSE_GPL_3_0, "developer-name", "Bruce Cowan", "comments", "Rugby scores possibilities program", "version", VERSION, NULL); } static void preferences_activated (G_GNUC_UNUSED GSimpleAction *simple, G_GNUC_UNUSED GVariant *parameter, gpointer user_data) { GtkApplication *app = GTK_APPLICATION (user_data); GtkWindow *window = gtk_application_get_active_window (app); RugbyPrefWindow *pref_window = rugby_pref_window_new (RUGBY_APP_WINDOW (window)); gtk_window_present (GTK_WINDOW (pref_window)); } static void on_startup (GApplication *app, G_GNUC_UNUSED gpointer user_data) { const GActionEntry app_entries[] = { { .name = "about", .activate = about_activated }, { .name = "prefs", .activate = preferences_activated }, }; 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), "win.show-primary-menu", (const char*[]) { "F10", NULL }); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "app.prefs", (const char*[]) { "<Ctrl>comma", NULL }); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.score-changed::up", (const char*[]) { "<Ctrl>Up", "<Ctrl>Right", NULL }); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.score-changed::down", (const char*[]) { "<Ctrl>Down", "<Ctrl>Left", NULL }); } int main (int argc, char **argv) { g_autoptr (AdwApplication) app = adw_application_new ("uk.me.bcowan.Rugby", G_APPLICATION_FLAGS_NONE); g_signal_connect (app, "startup", G_CALLBACK (on_startup), NULL); g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL); return g_application_run (G_APPLICATION (app), argc, argv); }