TraKERS v3.5 :
authorbastiena
Mon, 16 Jul 2012 12:39:47 +0200
changeset 49 1c2834888adc
parent 48 983d7be910c1
child 50 d969375fbcf7
TraKERS v3.5 : Menu added in Middleware to reach readme, doc, examples & config
.hgignore
LICENSE.txt
front_js/doc/tutorial front js et wamp.html
front_js/gestures/gestures/js/gestures.js
front_processing/doc/tutorial front processing.html
front_processing/doc/tutorial_front_processing.html
middleware/Debug/DebugWindow.xaml
middleware/Debug/DebugWindow.xaml.cs
middleware/Debug/Properties/Resources.Designer.cs
middleware/Debug/Properties/Resources.resx
middleware/dist/TraKERS.iss
middleware/src/MainModule/KinectMain.cs
middleware/src/bin/Release/config.txt
readme - Front Web.txt
readme - Middleware.txt
--- a/.hgignore	Fri Jul 13 14:57:43 2012 +0200
+++ b/.hgignore	Mon Jul 16 12:39:47 2012 +0200
@@ -77,6 +77,9 @@
 front_idill/src/communication/js/client.js.bak
 front_idill/src/mosaic/js/mosaic.js.bak
 front_idill/src/player/videos/*.mp4
+middleware/src/bin/Release/Front Processing.lnk
+middleware/src/bin/Release/Front JS.lnk
+middleware/src/bin/Release/ErrorFile.txt
 syntax: regexp
 middleware/extern/.*/(bin|obj)
 middleware/src/bin/Debug/*
--- a/LICENSE.txt	Fri Jul 13 14:57:43 2012 +0200
+++ b/LICENSE.txt	Mon Jul 16 12:39:47 2012 +0200
@@ -1,4 +1,4 @@
-Copyright (c) 2012, IRI (Institute d Recherche de d'Innovation)
+Copyright (c) 2012, IRI (Institute d Recherche de d'Innovation)
 All rights reserved.
 
 http://www.gnu.org/licenses/gpl.html
--- a/front_js/doc/tutorial front js et wamp.html	Fri Jul 13 14:57:43 2012 +0200
+++ b/front_js/doc/tutorial front js et wamp.html	Mon Jul 16 12:39:47 2012 +0200
@@ -1,6 +1,6 @@
 <html>
     <head>
-        <title>How To : Intégrer le Front JS à Wamp pour pouvoir le tester</title>
+        <title>TraKERS v3.5 - How To : Intégrer le Front JS à Wamp pour pouvoir le tester</title>
         <meta charset="UTF-8" />
     </head>
     
@@ -31,6 +31,6 @@
         
         <p>A présent, vous pouvez lancer le Middleware via l'éxecutable MainModule.exe. Une fois allumé, il ne vous reste qu'à tester les Fronts JS en cliquant gauche sur l'icone de wamp > localhost. La fenêtre d'accueil de wamp s'affiche. Sur le menu de gauche, sélectionnez les projets gestures et pointers (l'un ou l'autre, ou les deux). Une fois la ou les fenêtres ouvertes dans chrome, vous pourrez bouger les pointeurs dans le projet pointers, ou bien voir les notifications de gestures envoyées par le Middleware dans le projet gestures.</p>
         
-        <p>Si vous avez des questions ou des recommandations, voici mon adresse : alexandre.bastien@iri.centrepompidou.fr</p>
+        <p>Si vous expérimentez des difficultés ou souhaitez nous soumettre une requête, veuillez consulter le fichier contact.txt à la racine du projet.</p>
     </body>
 </html>
\ No newline at end of file
--- a/front_js/gestures/gestures/js/gestures.js	Fri Jul 13 14:57:43 2012 +0200
+++ b/front_js/gestures/gestures/js/gestures.js	Mon Jul 16 12:39:47 2012 +0200
@@ -86,7 +86,7 @@
 {
 	//On crée le texte et les images à mettre en bas de la fenêtre pour guider l'utilisateur.
 	var imgs = ['bend', 'fall', 'hello', 'jump', 'knee_up', 'pull_both', 'pull_right', 'pull_left', 'push_both', 'push_left', 'push_right', 'swipe_left', 'swipe_right'];
-	var helpText = '<div id="helpText">Gestures affichables :</div>';
+	var helpText = '<div id="helpText">Gestures détectables :</div>';
 	var helpImgs = '<div id="helpImgs">';
 	for(var i = 0 ; i < imgs.length ; i++)
 	{
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/front_processing/doc/tutorial front processing.html	Mon Jul 16 12:39:47 2012 +0200
@@ -0,0 +1,264 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="has_sidebar fixed-header earthrise">
+    <head>
+        <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+        <meta name="description" content="Tutoriel sur le développement et l'utilisation de code Processing utilisant le Middleware TraKERS."/>
+        <meta name="keywords" content="TraKERS, TraKERS Processing, TraKERS Front Processing, TraKERS Front, Kinect Processing"/>
+        <title>TraKERS v3.5 - Tutorial Processing</title>
+    </head>
+    
+    <body>
+        <p>TraKERS (Tracking using Kinect and Extracting Robust Skeletons) est une interface basée sur la détection de gestures / positions du squelette envoyé par le SDK Microsoft (1.5) de Kinect. Il est composé d'un Middleware assurant l'interaction avec Kinect, un rendu visuel et l'envoi de notifications sous forme de messages OSC.
+        Le deuxième module de ce projet est un Front en Processing doté d'un client TUIO et récupérant les messages OSC (sous forme d'objets tels que des Curseurs ou des Strings).</p>
+        
+        <p>Ce tutoriel concerne ce second module et a pour but d'expliquer le fonctionnement général d'un sketch Processing et la récupération des notifications du Middleware. Il sera agrémenté d'exemples fonctionnels créés pour les besoins de ce tutoriel ou inspirés d'exemples réels disponibles sur le site processing.org.</p>
+        
+        <ol type="I">
+            <a href="#I"><li>Installation de Processing</li></a>
+            <a href="#II"><li>Structure d'un sketch</li></a>
+            <a href="#III"><li>Fonctions principales de Processing</li></a>
+            <a href="#IV"><li>Récupérer les objets envoyés par le Middleware TraKERS via un Client TUIO</li></a>
+            <a href="#V"><li>Interactions entre les objets TUIO récupérés et des fonctions de dessin basiques</li></a>
+            <a href="#VI"><li>Quelques exemples d'implémentation</li></a>
+            <a href="#VII"><li>Références</li></a>
+        </ol>
+        
+        <hr />
+        
+        <ol type="I" start="1">
+            <a name="I"><li>Installation de Processing</li></a>
+        </ol>
+        
+        <p>Avant de pouvoir modifier les sketches Processing fournis dans l'installateur, il est nécessaire d'installer Processing.<br />
+        Vous trouverez l'archive ici :</p>
+        
+        <a href="http://processing.googlecode.com/files/processing-1.5.1-windows.zip">Processing pour Windows avec Java</a><br />
+        <a href="http://processing.googlecode.com/files/processing-1.5.1-windows-expert.zip">Processing pour Windows sans Java</a>
+        
+        <p>Une fois téléchargé, il vous suffit de le dézipper, et d'affecter tous les types de fichiers .pde à l'exécutable Processing fourni dans l'archive.</p>
+        
+        <p>Si ce n'est pas déjà fait, il peut être utile de spécifier dans le path Windows l'emplacement du répertoire où vous avez extrait l'archive.</p>
+        
+        <hr />
+        
+        <ol type="I" start="2">
+            <a name="#II"><li>Structure d'un sketch</li></a>
+        </ol>
+        
+        <p>Un sketch est représenté par un dossier, contenant plusieurs choses :
+            <ul>
+                <li>Un ou plusieurs fichiers d'extension .pde (Qui contiennent le code Processing). Le .pde principal doit avoir le même nom que le dossier qui les contient.</li>
+                <li>Un dossier code, contenant les libraries appelées dans les fichiers .pde.</li>
+            </ul>
+            Si le sketch a été exporté en application, le dossier principal contient également jusqu'à trois dossiers, qui sont :
+            <ul>
+                <li>application.linux (si l'option Linux a été cochée durant l'export).</li>
+                <li>application.macosx (si l'option Mac OS X a été cochée durant l'export).</li>
+                <li>application.windows (si l'option Windows a été cochée durant l'export).</li>
+            </ul>
+            Ceux-ci contiennent les applications compilées du code source des fichiers .pde.<br />
+            Il est également possible d'exporter un applet. On obtiendra donc :
+            <ul>
+                <li>applet (si l'option Linux a été cochée durant l'export).</li>
+            </ul>
+        </p>
+        
+        <p>Concernant le projet TraKERS, les sketches fournis peuvent contenir différents fichiers .pde (un pour chaque classe), un fichier TuioFunctions.pde permettant de récupérer les objets TUIO envoyés par le Middleware et un fichier principal du même nom que le sketch.</p>
+        
+        <hr />
+        
+        <ol type="I" start="3">
+            <a name="#III"><li>Fonctions principales de Processing</li></a>
+        </ol>
+        
+        <p>En Processing, les variables déclarées absolues (en dehors d'une fonction ou d'une classe) sont visibles dans tous les autres fichiers .pde du sketch. Il en va de même pour les classes et fonctions (et non méthodes de classe, qui est une fonction appartenant à la classe et donc ne pouvant être appelée qu'en créant un objet de cette classe).</p>
+        <p>Il existe deux fonctions principales, qui sont :
+            <ul>
+                <li>void setup() : Initialise les différentes variables du sketch.</li>
+                <li>void draw() : Fonction rappelée automatiquement, destinée à contenir des instructions de dessin ou des appels de fonctions.</li>
+            </ul>
+            La gestion des événements souris est naturelle, comme l'indique l'exemple ci-dessous:<br /><br />
+        
+            <code>
+                public void setup()<br />
+                {<br />
+                &nbsp;&nbsp;size(200,200);<br />
+                &nbsp;&nbsp;background(0);<br />
+                }<br />
+                <br />
+                public void draw()<br />
+                {<br />
+                &nbsp;&nbsp;stroke(255);<br />
+                &nbsp;&nbsp;if(mousePressed)<br />
+                &nbsp;&nbsp;{<br />
+                &nbsp;&nbsp;&nbsp;&nbsp;line(mouseX,mouseY,pmouseX,pmouseY);<br />
+                &nbsp;&nbsp;}<br />
+                }<br />
+            </code>
+            <br />
+        </p>
+        
+        <hr />
+        
+        <ol type="I" start="4">
+            <a name="#IV"><li>Récupérer les objets envoyés par le Middleware TraKERS via un Client TUIO</li></a>
+        </ol>
+        
+        <p>Les objets TUIO exploités dans le cadre de TraKERS sont de deux types :
+        <ul>
+            <li>TuioCursor : Les curseurs sont utilisés pour transmettre des points au Front Processing. On récupère leurs coordonnées sous forme de TuioPoint, qui possèdent comme attributs les valeurs du point en X, Y et Z.</li>
+            <li>TuioString : Elles comportent une String ayant pour valeur la notification du Middleware en cas de détection de gesture par exemple.</li>
+        </ul>
+        </p>
+        
+        <p>Voici les différentes implémentations permettant d'accéder à ces objets via le client.
+        On appelle dans cet exemple plusieurs fonctions si des curseurs on été reçus par le client.<br />
+        Un curseur représente une main dans la zone de recherche des mains présente dans le Middleware.<br /><br />
+            <code>
+                void tuioInput()<br />
+                {<br />
+                &nbsp;&nbsp;Vector tuioCursorList = tuioClient.getTuioCursors();<br />
+                    <br />
+                &nbsp;&nbsp;if(tuioCursorList.size() <= 0)<br />
+                &nbsp;&nbsp;{<br />
+                &nbsp;&nbsp;&nbsp;&nbsp;//Code si on ne reçoit pas de curseurs <=> que aucune main n'est dans la zone de recherche des mains.<br />
+                &nbsp;&nbsp;}<br />
+                    <br />
+                &nbsp;&nbsp;if(tuioCursorList.size() == 1)<br />
+                &nbsp;&nbsp;{<br />
+                &nbsp;&nbsp;&nbsp;&nbsp;//Code si une main est détectée.<br />
+                &nbsp;&nbsp;&nbsp;&nbsp;//Par exemple, on peut faire appel à une fonction qu'on nommera arbitrairement handleOneHand et qui prendra en paramètre le curseur.<br />
+                &nbsp;&nbsp;&nbsp;&nbsp;handleOneHand(tuioCursorList.elementAt(0));<br />
+                &nbsp;&nbsp;}<br />
+                &nbsp;&nbsp;else if(tuioCursorList.size() == 2)<br />
+                &nbsp;&nbsp;{<br />
+                &nbsp;&nbsp;&nbsp;&nbsp;//Code si les deux mains sont détectées.<br />
+                &nbsp;&nbsp;&nbsp;&nbsp;//Par exemple, on peut faire appel à une fonction qu'on nommera arbitrairement handleBothHands et qui prendra en paramètre la liste des curseurs récupérés par le client.<br />
+                &nbsp;&nbsp;&nbsp;&nbsp;handleBothHands(tuioCursorList);<br />
+                &nbsp;&nbsp;}<br />
+                }<br />
+            </code>
+            Le code suivant montre comment on peut extraire le point contenu dans le curseur.<br />
+            <code>
+                void handleOneHand(TuioCursor handCursor)<br />
+                {<br />
+                &nbsp;&nbsp;TuioPoint pt = handCursor.getPosition();//(TuioPoint)pointList.get(j);<br />
+                &nbsp;&nbsp;//Code manipulant le point.<br />
+                &nbsp;&nbsp;//Par exemple un affichage de texte.<br />
+                &nbsp;&nbsp;text(pt.getX() + " " + pt.getY() + " " + pt.getZ());<br />
+                }<br />
+            </code>
+            Le code suivant montre comment on peut extraire les points contenus dans une liste de deux curseurs.<br />
+            <code>
+                void handleBothHands(Vector tuioCursorList)<br />
+                {<br />
+                &nbsp;&nbsp;TuioCursor handLeftCursor = (TuioCursor)tuioCursorList.elementAt(0);<br />
+                &nbsp;&nbsp;TuioCursor handRightCursor = (TuioCursor)tuioCursorList.elementAt(1);<br />
+                &nbsp;&nbsp;TuioPoint pt;<br />
+                    <br />
+                &nbsp;&nbsp;pt = (TuioPoint)handLeftCursor.getPosition();<br />
+                &nbsp;&nbsp;//Code pour traiter la position de la première main.<br />
+                &nbsp;&nbsp;//Par exemple un affichage de texte.<br />
+                &nbsp;&nbsp;text(pt.getX() + " " + pt.getY() + " " + pt.getZ());<br />
+                &nbsp;&nbsp;pt = (TuioPoint)handRightCursor.getPosition();<br />
+                &nbsp;&nbsp;//Code pour traiter la position de la seconde main.<br />
+                &nbsp;&nbsp;//Par exemple un affichage de texte.<br />
+                &nbsp;&nbsp;text(pt.getX() + " " + pt.getY() + " " + pt.getZ());<br />
+                }<br />
+            </code>
+        </p>
+        
+        <p>On appelle dans cet exemple une fonction si un message a été reçu par le client.<br />
+        Un message représente un événement notifié par le Middleware.<br /><br />
+        <code>
+            void tuioInput()<br />
+            {<br />
+            &nbsp;&nbsp;Vector tuioStringList = tuioClient.getTuioStrings();<br />
+            &nbsp;&nbsp;if(tuioStringList.size() <= 0)<br />
+            &nbsp;&nbsp;{<br />
+            &nbsp;&nbsp;&nbsp;&nbsp;text("Gesture non détectée.");<br />
+            &nbsp;&nbsp;}<br />
+            &nbsp;&nbsp;else<br />
+            &nbsp;&nbsp;{<br />
+            &nbsp;&nbsp;&nbsp;&nbsp;TuioString message = (TuioString)tuioStringList.elementAt(0);<br />
+            &nbsp;&nbsp;&nbsp;&nbsp;text(message.getMessage());<br />
+            &nbsp;&nbsp;}<br />
+            }<br />
+            </code>
+        </p>
+        
+        <hr />
+        
+        <ol type="I" start="5">
+            <a name="#V"><li>Interactions entre les objets TUIO récupérés et des fonctions de dessin basiques</li></a>
+        </ol>
+        
+        <p>Dans les exemples de code vu précédemment, nous aurions pu remplacer la fonction text() par une fonction de votre cru, comme celle-ci :<br /><br />
+        <code>
+            //Cette fonction dessine une ellipse à la position (x;y;z) et prend en paramètre la fait qu'il s'agisse de la main droite ou gauche.<br />
+            void drawEllipse(float x, float y, float z, boolean leftHand)<br />
+            {<br />
+            &nbsp;&nbsp;//On met la couleur de ce qui va venir en bleu.<br />
+            &nbsp;&nbsp;fill(0, 0, 255);<br />
+            &nbsp;&nbsp;//On ne met pas de bordure à ce qu'on va afficher.<br />
+            &nbsp;&nbsp;stroke(0,0,0);<br />
+            &nbsp;&nbsp;//On créer un point, une épaisseur de forme.<br />
+            &nbsp;&nbsp;//Z est la distance de la main par rapport à Kinect. La zone de recherche des mains est toujours comprise entre minDistHands et maxDistHands<br />
+            &nbsp;&nbsp;float weight = map(z, minDistHands, maxDistHands, 50, 1);<br />
+            &nbsp;&nbsp;float redColor = map(z, minDistHands, maxDistHands, 255, 80);<br />
+            &nbsp;&nbsp;<br />
+            &nbsp;&nbsp;//S'il s'agit de la main gauche, on colore en tons de rouge.<br />
+            &nbsp;&nbsp;if(leftHand)<br />
+            &nbsp;&nbsp;&nbsp;&nbsp;fill(redColor,0,0);<br />
+            &nbsp;&nbsp;//Sinon en tons de vert.<br />
+            &nbsp;&nbsp;else<br />
+            &nbsp;&nbsp;&nbsp;&nbsp;fill(0,redColor,0);<br />
+            &nbsp;&nbsp;<br />
+            &nbsp;&nbsp;//Si le trait est assez gros, on color en tons de bleu.<br />
+            &nbsp;&nbsp;if(weight >= 30)<br />
+            &nbsp;&nbsp;{<br />
+            &nbsp;&nbsp;&nbsp;&nbsp;fill(0, 0, redColor);<br />
+            &nbsp;&nbsp;}<br />
+            &nbsp;&nbsp;<br />
+            &nbsp;&nbsp;//On dessine une ellipse.<br />
+            &nbsp;&nbsp;ellipse(x+20, y+100, weight, weight);<br />
+            }<br />
+        </code>
+        </p>
+        
+        <hr />
+        
+        <ol type="I" start="6">
+            <a name="#VI"><li>Quelques exemples d'implémentation</li></a>
+        </ol>
+        
+        <p>Les exemples fournis dans l'installeur sont répartis dans 4 dossiers principaux :
+            <ul>
+                <li>Trakers : Permet d'afficher des ellipses sur le passage d'une ou deux mains se situant à une certaine distance de Kinect.</li>
+                <li>Trakers_gestures : Permet d'afficher le code des gestures détectées par Kinect et notifiées depuis le Middleware.</li>
+                <li>Fluid_manipulation (code importé de processing.org) : Simule l'action des mains sur un fluide.</li>
+                <li>Smoke_manipulation (code importé de processing.org) : Simule l'action des mains sur de la fumée.</li>
+                <li>Interaction examples (code importé de processing.org) : Quelques petits exemples utilisant des formes basiques et réagissant à la position de la main la plus proche de Kinect.</li>
+            </ul>
+        </p>
+        
+        <hr />
+        
+        <ol type="I" start="7">
+            <a name="#VII"><li>Références</li></a>
+        </ol>
+        
+        <p>Voici quelques liens utiles où se trouvent les dépendances trop lourdes pour être incluses dans cet installeur. Ils vont permettront également d'approfondissant vos connaissances sur Processing ou TUIO.
+        Il vous est possible d'utiliser eclipse pour compiler du Processing.
+            <ul>
+                <li><a href="http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx">SDK Kinect 1.5 de Microsoft</a></li>
+                <li><a href="http://www.tuio.org/">TUIO</a></li>
+                <li><a href="http://processing.org/">Processing.org</a></li>
+                <li><a href="http://bodytag.org/">Autres exemples en Processing</a></li>
+                <li><a href="http://processing.org/learning/eclipse/">Processing sous eclipse</a></li>
+            </ul>
+        </p>
+        
+        <p>Si vous expérimentez des difficultés ou souhaitez nous soumettre une requête, veuillez consulter le fichier contact.txt à la racine du projet.</p>
+    </body>
+</html>
\ No newline at end of file
--- a/front_processing/doc/tutorial_front_processing.html	Fri Jul 13 14:57:43 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,262 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="has_sidebar fixed-header earthrise">
-    <head>
-        <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
-        <meta name="description" content="Tutoriel sur le développement et l'utilisation de code Processing utilisant le Middleware TraKERS."/>
-        <meta name="keywords" content="TraKERS, TraKERS Processing, TraKERS Front Processing, TraKERS Front, Kinect Processing"/>
-        <title>TraKERS - Tutorial Processing</title>
-    </head>
-    
-    <body>
-        <p>TraKERS (Tracking using Kinect and Extracting Robust Skeletons) est une interface basée sur la détection de gestures / positions du squelette envoyé par le SDK Microsoft (1.5) de Kinect. Il est composé d'un Middleware assurant l'interaction avec Kinect, un rendu visuel et l'envoi de notifications sous forme de messages OSC.
-        Le deuxième module de ce projet est un Front en Processing doté d'un client TUIO et récupérant les messages OSC (sous forme d'objets tels que des Curseurs ou des Strings).</p>
-        
-        <p>Ce tutoriel concerne ce second module et a pour but d'expliquer le fonctionnement général d'un sketch Processing et la récupération des notifications du Middleware. Il sera agrémenté d'exemples fonctionnels créés pour les besoins de ce tutoriel ou inspirés d'exemples réels disponibles sur le site processing.org.</p>
-        
-        <ol type="I">
-            <a href="#I"><li>Installation de Processing</li></a>
-            <a href="#II"><li>Structure d'un sketch</li></a>
-            <a href="#III"><li>Fonctions principales de Processing</li></a>
-            <a href="#IV"><li>Récupérer les objets envoyés par le Middleware TraKERS via un Client TUIO</li></a>
-            <a href="#V"><li>Interactions entre les objets TUIO récupérés et des fonctions de dessin basiques</li></a>
-            <a href="#VI"><li>Quelques exemples d'implémentation</li></a>
-            <a href="#VII"><li>Références</li></a>
-        </ol>
-        
-        <hr />
-        
-        <ol type="I" start="1">
-            <a name="I"><li>Installation de Processing</li></a>
-        </ol>
-        
-        <p>Avant de pouvoir modifier les sketches Processing fournis dans l'installateur, il est nécessaire d'installer Processing.<br />
-        Vous trouverez l'archive ici :</p>
-        
-        <a href="http://processing.googlecode.com/files/processing-1.5.1-windows.zip">Processing pour Windows avec Java</a><br />
-        <a href="http://processing.googlecode.com/files/processing-1.5.1-windows-expert.zip">Processing pour Windows sans Java</a>
-        
-        <p>Une fois téléchargé, il vous suffit de le dézipper, et d'affecter tous les types de fichiers .pde à l'exécutable Processing fourni dans l'archive.</p>
-        
-        <p>Si ce n'est pas déjà fait, il peut être utile de spécifier dans le path Windows l'emplacement du répertoire où vous avez extrait l'archive.</p>
-        
-        <hr />
-        
-        <ol type="I" start="2">
-            <a name="#II"><li>Structure d'un sketch</li></a>
-        </ol>
-        
-        <p>Un sketch est représenté par un dossier, contenant plusieurs choses :
-            <ul>
-                <li>Un ou plusieurs fichiers d'extension .pde (Qui contiennent le code Processing). Le .pde principal doit avoir le même nom que le dossier qui les contient.</li>
-                <li>Un dossier code, contenant les libraries appelées dans les fichiers .pde.</li>
-            </ul>
-            Si le sketch a été exporté en application, le dossier principal contient également jusqu'à trois dossiers, qui sont :
-            <ul>
-                <li>application.linux (si l'option Linux a été cochée durant l'export).</li>
-                <li>application.macosx (si l'option Mac OS X a été cochée durant l'export).</li>
-                <li>application.windows (si l'option Windows a été cochée durant l'export).</li>
-            </ul>
-            Ceux-ci contiennent les applications compilées du code source des fichiers .pde.<br />
-            Il est également possible d'exporter un applet. On obtiendra donc :
-            <ul>
-                <li>applet (si l'option Linux a été cochée durant l'export).</li>
-            </ul>
-        </p>
-        
-        <p>Concernant le projet TraKERS, les sketches fournis peuvent contenir différents fichiers .pde (un pour chaque classe), un fichier TuioFunctions.pde permettant de récupérer les objets TUIO envoyés par le Middleware et un fichier principal du même nom que le sketch.</p>
-        
-        <hr />
-        
-        <ol type="I" start="3">
-            <a name="#III"><li>Fonctions principales de Processing</li></a>
-        </ol>
-        
-        <p>En Processing, les variables déclarées absolues (en dehors d'une fonction ou d'une classe) sont visibles dans tous les autres fichiers .pde du sketch. Il en va de même pour les classes et fonctions (et non méthodes de classe, qui est une fonction appartenant à la classe et donc ne pouvant être appelée qu'en créant un objet de cette classe).</p>
-        <p>Il existe deux fonctions principales, qui sont :
-            <ul>
-                <li>void setup() : Initialise les différentes variables du sketch.</li>
-                <li>void draw() : Fonction rappelée automatiquement, destinée à contenir des instructions de dessin ou des appels de fonctions.</li>
-            </ul>
-            La gestion des événements souris est naturelle, comme l'indique l'exemple ci-dessous:<br /><br />
-        
-            <code>
-                public void setup()<br />
-                {<br />
-                &nbsp;&nbsp;size(200,200);<br />
-                &nbsp;&nbsp;background(0);<br />
-                }<br />
-                <br />
-                public void draw()<br />
-                {<br />
-                &nbsp;&nbsp;stroke(255);<br />
-                &nbsp;&nbsp;if(mousePressed)<br />
-                &nbsp;&nbsp;{<br />
-                &nbsp;&nbsp;&nbsp;&nbsp;line(mouseX,mouseY,pmouseX,pmouseY);<br />
-                &nbsp;&nbsp;}<br />
-                }<br />
-            </code>
-            <br />
-        </p>
-        
-        <hr />
-        
-        <ol type="I" start="4">
-            <a name="#IV"><li>Récupérer les objets envoyés par le Middleware TraKERS via un Client TUIO</li></a>
-        </ol>
-        
-        <p>Les objets TUIO exploités dans le cadre de TraKERS sont de deux types :
-        <ul>
-            <li>TuioCursor : Les curseurs sont utilisés pour transmettre des points au Front Processing. On récupère leurs coordonnées sous forme de TuioPoint, qui possèdent comme attributs les valeurs du point en X, Y et Z.</li>
-            <li>TuioString : Elles comportent une String ayant pour valeur la notification du Middleware en cas de détection de gesture par exemple.</li>
-        </ul>
-        </p>
-        
-        <p>Voici les différentes implémentations permettant d'accéder à ces objets via le client.
-        On appelle dans cet exemple plusieurs fonctions si des curseurs on été reçus par le client.<br />
-        Un curseur représente une main dans la zone de recherche des mains présente dans le Middleware.<br /><br />
-            <code>
-                void tuioInput()<br />
-                {<br />
-                &nbsp;&nbsp;Vector tuioCursorList = tuioClient.getTuioCursors();<br />
-                    <br />
-                &nbsp;&nbsp;if(tuioCursorList.size() <= 0)<br />
-                &nbsp;&nbsp;{<br />
-                &nbsp;&nbsp;&nbsp;&nbsp;//Code si on ne reçoit pas de curseurs <=> que aucune main n'est dans la zone de recherche des mains.<br />
-                &nbsp;&nbsp;}<br />
-                    <br />
-                &nbsp;&nbsp;if(tuioCursorList.size() == 1)<br />
-                &nbsp;&nbsp;{<br />
-                &nbsp;&nbsp;&nbsp;&nbsp;//Code si une main est détectée.<br />
-                &nbsp;&nbsp;&nbsp;&nbsp;//Par exemple, on peut faire appel à une fonction qu'on nommera arbitrairement handleOneHand et qui prendra en paramètre le curseur.<br />
-                &nbsp;&nbsp;&nbsp;&nbsp;handleOneHand(tuioCursorList.elementAt(0));<br />
-                &nbsp;&nbsp;}<br />
-                &nbsp;&nbsp;else if(tuioCursorList.size() == 2)<br />
-                &nbsp;&nbsp;{<br />
-                &nbsp;&nbsp;&nbsp;&nbsp;//Code si les deux mains sont détectées.<br />
-                &nbsp;&nbsp;&nbsp;&nbsp;//Par exemple, on peut faire appel à une fonction qu'on nommera arbitrairement handleBothHands et qui prendra en paramètre la liste des curseurs récupérés par le client.<br />
-                &nbsp;&nbsp;&nbsp;&nbsp;handleBothHands(tuioCursorList);<br />
-                &nbsp;&nbsp;}<br />
-                }<br />
-            </code>
-            Le code suivant montre comment on peut extraire le point contenu dans le curseur.<br />
-            <code>
-                void handleOneHand(TuioCursor handCursor)<br />
-                {<br />
-                &nbsp;&nbsp;TuioPoint pt = handCursor.getPosition();//(TuioPoint)pointList.get(j);<br />
-                &nbsp;&nbsp;//Code manipulant le point.<br />
-                &nbsp;&nbsp;//Par exemple un affichage de texte.<br />
-                &nbsp;&nbsp;text(pt.getX() + " " + pt.getY() + " " + pt.getZ());<br />
-                }<br />
-            </code>
-            Le code suivant montre comment on peut extraire les points contenus dans une liste de deux curseurs.<br />
-            <code>
-                void handleBothHands(Vector tuioCursorList)<br />
-                {<br />
-                &nbsp;&nbsp;TuioCursor handLeftCursor = (TuioCursor)tuioCursorList.elementAt(0);<br />
-                &nbsp;&nbsp;TuioCursor handRightCursor = (TuioCursor)tuioCursorList.elementAt(1);<br />
-                &nbsp;&nbsp;TuioPoint pt;<br />
-                    <br />
-                &nbsp;&nbsp;pt = (TuioPoint)handLeftCursor.getPosition();<br />
-                &nbsp;&nbsp;//Code pour traiter la position de la première main.<br />
-                &nbsp;&nbsp;//Par exemple un affichage de texte.<br />
-                &nbsp;&nbsp;text(pt.getX() + " " + pt.getY() + " " + pt.getZ());<br />
-                &nbsp;&nbsp;pt = (TuioPoint)handRightCursor.getPosition();<br />
-                &nbsp;&nbsp;//Code pour traiter la position de la seconde main.<br />
-                &nbsp;&nbsp;//Par exemple un affichage de texte.<br />
-                &nbsp;&nbsp;text(pt.getX() + " " + pt.getY() + " " + pt.getZ());<br />
-                }<br />
-            </code>
-        </p>
-        
-        <p>On appelle dans cet exemple une fonction si un message a été reçu par le client.<br />
-        Un message représente un événement notifié par le Middleware.<br /><br />
-        <code>
-            void tuioInput()<br />
-            {<br />
-            &nbsp;&nbsp;Vector tuioStringList = tuioClient.getTuioStrings();<br />
-            &nbsp;&nbsp;if(tuioStringList.size() <= 0)<br />
-            &nbsp;&nbsp;{<br />
-            &nbsp;&nbsp;&nbsp;&nbsp;text("Gesture non détectée.");<br />
-            &nbsp;&nbsp;}<br />
-            &nbsp;&nbsp;else<br />
-            &nbsp;&nbsp;{<br />
-            &nbsp;&nbsp;&nbsp;&nbsp;TuioString message = (TuioString)tuioStringList.elementAt(0);<br />
-            &nbsp;&nbsp;&nbsp;&nbsp;text(message.getMessage());<br />
-            &nbsp;&nbsp;}<br />
-            }<br />
-            </code>
-        </p>
-        
-        <hr />
-        
-        <ol type="I" start="5">
-            <a name="#V"><li>Interactions entre les objets TUIO récupérés et des fonctions de dessin basiques</li></a>
-        </ol>
-        
-        <p>Dans les exemples de code vu précédemment, nous aurions pu remplacer la fonction text() par une fonction de votre cru, comme celle-ci :<br /><br />
-        <code>
-            //Cette fonction dessine une ellipse à la position (x;y;z) et prend en paramètre la fait qu'il s'agisse de la main droite ou gauche.<br />
-            void drawEllipse(float x, float y, float z, boolean leftHand)<br />
-            {<br />
-            &nbsp;&nbsp;//On met la couleur de ce qui va venir en bleu.<br />
-            &nbsp;&nbsp;fill(0, 0, 255);<br />
-            &nbsp;&nbsp;//On ne met pas de bordure à ce qu'on va afficher.<br />
-            &nbsp;&nbsp;stroke(0,0,0);<br />
-            &nbsp;&nbsp;//On créer un point, une épaisseur de forme.<br />
-            &nbsp;&nbsp;//Z est la distance de la main par rapport à Kinect. La zone de recherche des mains est toujours comprise entre minDistHands et maxDistHands<br />
-            &nbsp;&nbsp;float weight = map(z, minDistHands, maxDistHands, 50, 1);<br />
-            &nbsp;&nbsp;float redColor = map(z, minDistHands, maxDistHands, 255, 80);<br />
-            &nbsp;&nbsp;<br />
-            &nbsp;&nbsp;//S'il s'agit de la main gauche, on colore en tons de rouge.<br />
-            &nbsp;&nbsp;if(leftHand)<br />
-            &nbsp;&nbsp;&nbsp;&nbsp;fill(redColor,0,0);<br />
-            &nbsp;&nbsp;//Sinon en tons de vert.<br />
-            &nbsp;&nbsp;else<br />
-            &nbsp;&nbsp;&nbsp;&nbsp;fill(0,redColor,0);<br />
-            &nbsp;&nbsp;<br />
-            &nbsp;&nbsp;//Si le trait est assez gros, on color en tons de bleu.<br />
-            &nbsp;&nbsp;if(weight >= 30)<br />
-            &nbsp;&nbsp;{<br />
-            &nbsp;&nbsp;&nbsp;&nbsp;fill(0, 0, redColor);<br />
-            &nbsp;&nbsp;}<br />
-            &nbsp;&nbsp;<br />
-            &nbsp;&nbsp;//On dessine une ellipse.<br />
-            &nbsp;&nbsp;ellipse(x+20, y+100, weight, weight);<br />
-            }<br />
-        </code>
-        </p>
-        
-        <hr />
-        
-        <ol type="I" start="6">
-            <a name="#VI"><li>Quelques exemples d'implémentation</li></a>
-        </ol>
-        
-        <p>Les exemples fournis dans l'installeur sont répartis dans 4 dossiers principaux :
-            <ul>
-                <li>Trakers : Permet d'afficher des ellipses sur le passage d'une ou deux mains se situant à une certaine distance de Kinect.</li>
-                <li>Trakers_gestures : Permet d'afficher le code des gestures détectées par Kinect et notifiées depuis le Middleware.</li>
-                <li>Fluid_manipulation (code importé de processing.org) : Simule l'action des mains sur un fluide.</li>
-                <li>Smoke_manipulation (code importé de processing.org) : Simule l'action des mains sur de la fumée.</li>
-                <li>Interaction examples (code importé de processing.org) : Quelques petits exemples utilisant des formes basiques et réagissant à la position de la main la plus proche de Kinect.</li>
-            </ul>
-        </p>
-        
-        <hr />
-        
-        <ol type="I" start="7">
-            <a name="#VII"><li>Références</li></a>
-        </ol>
-        
-        <p>Voici quelques liens utiles où se trouvent les dépendances trop lourdes pour être incluses dans cet installeur. Ils vont permettront également d'approfondissant vos connaissances sur Processing ou TUIO.
-        Il vous est possible d'utiliser eclipse pour compiler du Processing.
-            <ul>
-                <li><a href="http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx">SDK Kinect 1.5 de Microsoft</a></li>
-                <li><a href="http://www.tuio.org/">TUIO</a></li>
-                <li><a href="http://processing.org/">Processing.org</a></li>
-                <li><a href="http://bodytag.org/">Autres exemples en Processing</a></li>
-                <li><a href="http://processing.org/learning/eclipse/">Processing sous eclipse</a></li>
-            </ul>
-        </p>
-    </body>
-</html>
\ No newline at end of file
--- a/middleware/Debug/DebugWindow.xaml	Fri Jul 13 14:57:43 2012 +0200
+++ b/middleware/Debug/DebugWindow.xaml	Mon Jul 16 12:39:47 2012 +0200
@@ -47,12 +47,71 @@
             </Grid.RowDefinitions>
             <Grid Grid.Row="0" Background="LightGray">
                 <!-- Menu de la fenêtre de debug. -->
-                <!--<Menu Grid.Row="0" VerticalAlignment="Top" HorizontalAlignment="Left" Height="20" Width="50" Background="LightGray" Foreground="White">
-                    <MenuItem Header="Fichier" Background="Black">
-                        <MenuItem Name="ParamMenu" Header="Paramètres" Background="White" Foreground="Black" Click="Parameters_Click" />
-                        <MenuItem Name="QuitMenu" Header="Quitter" Background="White" Foreground="Black" />
+                <Menu Grid.Row="0" VerticalAlignment="Top" HorizontalAlignment="Left" Height="20" Background="LightGray" Foreground="White">
+                    <!-- Readme et doc. -->
+                    <MenuItem Name="FileMenu" Header="" Background="Black">
+                        <MenuItem Name="ReadmeMiddlewareMenu" Header="" Background="White" Foreground="Black" Click="MiddlewareReadmeMenu_Click" />
+                        <MenuItem Name="ReadmeFrontProcessingMenu" Header="" Background="White" Foreground="Black" Click="FrontProcessingReadmeMenu_Click" />
+                        <MenuItem Name="DocumentationFrontProcessingMenu" Header="" Background="White" Foreground="Black" Click="FrontProcessingDocumentationMenu_Click" />
+                        <MenuItem Name="ReadmeFrontJSMenu" Header="" Background="White" Foreground="Black" Click="FrontJSReadmeMenu_Click" />
+                        <MenuItem Name="DocumentationFrontJSMenu" Header="" Background="White" Foreground="Black" Click="FrontJSDocumentationMenu_Click" />
+                        <MenuItem Name="QuitMenu" Header="" Background="White" Foreground="Black" Click="QuitMenu_Click" />
+                    </MenuItem>
+                    <!-- Paramètres. -->
+                    <MenuItem Name="ConfigMenu" Header="" Background="Black">
+                        <MenuItem Name="ParamMenu" Header="" Background="White" Foreground="Black" Click="ParamMenu_Click" />
                     </MenuItem>
-                </Menu>-->
+                    <MenuItem Name="ExamplesMenu" Header="" Background="Black">
+                        <!-- Exemples processing. -->
+                        <MenuItem Name="ProcessingMenu" Header="" Background="White" Foreground="Black">
+                            <MenuItem Name="ProcessingMenuFM" Header="" Background="White" Foreground="Black">
+                                <MenuItem Name="ProcessingMenuFMPS" Header="" Background="White" Foreground="Black" Click="ProcessingMenuFMPS_Click" />
+                                <MenuItem Name="ProcessingMenuFMExe" Header="" Background="White" Foreground="Black" Click="ProcessingMenuFMExe_Click" />
+                            </MenuItem>
+                            <MenuItem Name="ProcessingMenuSM" Header="" Background="White" Foreground="Black">
+                                <MenuItem Name="ProcessingMenuSMPS" Header="" Background="White" Foreground="Black" Click="ProcessingMenuSMPS_Click" />
+                                <MenuItem Name="ProcessingMenuSMExe" Header="" Background="White" Foreground="Black" Click="ProcessingMenuSMExe_Click" />
+                            </MenuItem>
+                            <MenuItem Name="ProcessingMenuTG" Header="" Background="White" Foreground="Black">
+                                <MenuItem Name="ProcessingMenuTGPS" Header="" Background="White" Foreground="Black" Click="ProcessingMenuTGPS_Click" />
+                                <MenuItem Name="ProcessingMenuTGExe" Header="" Background="White" Foreground="Black" Click="ProcessingMenuTGExe_Click" />
+                            </MenuItem>
+                            <MenuItem Name="ProcessingMenuT" Header="" Background="White" Foreground="Black">
+                                <MenuItem Name="ProcessingMenuTPS" Header="" Background="White" Foreground="Black" Click="ProcessingMenuTPS_Click" />
+                                <MenuItem Name="ProcessingMenuTExe" Header="" Background="White" Foreground="Black" Click="ProcessingMenuTExe_Click" />
+                            </MenuItem>
+                            <MenuItem Name="ProcessingMenuIE" Header="" Background="White" Foreground="Black">
+                                <MenuItem Name="ProcessingMenuIEHandPress" Header="" Background="White" Foreground="Black">
+                                    <MenuItem Name="ProcessingMenuIEHandPressPS" Header="" Background="White" Foreground="Black" Click="ProcessingMenuIEHandPressPS_Click" />
+                                    <MenuItem Name="ProcessingMenuIEHandPressExe" Header="" Background="White" Foreground="Black" Click="ProcessingMenuIEHandPressExe_Click" />
+                                </MenuItem>
+                                <MenuItem Name="ProcessingMenuIEHandSignal" Header="" Background="White" Foreground="Black">
+                                    <MenuItem Name="ProcessingMenuIEHandSignalPS" Header="" Background="White" Foreground="Black" Click="ProcessingMenuIEHandSignalPS_Click" />
+                                    <MenuItem Name="ProcessingMenuIEHandSignalExe" Header="" Background="White" Foreground="Black" Click="ProcessingMenuIEHandSignalExe_Click" />
+                                </MenuItem>
+                                <MenuItem Name="ProcessingMenuIEHand1D" Header="" Background="White" Foreground="Black">
+                                    <MenuItem Name="ProcessingMenuIEHand1DPS" Header="" Background="White" Foreground="Black" Click="ProcessingMenuIEHand1DPS_Click" />
+                                    <MenuItem Name="ProcessingMenuIEHand1DExe" Header="" Background="White" Foreground="Black" Click="ProcessingMenuIEHand1DExe_Click" />
+                                </MenuItem>
+                                <MenuItem Name="ProcessingMenuIEHand2D" Header="" Background="White" Foreground="Black">
+                                    <MenuItem Name="ProcessingMenuIEHand2DPS" Header="" Background="White" Foreground="Black" Click="ProcessingMenuIEHand2DPS_Click" />
+                                    <MenuItem Name="ProcessingMenuIEHand2DExe" Header="" Background="White" Foreground="Black" Click="ProcessingMenuIEHand2DExe_Click" />
+                                </MenuItem>
+                            </MenuItem>
+                        </MenuItem>
+                        <!-- Exemples web. -->
+                        <MenuItem Name="WebMenu" Header="" Background="White" Foreground="Black">
+                            <MenuItem Name="WebMenuPointers" Header="" Background="White" Foreground="Black">
+                                <MenuItem Name="WebMenuPointersPS" Header="" Background="White" Foreground="Black" Click="WebMenuPointersPS_Click" />
+                                <MenuItem Name="WebMenuPointersExe" Header="" Background="White" Foreground="Black" Click="WebMenuPointersExe_Click" />
+                            </MenuItem>
+                            <MenuItem Name="WebMenuGestures" Header="" Background="White" Foreground="Black">
+                                <MenuItem Name="WebMenuGesturesPS" Header="" Background="White" Foreground="Black" Click="WebMenuGesturesPS_Click" />
+                                <MenuItem Name="WebMenuGesturesExe" Header="" Background="White" Foreground="Black" Click="WebMenuGesturesExe_Click" />
+                            </MenuItem>
+                        </MenuItem>
+                    </MenuItem>
+                </Menu>
             </Grid>
             <Grid Grid.Row="1">
                 <Grid.ColumnDefinitions>
--- a/middleware/Debug/DebugWindow.xaml.cs	Fri Jul 13 14:57:43 2012 +0200
+++ b/middleware/Debug/DebugWindow.xaml.cs	Mon Jul 16 12:39:47 2012 +0200
@@ -97,8 +97,81 @@
                 config.Add("takenPoints", 10);
                 config.Add("directionChangeTresholdXY", 10);
                 config.Add("directionChangeTresholdZ", 0.01f);
+                //Chemins des readme et doc.
+                config.Add("readmeMiddleware", "..\\readme - Middleware.txt");
+                config.Add("readmeFrontProcessing", "..\\readme - Front Processing.txt");
+                config.Add("docFrontProcessing", "..\\tutorial front processing.html");
+                config.Add("readmeFrontJS", "..\\readme - Front Web.txt");
+                config.Add("docFrontJS", "..\\tutorial front js et wamp.html");
+                //Chemins des exemples processing.
+                config.Add("exPFMPS", "..\\Front Processing\\src\\Fluid_manipulation\\Fluid_manipulation.pde");
+                config.Add("exPFMExe", "..\\Front Processing\\src\\Fluid_manipulation\\application.windows\\Fluid_manipulation.exe");
+                config.Add("exPSMPS", "..\\Front Processing\\src\\Smoke_manipulation\\Smoke_manipulation.pde");
+                config.Add("exPSMExe", "..\\Front Processing\\src\\Smoke_manipulation\\application.windows\\Smoke_manipulation.exe");
+                config.Add("exPTPS", "..\\Front Processing\\src\\Trakers\\Trakers.pde");
+                config.Add("exPTExe", "..\\Front Processing\\src\\Trakers\\application.windows\\Trakers.exe");
+                config.Add("exPTGPS", "..\\Front Processing\\src\\Trakers_gestures\\Trakers_gestures.pde");
+                config.Add("exPTGExe", "..\\Front Processing\\src\\Trakers_gestures\\application.windows\\Trakers_gestures.exe");
+                config.Add("exPIEHand1DPS", "..\\Front Processing\\src\\Interaction_examples\\Hands_1D\\Hands_1D.pde");
+                config.Add("exPIEHand1DExe", "..\\Front Processing\\src\\Interaction_examples\\Hands_1D\\application.windows\\Hands_1D.exe");
+                config.Add("exPIEHand2DPS", "..\\Front Processing\\src\\Interaction_examples\\Hands_2D\\Hands_2D.pde");
+                config.Add("exPIEHand2DExe", "..\\Front Processing\\src\\Interaction_examples\\Hands_2D\\application.windows\\Hands_2D.exe");
+                config.Add("exPIEHandPressPS", "..\\Front Processing\\src\\Interaction_examples\\Hand_press\\Hand_press.pde");
+                config.Add("exPIEHandPressExe", "..\\Front Processing\\src\\Interaction_examples\\Hand_press\\application.windows\\Hand_press.exe");
+                config.Add("exPIEHandSignalPS", "..\\Front Processing\\src\\Interaction_examples\\Hand_signal\\Hand_signal.pde");
+                config.Add("exPIEHandSignalExe", "..\\Front Processing\\src\\Interaction_examples\\Hand_signal\\application.windows\\Hand_signal.exe");
+                //Chemins des exemples web.
+                config.Add("exWPointersPS", "C:\\wamp\\www\\Front JS\\pointers\\");
+                config.Add("exWPointersExe", "http://localhost/Front%20JS/pointers/");
+                config.Add("exWGesturesPS", "C:\\wamp\\www\\Front JS\\pointers\\");
+                config.Add("exWGesturesExe", "http://localhost/Front%20JS/gestures/");
             }
 
+            //On donne les noms des éléments du menu.
+            FileMenu.Header = rm.GetString("menuFile");
+            ReadmeMiddlewareMenu.Header = rm.GetString("menuReadmeMiddleware");
+            ReadmeFrontProcessingMenu.Header = rm.GetString("menuReadmeFrontProcessing");
+            DocumentationFrontProcessingMenu.Header = rm.GetString("menuDocFrontP");
+            ReadmeFrontJSMenu.Header = rm.GetString("menuReadmeFrontJS");
+            DocumentationFrontJSMenu.Header = rm.GetString("menuDocFrontJS");
+            QuitMenu.Header = rm.GetString("menuQuit");
+            ConfigMenu.Header = rm.GetString("menuConfig");
+            ParamMenu.Header = rm.GetString("menuParam");
+            ExamplesMenu.Header = rm.GetString("menuEx");
+            ProcessingMenu.Header = rm.GetString("menuExP");
+            ProcessingMenuFM.Header = rm.GetString("menuExPFluid");
+            ProcessingMenuFMPS.Header = rm.GetString("menuExSource");
+            ProcessingMenuFMExe.Header = rm.GetString("menuExExe");
+            ProcessingMenuSM.Header = rm.GetString("menuExPSmoke");
+            ProcessingMenuSMPS.Header = rm.GetString("menuExSource");
+            ProcessingMenuSMExe.Header = rm.GetString("menuExExe");
+            ProcessingMenuIE.Header = rm.GetString("menuExPIE");
+            ProcessingMenuIEHand1D.Header = rm.GetString("menuExPIEHand1D");
+            ProcessingMenuIEHand1DPS.Header = rm.GetString("menuExSource");
+            ProcessingMenuIEHand1DExe.Header = rm.GetString("menuExExe");
+            ProcessingMenuIEHand2D.Header = rm.GetString("menuExPIEHand2D");
+            ProcessingMenuIEHand2DPS.Header = rm.GetString("menuExSource");
+            ProcessingMenuIEHand2DExe.Header = rm.GetString("menuExExe");
+            ProcessingMenuIEHandPress.Header = rm.GetString("menuExPIEHandPress");
+            ProcessingMenuIEHandPressPS.Header = rm.GetString("menuExSource");
+            ProcessingMenuIEHandPressExe.Header = rm.GetString("menuExExe");
+            ProcessingMenuIEHandSignal.Header = rm.GetString("menuExPIEHandSignal");
+            ProcessingMenuIEHandSignalPS.Header = rm.GetString("menuExSource");
+            ProcessingMenuIEHandSignalExe.Header = rm.GetString("menuExExe");
+            ProcessingMenuT.Header = rm.GetString("menuExPT");
+            ProcessingMenuTPS.Header = rm.GetString("menuExSource");
+            ProcessingMenuTExe.Header = rm.GetString("menuExExe");
+            ProcessingMenuTG.Header = rm.GetString("menuExPTG");
+            ProcessingMenuTGPS.Header = rm.GetString("menuExSource");
+            ProcessingMenuTGExe.Header = rm.GetString("menuExExe");
+            WebMenu.Header = rm.GetString("menuExW");
+            WebMenuPointers.Header = rm.GetString("menuExWPointers");
+            WebMenuPointersPS.Header = rm.GetString("menuExSource");
+            WebMenuPointersExe.Header = rm.GetString("menuExExe");
+            WebMenuGestures.Header = rm.GetString("menuExWGestures");
+            WebMenuGesturesPS.Header = rm.GetString("menuExSource");
+            WebMenuGesturesExe.Header = rm.GetString("menuExExe");
+
             //kinectMain = main;
             on = true;
             closing = false;
@@ -158,6 +231,15 @@
         }
 
         /*
+         * Est appelé lors de la fermeture du Middleware par le menu.
+         */
+        private void QuitMenu_Click(object sender, RoutedEventArgs e)
+        {
+            closing = true;
+            Application.Current.Shutdown();
+        }
+
+        /*
         * Est appelée à la fermeture de la fenêtre.
         */
         public void Window_Closed(object sender, EventArgs e)
@@ -697,7 +779,11 @@
                 {
                     //On récupère la clé et la valeur.
                     String key = lines[i].Split(':')[0];
-                    String value = lines[i].Split(':')[1];
+                    int keyLength = key.Length;
+                    String value = lines[i].Substring((keyLength + 1), (lines[i].Length - keyLength - 1));
+                    //String value = lines[i].Substring(keyLength, lines[i].Length - keyLength - 1);
+
+                    Console.WriteLine("PARAMS ======= " + key + " " + value);
 
                     //Si c'est un int on le parse.
                     for (int j = 0 ; j < ints.Length ; j++)
@@ -922,6 +1008,11 @@
         {
             return Switch;
         }
+        public MenuItem getQuitMenu()
+        {
+            return QuitMenu;
+        }
+        
         public bool getOn()
         {
             return on;
@@ -1004,5 +1095,238 @@
             else
                 R10.Fill = System.Windows.Media.Brushes.DarkGray;
         }
+
+        /*
+         * Ouvre un fichier selon son chemin.
+         */
+        public void OpenFile(String filePath)
+        {
+            try
+            {
+                System.Diagnostics.Process.Start(@filePath);
+            }
+            catch (Exception)
+            {
+                ExceptionLbl.Content = filePath + " : " + rm.GetString("fileNotFound");
+            }
+        }
+
+        public void OpenFile(String program, String filePath)
+        {
+            try
+            {
+                System.Diagnostics.Process.Start(program, @filePath);
+            }
+            catch (Exception)
+            {
+                ExceptionLbl.Content = filePath + " : " + rm.GetString("fileNotFound");
+            }
+        }
+
+        /*
+         * Ouvre le readme du Middleware.
+         */
+        private void MiddlewareReadmeMenu_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["readmeMiddleware"]);
+        }
+
+        /*
+         * Ouvre le readme du Front Processing.
+         */
+        private void FrontProcessingReadmeMenu_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["readmeFrontProcessing"]);
+        }
+
+        /*
+         * Ouvre la documentation du Front Processing.
+         */
+        private void FrontProcessingDocumentationMenu_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["docFrontProcessing"]);
+        }
+        
+        /*
+         * Ouvre le readme du Front JS.
+         */
+        private void FrontJSReadmeMenu_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["readmeFrontJS"]);
+        }
+
+        /*
+         * Ouvre la documentation du Front JS.
+         */
+        private void FrontJSDocumentationMenu_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["docFrontJS"]);
+        }
+
+        /*
+         * Ouvre le fichier des paramètres.
+         */
+        private void ParamMenu_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile(".\\config.txt");
+        }
+
+        /*
+         * Code de l'exemple processing de manipulation de fluide.
+         */
+        private void ProcessingMenuFMPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPFMPS"]);
+        }
+        
+        //Exemple processing de manipulation de fluide.
+        private void ProcessingMenuFMExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPFMExe"]);
+        }
+
+        /*
+         * Code de l'exemple processing de manipulation de fumée.
+         */
+        private void ProcessingMenuSMPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPSMPS"]);
+        }
+
+        /*
+         * Exemple processing de manipulation de fumée.
+         */
+        private void ProcessingMenuSMExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPSMExe"]);
+        }
+
+        /*
+         * Code de l'exemple processing d'affichage des gestures.
+         */
+        private void ProcessingMenuTGPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPTGPS"]);
+        }
+
+        /*
+         * Exemple processing d'affichage des gestures.
+         */
+        private void ProcessingMenuTGExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPTGExe"]);
+        }
+
+        /*
+         * Code de l'exemple processing d'affichage des pointeurs.
+         */
+        private void ProcessingMenuTPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPTPS"]);
+        }
+
+        /*
+         * Exemple processing d'affichage des pointeurs.
+         */
+        private void ProcessingMenuTExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPTExe"]);
+        }
+
+        /*
+         * Code de l'exemple processing du press de la main.
+         */
+        private void ProcessingMenuIEHandPressPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPIEHandPressPS"]);
+        }
+
+        /*
+         * Exemple processing du press de la main.
+         */
+        private void ProcessingMenuIEHandPressExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPIEHandPressExe"]);
+        }
+
+        /*
+         * Code de l'exemple processing du signal de la main.
+         */
+        private void ProcessingMenuIEHandSignalPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPIEHandSignalPS"]);
+        }
+
+        /*
+         * Exemple processing du signal de la main.
+         */
+        private void ProcessingMenuIEHandSignalExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPIEHandSignalExe"]);
+        }
+
+        /*
+         * Code de l'exemple processing de la manipulation 1D de la main.
+         */
+        private void ProcessingMenuIEHand1DPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPIEHand1DPS"]);
+        }
+
+        /*
+         * Exemple processing de la manipulation 1D de la main.
+         */
+        private void ProcessingMenuIEHand1DExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPIEHand1DExe"]);
+        }
+
+        /*
+         * Code de l'exemple processing de la manipulation 2D de la main.
+         */
+        private void ProcessingMenuIEHand2DPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPIEHand2DPS"]);
+        }
+
+        /*
+         * Exemple processing de la manipulation 2D de la main.
+         */
+        private void ProcessingMenuIEHand2DExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exPIEHand2DExe"]);
+        }
+
+        /*
+         * Code de l'exemple web de l'affichage des pointeurs.
+         */
+        private void WebMenuPointersPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exWPointersPS"]);
+        }
+
+        /*
+         * Exemple web de l'affichage des pointeurs.
+         */
+        private void WebMenuPointersExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exWPointersExe"]);
+        }
+
+        /*
+         * Code de l'exemple web de l'affichage des gestures.
+         */
+        private void WebMenuGesturesPS_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exWGesturesPS"]);
+        }
+
+        /*
+         * Exemple web de l'affichage des gestures.
+         */
+        private void WebMenuGesturesExe_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile((String)config["exWGesturesExe"]);
+        }
     }
 }
--- a/middleware/Debug/Properties/Resources.Designer.cs	Fri Jul 13 14:57:43 2012 +0200
+++ b/middleware/Debug/Properties/Resources.Designer.cs	Mon Jul 16 12:39:47 2012 +0200
@@ -1,7 +1,7 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.261
+//     Runtime Version:4.0.30319.269
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -68,6 +68,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Le fichier n&apos;a pas été trouvé.
+        /// </summary>
+        internal static string fileNotFound {
+            get {
+                return ResourceManager.GetString("fileNotFound", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Kinect non connectée..
         /// </summary>
         internal static string kinectNotConnected {
@@ -104,6 +113,231 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to _Configuration.
+        /// </summary>
+        internal static string menuConfig {
+            get {
+                return ResourceManager.GetString("menuConfig", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Documentation du Front Web.
+        /// </summary>
+        internal static string menuDocFrontJS {
+            get {
+                return ResourceManager.GetString("menuDocFrontJS", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Documentation du Front Processing.
+        /// </summary>
+        internal static string menuDocFrontP {
+            get {
+                return ResourceManager.GetString("menuDocFrontP", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Exemples.
+        /// </summary>
+        internal static string menuEx {
+            get {
+                return ResourceManager.GetString("menuEx", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Exécutable.
+        /// </summary>
+        internal static string menuExExe {
+            get {
+                return ResourceManager.GetString("menuExExe", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Processing.
+        /// </summary>
+        internal static string menuExP {
+            get {
+                return ResourceManager.GetString("menuExP", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Manipulation de fluide.
+        /// </summary>
+        internal static string menuExPFluid {
+            get {
+                return ResourceManager.GetString("menuExPFluid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Interactions à la main.
+        /// </summary>
+        internal static string menuExPIE {
+            get {
+                return ResourceManager.GetString("menuExPIE", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Main en 1D.
+        /// </summary>
+        internal static string menuExPIEHand1D {
+            get {
+                return ResourceManager.GetString("menuExPIEHand1D", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Main en 2D.
+        /// </summary>
+        internal static string menuExPIEHand2D {
+            get {
+                return ResourceManager.GetString("menuExPIEHand2D", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Pression de la main.
+        /// </summary>
+        internal static string menuExPIEHandPress {
+            get {
+                return ResourceManager.GetString("menuExPIEHandPress", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Signal de la main.
+        /// </summary>
+        internal static string menuExPIEHandSignal {
+            get {
+                return ResourceManager.GetString("menuExPIEHandSignal", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Manipulation de fumée.
+        /// </summary>
+        internal static string menuExPSmoke {
+            get {
+                return ResourceManager.GetString("menuExPSmoke", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Affichage des pointeurs.
+        /// </summary>
+        internal static string menuExPT {
+            get {
+                return ResourceManager.GetString("menuExPT", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Affichage des gestures.
+        /// </summary>
+        internal static string menuExPTG {
+            get {
+                return ResourceManager.GetString("menuExPTG", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Source.
+        /// </summary>
+        internal static string menuExSource {
+            get {
+                return ResourceManager.GetString("menuExSource", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Web.
+        /// </summary>
+        internal static string menuExW {
+            get {
+                return ResourceManager.GetString("menuExW", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Affichage des gestures.
+        /// </summary>
+        internal static string menuExWGestures {
+            get {
+                return ResourceManager.GetString("menuExWGestures", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Affichage des pointeurs.
+        /// </summary>
+        internal static string menuExWPointers {
+            get {
+                return ResourceManager.GetString("menuExWPointers", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Fichier.
+        /// </summary>
+        internal static string menuFile {
+            get {
+                return ResourceManager.GetString("menuFile", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Fichier des paramètres.
+        /// </summary>
+        internal static string menuParam {
+            get {
+                return ResourceManager.GetString("menuParam", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Quitter.
+        /// </summary>
+        internal static string menuQuit {
+            get {
+                return ResourceManager.GetString("menuQuit", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Readme du Front Web.
+        /// </summary>
+        internal static string menuReadmeFrontJS {
+            get {
+                return ResourceManager.GetString("menuReadmeFrontJS", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Readme du Front Processing.
+        /// </summary>
+        internal static string menuReadmeFrontProcessing {
+            get {
+                return ResourceManager.GetString("menuReadmeFrontProcessing", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to _Readme du Middleware.
+        /// </summary>
+        internal static string menuReadmeMiddleware {
+            get {
+                return ResourceManager.GetString("menuReadmeMiddleware", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Impossible de démarrer le serveur TUIO (peut-être host ou port invalide ?)..
         /// </summary>
         internal static string serverCantStart {
--- a/middleware/Debug/Properties/Resources.resx	Fri Jul 13 14:57:43 2012 +0200
+++ b/middleware/Debug/Properties/Resources.resx	Mon Jul 16 12:39:47 2012 +0200
@@ -141,4 +141,108 @@
   <data name="_404" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\404.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="menuConfig" xml:space="preserve">
+    <value>_Configuration</value>
+    <comment>Titre du menu de configuration.</comment>
+  </data>
+  <data name="menuDocFrontJS" xml:space="preserve">
+    <value>_Documentation du Front Web</value>
+    <comment>Documentation du Front JS.</comment>
+  </data>
+  <data name="menuDocFrontP" xml:space="preserve">
+    <value>_Documentation du Front Processing</value>
+    <comment>Documentation du Front Processing</comment>
+  </data>
+  <data name="menuEx" xml:space="preserve">
+    <value>_Exemples</value>
+    <comment>Exemples Processing et Web.</comment>
+  </data>
+  <data name="menuExExe" xml:space="preserve">
+    <value>_Exécutable</value>
+    <comment>Application des exemples.</comment>
+  </data>
+  <data name="menuExP" xml:space="preserve">
+    <value>_Processing</value>
+    <comment>Exemples Processing du menu.</comment>
+  </data>
+  <data name="menuExPFluid" xml:space="preserve">
+    <value>_Manipulation de fluide</value>
+    <comment>Exemple Processing des fluides.</comment>
+  </data>
+  <data name="menuExPIE" xml:space="preserve">
+    <value>_Interactions à la main</value>
+    <comment>Exemple Processing des interactions.</comment>
+  </data>
+  <data name="menuExPIEHand1D" xml:space="preserve">
+    <value>_Main en 1D</value>
+    <comment>Exemple Processing de la main en 1D.</comment>
+  </data>
+  <data name="menuExPIEHand2D" xml:space="preserve">
+    <value>_Main en 2D</value>
+    <comment>Exemple Processing de la main en 2D.</comment>
+  </data>
+  <data name="menuExPIEHandPress" xml:space="preserve">
+    <value>_Pression de la main</value>
+    <comment>Exemple Processing de la distance de la main.</comment>
+  </data>
+  <data name="menuExPIEHandSignal" xml:space="preserve">
+    <value>_Signal de la main</value>
+    <comment>Exemple Processing du signal de la position des mains.</comment>
+  </data>
+  <data name="menuExPSmoke" xml:space="preserve">
+    <value>_Manipulation de fumée</value>
+    <comment>Exemple Processing de la fumée.</comment>
+  </data>
+  <data name="menuExPT" xml:space="preserve">
+    <value>_Affichage des pointeurs</value>
+    <comment>Exemple Processing des pointeurs.</comment>
+  </data>
+  <data name="menuExPTG" xml:space="preserve">
+    <value>_Affichage des gestures</value>
+    <comment>Exemple Processing des gestures.</comment>
+  </data>
+  <data name="menuExSource" xml:space="preserve">
+    <value>_Source</value>
+    <comment>Source des exemples.</comment>
+  </data>
+  <data name="menuExW" xml:space="preserve">
+    <value>_Web</value>
+    <comment>Exemples Web du menu.</comment>
+  </data>
+  <data name="menuExWGestures" xml:space="preserve">
+    <value>_Affichage des gestures</value>
+    <comment>Exemple Web des gestures.</comment>
+  </data>
+  <data name="menuExWPointers" xml:space="preserve">
+    <value>_Affichage des pointeurs</value>
+    <comment>Exemple Web des pointeurs.</comment>
+  </data>
+  <data name="menuFile" xml:space="preserve">
+    <value>_Fichier</value>
+    <comment>Menu fichier.</comment>
+  </data>
+  <data name="menuParam" xml:space="preserve">
+    <value>_Fichier des paramètres</value>
+    <comment>Paramètres via le menu.</comment>
+  </data>
+  <data name="menuQuit" xml:space="preserve">
+    <value>_Quitter</value>
+    <comment>Quitter l'application via le menu.</comment>
+  </data>
+  <data name="menuReadmeFrontJS" xml:space="preserve">
+    <value>_Readme du Front Web</value>
+    <comment>Readme du Front JS.</comment>
+  </data>
+  <data name="menuReadmeFrontProcessing" xml:space="preserve">
+    <value>_Readme du Front Processing</value>
+    <comment>Readme du Front Processing.</comment>
+  </data>
+  <data name="menuReadmeMiddleware" xml:space="preserve">
+    <value>_Readme du Middleware</value>
+    <comment>Readme du Middleware.</comment>
+  </data>
+  <data name="fileNotFound" xml:space="preserve">
+    <value>Le fichier n'a pas été trouvé</value>
+    <comment>Cas où un fichier n'est pas trouvé au chemin indiqué.</comment>
+  </data>
 </root>
\ No newline at end of file
--- a/middleware/dist/TraKERS.iss	Fri Jul 13 14:57:43 2012 +0200
+++ b/middleware/dist/TraKERS.iss	Mon Jul 16 12:39:47 2012 +0200
@@ -2,7 +2,7 @@
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 
 #define MyAppName "TraKERS"
-#define MyAppVersion "3.0"
+#define MyAppVersion "3.5"
 #define MyAppPublisher "IRI"
 
 [Setup]
@@ -100,11 +100,11 @@
 Name: "{group}\{#MyAppName}\Hands 1D"; Filename: "{app}\Front Processing\src\Interaction_examples\Hands_1D\application.windows\Hands_1D.exe"
 Name: "{group}\{#MyAppName}\Hands 2D"; Filename: "{app}\Front Processing\src\Interaction_examples\Hands_2D\application.windows\Hands_2D.exe"
 Name: "{commondesktop}\TraKERS - Middleware"; Filename: "{app}\Middleware\MainModule.exe"
-Name: "{commondesktop}\TraKERS - Hand Pointing"; Filename: "{app}\Front Processing\src\Trakers\application.windows\Trakers.exe"
-Name: "{commondesktop}\TraKERS - Gesture Recognition"; Filename: "{app}\Front Processing\src\Trakers_gestures\application.windows\Trakers_gestures.exe"
-Name: "{commondesktop}\TraKERS - Fluid Manipulation"; Filename: "{app}\Front Processing\src\Fluid_manipulation\application.windows\Fluid_manipulation.exe"
-Name: "{commondesktop}\TraKERS - Smoke Manipulation"; Filename: "{app}\Front Processing\src\Smoke_manipulation\application.windows\Smoke_manipulation.exe"
-Name: "{commondesktop}\TraKERS - Hand Press"; Filename: "{app}\Front Processing\src\Interaction_examples\Hand_press\application.windows\Hand_press.exe"
-Name: "{commondesktop}\TraKERS - Hand Signal"; Filename: "{app}\Front Processing\src\Interaction_examples\Hand_signal\application.windows\Hand_signal.exe"
-Name: "{commondesktop}\TraKERS - Hands 1D"; Filename: "{app}\Front Processing\src\Interaction_examples\Hands_1D\application.windows\Hands_1D.exe"
-Name: "{commondesktop}\TraKERS - Hands 2D"; Filename: "{app}\Front Processing\src\Interaction_examples\Hands_2D\application.windows\Hands_2D.exe"
\ No newline at end of file
+;Name: "{commondesktop}\TraKERS - Hand Pointing"; Filename: "{app}\Front Processing\src\Trakers\application.windows\Trakers.exe"
+;Name: "{commondesktop}\TraKERS - Gesture Recognition"; Filename: "{app}\Front Processing\src\Trakers_gestures\application.windows\Trakers_gestures.exe"
+;Name: "{commondesktop}\TraKERS - Fluid Manipulation"; Filename: "{app}\Front Processing\src\Fluid_manipulation\application.windows\Fluid_manipulation.exe"
+;Name: "{commondesktop}\TraKERS - Smoke Manipulation"; Filename: "{app}\Front Processing\src\Smoke_manipulation\application.windows\Smoke_manipulation.exe"
+;Name: "{commondesktop}\TraKERS - Hand Press"; Filename: "{app}\Front Processing\src\Interaction_examples\Hand_press\application.windows\Hand_press.exe"
+;Name: "{commondesktop}\TraKERS - Hand Signal"; Filename: "{app}\Front Processing\src\Interaction_examples\Hand_signal\application.windows\Hand_signal.exe"
+;Name: "{commondesktop}\TraKERS - Hands 1D"; Filename: "{app}\Front Processing\src\Interaction_examples\Hands_1D\application.windows\Hands_1D.exe"
+;Name: "{commondesktop}\TraKERS - Hands 2D"; Filename: "{app}\Front Processing\src\Interaction_examples\Hands_2D\application.windows\Hands_2D.exe"
\ No newline at end of file
--- a/middleware/src/MainModule/KinectMain.cs	Fri Jul 13 14:57:43 2012 +0200
+++ b/middleware/src/MainModule/KinectMain.cs	Mon Jul 16 12:39:47 2012 +0200
@@ -172,6 +172,7 @@
             debug.getSwitch().Click += new RoutedEventHandler(Switch_ClickInKinectMain);
             debug.Loaded += new RoutedEventHandler(Window_LoadedInKinectMain);
             debug.Closed += new EventHandler(Window_CloseInKinectMain);
+            debug.getQuitMenu().Click += new RoutedEventHandler(Window_CloseInKinectMain);
 
             //On affiche la fenêtre de debug.
             try
--- a/middleware/src/bin/Release/config.txt	Fri Jul 13 14:57:43 2012 +0200
+++ b/middleware/src/bin/Release/config.txt	Mon Jul 16 12:39:47 2012 +0200
@@ -12,4 +12,29 @@
 tuioTimerElapsing:1000
 wsConnexionHost:127.0.0.1
 wsConnexionPort:8090
-wsTimerElapsing:1000
\ No newline at end of file
+wsTimerElapsing:1000
+readmeMiddleware:..\readme - Middleware.txt
+readmeFrontProcessing:..\readme - Front Processing.txt
+docFrontProcessing:..\tutorial front processing.html
+readmeFrontJS:..\readme - Front Web.txt
+docFrontJS:..\tutorial front js et wamp.html
+exPFMPS:..\Front Processing\src\Fluid_manipulation\Fluid_manipulation.pde
+exPFMExe:..\Front Processing\src\Fluid_manipulation\application.windows\Fluid_manipulation.exe
+exPSMPS:..\Front Processing\src\Smoke_manipulation\Smoke_manipulation.pde
+exPSMExe:..\Front Processing\src\Smoke_manipulation\application.windows\Smoke_manipulation.exe
+exPTPS:..\Front Processing\src\Trakers\Trakers.pde
+exPTExe:..\Front Processing\src\Trakers\application.windows\Trakers.exe
+exPTGPS:..\Front Processing\src\Trakers_gestures\Trakers_gestures.pde
+exPTGExe:..\Front Processing\src\Trakers_gestures\application.windows\Trakers_gestures.exe
+exPIEHand1DPS:..\Front Processing\src\Interaction_examples\Hands_1D\Hands_1D.pde
+exPIEHand1DExe:..\Front Processing\src\Interaction_examples\Hands_1D\application.windows\Hands_1D.exe
+exPIEHand2DPS:..\Front Processing\src\Interaction_examples\Hands_2D\Hands_2D.pde
+exPIEHand2DExe:..\Front Processing\src\Interaction_examples\Hands_2D\application.windows\Hands_2D.exe
+exPIEHandPressPS:..\Front Processing\src\Interaction_examples\Hand_press\Hand_press.pde
+exPIEHandPressExe:..\Front Processing\src\Interaction_examples\Hand_press\application.windows\Hand_press.exe
+exPIEHandSignalPS:..\Front Processing\src\Interaction_examples\Hand_signal\Hand_signal.pde
+exPIEHandSignalExe:..\Front Processing\src\Interaction_examples\Hand_signal\application.windows\Hand_signal.exe
+exWPointersPS:C:\wamp\www\Front JS\pointers\
+exWPointersExe:http://localhost/Front%20JS/pointers/
+exWGesturesPS:C:\wamp\www\Front JS\pointers\
+exWGesturesExe:http://localhost/Front%20JS/gestures/
\ No newline at end of file
--- a/readme - Front Web.txt	Fri Jul 13 14:57:43 2012 +0200
+++ b/readme - Front Web.txt	Mon Jul 16 12:39:47 2012 +0200
@@ -6,6 +6,8 @@
 
 Dans cette partie, il vous faudra installer WampServer 2, disponible ici : http://www.wampserver.com/en/ et consulter la documentation pour l'installation du Front JS disponible dans Front JS/doc/.
 
+Il est conseillé de télécharger Google Chrome 20 ou supérieur et de le mettre par défaut pour lancer le Front de démonstration Web.
+
 II) TraKERS - Structure :
 
 Dans le Front, se trouvent deux principaux sites web locaux nommés "pointers" et "gestures", respectivement pour l'affichage de pointeurs via les coordonnées des positions des mains récupérées du Middleware et pour l'affichage des gestes détectés. Il aurait été possible de les rassembler en un programme, mais pour des raisons de clarté lors de l'utilisation, j'ai préféré procéder ainsi.
--- a/readme - Middleware.txt	Fri Jul 13 14:57:43 2012 +0200
+++ b/readme - Middleware.txt	Mon Jul 16 12:39:47 2012 +0200
@@ -25,7 +25,7 @@
 
 II) TraKERS - Structure :
 
-TraKERS v3.0 est composé de trois modules, le Middleware (utilisant la Kinect afin de détecter des gestes et de suivre la position des mains et plusieurs Fronts (développés en Processing et en Javascript), permettant de récupérer les messages OSC du Middleware par Client/Server TUIO ainsi que les WebSockets du Middleware par Client/Server WebSocket. Pour plus d'informations sur les Fronts, veuillez consulter la documentation située à la racine sous les noms Front Processing et Front Web.
+TraKERS v3.5 est composé de trois modules, le Middleware (utilisant la Kinect afin de détecter des gestes et de suivre la position des mains et plusieurs Fronts (développés en Processing et en Javascript), permettant de récupérer les messages OSC du Middleware par Client/Server TUIO ainsi que les WebSockets du Middleware par Client/Server WebSocket. Pour plus d'informations sur les Fronts, veuillez consulter la documentation située à la racine sous les noms Front Processing et Front Web.
 
 Afin de permettre au Middleware d'envoyer des messages à un Front sous Processing, un client TUIO a été installé dans le Front et un serveur TUIO dans le Middleware.
 Si on souhaite envoyer des données à une page web, un serveur WebSocket ayant un fonctionnement identique a été intégré.
@@ -82,21 +82,47 @@
 
 Les variables de types float acceptent les valeurs de type N.Mf ou N,M. N étant un entier relatif et M étant un entier naturel.
 
-minDistHands:1,0                    Distance min de la zone de recherche pour les mains.                                        Type float.
-minDist:1,0                            Distance min de la zone de détection globale de l'utilisateur.                                 Type float.
-takenPoints:10                        Nombre de points pris dans une courbe de recherche. (En développement).                        Type entier.
-directionChangeTresholdXY:10        Pixels parcourus avant de segmenter une courbe. (En développement).                            Type entier.
-imagesToShow:20                        Nombre d'images à afficher dans la mosaïque du Front IDILL. (Autre projet).                    Type entier.
-maxDistHands:1,5                    Distance max de la zone de recherche pour les mains.                                        Type float.
-maxDist:3,0                            Distance max de la zone de détection globale de l'utilisateur.                                Type float.
-zeroPoint:1,9                        Distance du point d'interaction maximal.                                                    Type float.
-directionChangeTresholdZ:0,1        Nombre de mètres avant de segmenter une courbe en profondeur. (En développement).            Type float.
-tuioConnexionHost:127.0.0.1            Host du serveur TUIO.                                                                        Type string.
-tuioConnexionPort:8080                Port du serveur TUIO.                                                                        Type entier.
-tuioTimerElapsing:1000                Temps de latence en ms pour l'affichage et l'envoi des notifications de gesture. TUIO.        Type entier.
-wsConnexionHost:127.0.0.1            Host du serveur WebSocket.                                                                    Type string.
-wsConnexionPort:8090                Port du serveur WebSocket.                                                                    Type entier.
-wsTimerElapsing:1000                Temps de latence en ms pour l'affichage et l'envoi des notifications de gesture. WS            Type entier.
+minDistHands:1,0    Distance min de la zone de recherche pour les mains.    Type float.
+minDist:1,0    Distance min de la zone de détection globale de l'utilisateur.    Type float.
+takenPoints:10    Nombre de points pris dans une courbe de recherche. (En développement).    Type entier.
+directionChangeTresholdXY:10    Pixels parcourus avant de segmenter une courbe. (En développement).    Type entier.
+imagesToShow:20    Nombre d'images à afficher dans la mosaïque du Front IDILL. (Autre projet).    Type entier.
+maxDistHands:1,5    Distance max de la zone de recherche pour les mains.    Type float.
+maxDist:3,0    Distance max de la zone de détection globale de l'utilisateur.    Type float.
+zeroPoint:1,9    Distance du point d'interaction maximal.    Type float.
+directionChangeTresholdZ:0,1    Nombre de mètres avant de segmenter une courbe en profondeur. (En développement).    Type float.
+tuioConnexionHost:127.0.0.1    Host du serveur TUIO.    Type string.
+tuioConnexionPort:8080    Port du serveur TUIO.    Type entier.
+tuioTimerElapsing:1000    Temps de latence en ms pour l'affichage et l'envoi des notifications de gesture. TUIO.    Type entier.
+wsConnexionHost:127.0.0.1    Host du serveur WebSocket.    Type string.
+wsConnexionPort:8090    Port du serveur WebSocket.    Type entier.
+wsTimerElapsing:1000    Temps de latence en ms pour l'affichage et l'envoi des notifications de gesture. WebSocket.    Type entier.
+
+readmeMiddleware:..\readme - Middleware.txt    Chemin du readme du Middleware.    Type string.    
+readmeFrontProcessing:..\readme - Front Processing.txt    Chemin du readme du Front Processing. Type string.
+docFrontProcessing:..\tutorial front processing.html    Chemin de la documentation du Front Processing.    Type string.
+readmeFrontJS:..\readme - Front Web.txt    Chemin du readme du Front Web.    Type string.
+docFrontJS:..\tutorial front js et wamp.html    Chemin de la documentation du Front Web.    Type string.
+exPFMPS:..\Front Processing\src\Fluid_fanipulation\Fluid_manipulation.pde    Chemin du code de l'exemple Processing de la manipulation de fluide.    Type string.
+exPFMExe:..\Front Processing\src\Fluid_manipulation\application.windows\Fluid_manipulation.exe    Chemin de l'exemple Processing de la manipulation de fluide.    Type string.
+exPSMPS:..\Front Processing\src\Smoke_manipulation\Smoke_manipulation.pde    Chemin du code de l'exemple Processing de la manipulation de fumée.    Type string.
+exPSMExe:..\Front Processing\src\Smoke_manipulation\application.windows\Smoke_manipulation.exe    Chemin de l'exemple Processing de la manipulation de fumée.
+exPTPS:..\Front Processing\src\Trakers\Trakers.pde    Chemin du code de l'exemple Processing de l'affichage des pointeurs.    Type string.
+exPTExe:..\Front Processing\src\Trakers\application.windows\Trakers.exe    Chemin de l'exemple Processing de l'affichage des pointeurs.    Type string.
+exPTGPS:..\Front Processing\src\Trakers_gestures\Trakers_gestures.pde    Chemin du code de l'exemple Processing de l'affichage des gestures.    Type string.
+exPTGExe:..\Front Processing\src\Trakers_gestures\application.windows\Trakers_gestures.exe    Chemin de l'exemple Processing de l'affichage des gestures.    Type string.
+exPIEHand1DPS:..\Front Processing\src\Interaction_examples\Hands_1D\Hands_1D.pde    Chemin du code de l'exemple Processing de la manipulation 1D de la main.    Type string.
+exPIEHand1DExe:..\Front Processing\src\Interaction_examples\Hands_1D\application.windows\Hands_1D.exe    Chemin de l'exemple Processing de la manipulation 1D de la main.    Type string.
+exPIEHand2DPS:..\Front Processing\src\Interaction_examples\Hands_2D\Hands_2D.pde    Chemin du code de l'exemple Processing de la manipulation 2D de la main.    Type string.
+exPIEHand2DExe:..\Front Processing\src\Interaction_examples\Hands_2D\application.windows\Hands_2D.exe    Chemin de l'exemple Processing de la manipulation 2D de la main.    Type string.
+exPIEHandPressPS:..\Front Processing\src\Interaction_examples\Hand_press\Hand_press.pde    Chemin du code de l'exemple Processing du press de la main.    Type string.
+exPIEHandPressExe:..\Front Processing\src\Interaction_examples\Hand_press\application.windows\Hand_press.exe    Chemin de l'exemple Processing du press de la main.    Type string.
+exPIEHandSignalPS:..\Front Processing\src\Interaction_examples\Hand_signal\Hand_signal.pde    Chemin du code de l'exemple Processing du signal de la main.    Type string.
+exPIEHandSignalExe:..\Front Processing\src\Interaction_examples\Hand_signal\application.windows\Hand_signal.exe    Chemin de l'exemple Processing du signal de la main.    Type string.
+exWPointersPS:C:\wamp\www\Front JS\pointers\    Chemin du code de l'exemple Web de l'affichage des pointeurs.    Type string.
+exWPointersExe:http://localhost/Front%20JS/pointers/    Chemin de l'exemple Web de l'affichage des pointeurs.    Type string.
+exWGesturesPS:C:\wamp\www\Front JS\pointers\    Chemin du code de l'exemple Web de l'affichage des gestures.    Type string.
+exWGesturesExe:http://localhost/Front%20JS/gestures/    Chemin de l'exemple Web de l'affichage des gestures.    Type string.
 
 Voici les règles à respecter lors de l'affectation des valeurs des paramètres :
 
@@ -117,6 +143,13 @@
 15) directionChangeTresholdXY doit être supérieur ou égal à 0.
 16) directionChangeTresholdZ doit être supérieur ou égal à 0.
 
+D) Menu.
+
+Via le menu en haut de la fenêtre de debug du Middleware, il est possible d'accéder aux readme et documentations du Middleware, du Front Processing et du Front Web. Le fichier de configuration est également disponible dans ce menu. Une fois un paramètre modifié, il est nécessaire de redémarrer le Middleware pour que les nouveaux paramètres soient pris en compte.
+Les exemples et leurs code source des deux Fronts sont accessibles dans le menu.
+- Dans le cas où l'on souhaite accéder aux sources d'un exemple processing, il est nécessaire d'avoir installé Processing et d'avoir lié le type de fichier .pde avec ce programme.
+- Dans le cas où l'on souhaite lancer les exemples du Front Web, il est nécessaire de placer les exemples présents dans le dossier Front JS dans le répertoire www du dossier wamp (par défaut C:\wamp\www).
+
 IV) Mention(s) importante(s) pour le debug :
 
 Il semblerait que l'implémentation actuelle de TUIO dans ce projet ne gère pas le multi-client.