GUISaisieTexteGestion cp CODE_MORT : ret z
cp CODE_INIT : jr z,GUIsaisieTexteAffiche
cp CODE_DEL : jp z,.suppressionChar
cp CODE_TAB : jp z,GUIObjetSuivant
; si c'est un caractère on essaie de l'ajouter
cp 32 : ret c ; c'est un autre code de contrôle
; c'est un caractère, on l'ajoute (ou pas)
.ajouteChar
exa : call .recupereCurseur
cp (ix+s_saisieTexte.longueur) : ret z ; contenu déjà rempli au maximum
ld de,ix : ld hl,s_saisieTexte.contenu : add hl,de : add l : ld l,a : ld a,h : adc 0 : ld h,a : exa : ld (hl),a : inc hl : ld (hl),0
jp GUIsaisieTexteAffiche

.suppressionChar
call .recupereCurseur : ld a,(GUIcurseurDel)
or a : ret z ; déjà plus rien dans le contenu
dec a : ld de,ix : ld hl,s_saisieTexte.contenu : add hl,de : add l : ld l,a : ld a,h : adc 0 : ld h,a : ld (hl),' ' : push hl : call GUIsaisieTexteAffiche : pop hl : ld (hl),0 : jp GUIsaisieTexteAffiche
ret
; s'assurer que le curseur n'est pas en dehors des clous en le maximisant à la position du dernier char
.recupereCurseur ld hl,s_saisietexte.contenu : ld de,ix : add hl,de : call strlen ; longueur de chaine dans HL
ld a,(ix+s_saisietexte.longueur) : cp l : ld a,l : ld (GUIcurseurDel),a : jr nz,.forceCurseur : dec l : .forceCurseur ld a,l : ld (GUIcurseur),a
ret

GUIsaisieTexteAffiche
ld hl,(ix+s_saisieTexte.adresse_ecran) : ld de,80 : add hl,de ; ligne du dessous
ld a,(ix+s_gui.selectionne) : dec a : cpl : ld b,(ix+s_saisieTexte.longueur) : sla b
.surligne ld (hl),a : inc hl : djnz .surligne
ld de,ix : ld hl,s_saisieTexte.contenu : add hl,de : exx
ld de,(ix+s_saisieTexte.adresse_ecran)
jp GUIDisplayString


