gem-graph-client/html/d0/d09/main_8c.html

170 lines
11 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Gem-graph: src/main.c File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../gg_calligraphie.png"/></td>
<td id="projectalign">
<div id="projectname">Gem-graph<span id="projectnumber">&#160;0.1.0</span>
</div>
<div id="projectbrief">A modelling tool based on rewriting of geometric graphs.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">main.c File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>gem-graph-client main file
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;../include/widget.h&quot;</code><br />
<code>#include &quot;../include/signal.h&quot;</code><br />
<code>#include &quot;../include/fsm.h&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a3c04138a5bfe5d72780bb7e82a18e627" id="r_a3c04138a5bfe5d72780bb7e82a18e627"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d09/main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a> (int argc, char **argv)</td></tr>
<tr class="separator:a3c04138a5bfe5d72780bb7e82a18e627"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>gem-graph-client main file </p>
<p>Gem-graph client Main functions</p>
<p>Copyright © 2021 Libre en Communs <a href="#" onclick="location.href='mai'+'lto:'+'con'+'ta'+'ct@'+'a-'+'lec'+'.o'+'rg'; return false;">conta<span class="obfuscator">.nosp@m.</span>ct@a<span class="obfuscator">.nosp@m.</span>-lec.<span class="obfuscator">.nosp@m.</span>org</a> Copyright © 2021 Arthur Menges <a href="#" onclick="location.href='mai'+'lto:'+'art'+'hu'+'r.m'+'en'+'ges'+'@a'+'-le'+'c.'+'org'; return false;">arthu<span class="obfuscator">.nosp@m.</span>r.me<span class="obfuscator">.nosp@m.</span>nges@<span class="obfuscator">.nosp@m.</span>a-le<span class="obfuscator">.nosp@m.</span>c.org</a> Copyright © 2021-2024 Adrien Bourmault <a href="#" onclick="location.href='mai'+'lto:'+'neo'+'x@'+'a-l'+'ec'+'.or'+'g'; return false;">neox@<span class="obfuscator">.nosp@m.</span>a-le<span class="obfuscator">.nosp@m.</span>c.org</a> Copyright © 2021-2024 Jean Sirmai <a href="#" onclick="location.href='mai'+'lto:'+'jea'+'n@'+'a-l'+'ec'+'.or'+'g'; return false;">jean@<span class="obfuscator">.nosp@m.</span>a-le<span class="obfuscator">.nosp@m.</span>c.org</a></p>
<p>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.</p>
<p>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.</p>
<p>You should have received a copy of the GNU Affero General Public License along with this program. If not, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p>
<p>Sur quel modèle se guider pour structurer le client gem-graph ?</p>
<p><a 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</a> <a href="https://en.wikipedia.org/wiki/Multitier_architecture">https://en.wikipedia.org/wiki/Multitier_architecture</a></p>
<p>ORGANISATION ACTUELLE (Octobre 2024)</p>
<h2><a class="anchor" id="autotoc_md0"></a>
1) Les structures hierarchiques.</h2>
<p>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.</p>
<p>Il sera donc facile de répartir cette description en dossiers et fichiers au fur à mesure de son développement.</p>
<p>Actuellement, par exemple, la fenêtre principale comporte : </p><blockquote class="doxtable">
<p>&zwj;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 :</p><ul>
<li>state (montre l'état de l'espace et les commandes associées)</li>
<li>rules (les règles et les commandes associées)</li>
<li>stock (les données provenant des mesures, les outils d'analyse, etc.) (nom provisoire : mal défini à ce stade; fonctions à répartir...) </li>
</ul>
</blockquote>
<p>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.</p>
<p>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...</p>
<h2><a class="anchor" id="autotoc_md1"></a>
2) Les structures transversales.</h2>
<p>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/</p>
<p>'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.</p>
<p>Exemple, muni des deux 'sous-automates' : </p><blockquote class="doxtable">
<p>&zwj; { EXEC, EDIT }; // xor { STATE, RULES, DATA }; // xor </p>
</blockquote>
<p>la 'finite state machine' peut se trouver dans 2 x 3 = 6 états. (voir fsm.h lignes 40-41)</p>
<p>Les grandes fonctions du client seront lancées par cette state machine :</p><ul>
<li>édition automatique (optimisation) de l'arbre des conditions</li>
<li>tests sur un mini-serveur local</li>
<li>analyses de données...</li>
</ul>
<p>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.</p>
<p>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. &gt;&gt; des 'scripts' pour des 'méta-fonctions' (des 'macros') ? </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a3c04138a5bfe5d72780bb7e82a18e627" name="a3c04138a5bfe5d72780bb7e82a18e627"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c04138a5bfe5d72780bb7e82a18e627">&#9670;&#160;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>phantom documentation used to test the functioning of doxygen </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>