src/main.c File Reference src/main.c Gem-graph client Main functions. #include "../include/widget.h"#include "../include/signal.h"#include "../include/fsm.h" Functions int main (int argc, char **argv) gem-graph-client main()
Detailed Description Gem-graph client Main functions. Copyright © 2021 Libre en Communs contact@a-lec.org Copyright © 2021 Arthur Menges arthur.menges@a-lec.org Copyright © 2021-2024 Adrien Bourmault neox@a-lec.org Copyright © 2021-2024 Jean Sirmai jean@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/. gem-graph-client main file Sur quel modèle se guider pour structurer le client gem-graph ? https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel https://en.wikipedia.org/wiki/Multitier_architecture ORGANISATION ACTUELLE (Octobre 2024)
1) Les structures hierarchiques. La description du 'design' des fenêtres se trouve dans le dossier 'widget' et s'organise naturellement en arborescence, en se calquant sur l'arborescence des widgets eux-mêmes. Il sera donc facile de répartir cette description en dossiers et fichiers au fur à mesure de son développement. Actuellement, par exemple, la fenêtre principale comporte :
‍une barre de titre (décrite dans 'topbar') et un widget 'child' (la partie sous la barre de titre) qui peut prendre au moins trois apparences différentes : state (montre l'état de l'espace et les commandes associées) rules (les règles et les commandes associées) stock (les données provenant des mesures, les outils d'analyse, etc.) (nom provisoire : mal défini à ce stade; fonctions à répartir...)
La fenêtre principale 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, ces trois widgets principaux deviendront des dossiers et les widgets qu'ils contiennent des fichiers (ou des dossiers si besoin) et ainsi de suite...
2) Les structures transversales. Les fonctions 'transversales' comme celles de 'graphics', 'parse', 'fsm', 'prefer', et peut-être des structures communes à tous les arbres, listes, etc. doivent pouvoir être accédées directement sans avoir à passer par la hiérarchie des widgets et/ou callbacks. Elles restent à la racine: 'src/ 'finite state machine' ('fsm') va centraliser l'identification des états (apparences) de la fenêtre et des transitions entre ces apparences; Elle sera probablement décomposée en de nombreux 'sous-automates' tels que chaque état de la fenêtre soit une combinaison unique des états de ces sous-automates. Exemple, muni des deux 'sous-automates' :
‍ { EXEC, EDIT }; // xor { STATE, RULES, DATA }; // xor
la 'finite state machine' peut se trouver dans 2 x 3 = 6 états. (voir fsm.h lignes 40-41)
Les grandes fonctions du client seront lancées par cette state machine : édition automatique (optimisation) de l'arbre des conditions tests sur un mini-serveur local analyses de données... Leur recueil et la mémorisation des préférences des utilisateurs sont des fonctions centrales mais leur mise en oeuvre suivra probalement des voies hiérarchiques. On peut prévoir des préférences concernant l'apparence des widgets, les traductions, les 'disabilities'; etc. mais aussi concernant les méthodes de travail, l'usage des outils d'analyse, etc. >> des 'scripts' pour des 'méta-fonctions' (des 'macros') ?
Function Documentation
main() mainmain.c main.cmain int main (int argc, char ** argv) gem-graph-client main() Date 2024-04 Author Jean See also src/fsm/dispatch src/signal (none) Parameters argc **argv
Returns status