Skip to content
Snippets Groups Projects
main.c 2.7 KiB
Newer Older
Bruce Cowan's avatar
Bruce Cowan committed
/*
 * SPDX-FileCopyrightText: 2012-2022 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-window.h"
Bruce Cowan's avatar
Bruce Cowan committed

Bruce Cowan's avatar
Bruce Cowan committed
static GtkWidget *window = NULL;

Bruce Cowan's avatar
Bruce Cowan committed
static void
on_activate (              GApplication *app,
             G_GNUC_UNUSED gpointer      user_data)
Bruce Cowan's avatar
Bruce Cowan committed
{
Bruce Cowan's avatar
Bruce Cowan committed
    if (!window)
        window = GTK_WIDGET (rugby_app_window_new (GTK_APPLICATION (app)));

    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,
                               gpointer       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
    const char *authors[] = { "Bruce Cowan", NULL };
Bruce Cowan's avatar
Bruce Cowan committed

    gtk_show_about_dialog (window,
                           "logo-icon-name", "face-wink",
                           "program-name", "Rugby",
                           "copyright", "Copyright 2012–2022 Bruce Cowan",
                           "license-type", GTK_LICENSE_GPL_3_0,
Bruce Cowan's avatar
Bruce Cowan committed
                           "authors", authors,
Bruce Cowan's avatar
Bruce Cowan committed
                           "comments", "Rugby scores possibilities program",
Bruce Cowan's avatar
Bruce Cowan committed
                           "version", VERSION,
Bruce Cowan's avatar
Bruce Cowan committed
                           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));
}

Bruce Cowan's avatar
Bruce Cowan committed
static void
on_startup (GApplication          *app,
            G_GNUC_UNUSED gpointer 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
}

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",
                                                          G_APPLICATION_FLAGS_NONE);
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
}