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/12/2014 21:00 | #
En fait il y a un gros risque que lorsque tu démarres en ALPHA_LOCKED tu tapes uniquement des majuscules au clavier. Je me trompe ?
Sinon, faudrait préciser ton problème. Que se passe-t-il ? Tu as des majuscules, tu n'as rien du tout ? Donne-nous des détails, dire que ça ne fonctionne pas ne nous aide pas.
Citer : Posté le 03/12/2014 07:27 | #
Ça n'affiche que les majuscules et aucunes minuscules Faudrait je mette NORMAL ?
Faudra aussi rajouter ALOW_Az pour dire qu'il y a le premier caractère en majuscule et tous ce qu'il y a après en minuscule
Citer : Posté le 03/12/2014 17:59 | #
ALLOW_Az ? Non, autant utiliser des regex basiques ce serait tellement plus utile !
Et pourquoi ça met des majuscules si t'as pas mis ALLOW_AZ ?
Ajouté le 03/12/2014 à 18:07 :
ALLOW_Az ? Non, autant utiliser des regex basiques ce serait tellement plus utile !
Et pourquoi ça met des majuscules si t'as pas mis ALLOW_AZ ?
Citer : Posté le 04/12/2014 12:33 | #
Je suis en train d'améliorer la V2, ça sera une V2.1, avec un système de "regex" pour les caractères entrés.
Sortie ce WE quoi qu'il arrive
Ajouté le 04/12/2014 à 12:34 :
Au passage, pour passer en minuscules, F6 est une bonne touche ?
Citer : Posté le 04/12/2014 15:46 | #
Ce n'est pas F5 normalement ? Enfin, tu fais comme tu veux.
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 04/12/2014 17:58 | #
F6 c'est bien et cool que ça sorte ce WE enfin
Citer : Posté le 04/12/2014 18:35 | #
En fait c'est [F5] dans les programmes et [F6] dans les e-acts. Le mieux, c'est que ça soit configurable !
Citer : Posté le 05/12/2014 16:00 | #
Tu met les deux au pire
Citer : Posté le 05/12/2014 18:22 | #
Du coup, vu le nombre de paramètres, j'hésite à les passer via une structure, un peu comme pour le port série. Votre avis ?
Citer : Posté le 05/12/2014 18:57 | #
Tu mets une fonction de config :
Exemple d'usage :
Citer : Posté le 05/12/2014 20:09 | #
Ah oui bonne idée si il y a trop d'argument
Citer : Posté le 05/12/2014 21:04 | #
Pas con, et je met tout les urées paramètres en valeurs par défaut
Citer : Posté le 05/12/2014 21:22 | #
En fait plus précisément, je te conseille de faire ça :
{
static struct
{
int Aa_key;
int box_length;
} config;
if(value) switch(parameter)
{
case EI_Aa_KEY: config.Aa_key = *((unsigned int *)value); break;
case EI_BOX_LENGTH: config.box = *((unsigned int *)value); break;
}
else switch(parameter)
{
case EI_Aa_KEY: return (const void *)(config.Aa_key);
case EI_BOX_LENGTH: return (const void *)(config.box_length);
}
return NULL;
}
int EI_init(void)
{
unsigned int var;
EI_manage_config(EI_Aa_KEY,&(var=30013));
EI_manage_config(EI_BOX_LENGTH,&(var=8));
}
int EI_run(void)
{
unsigned int boxlength;
const void *pointer;
pointer = EI_manage_config(EI_BOX_LENGTH,NULL);
boxlength = *((unsigned int *)pointer);
}
Bref, je suppose que tu vois le principe.
Je détesterais qu'on ait des symboles globaux accessibles à loisir.
Citer : Posté le 05/12/2014 23:02 | #
Fait, du coup j'en suis à la V2.2
Citer : Posté le 06/12/2014 08:59 | #
C'est que ça commence à être sacrément intéressant du coup ! L'idéal (si c'est possible) serait de pouvoir au final, l'utiliser dans tous les contextes (jeux, etc.), j'entends par là qu'elle puisse s'insérer sans trop de difficultés dans les interfaces.
Citer : Posté le 06/12/2014 12:32 | #
Yep, y'a qu'à voir Prof Layton
Par contre faut que je trouve la cause et fixe le but du curseur : un coup il est en coordonnés Locate, un coup en absolues.
Citer : Posté le 06/12/2014 12:34 | #
D'ailleurs, puisque tu en parles, encore merci pour EasyInput. Mais je ne comprend pas pourquoi, selon les calculatrices, il y a ce bug d'affichage ou non (ça me l'a fait mais pas tout le temps, sans le changer).
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 06/12/2014 13:04 | #
Un bug à régler car il est assez chiant parce que ça change tous le temps
Citer : Posté le 07/12/2014 17:46 | # | Fichier joint
Voici la version 2.2 de EasyInput !
##### INFORMATIONS IMPORTANTES #####
Nom : EasyInput
Auteur : Dark Storm (L.GATIN)
Dernière mise à jour : 06/12/2014
Version : 2.2
Licence : GNU General Public License
####################################
--- 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
Plus d'infos dans le ReadMe contenu dans l'archive. Je met à jour le topic dès que possible.
Ajouté le 07/12/2014 à 18:21 :
J'ai ajouté un screenshot
Citer : Posté le 07/12/2014 19:06 | #
Super la nouvelle présentation !
Juste une coquille :
Pour le Fx9860 SDK : gardez le fichier <EasyInout_.src>
- Pour GCC : gardez le fichier <EasyInput_.s>
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 08/12/2014 18:47 | #
j'ai un petit problème :
et l'erreur
alors que