IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Clavier virtuel + gtk + C + popup


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut Clavier virtuel + gtk + C + popup
    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

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Pour la première question j'ai résolu mon problème en utlisant la fonction gtk_editable_insert_text() code ci-dessous

    //callback
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void
    on_btn_A_clicked                       (GtkButton       *button,
                                            gpointer         user_data)
    {
    	const gchar *sText;
    	gint lg;
     
    	sText=gtk_entry_get_text(GTK_ENTRY(button));
    	lg=(strlen(sText)+1);
    	gtk_editable_insert_text(GTK_EDITABLE(button),"A",lg,&lg);
    }

    La seconde question reste d'actualité !!!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Finalement je suis pas si mauvais que cela J'ai tout trouvé seul.

    Pour la dernière question, il faut jouer avec les fonctions de la classe GtkEditable.

    un exemple :
    Code : 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
     
    #ifdef HAVE_CONFIG_H
    #  include <config.h>
    #endif
     
    #include <gtk/gtk.h>
     
    #include "callbacks.h"
    #include "interface.h"
    #include "support.h"
     
    gint position=0;
     
    void
    on_btn_A_clicked                       (GtkButton       *button,
                                            gpointer         user_data)
    {
    	const gchar *sText;
    	gint lg;
     
    	sText=gtk_entry_get_text(GTK_ENTRY(button));
    	lg=(strlen(sText)+1);
    	gtk_editable_insert_text(GTK_EDITABLE(button),"A",1,&position);
    	gtk_editable_set_position (GTK_EDITABLE(button),lg);
    	position=gtk_editable_get_position (GTK_EDITABLE(button));
    }
     
     
    void
    on_btn_B_clicked                       (GtkButton       *button,
                                            gpointer         user_data)
    {
    	const gchar *sText;
    	gint lg;
     
    	sText=gtk_entry_get_text(GTK_ENTRY(button));
    	lg=(strlen(sText)+1);
    	gtk_editable_insert_text(GTK_EDITABLE(button),"B",1,&position);
    	gtk_editable_set_position (GTK_EDITABLE(button),lg);
    	position=gtk_editable_get_position (GTK_EDITABLE(button));
    }
     
     
    void
    on_btn_C_clicked                       (GtkButton       *button,
                                            gpointer         user_data)
    {
    	const gchar *sText;
    	gint lg;
     
    	sText=gtk_entry_get_text(GTK_ENTRY(button));
    	lg=(strlen(sText)+1);
    	gtk_editable_insert_text(GTK_EDITABLE(button),"C",1,&position);
    	gtk_editable_set_position (GTK_EDITABLE(button),lg);
    	position=gtk_editable_get_position (GTK_EDITABLE(button));
    }
     
     
    gboolean
    on_entry1_focus_out_event              (GtkWidget       *widget,
                                            GdkEventFocus   *event,
                                            gpointer         user_data)
    {
        position=gtk_editable_get_position (GTK_EDITABLE(widget));
        return FALSE;
    }
    Voilà !! cela peut toujours servir .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. clavier virtuel sur Formulaire
    Par db48752b dans le forum IHM
    Réponses: 9
    Dernier message: 01/03/2017, 11h30
  2. raccourcis clavier sur le menu popup d'un TMemo
    Par rezuss dans le forum Delphi
    Réponses: 6
    Dernier message: 11/10/2006, 16h42
  3. Lancement du clavier virtuel
    Par rzayani dans le forum Windows
    Réponses: 1
    Dernier message: 21/08/2006, 16h16
  4. Programmer un clavier virtuel
    Par juvamine dans le forum Windows
    Réponses: 1
    Dernier message: 30/07/2006, 17h47
  5. Clavier virtuel
    Par ouquoi dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2006, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo