Accueil > Forum > > > > interface graphique GTK
interface graphique GTK
mardi 3 avril 2007 à 17:02:53 |
interface graphique GTK

ifitep84
|
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
#endif
#include
#include "callbacks.h"
#include "interface.h"
#include "support.h"
#include
#include
#include
#include
#include
#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
|
|
mercredi 4 avril 2007 à 11:14:50 |
Re : interface graphique GTK

turnerom
|
Le probleme est à la ligne 16 !
|
|
Cette discussion est classée dans : buffer, text, long, int, gtk
Répondre à ce message
Sujets en rapport avec ce message
saisie de texte gtk [ par sparetime ]
bonsoirj'ai trouvé cette fonction pour faire la saisie du texte inséré dans une zone de texte dans le tutoriel sur gtkvoid saisie(GtkButton *button, G
PB avec de l'ASM dans VC++ 6 .... [ par Foub12 ]
Bonjour...Je programme sous VC++ 6 et j'ai trouvé sur Internet, la fonction suivante mais elle ne marche pas... Il compile parfaitement mais lors de l
Les pointeurs, aide SVP [ par jb60 ]
Bonjour,J'ai fait une source avec plusieurs fichier *.cpp et plusieurs fichiers *.hDans un fichier main.cpp, j'ai créé un pointeur BYTE *LesOctets;Je
pb avec les pointeurs [ par oudkaramla ]
salut, j'ai un problème dont je ne sais l'origine: en fait j'ai définis la fonction : int EnvoyerAvecReponse(char *g_buffer, unsigned long nBytesToWri
compatibilité borland microsoft visual [ par swnnos ]
Bonjour je dois réutiliser un fichier d'en tête fourni par le constructeur d'une platine d'usinage. Seulement ce fichier est compatible borland mais p
ptit probl with:WriteFile() et ReadFile() [ par oudkaramla ]
salut tout le monde,J'ai un petit problem avec WriteFile() et ReadFile().lors de la compilation j'ai les deux suivantes erreures:*********************
Comment forcer le RTS pour une liaison RS232 [ par ancat ]
Bonjourje viens de faire un petit prog (grandement inspire de sources du site) mais je ne saisis pas trop le controle du RTS.Celui ci est-il traite pa
lecture de flux et conversion de données [ par amin79 ]
J'ai un fichier texte "donnees.txt" contenant les données suivantes :1 4 62 7 9 3 2 19 4 8 17où la première colonne désigne le n° d'une tâche, la deux
Traduire long int en tableau de caracteres [ par Shyron ]
Salut,Je cherche comment traduire un long int en un tableau de caracteres de même taille que le nombre de chiffres du long int en C++.
probleme avec printf(%d) [ par jeani763 ]
Mon probleme est assez compliqué :Je voudrais que mon programme compte le nombre de lettres que je lui donne ce qui ce fait grace a la fonction cin ;
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|