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 :

Mettre a jour un tableau de GtkEntry dans un signal


Sujet :

GTK+ avec C & C++

  1. #1
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut Mettre a jour un tableau de GtkEntry dans un signal
    Bonsoir,

    j'ai developpe un solveur de Sudoku en C et je me suis lancee dans l'interface graphique en GTK+. Je suis completement debutante et je galere...

    Pour la grille j'ai cree une Table contenant une matrice de GtkEntry qui represente les cases de la grille.
    J'ai cree un menu egalement dans lequel j'aimerai charger un fichier texte pour remplir ma Table.

    J'ai donc cree un signal comme la convention l'indique, avec le gpointer tout ca, il rentre dedans sans probleme, jusque la tout va bien.
    En fait quand je veux juste charger mon fichier texte dans ma structure de grille ca marche tres bien, je passe simplement le pointeur de grille en parametre de ma fonction callback mais plus rien ne marche quand je veux passer plusieurs parametres.
    En fait je voudrai passer en plus de mon pointeur sur grille, la matrice de Gtkentry afin de mettre les valeurs dedans au chargement.

    Mes parametres a passer a la fonction callback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    typedef struct gtk_param {
    		grid *g;
    		GtkWidget **pInput;
    } param;
    Initialisation de ces parametres, de la table, des GtkEntry et du menu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    GtkWidget* Table=NULL;
      	Table = gtk_table_new((*g).nbOfValue,(*g).nbOfValue,true);
      	GtkWidget* pInput[(*g).nbOfValue*(*g).nbOfValue];
     
      	param *p=(param *)malloc(sizeof(param));
      	(*p).g=g;
    	(*p).pInput=pInput;
     
      	gtk_box_pack_start (GTK_BOX (p_main_box), GTK_WIDGET (menu_new (p)), FALSE, FALSE, 0);
    Ma callback et ma mise a jour des valeurs des GtkEntry :
    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
     
    void cb_open (GtkWidget *p_widget, gpointer user_data)
    {
      GtkWidget *p_dialog = NULL;
      p_dialog = gtk_file_chooser_dialog_new ("Ouvrir un fichier", NULL,
                                              GTK_FILE_CHOOSER_ACTION_OPEN,
                                              GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                              GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
                                              NULL);
      if (gtk_dialog_run (GTK_DIALOG (p_dialog)) == GTK_RESPONSE_ACCEPT)
      {
        gchar *file_name = NULL;
     
        file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (p_dialog));
        open_file (file_name, (param *)user_data);
        g_free (file_name), file_name = NULL;
      }
      gtk_widget_destroy (p_dialog);
    }
     
    static void open_file (const gchar *file_name, param *p)
    {
      	/* gros blabla, ouverture fichier, boucle sur chaque case... */
           gtk_entry_set_text(GTK_ENTRY((*p).pInput[nb_case]),"b");
    }
    Il ne me met meme pas le caractere "b" dans mes cases !
    Y a t-il quelque chose que j'ai oublie ???

    Merci beaucoup...

  2. #2
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    J'ai trouve une autre maniere de lire un fichier sur le site :

    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
     
    static void open_file2(const gchar *file_name, param *p)
    {
      g_return_if_fail (file_name && p);
      {
        gchar *contents = NULL;
     
        if (g_file_get_contents (file_name, &contents, NULL, NULL))
        {
          /* Copie de contents dans le GtkTextView */
          gchar *utf8 = NULL;
     
          utf8 = g_locale_to_utf8 (contents, -1, NULL, NULL, NULL);
          int i,j=0;
          for(i=0;i<strlen(utf8);i++) {
          	if(utf8[i]!=' ' && utf8[i]!='+' && utf8[i]!='-'&& utf8[i]!='|' && utf8[i]!='=') {
    			printf("%c",utf8[i]);
    			gtk_entry_set_text(GTK_ENTRY((*p).pInput[j]),&utf8[i]);
    			j++;
    		}
          }
          printf("\n");
          g_free (contents), contents = NULL;
          //gtk_text_buffer_insert (p_text_buffer, &iter, utf8, -1);
          g_free (utf8), utf8 = NULL;
        }
     
      }
    }
    Et l'appli plante des que je rajoute la ligne du gtk_entry_set_text... Mais comment ca marche un GtkEntry a la fin ??

  3. #3
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Bon en fait c'etait un probleme d'allocation de mon tableau GtkWidget **pInput que je ne faisais pas du tout en fait
    Ensuite j'ai utilise uniquement celui de ma structure pour le rajouter a l'interface et il le passe correctement dans ma fonction callback...

    Comme quoi le probleme se situe souvent entre l'ecran et la chaise...

Discussions similaires

  1. Comment mettre a jour une des Entities contenant dans seul model
    Par jérémyp8 dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 09/01/2015, 10h17
  2. Réponses: 0
    Dernier message: 28/03/2011, 09h05
  3. Réponses: 1
    Dernier message: 18/01/2007, 17h27
  4. Réponses: 4
    Dernier message: 01/10/2005, 17h59
  5. Mettre a jour les Parametres dans une requete SQL
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 7
    Dernier message: 31/03/2004, 13h51

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