Skip to content
Snippets Groups Projects
main.c 2.96 KiB
Newer Older
Bruce Cowan's avatar
Bruce Cowan committed
/*
Bruce Cowan's avatar
Bruce Cowan committed
 * SPDX-FileCopyrightText: 2012-2024 Bruce Cowan <bruce@bcowan.me.uk>
 * SPDX-License-Identifier: GPL-3.0-or-later
#include <config.h>
Bruce Cowan's avatar
Bruce Cowan committed

Bruce Cowan's avatar
Bruce Cowan committed
#include "rugby-app-window.h"
#include "rugby-pref-dialog.h"
Bruce Cowan's avatar
Bruce Cowan committed

static void
on_activate (              GApplication *app,
Bruce Cowan's avatar
Bruce Cowan committed
             G_GNUC_UNUSED void         *user_data)
Bruce Cowan's avatar
Bruce Cowan committed
{
    g_assert (GTK_IS_APPLICATION (app));

    GtkWindow *window = gtk_application_get_active_window (GTK_APPLICATION (app));
Bruce Cowan's avatar
Bruce Cowan committed
    if (!window)
        window = GTK_WINDOW (rugby_app_window_new (GTK_APPLICATION (app)));
    if (g_strcmp0 (PROFILE, "development") == 0)
Bruce Cowan's avatar
Bruce Cowan committed
        gtk_widget_add_css_class (GTK_WIDGET (window), "devel");

Bruce Cowan's avatar
Bruce Cowan committed
    gtk_window_present (GTK_WINDOW (window));
Bruce Cowan's avatar
Bruce Cowan committed
}

static void
about_activated (G_GNUC_UNUSED GSimpleAction *simple,
                 G_GNUC_UNUSED GVariant      *parameter,
Bruce Cowan's avatar
Bruce Cowan committed
                               void          *user_data)
Bruce Cowan's avatar
Bruce Cowan committed
{
Bruce Cowan's avatar
Bruce Cowan committed
    GtkApplication *app = GTK_APPLICATION (user_data);
    GtkWindow *window = gtk_application_get_active_window (app);

Bruce Cowan's avatar
Bruce Cowan committed
    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,
Bruce Cowan's avatar
Bruce Cowan committed
                                     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));
Bruce Cowan's avatar
Bruce Cowan committed
static void
Bruce Cowan's avatar
Bruce Cowan committed
on_startup (              GApplication *app,
            G_GNUC_UNUSED void         *user_data)
Bruce Cowan's avatar
Bruce Cowan committed
{
Bruce Cowan's avatar
Bruce Cowan committed
    const GActionEntry app_entries[] =
    {
Bruce Cowan's avatar
Bruce Cowan committed
        { .name = "about", .activate = about_activated },
        { .name = "prefs", .activate = preferences_activated },
Bruce Cowan's avatar
Bruce Cowan committed
    g_action_map_add_action_entries (G_ACTION_MAP (app),
Bruce Cowan's avatar
Bruce Cowan committed
                                     app_entries,
                                     G_N_ELEMENTS (app_entries),
Bruce Cowan's avatar
Bruce Cowan committed
                                     app);
Bruce Cowan's avatar
Bruce Cowan committed
    gtk_application_set_accels_for_action (GTK_APPLICATION (app),
                                           "app.prefs",
                                           (const char*[]) { "<Ctrl>comma", NULL });
Bruce Cowan's avatar
Bruce Cowan committed
}

Bruce Cowan's avatar
Bruce Cowan committed
int
main (int    argc,
      char **argv)
Bruce Cowan's avatar
Bruce Cowan committed
{
Bruce Cowan's avatar
Bruce Cowan committed
    g_autoptr (AdwApplication) app = adw_application_new ("uk.me.bcowan.Rugby",
Bruce Cowan's avatar
Bruce Cowan committed
                                                          G_APPLICATION_NON_UNIQUE);
Bruce Cowan's avatar
Bruce Cowan committed
    g_signal_connect (app, "startup",
Bruce Cowan's avatar
Bruce Cowan committed
                      G_CALLBACK (on_startup), NULL);
Bruce Cowan's avatar
Bruce Cowan committed
    g_signal_connect (app, "activate",
                      G_CALLBACK (on_activate), NULL);
Bruce Cowan's avatar
Bruce Cowan committed
    return g_application_run (G_APPLICATION (app), argc, argv);
Bruce Cowan's avatar
Bruce Cowan committed
}