1 2 3 4
| void ConvertToUpper ( GtkWidget* entry, gboolean )
{
int i = 0;
GString *p = g_string_new ( gtk_entry_get_text ( (GtkEntry*)entry ) ); |
Ici il crée sa variable p sur le type
GString (tu as tous les renseignements sur ce type en suivant le lien précédent

)
1 2
|
p = g_string_ascii_up ( p ); |
conversion de tous les caractères de minuscules en majuscules. Par exemple la chaine "alFrEd doRt" devient "ALFRED DORT"
1 2 3 4 5 6
|
for ( i=0; i<strlen ( p->str ); i++ )
{
if ( 0x20 == p->str[i] )
p->str[i] = '_';
} |
il parcourt son tableau du premier caractère jusqu'à la fin. strlen(p->str) est la fonction qui renvoie la fin de la chaine.
Lorsqu'il tombe sur le caractère de code hexa 0X20 (c est a dire l'espace) il est remplacé par le caractère '_'
1 2 3
|
gtk_entry_set_text ( (GtkEntry*)entry, p->str );
} |
il remplace le contenu de la GtkEntry par la nouvelle chaine.
1 2 3 4 5 6 7
|
void
on_my_entry_changed (GtkEditable *editable,
gpointer user_data)
{
ConvertToUpper ( my_entry );
} |
cette fonction doit etre le callback utilisé lorsque le signal "changed" est émis par le GtkEntry. A toi de te renseigner ensuite pour connecter le signal via l'utilisation de la fonction g_signal_connect(...)

Envoyé par
Fredy
Tu ne vas que tester si les symbols sont chiffres. Est-ce que c'est clair ?
Au lieu de tester la présence d'un espace, tu n'as qu'a tester la présence de chiffres ou de lettres selon la façon dont tu prends le probleme

Partager