/* * Gem-graph OpenGL experiments * * Desc: Main file * * Copyright (C) 2023 Arthur Menges * Copyright (C) 2023 Adrien Bourmault * * 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 . */ #include #include #include "../include/base.h" #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 individuelle des actions élémentaires) * - 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; }