middleware/src/Debug/DebugParameters.xaml.cs
author bastiena
Tue, 20 Mar 2012 18:00:55 +0100
changeset 7 8a21bec5d45f
parent 6 93dfb08dcc97
child 8 e4e7db2435f8
permissions -rw-r--r--
Middleware : No proximity bugs anymore. The skeleton disappear if a tracked person is too close or not tracked anymore. Processing : There are no laggs anymore when an user stay too long moving his hands and drawing tons of ellipses. (TUIO Cursors are not taken by their vectors, only the last position of the cursors are caught to be drawn).

/*
 * 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.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Trakers.Tracking;
using System.Reflection;
using System.Resources;

namespace Trakers.Debug
{
    /// <summary>
    /// Interaction logic for DebugParameters.xaml
    /// </summary>
    public partial class DebugParameters : Window
    {
        //Membre d'accès à KinectMain.
        private KinectMain kinectMain;
        private ResourceManager rm;

        /*
         * Constructeur : On ouvre la fenêtre et on charge les paramètres.
         */
        public DebugParameters(KinectMain _kinectMain)
        {
            rm = new ResourceManager("Trakers.Properties.resources", Assembly.GetExecutingAssembly());
            kinectMain = _kinectMain;
            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 = kinectMain.getMinDistHands().ToString();
            searchMaxDistanceTB.Text = kinectMain.getMaxDistHands().ToString();
            minDistanceTB.Text = kinectMain.getMinDistHands().ToString();
            maxDistanceTB.Text = kinectMain.getMaxDistHands().ToString();
            zeroPointTB.Text = kinectMain.getMinDistHands().ToString();
            connexionHostTB.Text = kinectMain.getConnexionHost();
            connexionPortTB.Text = kinectMain.getConnexionPort().ToString();
            timerElapsingTB.Text = kinectMain.getTimerElapsing().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(searchMinDistanceTB.Text);
                float maxDist = float.Parse(searchMaxDistanceTB.Text);
                float zeroPoint = float.Parse(searchMinDistanceTB.Text);
                int connexionPort = int.Parse(connexionPortTB.Text);
                int timerElapsing = int.Parse(timerElapsingTB.Text);

                if (maxDistHands <= 0f || minDistHands <= 0f || maxDistHands > maxDist || minDistHands > maxDist ||
                minDistHands >= maxDistHands || zeroPoint < maxDistHands || minDistHands < minDist ||
                zeroPoint >= maxDist || connexionPort < 0 || timerElapsing < 0)
                {
                    ExceptionInParametersLbl.Content = rm.GetString("loadParametersIncorrect");
                }
                else
                {
                    kinectMain.setMinDistHands(minDistHands);
                    kinectMain.setMaxDistHands(maxDistHands);
                    kinectMain.setMinDistHands(minDist);
                    kinectMain.setMaxDistHands(maxDist);
                    kinectMain.setMinDistHands(zeroPoint);
                    kinectMain.setConnexionHost(connexionHostTB.Text);
                    kinectMain.setConnexionPort(connexionPort);
                    kinectMain.setTimerElapsing(timerElapsing);

                    kinectMain.updateParameters();
                }
            }
            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();
        }
    }
}