Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » EasyInput
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

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



Précédente 1, 2, 3, 4, 5, 6
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 14/02/2015 23:38 | #


Ah, c'est donc ça
Ben du coup ça va me permettre de corriger deux trois bugs de plus

Ajouté le 14/02/2015 à 23:39 :
Merci pour l'info en tout cas.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1243 Défis: 54 Message

Citer : Posté le 14/02/2015 23:39 | #


Ça me rassure un peu, je comprenais pas trop que je sois tout seul à avoir des bugs avec ça :E…
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 14/02/2015 23:42 | #


Ben, de temps en temps ça marchait bien, d'autres non, donc maintenant je sais pourquoi
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 15/02/2015 03:29 | #


Je réitère ma question :
Purobaz a écrit :
Précise si la lib est compatible SH4.

Vérifie bien la compatibilité, puisque tu utilises des syscalls. C'est indispensable pour que la lib soit utilisable.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 16/02/2015 13:15 | # | Fichier joint


Voici la V3.0 !

Au programme :
- 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

Remplacez bien les fichiers EasyInput.c, .h, et .src / .s !

Attention, EI_CENTER, EI_LEFT, EI_RIGHT on été remplacé par EI_ALIGN_****. Changez vos réglages si c'est le cas, sinon rien n'a changé coté utilisateur !

----- Edit -----
Le fichier joint est la V3.1, qui modifie légèrement le système de config.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24699 Défis: 170 Message

Citer : Posté le 16/02/2015 13:58 | #


Bizarre ton système de config. Tu ferais mieux de fixer des define (ou enum) à des valeurs strictement positives et renvoyer la config actuelle si le paramètre est 0.
Ou alors tu fais une fonction EI_configure(int parameter, int value)(void) et une fonction EI_getConfig(int parameter)(int).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 16/02/2015 14:06 | #


Eh, j'ai fait exactement comme tu m'avais conseillé de faire. Du coup avec une unique fonction je peux modifier ou récupérer les valeurs qui m’intéressent.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24699 Défis: 170 Message

Citer : Posté le 16/02/2015 14:13 | #


Si tu veux garder une fonction je te conseille de changer le type de paramètre pour prendre une valeur entière, ça évite de passer par une variable. Ça alourdit le code...

enum EI_PARAMETER
{
    EI_SET_COLUMN = 0,
    EI_SET_ROW = 1,
    EI_SET_BOX_LENGTH = 2,
    EI_SET_ALIGN = 3,
    EI_SET_START_MODE = 4,
    EI_SET_Aa_KEY = 5
};

enum EI_ALIGN
{
    EI_ALIGN_LEFT = 1,
    EI_ALIGN_CENTER = 2,
    EI_ALIGN_LEFT = 3
};

static int config[ /* nb_parametres */ ];

// ...

int EI_manage_config(EI_PARAMETER parameter, int value)
{
    if(value == 0) return config[parameter];
    config[parameter] = value;
    return 0;
}

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 16/02/2015 14:16 | #


Pas faux...
Bon, MaJ 3.1 en cours...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24699 Défis: 170 Message

Citer : Posté le 16/02/2015 14:22 | #


Au passage, normalement on n'augmente le numéro de version majeur que lorsqu'il y a des grandes incompatibilités entre les codes utilisés par les deux versions du programme
Du coup :
Dark Storm a écrit :
Changez vos réglages si c'est le cas, sinon rien n'a changé coté utilisateur !

En général on augmente le numéro de version mineur quand on ne fait que de l'ajout de fonctionnalités.

Confer la bible du semantic versioning
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 16/02/2015 14:56 | #


Bah, plus de 40% du code a été modifié entre la V2.3 et la V3.0, alors bon...
Et puis c'est ma lib, je fais ce que je veux avec
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 05/03/2015 21:26 | #


Salut,
C'est pas tellement au sujet de la librairie elle meme (qui est bien faite en passant), mais plus au niveau des caracteres que t'utilises.
Voila j'ai vu que tu pouvais afficher les fleches (si le texte par trop a gauche par exemple) surement contenues dans le systeme. Donc j'ai jeté un coup d'oeil et c'est le caractere 230 (pour l'une des deux).
Alors si y'avais une liste qui existait histoire de m'eviter de chercher un par un les caracteres ca serait cool
Lephenixnoir En ligne Administrateur Points: 24699 Défis: 170 Message

Citer : Posté le 05/03/2015 22:10 | #


C'est dans l'archive en téléchargement avec le SDK.
Pour utiliser le caractère de code 0xabcd, utilise une séquence d'échappement.
"Special char : \xab\xcd !"

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 05/03/2015 22:19 | #


En effet merci de m'avoir aiguillé
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 05/03/2015 22:41 | #


Theprog a écrit :
C'est pas tellement au sujet de la librairie elle meme (qui est bien faite en passant)

Merci, ça fait toujours plaisir d'avoir des retours (surtout quand ils sont positifs).
Ça me fait penser que j'ai encore quelques détails à régler, mais rien de bien grave.

Ajouté le 21/04/2016 à 13:14 :
Dernière version disponible ici : https://git.planet-casio.com/Dark-Storm/EasyInput

Pas eu de changements, mais si j'en fais ça sera toujours à jour
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 25/04/2016 16:20 | #


Je vais l'utiliser pour mon jeu bientôt donc t'auras de mes nouvelles vu que ma dernière tentative était un échec x)
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Précédente 1, 2, 3, 4, 5, 6

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 58 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd