Skip to content
Snippets Groups Projects
main.c 2.46 KiB
Newer Older
Bruce Cowan's avatar
Bruce Cowan committed
/*
 * SPDX-FileCopyrightText: 2012, 2016-2018 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"
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
Bruce Cowan's avatar
Bruce Cowan committed
on_activate (GApplication *app,
             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
Bruce Cowan's avatar
Bruce Cowan committed
about_activated (GSimpleAction *simple,
                 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–2020 Bruce Cowan",
                           "license-type", GTK_LICENSE_GPL_3_0,
Bruce Cowan's avatar
Bruce Cowan committed
                           "authors", authors,
                           "comments", "Rugby scores possiblities program",
Bruce Cowan's avatar
Bruce Cowan committed
                           "version", VERSION,
Bruce Cowan's avatar
Bruce Cowan committed
                           NULL);
}

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

    // CSS styling
    g_autoptr (GtkCssProvider) provider = gtk_css_provider_new ();
    gtk_css_provider_load_from_resource (provider, "/uk/me/bcowan/rugby/rugby.css");

    gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
                                               GTK_STYLE_PROVIDER (provider),
                                               GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
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
    GtkApplication *app = gtk_application_new ("uk.me.bcowan.Rugby",
Bruce Cowan's avatar
Bruce Cowan committed
                                               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
}