/* Chrysalide - Outil d'analyse de fichiers binaires
* about.h - boîte de dialogue d'information sur le programme
*
* Copyright (C) 2015-2024 Cyrille Bagard
*
* This file is part of Chrysalide.
*
* Chrysalide 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.
*
* Chrysalide 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 Chrysalide. If not, see .
*/
#include "about.h"
#include
#include
#include
#include
#include
#include "about-int.h"
/* Procède à l'initialisation de la boîte "A propos de". */
static void gtk_app_about_dialog_class_init(GtkAppAboutDialogClass *);
/* Procède à l'initialisation de la boîte "A propos de". */
static void gtk_app_about_dialog_init(GtkAppAboutDialog *);
/* Supprime toutes les références externes. */
static void gtk_app_about_dialog_dispose(GObject *);
/* Procède à la libération totale de la mémoire. */
static void gtk_app_about_dialog_finalize(GObject *);
/* Détermine le type du composant d'affichage générique. */
G_DEFINE_TYPE(GtkAppAboutDialog, gtk_app_about_dialog, GTK_TYPE_WINDOW);
/******************************************************************************
* *
* Paramètres : class = classe GTK à initialiser. *
* *
* Description : Procède à l'initialisation de la boîte "A propos de". *
* *
* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
static void gtk_app_about_dialog_class_init(GtkAppAboutDialogClass *class)
{
GObjectClass *object; /* Plus haut niveau équivalent */
GtkWidgetClass *widget; /* Classe de haut niveau */
object = G_OBJECT_CLASS(class);
object->dispose = gtk_app_about_dialog_dispose;
object->finalize = gtk_app_about_dialog_finalize;
widget = GTK_WIDGET_CLASS(class);
gtk_widget_class_set_css_name(widget, "aboutdialog");
gtk_widget_class_add_binding_action(widget, GDK_KEY_Escape, 0, "window.close", NULL);
gtk_widget_class_set_template_from_resource(widget, "/re/chrysalide/framework/gui/dialogs/about.ui");
}
/******************************************************************************
* *
* Paramètres : dialog = composant GTK à initialiser. *
* *
* Description : Procède à l'initialisation de la boîte "A propos de". *
* *
* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
static void gtk_app_about_dialog_init(GtkAppAboutDialog *dialog)
{
gtk_widget_init_template(GTK_WIDGET(dialog));
}
/******************************************************************************
* *
* Paramètres : object = instance d'objet GLib à traiter. *
* *
* Description : Supprime toutes les références externes. *
* *
* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
static void gtk_app_about_dialog_dispose(GObject *object)
{
gtk_widget_dispose_template(GTK_WIDGET(object), GTK_TYPE_APP_ABOUT_DIALOG);
G_OBJECT_CLASS(gtk_app_about_dialog_parent_class)->dispose(object);
}
/******************************************************************************
* *
* Paramètres : object = instance d'objet GLib à traiter. *
* *
* Description : Procède à la libération totale de la mémoire. *
* *
* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
static void gtk_app_about_dialog_finalize(GObject *object)
{
G_OBJECT_CLASS(gtk_app_about_dialog_parent_class)->finalize(object);
}
/******************************************************************************
* *
* Paramètres : parent = fenêtre parente à surpasser. *
* *
* Description : Construit la fenêtre d'informations sur le logiciel. *
* *
* Retour : Adresse de la fenêtre mise en place. *
* *
* Remarques : - *
* *
******************************************************************************/
GtkWindow *gtk_app_about_dialog_new(GtkWindow *parent)
{
GtkWindow *result; /* Boite de dialogue à renvoyer*/
result = g_object_new(GTK_TYPE_APP_ABOUT_DIALOG, NULL);
if (!gtk_app_about_dialog_create(GTK_APP_ABOUT_DIALOG(result), parent))
g_clear_object(&result);
return result;
}
/******************************************************************************
* *
* Paramètres : dialog = boîte de dialogue à initialiser pleinement. *
* parent = fenêtre parente à surpasser. *
* *
* Description : Met en place la fenêtre d'informations sur le logiciel. *
* *
* Retour : Bilan de l'opération. *
* *
* Remarques : - *
* *
******************************************************************************/
bool gtk_app_about_dialog_create(GtkAppAboutDialog *dialog, GtkWindow *parent)
{
bool result; /* Bilan à retourner */
result = true;
gtk_window_set_transient_for(GTK_WINDOW(dialog), parent);
return result;
}