gem-graph-client/doc/docbook/d0/d09/main_8c.xml

146 lines
7.8 KiB
XML

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_main_8c" xml:lang="en-US">
<title>src/main.c File Reference</title>
<indexterm><primary>src/main.c</primary></indexterm>
<para>
<para>Gem-graph client Main functions. </para>
</para>
<programlisting linenumbering="unnumbered">#include &quot;../include/widget.h&quot;<?linebreak?>#include &quot;../include/signal.h&quot;<?linebreak?>#include &quot;../include/fsm.h&quot;<?linebreak?></programlisting><simplesect>
<title>Functions </title>
<itemizedlist>
<listitem><para>int <link linkend="_main_8c_1a3c04138a5bfe5d72780bb7e82a18e627">main</link> (int argc, char **argv)</para>
<para>gem-graph-client <link linkend="_main_8c_1a3c04138a5bfe5d72780bb7e82a18e627">main()</link> </para>
</listitem>
</itemizedlist>
</simplesect>
<section>
<title>Detailed Description</title>
<para>Gem-graph client Main functions. </para>
<para>Copyright © 2021 Libre en Communs <link xlink:href="mailto:contact@a-lec.org">contact@a-lec.org</link> Copyright © 2021 Arthur Menges <link xlink:href="mailto:arthur.menges@a-lec.org">arthur.menges@a-lec.org</link> Copyright © 2021-2024 Adrien Bourmault <link xlink:href="mailto:neox@a-lec.org">neox@a-lec.org</link> Copyright © 2021-2024 Jean Sirmai <link xlink:href="mailto:jean@a-lec.org">jean@a-lec.org</link></para>
<para>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.</para>
<para>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.</para>
<para>You should have received a copy of the GNU Affero General Public License along with this program. If not, see <link xlink:href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</link>.</para>
<para>gem-graph-client main file</para>
<para>Sur quel modèle se guider pour structurer le client gem-graph ?</para>
<para><link xlink:href="https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel">https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel</link> <link xlink:href="https://en.wikipedia.org/wiki/Multitier_architecture">https://en.wikipedia.org/wiki/Multitier_architecture</link></para>
<para>ORGANISATION ACTUELLE (Octobre 2024)</para>
<section xml:id="_main_8c_1autotoc_md0">
<title>1) Les structures hierarchiques.</title>
<para>La description du &apos;design&apos; des fenêtres se trouve dans le dossier &apos;widget&apos; et s&apos;organise naturellement en arborescence, en se calquant sur l&apos;arborescence des widgets eux-mêmes.</para>
<para>Il sera donc facile de répartir cette description en dossiers et fichiers au fur à mesure de son développement.</para>
<para>Actuellement, par exemple, la fenêtre principale comporte : <blockquote>
<para>&#8205;une barre de titre (décrite dans &apos;topbar&apos;) et un widget &apos;child&apos; (la partie sous la barre de titre) qui peut prendre au moins trois apparences différentes :<itemizedlist>
<listitem>
<para>state (montre l&apos;état de l&apos;espace et les commandes associées)</para>
</listitem><listitem>
<para>rules (les règles et les commandes associées)</para>
</listitem><listitem>
<para>stock (les données provenant des mesures, les outils d&apos;analyse, etc.) (nom provisoire : mal défini à ce stade; fonctions à répartir...) </para>
</listitem></itemizedlist>
</para>
</blockquote>La fenêtre principale s&apos;ouvre sur la vue de l&apos;état (&apos;state.c&apos;) en mode &apos;EXEC&apos;. Cette vue comporte trois panneaux (widgets) principaux: sup, moyen, inf ou encore: CONTRAST, CAMERA, CONTROL ou EDIT si on veut les nommer d&apos;après leur fonction.</para>
<para>Lorsque la description de chaque widget s&apos;affinera et demandera plus de place, ces trois widgets principaux deviendront des dossiers et les widgets qu&apos;ils contiennent des fichiers (ou des dossiers si besoin) et ainsi de suite...</para>
</section>
<section xml:id="_main_8c_1autotoc_md1">
<title>2) Les structures transversales.</title>
<para>Les fonctions &apos;transversales&apos; comme celles de &apos;graphics&apos;, &apos;parse&apos;, &apos;fsm&apos;, &apos;prefer&apos;, 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: &apos;src/</para>
<para>&apos;finite state machine&apos; (&apos;fsm&apos;) va centraliser l&apos;identification des états (apparences) de la fenêtre et des transitions entre ces apparences; Elle sera probablement décomposée en de nombreux &apos;sous-automates&apos; tels que chaque état de la fenêtre soit une combinaison unique des états de ces sous-automates.</para>
<para>Exemple, muni des deux &apos;sous-automates&apos; : <blockquote>
<para>&#8205; { EXEC, EDIT }; // xor { STATE, RULES, DATA }; // xor </para>
</blockquote>la &apos;finite state machine&apos; peut se trouver dans 2 x 3 = 6 états. (voir fsm.h lignes 40-41)</para>
<para>Les grandes fonctions du client seront lancées par cette state machine :<itemizedlist>
<listitem>
<para>édition automatique (optimisation) de l&apos;arbre des conditions</para>
</listitem><listitem>
<para>tests sur un mini-serveur local</para>
</listitem><listitem>
<para>analyses de données...</para>
</listitem></itemizedlist>
</para>
<para>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.</para>
<para>On peut prévoir des préférences concernant l&apos;apparence des widgets, les traductions, les &apos;disabilities&apos;; etc. mais aussi concernant les méthodes de travail, l&apos;usage des outils d&apos;analyse, etc. &gt;&gt; des &apos;scripts&apos; pour des &apos;méta-fonctions&apos; (des &apos;macros&apos;) ? </para>
</section>
</section>
<section>
<title>Function Documentation</title>
<anchor xml:id="_main_8c_1a3c04138a5bfe5d72780bb7e82a18e627"/><section>
<title>main()</title>
<indexterm><primary>main</primary><secondary>main.c</secondary></indexterm>
<indexterm><primary>main.c</primary><secondary>main</secondary></indexterm>
<para><computeroutput>int main (int argc, char ** argv)</computeroutput></para><para>
<para>gem-graph-client <link linkend="_main_8c_1a3c04138a5bfe5d72780bb7e82a18e627">main()</link> </para>
</para>
<para><formalpara><title>Date</title>
<para>2024-04 </para>
</formalpara>
<formalpara><title>Author</title>
<para>Jean</para>
</formalpara>
<formalpara><title>See also</title>
<para>src/fsm/dispatch </para>
<para>src/signal</para>
<para>(none)</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>argc</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>**argv</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
<formalpara><title>Returns</title>
<para>status </para>
</formalpara>
</para>
</section>
</section>
</section>