gem-graph-client/src/main.c

70 lines
2.7 KiB
C
Raw Normal View History

/*
* Gem-graph OpenGL experiments
*
* Desc: Main file
*
* Copyright (C) 2023 Arthur Menges <arthur.menges@a-lec.org>
* Copyright (C) 2023 Adrien Bourmault <neox@a-lec.org>
*
* This file is part of Gem-graph.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <unistd.h>
#include <gtk-4.0/gtk/gtk.h>
#include "../include/base.h"
2023-01-25 12:24:52 +01:00
#include "../include/ui.h"
/*
* Comment gem_graph_client crée-t-il son application et sa fenêtre ?
*
* gem_graph_client_application_new() est une fonction primitive de gtk.h
* qui permet de (sert à) donner au gestionnaire de bureau, Gnome, les informations
* nécessaires et suffisantes pour initialiser une nouvelle application.
*
* gem_graph_client réécrit cette fonction à la fin de application.c
* en l'utilisant pour passer à Gnome les informations suivantes :
* - le nom de l'application (son identité) et
* - des flags (initialisés à des valeurs par défaut)
*
* Une fois l'espace mémoire nécessaire réservé et un nouveau thread créé et
* prêt à être exécuté, la nouvelle application peut 'démarrer'.
* C'est une autre primitive de gtk.h : g_application_run()
* qui donne à Gnome l'ordre de lancer ce thread et ainsi de commencer à
* exécuter l'application "gem_graph_client".
*
* Une fois l'application lancée, main() n'a plus rien à faire.
* La suite est décrite dans
* - application.c (activation / désactivation des actions, ajouts d'accélérateurs)
* - gemgraph.ui (description statique de la fenêtre)
* - window.c (description dynamique de la fenêtre)
* - events.c (description des actions)
* - tree.c (description d'une structure particulière) (sera répartie ultérieurement ?)
* - base.h (définitions 'transversales'/(communes) utilisables par plusieurs ressources
*/
int main(int argc, char **argv)
{
g_autoptr(GemGraphClientApplication) app = NULL;
int res;
app = gem_graph_client_application_new("org.alec.gemgraph",
G_APPLICATION_DEFAULT_FLAGS);
res = g_application_run(G_APPLICATION(app), argc, argv);
return res;
}