middleware/Debug/DebugParameters.xaml.cs
author bastiena
Fri, 06 Apr 2012 11:48:00 +0200
changeset 24 2bdf5d51d434
parent 16 a9ebacd6c089
child 27 6c08d4d7219e
permissions -rw-r--r--
Front IDILL : TuioPoint class header modified in order to manage 3D points TuioContainer class header modified in order to manage 3D points TuioCursor class header modified in order to manage 3D points TuioClient class header modified in order to manage 3D points TuioClient class modified in order to manage 3D points client class header modified in order to manage 3D points client class modified in order to manage 3D points

/*
* This file is part of the TraKERS\Middleware package.
*
* (c) IRI <http://www.iri.centrepompidou.fr/>
*
* For the full copyright and license information, please view the LICENSE_MIDDLEWARE
* file that was distributed with this source code.
*/

/*
 * Projet : TraKERS
 * Module : MIDDLEWARE
 * Sous-Module : Debug
 * Classe : DebugParameters
 * 
 * Auteur : alexandre.bastien@iri.centrepompidou.fr
 * 
 * Fonctionnalités : Code source attaché à la fenêtre de paramétrage du Middleware.
 * Celui-ci permet de charger/sauvegarder les paramètres stockés dans KinectMain.
 */

using System;
using System.Reflection;
using System.Resources;
using System.Windows;
using System.Windows.Controls;

namespace Trakers.Debug
{
    /// <summary>
    /// Interaction logic for DebugParameters.xaml
    /// </summary>
    public partial class DebugParameters : Window
    {
        private ResourceManager rm;
        private DebugWindow debug;

        /*
         * Constructeur : On ouvre la fenêtre et on charge les paramètres.
         */
        public DebugParameters(DebugWindow _debug)
        {
            rm = new ResourceManager("Trakers.Debug.Properties.Resources", Assembly.GetExecutingAssembly());
            debug = _debug;
            InitializeComponent();
            getParameters();
        }

        /*
         * Permet de charger les paramètres depuis KinectMain et les affiche dans la fenêtre de paramétrage.
         */
        public void getParameters()
        {
            searchMinDistanceTB.Text = debug.getMinDistHands().ToString();
            searchMaxDistanceTB.Text = debug.getMaxDistHands().ToString();
            minDistanceTB.Text = debug.getMinDist().ToString();
            maxDistanceTB.Text = debug.getMaxDist().ToString();
            zeroPointTB.Text = debug.getZeroPoint().ToString();
            connexionHostTB.Text = debug.getConnexionHost();
            connexionPortTB.Text = debug.getConnexionPort().ToString();
            timerElapsingTB.Text = debug.getTimerElapsing().ToString();
            imagesToShowTB.Text = debug.getImagesToShow().ToString();
            takenPointsTB.Text = debug.getTakenPoints().ToString();
            directionChangeTresholdXYTB.Text = debug.getTakenPoints().ToString();
            directionChangeTresholdZTB.Text = debug.getTakenPoints().ToString();
        }

        /*
         * Permet de sauvegarder les paramètres de la fenêtre de paramétrage vers KinectMain.
         */
        public void setParameters()
        {
            try
            {
                ExceptionInParametersLbl.Content = "";

                float minDistHands = float.Parse(searchMinDistanceTB.Text);
                float maxDistHands = float.Parse(searchMaxDistanceTB.Text);
                float minDist = float.Parse(minDistanceTB.Text);
                float maxDist = float.Parse(maxDistanceTB.Text);
                float zeroPoint = float.Parse(zeroPointTB.Text);
                int connexionPort = int.Parse(connexionPortTB.Text);
                int timerElapsing = int.Parse(timerElapsingTB.Text);
                int imagesToShow = int.Parse(imagesToShowTB.Text);
                int takenPoints = int.Parse(takenPointsTB.Text);
                int directionChangeTresholdXY = int.Parse(directionChangeTresholdXYTB.Text);
                float directionChangeTresholdZ = float.Parse(directionChangeTresholdZTB.Text);

                if (maxDistHands <= 0f || minDistHands <= 0f || maxDistHands > maxDist || minDistHands > maxDist ||
                minDistHands >= maxDistHands || zeroPoint < maxDistHands || minDistHands > minDist ||
                zeroPoint >= maxDist || connexionPort < 0 || timerElapsing < 0 || imagesToShow < 1 ||
                takenPoints <= 0 || directionChangeTresholdXY < 0 || directionChangeTresholdZ < 0)
                {
                    ExceptionInParametersLbl.Content = rm.GetString("loadParametersIncorrect");
                }
                else
                {
                    debug.setMinDistHands(minDistHands);
                    debug.setMaxDistHands(maxDistHands);
                    debug.setMinDist(minDist);
                    debug.setMaxDist(maxDist);
                    debug.setZeroPoint(zeroPoint);
                    debug.setConnexionHost(connexionHostTB.Text);
                    debug.setConnexionPort(connexionPort);
                    debug.setTimerElapsing(timerElapsing);
                    debug.setImagesToShow(imagesToShow);
                    debug.setTakenPoints(takenPoints);
                    debug.setDirectionChangeTresholdXY(directionChangeTresholdXY);
                    debug.setDirectionChangeTresholdZ(directionChangeTresholdZ);

                    debug.updateParameters();
                    ExceptionInParametersLbl.Content = null;
                }
            }
            catch (Exception)
            {
                //S'il y a eu un problème de parsing (i.e si l'utilisateur a entré une mauvaise valeur),
                //Alors on affiche l'erreur, puis on recharge les paramètres précédents.
                ExceptionInParametersLbl.Content = rm.GetString("loadParametersFail");
                getParameters();
            }
        }

        /*
         * Méthode attachée à l'événement click sur le bouton de validation de la fenêtre de paramétrage.
         * Les données sont sauvegardées vers KinectMain, puis rechargées dans la fenêtre.
         */
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            setParameters();
        }

        /*
         * Getters et Setters.
         */
        public void setModButton(Button button)
        {
            ModButton = button;
        }

        public Button getModButton()
        {
            return ModButton;
        }

        /*
         * S'effectue lorsque la fenêtre se ferme.
         */
        private void Window_Closed(object sender, EventArgs e)
        {

        }
    }
}