Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/04/2007, 22:00
Avatar de Instru
Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Re: Ingresar datos en un TXT con GTK+

Bueno, puude ver algo un poco extraño.

Cita:
gtk_signal_connect (GTK_OBJECT (boton), "clicked",GTK_SIGNAL_FUNC (pegar),NULL);
Aquí, al dar click llamas a tu funcion pegar, y no le pasas ningun tipo de argumento.

Por otro la do tienes esto:

Cita:
gtk_signal_connect(GTK_OBJECT(entry),"activate",GT K_SIGNAL_FUNC(pegar),entry);
No se que haga exactamente el evento "activate". Pero no le veo mucho sentido a esta parte.

Practicamente estaá diciendo esto:

Si hago click al boóon ó activo la caja de texto, llamo a la funcion "pegar".
Y pues en realidad lo que quieres es que SÓLO al hacer click al botón se llame a la funcion, asi que deberias quitar el segundo evento.

Por otro lado checa tu funcion pegar:


Cita:
void pegar(GtkWidget *widget,GtkWidget *entry, gpointer data){
char *entry_text;
entry_text= gtk_entry_get_text(GTK_ENTRY(entry));
.
.
*widget es el widget que produjo el evento, pero, entry que es? gpointer es NULL porque tu le pasaste NULL al conectar el evento.

Pero aqui donde indicaste que en realidad entry deberia ser la caja de texto que creaste?
Dónde le pasaste ese argumento?

te recomendaria que usaras el puntero gpointer para hacer una referencia a la caja de texto, algo asi:

Cita:
gtk_signal_connect (GTK_OBJECT (boton), "clicked",GTK_SIGNAL_FUNC (pegar),entry);
Y que tu funcion pegar, quede así.


Cita:
void pegar(GtkWidget *widget, gpointer data){
char *entry_text;
entry_text= gtk_entry_get_text(GTK_ENTRY(data);
FILE *ar;
ar=fopen("archivo.txt","w");
if(ar==NULL){
printf("ERROR");
exit(1);
}
fprintf(ar,"%s\n",entry_text);
fclose(ar);
}
No estoy seguro que los castings esten correcto, pero eso ya te toca a ti corregirlos en caso de que te salte un error.

Saludos