EasyInput
Posté le 02/06/2014 21:33
INFORMATIONS IMPORTANTES
Nom : EasyInput
Auteur : Dark Storm (L.GATIN)
Dernière mise à jour : 16/02/2015
Version : 3.1
Licence : GNU General Public License
Présentation
EasyInput est une librairie de fonctions destinée à simplifier les méthodes de saisie de texte par un utilisateur.
Elle est utilisable gratuitement, vous pouvez la télécharger
sur notre GitLab.
Utilisation
--- Fichiers ---
Quoi qu'il arrive, vous avez besoin des fichiers <EasyInput.c> et <EasyInput.h>
Selon votre compilateur, il vous faut chosir le bon fichier de syscalls :
- Pour le Fx9860 SDK : gardez le fichier <EasyInout_.src>
- Pour GCC : gardez le fichier <EasyInput_.s>
--- Initialisation ---
Utilisez EI_init() pour mettre toutes les valeurs de configuration par défaut.
Ensuite, vous pouvez modifier les paramètres suivants en appelant la fonction EI_manage_config(int parameter, int value).
→ EI_SET_COLUMN : Un nombre entre 1 et 21 qui correspond à la colonne de début de la zone de texte
→ EI_SET_ROW : Idem, mais entre 1 et 8 pour les lignes
→ EI_SET_BOX_LENGTH : La longueur de la zone de texte, en caractères.
→ EI_SET_ALIGN : Le mode d'alignement du texte (EI_ALIGN_LEFT, EI_ALIGN_CENTER, EI_ALIGN_RIGHT)
→ EI_SET_START_MODE : Le mode de départ du curseur (EI_NORMAL, EI_ALPHA, EI_ALPHA_LOCKED)
→ EI_SET_Aa_KEY : Le code de la touche qui servira à changer la casse
Exemple, pour fixer le mode de départ du curseur :
char var;
EI_manage_config(EI_SET_START_MODE, EI_ALPHA);
Si <value> est égale à 0, la fonction retourne un pointeur sur l'élément demandé. Cela permet de récupérer les valeurs de configuration.
Exemple, récupérer la valeur de la longueur de la box :
longueur = EI_manage_config(EI_SET_LENGHT_BOX, NULL);
--- Appel ---
La fonction EI_input_string(int string_length, const char *chars_allowed) retourne un pointeur sur la chaine et doit être appellée de la manière suivante :
my_string = EI_input_string(21, (const char*)".0123456789");
La chaine <chars_allowed> contient tout les caractères dont la saisie est autorisée.
Changelog
Cliquer pour enrouler
--- V3.1 ---
- Simplification du système de configuration
--- V3.0 ---
- Réécriture de la boucle principale
- Correction des bugs concernant les syscalls à destination de l'OS 2.00 et ultérieur (merci à Nemhardy pour l'info)
- Correction des bugs concernant les ajouts de caractères impromptus
- Correction des bugs concernant les alignements de texte
--- V2.3 ---
- Refonte du système d'affichage
--- V2.2 ---
- Refonte du système de configuration
- Ajout de la gestion des minuscules
--- V2.1 ---
- Ajout de la "regex" pour les caractères autorisés
- Correction d'une fuite de mémoire lorsque l'on quitte avec Ac/ON
- Changement de licence
--- V2.0 ---
- Modification du mode de retour de la chaine
--- V1.2 ---
- Correction de quelques bugs
--- V1.0 ---
- Création de la librairie
Citer : Posté le 02/06/2014 21:33 | # | Fichier joint
L'addin de test
Citer : Posté le 04/06/2014 14:42 | # | Fichier joint
Et le zip contenant la v1.0 de la lib
--- EDIT ---
Le fichier joint correspond à la v1.2 de la lib.
Les infos contenues dans le topic sont à jour.
Citer : Posté le 04/06/2014 14:55 | #
Tu as un souci dans la description du topic : le 8 ) a été changé en 8) dans la description de l'argument row
Citer : Posté le 04/06/2014 15:05 | #
Oui, c'est assez pénible comme problème , il faudrait changer et mettre quelque chose comme :yeah: à la place
Citer : Posté le 06/06/2014 07:18 | #
Pour les caractères autorisés, ton système de flags est bizarre. Déjà, l'énumération n'est pas adaptée si la valeur des constantes a une importance, utilise plutôt des define. Ensuite, pour combiner les flags, il faut utiliser l'opérateur | (bitwise or) et non + (la différence est qu'avec un OR tu peux avoir une constante qui en réuni plusieurs autres, genre a-zA-Z0-9, et la combiner avec SPACE ou DOT). Et pour tester si un flag est activé, tu fais var_flags & CONSTANTE, la fonction is_allowed ne sert à rien.
Citer : Posté le 27/06/2014 09:42 | #
Lorsque je veux compiler, j'obtiens un paquet d'erreurs à cause de syscall.src
Citer : Posté le 27/06/2014 12:36 | #
Tu compile en C ou en C++ ?
Citer : Posté le 27/06/2014 12:38 | #
Tu as changé ce que PLL te conseillait ou pas ? (pour savoir si l'utilisation est différente de celle expliquée dans le post principal)
Citer : Posté le 27/06/2014 12:40 | #
Je l'ai changé, mais je ne sais plus si j'ai modifié le zip. Je met à jour tout de suite pour être sûr.
Ajouté le 27/06/2014 à 12:48 :
Fait, voici le lien de téléchargement : EasyInput
Citer : Posté le 27/06/2014 12:57 | #
Au fait maintenant que j'y pense, je sais pas trop si c'est un équivalent vu que j'ai pas encore teste easyinput mais dans serial monitor, il y avait aussi une gestion des touches pour rentrer des chaines, en l'adaptant un peu ça devrait donner ce que tu veux non ?
Citer : Posté le 27/06/2014 13:20 | #
Tu as pensé à ce que je t'avais proposé ?
Retourner le pointeur sur la chaîne, ça pourrait être sympa pour l'allocation dynamique.
Citer : Posté le 27/06/2014 14:47 | #
@Dark Storm : je compile en C
Citer : Posté le 27/06/2014 14:50 | #
T'as bien ajouté le fichier "syscall.src" aux fichiers du projet ?
Citer : Posté le 27/06/2014 14:54 | #
Tu veux dire dans le S.D.K. ? Moi j'ai mis un #include.
Citer : Posté le 27/06/2014 15:12 | #
Non, il faut l'ajouter au projet comme tous les fichiers sources.
S'il est inclus dans un fichier c, il provoque des bugs car la syntaxe est incorrecte.
Citer : Posté le 27/06/2014 15:21 | #
D'accord merci
Citer : Posté le 27/06/2014 15:23 | #
Ça a l'air super ! Merci !
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 02/07/2014 17:21 | #
Le fichier read_me.txt est illisible si jamais (il n'y a aucun retour à la ligne)
Ajouté le 02/07/2014 à 17:37 :
Et tant que j'y suis, Input_Box_Length, c'est en pixel ou en nombre de caractères ?
Citer : Posté le 02/07/2014 17:52 | #
Nombre de caractères.
Faut que je vois ça pour le readme, sans doute un pb d'encodage...
Citer : Posté le 02/07/2014 18:04 | #
Oui, à tous les coups c'est de l'encodage Linux mal supporté...