Text: You can now type long lines (250car).

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@327 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2008-11-05 23:59:05 +00:00
parent 29dae934f1
commit 863f5111f0
5 changed files with 41 additions and 24 deletions

View File

@ -5905,15 +5905,6 @@ void Bouton_Texte()
{ {
Touche=0; Touche=0;
Effacer_curseur(); Effacer_curseur();
/*
if (Position_curseur<(NB_FONTES-1))
Position_curseur=(NB_FONTES-1);
else
{
Position_curseur+=NB_FONTES;
if (Position_curseur+Debut_liste >= (Fonte_nombre-1))
Position_curseur = Fonte_nombre-1-Debut_liste;
}*/
Position_curseur=(Fonte_nombre-1)-Debut_liste; Position_curseur=(Fonte_nombre-1)-Debut_liste;
if (Position_curseur>(NB_FONTES-1)) if (Position_curseur>(NB_FONTES-1))
{ {
@ -5931,7 +5922,7 @@ void Bouton_Texte()
{ {
case 1: // Texte saisi case 1: // Texte saisi
Effacer_curseur(); Effacer_curseur();
Readline(43,20,Chaine,30,0); Readline_ex(43,20,Chaine,30,250,0);
A_previsionner=1; A_previsionner=1;
break; break;

View File

@ -1542,7 +1542,7 @@ void Print_dans_fenetre_limite(short X,short Y,char * Chaine,byte Taille,byte Co
{ {
char Chaine_affichee[256]; char Chaine_affichee[256];
strncpy(Chaine_affichee, Chaine, Taille); strncpy(Chaine_affichee, Chaine, Taille);
Chaine_affichee[255]='\0'; Chaine_affichee[Taille]='\0';
if (strlen(Chaine_affichee) > Taille) if (strlen(Chaine_affichee) > Taille)
{ {

View File

@ -1320,7 +1320,7 @@ void Fenetre_Dessiner_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caract
void Fenetre_Contenu_bouton_saisie(struct Fenetre_Bouton_special * Enreg, char * Contenu) void Fenetre_Contenu_bouton_saisie(struct Fenetre_Bouton_special * Enreg, char * Contenu)
{ {
Print_dans_fenetre(Enreg->Pos_X+2,Enreg->Pos_Y+2,Contenu,CM_Noir,CM_Clair); Print_dans_fenetre_limite(Enreg->Pos_X+2,Enreg->Pos_Y+2,Contenu,Enreg->Largeur/8,CM_Noir,CM_Clair);
} }
//------------ Effacer le contenu (caption) d'une zone de saisie ------------ //------------ Effacer le contenu (caption) d'une zone de saisie ------------

View File

@ -37,6 +37,7 @@
#include "const.h" #include "const.h"
#include "linux.h" #include "linux.h"
#include "sdlscreen.h" #include "sdlscreen.h"
#include "readline.h"
#define COULEUR_TEXTE CM_Noir #define COULEUR_TEXTE CM_Noir
#define COULEUR_FOND CM_Clair #define COULEUR_FOND CM_Clair
@ -99,7 +100,6 @@ void Rafficher_toute_la_chaine(word Pos_X,word Pos_Y,char * Chaine,byte Position
Print_char_dans_fenetre(Pos_X+(Position<<3),Pos_Y,Chaine[Position],COULEUR_TEXTE_CURSEUR,COULEUR_FOND_CURSEUR); Print_char_dans_fenetre(Pos_X+(Position<<3),Pos_Y,Chaine[Position],COULEUR_TEXTE_CURSEUR,COULEUR_FOND_CURSEUR);
} }
//**************************************************************************** //****************************************************************************
//* Enhanced super scanf deluxe pro plus giga mieux :-) * //* Enhanced super scanf deluxe pro plus giga mieux :-) *
//**************************************************************************** //****************************************************************************
@ -111,6 +111,28 @@ byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type
// Type_saisie : 0=Chaîne, 1=Nombre, 2=Nom de fichier // Type_saisie : 0=Chaîne, 1=Nombre, 2=Nom de fichier
// Sortie: // Sortie:
// 0: Sortie par annulation (Esc.) / 1: sortie par acceptation (Return) // 0: Sortie par annulation (Esc.) / 1: sortie par acceptation (Return)
{
byte Taille_maxi;
// Grosse astuce pour les noms de fichiers: La taille affichée est différente
// de la taille maximum gérée.
if (Type_saisie == 2)
Taille_maxi = 255;
else
Taille_maxi = Taille_affichee;
return Readline_ex(Pos_X,Pos_Y,Chaine,Taille_affichee,Taille_maxi,Type_saisie);
}
//****************************************************************************
//* Enhanced super scanf deluxe pro plus giga mieux :-) *
//****************************************************************************
byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Taille_maxi, byte Type_saisie)
// Paramètres:
// Pos_X, Pos_Y : Coordonnées de la saisie dans la fenêtre
// Chaine : Chaîne recevant la saisie (et contenant éventuellement une valeur initiale)
// Taille_maxi : Nombre de caractères logeant dans la zone de saisie
// Type_saisie : 0=Chaîne, 1=Nombre, 2=Nom de fichier
// Sortie:
// 0: Sortie par annulation (Esc.) / 1: sortie par acceptation (Return)
{ {
char Chaine_initiale[256]; char Chaine_initiale[256];
char Chaine_affichee[256]; char Chaine_affichee[256];
@ -118,13 +140,7 @@ byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type
byte Taille; byte Taille;
word Touche_lue=0; word Touche_lue=0;
byte Touche_autorisee; byte Touche_autorisee;
byte Taille_maxi;
// Grosse astuce pour les noms de fichiers: La taille affichée est différente
// de la taille maximum gérée.
if (Type_saisie == 2)
Taille_maxi = 255;
else
Taille_maxi = Taille_affichee;
byte Offset=0; // Indice du premier caractère affiché byte Offset=0; // Indice du premier caractère affiché

View File

@ -21,9 +21,19 @@
byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type_saisie); byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type_saisie);
// Paramètres: // Paramètres:
// Pos_X, Pos_Y : Coordonnées de la saisie dans la fenêtre // Pos_X, Pos_Y : Coordonnées de la saisie dans la fenêtre
// Chaine : Chaîne recevant la saisie (et contenant éventuellement une valeur initiale) // Chaine : Chaîne recevant la saisie (et contenant éventuellement une valeur initiale)
// Taille_maxi : Nombre de caractères logeant dans la zone de saisie // Taille_affichee : Nombre de caractères logeant dans la zone de saisie
// Type_saisie : 0=Chaîne, 1=Nombre, 2=Nom de fichier (255 caractères réels) // Type_saisie : 0=Chaîne, 1=Nombre, 2=Nom de fichier (255 caractères réels)
// Sortie:
// 0: Sortie par annulation (Esc.) / 1: sortie par acceptation (Return)
byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Taille_maxi, byte Type_saisie);
// Paramètres:
// Pos_X, Pos_Y : Coordonnées de la saisie dans la fenêtre
// Chaine : Chaîne recevant la saisie (et contenant éventuellement une valeur initiale)
// Taille_affichee : Nombre de caractères logeant dans la zone de saisie
// Taille_maxi : Nombre de caractères logeant dans la zone de saisie
// Type_saisie : 0=Chaîne, 1=Nombre, 2=Nom de fichier (255 caractères réels)
// Sortie: // Sortie:
// 0: Sortie par annulation (Esc.) / 1: sortie par acceptation (Return) // 0: Sortie par annulation (Esc.) / 1: sortie par acceptation (Return)