Ajout d'un moyen de récupérer la valeur d'un paramètre du configurator (issue #7)
Ajout d'un moyen de récupérer la valeur d'un paramètre du configurator directement depuis ce dernier.
On a maintenant une classe "Configurator" qui permet de gérer les paramètres du modèle que l'on souhaite manipuler via l'interface HTML. On peut lui ajouter une description, un certain nombre de contraintes (min, max, appartenance) ainsi qu'un certain nombre de fonctions qui s'enclenchent quand le client envoie une nouvelle configuration.
Lorsque le client se connecte, le serveur envoie en plus ces infos de configuration afin que le client puisse afficher toutes les infos qui vont bien pour pouvoir modifier ces valeurs (tout est dans le menu déroulant "configuration").
Un nouveau message pour les sockets à été mis en place, il s'agit du message "conf" qui est géré par le WebServer, le FontHandler et les ImageProcessor en suivant la même logique que pour les messages précédents.
Voici un exemple de comment mettre en place une nouvelle configuration :
1- Dans la classe de l'ImageProcessor souhaitée, ajoutée un attribut de type Configurator (appelons-là config)
2- Ajouter les paramètres que l'on souhaite pouvoir contrôler dans config (par exemple, "monParametre" qui vaut 15 par défaut et qui est entre 10 et 50)
config.add_param("monParametre", 15)
config.add_description("monParametre", "Petite description qui explique à quoi elle correspond")
config.add_min_max("monParametre", min_value=10, max_value=50)
3- [Optionnel] Il est possible d'associer ces paramètres à l'objet courant afin de pouvoir les appeler comme s'il s'agissait d'attributs de l'objet
for key in self._config.param_dict:
setattr(self, key, self._config.param_dict[key])
Maintenant on peut faire : self.monParametre
4- [Optionnel] En faisant l'opération précédente, il est alors nécéssaire d'ajouter un handler qui va se lancer lorsque le client va changer la configuration (
config.add_change_handler("monParametre", self.monParameterHandler)
5- Là où ce paramètre est utilisé dans l'ImageProcessor, on peut récupérer sa valeur avec :
config.get_value("monParametre")
ou alors, si l'étape 3 est faite
self.monParametre
6- Définir les méthodes config() et process_config() dans l'ImageProcessor pour que tout marche bien.
Voilà, logiquement ça devrait fonctionner. Tu peux tout trouver dans la branche "issue-7".
La méthode Configurator.check_contraintes() est équivalente à Configurator.check_in_interval() pour le moment mais j'ai des idées d'améliorations pour enrichir check_contraintes(); c'est pour ça que je l'ai laissée.