Bonjour à tous !!

Je développe actuellement une popup contenant une gtkEntry et trois boutons afin de développer un clavier virtuel. Je pensais que cela allait etre simple mais je me confronte à des erreurs non attendues.

La methode gtk_entry_set_text () ne semble pas mettre à jour le texte contenu dans ma gtk entry. Enfin je vois pas le texte modifié pour etre plus précis. Par contre lorsque je teste la nouvelle valeur de ma gtkentry elle me retourne la valeur attendue.
Pourriez m'indiquer une methode permettant de faire un "refresh" afin d'afficher la nouvelle valeur de ma gtkentry.

Voici le code ci cela peut aider:

// Interface
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
 
/*
 * DO NOT EDIT THIS FILE - it is generated by Glade.
 */
 
#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif
 
#include <sys/types.h>
#include <sys/stat.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <string.h>
#include <stdio.h>
 
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
 
#include "callbacks.h"
#include "interface.h"
#include "support.h"
 
#define GLADE_HOOKUP_OBJECT(component,widget,name) \
  g_object_set_data_full (G_OBJECT (component), name, \
    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
 
#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
  g_object_set_data (G_OBJECT (component), name, widget)
 
GtkWidget*
create_window1 (void)
{
  GtkWidget *window1;
  GtkWidget *vbox1;
  GtkWidget *entry1;
  GtkWidget *hbuttonbox1;
  GtkWidget *btn_A;
  GtkWidget *btn_B;
  GtkWidget *btn_C;
 
  window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (window1), _("window1"));
 
  vbox1 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox1);
  gtk_container_add (GTK_CONTAINER (window1), vbox1);
 
  entry1 = gtk_entry_new ();
  gtk_widget_show (entry1);
  gtk_box_pack_start (GTK_BOX (vbox1), entry1, FALSE, FALSE, 0);
  gtk_entry_set_text (GTK_ENTRY (entry1), _("test"));
  gtk_entry_set_width_chars (GTK_ENTRY (entry1), 50);
 
  hbuttonbox1 = gtk_hbutton_box_new ();
  gtk_widget_show (hbuttonbox1);
  gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, TRUE, TRUE, 0);
 
  btn_A = gtk_button_new_with_mnemonic (_("A"));
  gtk_widget_show (btn_A);
  gtk_container_add (GTK_CONTAINER (hbuttonbox1), btn_A);
  GTK_WIDGET_SET_FLAGS (btn_A, GTK_CAN_DEFAULT);
 
  btn_B = gtk_button_new_with_mnemonic (_("B"));
  gtk_widget_show (btn_B);
  gtk_container_add (GTK_CONTAINER (hbuttonbox1), btn_B);
  GTK_WIDGET_SET_FLAGS (btn_B, GTK_CAN_DEFAULT);
 
  btn_C = gtk_button_new_with_mnemonic (_("C"));
  gtk_widget_show (btn_C);
  gtk_container_add (GTK_CONTAINER (hbuttonbox1), btn_C);
  GTK_WIDGET_SET_FLAGS (btn_C, GTK_CAN_DEFAULT);
 
  g_signal_connect_swapped ((gpointer) btn_A, "clicked",
                            G_CALLBACK (on_btn_A_clicked),
                            GTK_OBJECT (entry1));
  g_signal_connect_swapped ((gpointer) btn_B, "clicked",
                            G_CALLBACK (on_btn_B_clicked),
                            GTK_OBJECT (entry1));
  g_signal_connect_swapped ((gpointer) btn_C, "clicked",
                            G_CALLBACK (on_btn_C_clicked),
                            GTK_OBJECT (entry1));
 
  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1");
  GLADE_HOOKUP_OBJECT (window1, vbox1, "vbox1");
  GLADE_HOOKUP_OBJECT (window1, entry1, "entry1");
  GLADE_HOOKUP_OBJECT (window1, hbuttonbox1, "hbuttonbox1");
  GLADE_HOOKUP_OBJECT (window1, btn_A, "btn_A");
  GLADE_HOOKUP_OBJECT (window1, btn_B, "btn_B");
  GLADE_HOOKUP_OBJECT (window1, btn_C, "btn_C");
 
  return window1;
}

// Callback
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif
 
#include <gtk/gtk.h>
 
#include "callbacks.h"
#include "interface.h"
#include "support.h"
 
 
void
on_btn_A_clicked                       (GtkButton       *button,
                                        gpointer         user_data)
{
	gchar *sText;
	gchar *sText2;
 
	sText=gtk_entry_get_text(GTK_ENTRY(button));
	strcat (sText,"A");
	gtk_entry_set_text (GTK_ENTRY(button),sText);
	sText2=gtk_entry_get_text(GTK_ENTRY(button));
}
 
 
void
on_btn_B_clicked                       (GtkButton       *button,
                                        gpointer         user_data)
{
 
}
 
 
void
on_btn_C_clicked                       (GtkButton       *button,
                                        gpointer         user_data)
{
 
}

Par avance merci.

Je pose une autre question maintenant pour que vous ayez le temps d'y répondre: Comment peut-on insérer un caractère au sein du texte de ma gtkentry en fonction de la position du curseur dans cette gtkEntry.
Je pense qu'il va yavoir une perte de focus et cela risque d'engendrer un problème.

Voilà ! Merci par avance