/* * SPDX-FileCopyrightText: 2012-2024 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-dialog.h" static void on_activate ( GApplication *app, G_GNUC_UNUSED void *user_data) { g_assert (GTK_IS_APPLICATION (app)); GtkWindow *window = gtk_application_get_active_window (GTK_APPLICATION (app)); if (!window) window = GTK_WINDOW (rugby_app_window_new (GTK_APPLICATION (app))); if (g_strcmp0 (PROFILE, "development") == 0) 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, void *user_data) { GtkApplication *app = GTK_APPLICATION (user_data); GtkWindow *window = gtk_application_get_active_window (app); adw_show_about_dialog_from_appdata (GTK_WIDGET (window), "uk/me/bcowan/Rugby/uk.me.bcowan.Rugby.metainfo.xml", NULL, "application-icon", "football-american", "version", VERSION, NULL); } static void preferences_activated (G_GNUC_UNUSED GSimpleAction *simple, G_GNUC_UNUSED GVariant *parameter, void *user_data) { GtkApplication *app = GTK_APPLICATION (user_data); GtkWindow *window = gtk_application_get_active_window (app); RugbyPrefDialog *pref_window = rugby_pref_dialog_new (); adw_dialog_present (ADW_DIALOG (pref_window), GTK_WIDGET (window)); } static void on_startup ( GApplication *app, G_GNUC_UNUSED void *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), "app.prefs", (const char*[]) { "<Ctrl>comma", NULL }); } int main (int argc, char **argv) { g_autoptr (AdwApplication) app = adw_application_new ("uk.me.bcowan.Rugby", G_APPLICATION_NON_UNIQUE); 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); }