2024-06-30 11:53:03 +02:00
|
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
|
|
* *
|
2024-07-01 00:42:25 +02:00
|
|
|
* Gem-graph client *
|
2024-06-30 11:53:03 +02:00
|
|
|
* *
|
|
|
|
* Main *
|
|
|
|
* *
|
2024-07-01 00:42:25 +02:00
|
|
|
* Copyright © 2021 Libre en Communs <contact@a-lec.org> *
|
|
|
|
* Copyright © 2021 Adrien Bourmault <neox@a-lec.org> *
|
|
|
|
* Copyright © 2021 Arthur Menges <arthur.menges@a-lec.org> *
|
|
|
|
* Copyright © 2021 Jean Sirmai <jean@a-lec.org> *
|
2024-06-30 11:53:03 +02:00
|
|
|
* *
|
|
|
|
* This file is part of Gem-graph. *
|
|
|
|
* *
|
2024-07-01 00:42:25 +02:00
|
|
|
* 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. *
|
2024-06-30 11:53:03 +02:00
|
|
|
* *
|
2024-07-01 00:42:25 +02:00
|
|
|
* This program is distributed in the hope that it will be useful, *
|
2024-07-01 07:26:16 +02:00
|
|
|
* but WITHOUT ANY WARRANTY; *
|
2024-07-01 00:42:25 +02:00
|
|
|
* without even the implied warranty of MERCHANTABILITY *
|
2024-07-01 07:26:16 +02:00
|
|
|
* or FITNESS FOR A PARTICULAR PURPOSE. *
|
2024-07-01 00:42:25 +02:00
|
|
|
* See the GNU Affero General Public License for more details. *
|
2024-06-30 11:53:03 +02:00
|
|
|
* *
|
2024-07-01 00:42:25 +02:00
|
|
|
* 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/>. *
|
2024-06-30 11:53:03 +02:00
|
|
|
* *
|
|
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
|
2024-06-29 17:05:13 +02:00
|
|
|
|
2024-07-04 08:04:58 +02:00
|
|
|
|
2024-07-01 07:26:16 +02:00
|
|
|
#include "../include/callbacks.h"
|
2024-06-29 17:05:13 +02:00
|
|
|
|
2024-07-06 23:09:47 +02:00
|
|
|
/* Tous les callbacks sont dans le fichier 'src/callbacks.c'
|
|
|
|
* et leur nom commence par: 'on_'
|
|
|
|
* (aucun autre nom de fonction ne commence par 'on_').
|
|
|
|
* S'ils deviennent trop nombreux, ils seront répartis
|
|
|
|
* dans des fichiers regroupés dans un dossier: 'src/callbacks.c'.
|
|
|
|
* (ou 'src/callbacks' ?)
|
|
|
|
* La description des fonctions devrait plutôt précéder ces fonctions
|
|
|
|
* pour alléger le fichier 'callbacks.h' (?) */
|
|
|
|
|
|
|
|
/* La description de l'aspect (du 'design') des fenêtres
|
|
|
|
* se trouve dans le dossier 'widget.c'
|
|
|
|
* et s'organise naturellement en arborescence
|
|
|
|
* qu'il sera facile de répartir en dossiers et fichiers
|
|
|
|
* au fur à mesure de leur développement.
|
|
|
|
*
|
|
|
|
* Actuellement, par exemple, la fenêtre principale comporte
|
|
|
|
* une barre de titre (décrite dans 'headers.c')
|
|
|
|
* et s'ouvre sur la vue de l'état ('state.c') en mode 'EXEC'.
|
|
|
|
* Cette vue comporte trois panneaux (widgets) principaux:
|
|
|
|
* sup, moyen, inf ou encore: CONTRAST, CAMERA, CONTROL ou EDIT
|
|
|
|
* si on veut les nommer d'après leur fonction.
|
|
|
|
*
|
|
|
|
* Lorsque la description de chaque widget s'affinera
|
|
|
|
* et demandera plus de place, les trois widgets principaux
|
|
|
|
* deviendront des dossiers et les widgets qu'ils contiennent
|
|
|
|
* des fichiers (ou des dossiers si besoin) et ainsi de suite...
|
|
|
|
*
|
2024-07-06 23:50:43 +02:00
|
|
|
* Dans cette logique,
|
|
|
|
* sauf s'il y a d'autres arbres que l'arbre des utilisateurs,
|
|
|
|
* l'actuel ficher 'tree.c' devrait être
|
2024-07-06 23:09:47 +02:00
|
|
|
* soit inclus dans le fichier 'rules.c'
|
2024-07-06 23:50:43 +02:00
|
|
|
* (puisque cet arbre est dans la page (le widget) 'rules')
|
|
|
|
* soit, s'il est trop volumineux, et pour faciliter la lisibilité,
|
2024-07-06 23:09:47 +02:00
|
|
|
* dans un dossier 'rules.c' (ou 'rules' ?)
|
|
|
|
* qui regroupera les différents widgets du widget 'rules'.
|
2024-07-06 23:50:43 +02:00
|
|
|
*
|
|
|
|
* NB Il est possible qu'il y ait besoin d'autres structures d'arbres:
|
|
|
|
* dans 'rules', par exemple, il est important de pouvoir visualiser
|
|
|
|
* l'utilisation (l'activité) des différentes règles
|
|
|
|
* ou de différents groupes de règles.
|
|
|
|
* Et donc de disposer d'un ou de plusieurs index vers ces règles.
|
2024-07-06 23:09:47 +02:00
|
|
|
*
|
|
|
|
* Les fonctions 'transversales' comme celles de
|
2024-07-06 23:50:43 +02:00
|
|
|
* 'graph' 'parse', possiblement 'tree' mais - surtout - 'automat',
|
|
|
|
* qui doivent pouvoir être accédées par plusieurs widgets ou callbacks
|
|
|
|
* restent à la racine: 'src/'
|
2024-07-06 23:09:47 +02:00
|
|
|
*
|
|
|
|
* Pour l'instant, le 'include' de 'automat' est dans 'base.h'.
|
|
|
|
* C'est une erreur (tolérable tant qu'automat est à l'état embryonnaire).
|
2024-07-06 23:50:43 +02:00
|
|
|
* À terme, il y aura un fichier 'automat.h' dans le dossier 'include'
|
|
|
|
*
|
|
|
|
* (NB labo.c disparaitra, bien sûr !) */
|
2024-07-06 23:09:47 +02:00
|
|
|
|
2024-06-29 17:05:13 +02:00
|
|
|
int main (int argc, char **argv)
|
|
|
|
{
|
|
|
|
GtkApplication *app;
|
|
|
|
int status;
|
|
|
|
|
2024-07-01 07:26:16 +02:00
|
|
|
app = gtk_application_new ("org.jean.gg_hack", G_APPLICATION_DEFAULT_FLAGS);
|
2024-06-29 17:05:13 +02:00
|
|
|
g_signal_connect (app, "activate", G_CALLBACK (on_main_window_activation), NULL);
|
2024-07-01 07:26:16 +02:00
|
|
|
|
2024-06-29 17:05:13 +02:00
|
|
|
status = g_application_run (G_APPLICATION (app), argc, argv);
|
|
|
|
g_object_unref (app);
|
2024-07-06 23:09:47 +02:00
|
|
|
|
2024-06-29 17:05:13 +02:00
|
|
|
return status;
|
|
|
|
}
|
2024-07-04 08:04:58 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|