| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- /* text-viewer-application.c
- *
- * Copyright 2025 Thomas Arnoux
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
- #include "config.h"
- #include <glib/gi18n.h>
- #include "text-viewer-application.h"
- #include "text-viewer-window.h"
- struct _TextViewerApplication
- {
- AdwApplication parent_instance;
- };
- G_DEFINE_FINAL_TYPE (TextViewerApplication, text_viewer_application, ADW_TYPE_APPLICATION)
- TextViewerApplication *
- text_viewer_application_new (const char *application_id,
- GApplicationFlags flags)
- {
- g_return_val_if_fail (application_id != NULL, NULL);
- return g_object_new (TEXT_VIEWER_TYPE_APPLICATION,
- "application-id", application_id,
- "flags", flags,
- "resource-base-path", "/com/example/TextViewer",
- NULL);
- }
- static void
- text_viewer_application_activate (GApplication *app)
- {
- GtkWindow *window;
- g_assert (TEXT_VIEWER_IS_APPLICATION (app));
- window = gtk_application_get_active_window (GTK_APPLICATION (app));
- if (window == NULL)
- window = g_object_new (TEXT_VIEWER_TYPE_WINDOW,
- "application", app,
- NULL);
- gtk_window_present (window);
- }
- static void
- text_viewer_application_class_init (TextViewerApplicationClass *klass)
- {
- GApplicationClass *app_class = G_APPLICATION_CLASS (klass);
- app_class->activate = text_viewer_application_activate;
- }
- static void
- text_viewer_application_about_action (GSimpleAction *action,
- GVariant *parameter,
- gpointer user_data)
- {
- static const char *developers[] = {"Thomas Arnoux", NULL};
- TextViewerApplication *self = user_data;
- GtkWindow *window = NULL;
- g_assert (TEXT_VIEWER_IS_APPLICATION (self));
- window = gtk_application_get_active_window (GTK_APPLICATION (self));
- adw_show_about_dialog (GTK_WIDGET (window),
- "application-name", "text-viewer",
- "application-icon", "com.example.TextViewer",
- "developer-name", "Thomas Arnoux",
- "translator-credits", _("translator-credits"),
- "version", "0.1.0",
- "developers", developers,
- "copyright", "© 2025 Thomas Arnoux",
- NULL);
- }
- static void
- text_viewer_application_quit_action (GSimpleAction *action,
- GVariant *parameter,
- gpointer user_data)
- {
- TextViewerApplication *self = user_data;
- g_assert (TEXT_VIEWER_IS_APPLICATION (self));
- g_application_quit (G_APPLICATION (self));
- }
- static const GActionEntry app_actions[] = {
- { "quit", text_viewer_application_quit_action },
- { "about", text_viewer_application_about_action },
- };
- static void
- text_viewer_application_init (TextViewerApplication *self)
- {
- g_action_map_add_action_entries (G_ACTION_MAP (self),
- app_actions,
- G_N_ELEMENTS (app_actions),
- self);
- gtk_application_set_accels_for_action (GTK_APPLICATION (self),
- "app.quit",
- (const char *[]) { "<control>q", NULL });
- }
|