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/07/2014 18:04 | #
Oui, à tous les coups c'est de l'encodage Linux mal supporté...
Citer : Posté le 03/07/2014 11:30 | #
Bon... J'ai testé.
Diagnostic :
Génial ! Juste super ! Bravo ! C'est super utile, surtout pour mon google chrome !
Ajouté le 19/07/2014 à 14:01 :
Heu, quelle est la syntaxe de l'utilisation ? Je veux dire, pourquoi ça ne marche pas :
char buffer[14];
[green]//[...][/green]
[b][blue]if[/blue][/b] (IsKeyDown(KEY_CTRL_EXE)==[maroon]1[/maroon] && x>10 && x<119 && y>37 && y<49)
{
[green]//Barre de recherche[/green]
Bkey_Set_RepeatTime( 1 , [maroon]40[/maroon] );
ML_clear_vram();
ML_clear_screen();
RestoreDisp(PAGE_1);
ML_display_vram();
ML_line(10,[maroon]37[/maroon],[maroon]118[/maroon],[maroon]37[/maroon],[maroon]1[/maroon]);
ML_line(10,[maroon]49[/maroon],[maroon]118[/maroon],[maroon]49[/maroon],[maroon]1[/maroon]);
ML_line(9,[maroon]37[/maroon],[maroon]9[/maroon],[maroon]50[/maroon],[maroon]1[/maroon]);
ML_line(118,[maroon]37[/maroon],[maroon]118[/maroon],[maroon]50[/maroon],[maroon]1[/maroon]);
EI_input_string(buffer, [maroon]13[/maroon],ALLOW_ALL,[maroon]3[/maroon],[maroon]6[/maroon], [maroon]18[/maroon], LEFT, ALPHA_LOCKED);
[b][blue]if[/blue][/b](strcmp(buffer,[gray]"P"[/gray]))
{
ML_clear_screen();
}
}
P.S. : Merci d'avance.
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 19/07/2014 15:23 | #
strcmp() renvoie 0 si les deux chaînes sont identiques.
Citer : Posté le 19/07/2014 15:24 | #
Ah ok ! Donc, :
if(!strcmp(buffer,"P"))
{
ML_clear_screen();
}
Ajouté le 19/07/2014 à 15:24 :
Ou
if(strcmp(buffer,"P")==0)
{
ML_clear_screen();
}
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 19/07/2014 15:25 | #
Tu cherche à faire quoi ?
Ajouté le 19/07/2014 à 15:25 :
EI_input_string() est bloquant
Citer : Posté le 19/07/2014 15:25 | #
Tout simplement.
À noter que strcmp() renvoie -1 si le première caractère différent est inférieur dans la première chaîne, et 1 s'il est supérieur.
Citer : Posté le 19/07/2014 15:25 | #
Gracias schön very beaucoup !
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 19/07/2014 15:27 | #
Heu, pour afficher une sorte d'historique des recherches ? Si oui il faut que tu reprenne le code, EI_input_string bloque l'execution jusqu'à l'appui sur Menu, EXE ou Ac/ON
Citer : Posté le 19/07/2014 15:28 | #
Ok, donc pas de do{} while
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 19/07/2014 15:32 | #
Tu peux, mais en reprenant la fonction pour la mettre dans la boucle (enfin bidouiller un peu quoi )
Citer : Posté le 19/07/2014 15:35 | #
[b][blue]do[/blue][/b] {
EI_input_string(buffer, [maroon]13[/maroon],ALLOW_ALL,[maroon]3[/maroon],[maroon]6[/maroon], [maroon]18[/maroon], LEFT, ALPHA_LOCKED);
}[b][blue]while[/blue][/b](IsKeyUp(KEY_CTRL_EXE));
?
Ajouté le 19/07/2014 à 15:35 :
S'il est bloquant, je n'en ai pas besoin ?
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 19/07/2014 15:36 | #
EI_input_string() permet de récupérer, comme son nom l'indique, toute la chaîne, et non pas un seul caractère.
Citer : Posté le 19/07/2014 15:37 | #
Tiens, le "i" majuscule s'affiche comme un "l".
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 19/07/2014 15:44 | #
Ou comment tromper GLaDOS...
Citer : Posté le 19/07/2014 15:50 | #
Donc ça devrait marcher :
if (IsKeyDown(KEY_CTRL_EXE)==1 && x>10 && x<119 && y>37 && y<49)
{
//Barre de recherche
Bkey_Set_RepeatTime( 1 , 40 );
ML_clear_vram();
ML_clear_screen();
RestoreDisp(PAGE_1);
ML_display_vram();
ML_line(10,37,118,37,1);
ML_line(10,49,118,49,1);
ML_line(9,37,9,50,1);
ML_line(118,37,118,50,1);
EI_input_string(buffer, 13,ALLOW_ALL,3,6, 18, LEFT, ALPHA_LOCKED);
if(strcmp(buffer,"PPPPPPPPPPPPP")==0)
{
ML_clear_screen();
}
}
Ajouté le 19/07/2014 à 15:50 :
Ce n'est pas le cas.
Ajouté le 19/07/2014 à 15:51 :
Pourtant, aucune erreur.
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 19/07/2014 19:32 | #
Ben si tu compare "PPPPP" à "ppppp", c'est normal que ça fonctionne pas
Citer : Posté le 20/07/2014 18:32 | #
Si tu as l'intention de créer de fausses pages, tu peux mettre un truc encore plus trollesque sur la page PC : "L'addin Google de Legolas enfin focntionnel, accedez au web depuis votre calto, cliquez sur le lien pour télécharger !"
Citer : Posté le 20/07/2014 18:33 | #
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 20/07/2014 22:15 | #
La revue des projets vient de commencer et on cherche des contenus à afficher, mais lui il nous balance quand même sa capture sur le forum dans un vulgaire fichier joint
Citer : Posté le 20/07/2014 22:19 | #
Je l'ai aussi envoyé avec le formulaire de contact Positon.
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 20/07/2014 22:19 | #
Je l'ai reçu 30min après avoir écrit la news
Pas grave, ça sera pour la semaine prochaine