Interface graphique GTK

ifitep84 Messages postés 1 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 3 avril 2007 - 3 avril 2007 à 17:02
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 - 4 avril 2007 à 11:14
bonjour à tous

j'ai un ptit souci avec mon programme .en somme j'ai construit une interface graphique sous glade qui utilise GTK . Dans mon interface graphique j'utilise des fenetres du type textview scrollwindows il y en deux, une dans laquelle je saisie le texte et dans l'autre je veux afficher du texte.seulement au moment d'executer mon programme quand je clic sur le button 3 les erreurs suivantes apparaissent :

(projetjp:11096): Gtk-CRITICAL **: gtk_text_view_get_buffer: assertion `GTK_IS_TEXT_VIEW (text_view)' failed


(projetjp:11096): Gtk-CRITICAL **: gtk_text_buffer_get_s(projetjp:11096): Gtk-CRITICAL **: gtk_text_view_get_buffer: assertion `GTK_IS_TEXT_VIEW (text_view)' failed


(projetjp:11096): Gtk-CRITICAL **: gtk_text_buffer_get_start_iter: assertion `GTK_IS_TEXT_BUFFER (buffer)' failed

(projetjp:11096): Gtk-CRITICAL **: gtk_text_buffer_get_end_iter: assertion `GTK_IS_TEXT_BUFFER (buffer)' failed

(projetjp:11096): Gtk-CRITICAL **: gtk_text_buffer_get_text: assertion `GTK_IS_TEXT_BUFFER (buffer)' failed
tart_iter: assertion `GTK_IS_TEXT_BUFFER (buffer)' failed

(projetjp:11096): Gtk-CRITICAL **: gtk_text_buffer_get_end_iter: assertion `GTK_IS_TEXT_BUFFER (buffer)' failed

(projetjp:11096): Gtk-CRITICAL **: gtk_text_buffer_get_text: assertion `GTK_IS_TEXT_BUFFER (buffer)' failed.



voici mon code source:


#ifdef HAVE_CONFIG_H
# include <config.h>
#endif

#include

#include "callbacks.h"
#include "interface.h"
#include "support.h"
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<math.h>
#include<string.h>
#include "gmp.h"


void initialisation_tab(long int *bloc,long int dimension );
void affichage (long int tab[],long int ligne, long int colonne);
void nombre_premier(long int *p_case);
int euler(long int *p_nombre,long int nbralea,long int *p_indice);
void affichage_data(long int data);
void cle_privee(long int *p_indice,long int *p_clepr,long int *p_clepu,long int indicateur_euler);
void cle_public(long int*p_pr,long int *p_indice,long int *p_clepu,long int nbralea);
int Nombre_Alea (int max, int min);

long int premier [1000]; /* tableau de nombre premier */
long int taille_premier=1000; /* taille du tableau premier doit etre ?ale premier[] au dessus*/
long int indicateur_euler=0; /* indicateur euler*/
long int NombreAleatoire=0; /* variable contenant un nbr aleatoire pour choisir P et Q*/
long int max=1000; /* variable min pour choisir case dans le tableau[premier]*/
long int min=168; /* variable max pour choisir case dans le tableau[premier]*/
long int p_q[2]; /* tableau contenant[p;q] calculer a partir de euler*/
long int clepu[2]; /* tableau contenant la clépublic pour codé les données[ne]*/
long int clepr[2]; /* tableau contenant la cléprivé*/
char texte[20000]; /* varariable ou on range le texte */
int textes[20000]; /* variable ou on met le code en code ASCII*/
int texte_code[20000]; /* textes codé*/
int texte_decode[20000]; /* texte décodé*/

void
on_button4_clicked (GtkButton *button,
gpointer user_data)
{
/****************************************************************************************************/
initialisation_tab(premier,taille_premier); /* on initialise le tableau [premier] avec des zéro */

/****************************************************************************************************/
nombre_premier(premier); /* on rempli notre tableau de nbr premier */

/****************************************************************************************************/
NombreAleatoire=Nombre_Alea( max,min); /* cacul d'un nombre aleatoire */

/****************************************************************************************************/
indicateur_euler= euler(premier,NombreAleatoire,p_q);/* calcul indicateur euler on envoie tab[premier] tab[p_q]*/
printf("\n\n");

/****************************************************************************************************/
cle_public(premier,p_q,clepu,NombreAleatoire); /* et tab[p_q] pour n*/

/****************************************************************************************************/
printf("votre clepublic est [n;e] \n"); /* calcul de la clé publique*/
affichage(clepu,1,2); /* on affiche la cle public*/
printf("\n\n");

/****************************************************************************************************/
cle_privee(p_q,clepr,clepu,indicateur_euler); /* calcule de la clé privée*/
printf("votre cleprive est [n;d] \n");
affichage(clepr,1,2); /* on affiche la cle privé*/


GtkWidget * entry = lookup_widget(GTK_WIDGET(button), "entry2");
char output[100];
sprintf(output,"N= %ld E= %ld",clepu[0],clepu[1]);
gtk_entry_set_text(entry, output);

GtkWidget * entrys = lookup_widget(GTK_WIDGET(button), "entry3");
char outputs[100];
sprintf(output,"N= %ld D= %ld",clepr[0],clepr[1]);
gtk_entry_set_text(entrys, output);

}


void on_button3_clicked (GtkButton*button,gpointer user_data)
{
printf("r0\n");
GtkWidget *dialog;
GtkTextBuffer* text_buffer=0;
GtkTextIter start;
GtkTextIter end;
gchar* buf=0;
printf("r1\n");
//On recupere le buffer
text_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW( user_data));
//On recupere l'origine du buffer
printf("r2\n");
gtk_text_buffer_get_start_iter(text_buffer,&start);
//On recupere la fin du buffer
gtk_text_buffer_get_end_iter(text_buffer,&end);

//On copie le contenu du buffer dans une variable
buf=gtk_text_buffer_get_text(text_buffer,&start, &end,TRUE);

//On affiche le texte dans une boite de dialogue.
dialog = gtk_message_dialog_new(NULL,
GTK_DIALOG_MODAL,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
"Votre texte est :\n%s", buf);

gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);

//On libere la memoire
g_free(buf);
}


void
on_button2_clicked (GtkButton *button,
gpointer user_data)
{
gtk_main_quit();
}


/*-----------------------------------------*/
/*programme qui renvoie un nombre aleatoire*/
/*-----------------------------------------*/

/*************************************************************************************************************/
int Nombre_Alea (int max, int min)
{
time_t t1; /* on procede a l'initialisation de la graine pour utilise la fonction ran()*/
time(&t1);
srand((unsigned int)t1);
return min+(int)((max-min+1.)*rand()/(RAND_MAX+1.0)); /*donne 1 nbr aleatoire entre 0 et 1000 ranger ensuite dans NombreALeatoire*/
}
/*************************************************************************************************************/





/*---------------------------------------------------*/
/* programme qui rempli un tableau de nombre premiers*/
/*---------------------------------------------------*/

/**************************************************************************************************************/
void nombre_premier(long int *p_case)
{
long int nombre_test=2; /*declartion debut recherche nbr premier*/
long int diviseur=2;
while(nombre_test!=7920) /*on cherche les nombres premier entre 2 et 100 */
{
while(nombre_test%diviseur!=0 && diviseur0;bloc--) /* on pointe la bonne case dans tab[premier]*/
{p_nombre++;}
p=*p_nombre; /* on met contenu de point par p_nonmbre dans p*/
somme=nbralea+separation; /* on fait la sommme pour voir la condition suivante*/
if(somme>832) /* on regarde si on ne pointe pas en dehors de tab[premier]*/
{ Position_Pointeur=832-nbralea;/* pour une position2 separe de n on regarde case corresponde*/
Position_Pointeur=separation-Position_Pointeur; /*on dertime la bonne csae dans tab[premier]*/

for(bloc=nbralea;bloc>0;bloc--) /* on rénitialise pointeur vers adresse dans tab[premier]*/
{p_nombre--;}
}
else /* sinon on ne fait rien et on passe a la suite*/
{Position_Pointeur=separation;}

for(bloc=Position_Pointeur;bloc>0;bloc--)/* on va cherche contenu dans case 100 du tab[premier]*/
{p_nombre++;}

q=*p_nombre++; /*on range valeur pointé par p_nombre (dans tab[premier]) dans Q*/
*p_indice=p; /* le pointeur remplit le tab[p_q] avec p*/
p_indice++; /* on incremente le pointeur*/
*p_indice=q; /* le pointeur remplit le tab[p_q] avec p*/
resultat=(p-1)*(q-1); /* on calcul l'indicateur*/
return resultat; /* on retourne le resultat */
}
/**************************************************************************************************************/





/*--------------------------------*/
/* programme qui affiche un entier*/
/*--------------------------------*/

/***************************************************************************************************************/
void affichage_data(long int data)
{printf("%ld",data);}
/***************************************************************************************************************/




/*-------------------------------------*/
/* programme qui determine clépublique*/
/*-------------------------------------*/


/*******************************************************************************************************************/
void cle_public(long int*p_pr,long int *p_indice,long int *p_clepu,long int nbralea)
{
long int n=0;
long int p=0;
long int q=0;
long int e=0;
int bloc=0;

p=*p_indice; /* on recupere la valeur de p dans le tableau[p_q]*/
p_indice++; /* on incremente le pointeur pour alle a la case suivante */
q=*p_indice; /* on recupere la valeur de q dans le tableau[p_q]*/
n=p*q; /* on calule le produit N=P*Q*/
*p_clepu=n; /* on range la valeur de n dans le tab[clepu]*/
for(bloc=nbralea-50;bloc>0;bloc--) /* on selectionne un nombre au hazard dans tab [premier]*/
{p_pr++;}
e=*p_pr;
p_clepu++;
*p_clepu=e; /*puis on le range dans [clepu] comme valeur de e*/
}
/************************************************************************************************************/




/*------------------------------------*/
/* programme qui calcule la cléprivé*/
/*------------------------------------*/

/********************************************************************************************************/
void cle_privee(long int *p_indice,long int *p_clepr,long int *p_clepu,long int indicateur_euler)
{
long int n=0;
long int p=0;
long int q=0;

long int a=0;
long int b=0;
long int c=0;

mpz_t d;
mpz_t e;
mpz_t f;

mpz_init_set_str (d, "0", 10);/* on initialise la variable d*/
mpz_init_set_str (e, "0", 10);/* on initialise la variable e*/
mpz_init_set_str (f, "0", 10);/* on initialise la variable f*/


p=*p_indice; /* on calcul n et on le met dans clepr*/
p_indice++;
q=*p_indice;
n=p*q;
*p_clepr=n;


a=indicateur_euler; /* on récupere la valeur d'euler */
mpz_set_ui(f,a); /* on transforme cette valeur en un nbr GMP*/
++p_clepu; /* on recupere e dans [clepu]*/
b=*p_clepu;
mpz_set_ui(e,b); /* et on transforme cette valeur en un nbr GMP*/
mpz_invert(d,e,f); /* on dertermine tel que D= 1/(E MOD F)*/
c=mpz_get_ui(d); /* on retransforme z en integer m*/
++p_clepr; /* on place d dans [clepr]*/
*p_clepr=c;
}
/***************************************************************************************************



merci de votre aide à tous </string.h></math.h></time.h></stdio.h></stdlib.h></config.h>

1 réponse

turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
4 avril 2007 à 11:14
Le probleme est à la ligne 16 !
0
Rejoignez-nous