Hola amigos:
Les voy a plantear mi problema a ver si son capaces de ayudarme.
Estoy usando GTK 1.2 sobre UNIX para abrir una ventana en la que muestre un texto cogido desde un fichero. Este texto es editable y como tal permite su modificacion. Ahora bien, estoy intentando guardar en un archivo el texto editado, pero no soy capaz de hacerlo. He leido foros y no hay manera. Les pongo aqui el codigo de la funcion y como invoco a esa funcion desde un boton. De momento esta funcion solo mostrara el texto por pantalla, luego yo ya me encargo de escribirlo en un fichero, ya que eso no tiene nada que ver con GTK.
Muchas gracias a todos y a ver si entre todos podemos sacar la solucion.
Tengo que decir que soy un inexperto total en esto de GTK, pero quiero agregarle un toque grafico a mis aplicacion. Se que la version es muy antigua pero por restricciones es la que tengo que utlizar.
GtkWidget *text;
/* Crear el widget GtkText */
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), TRUE);
gtk_table_attach (GTK_TABLE (table), text, 0, 1, 0, 1,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (text);
/* Codigo que crea el boton guardar y el que llama a la funcion mostrar_texto */
save = gtk_button_new_with_label ("Guardar");
gtk_signal_connect (GTK_OBJECT (save), "clicked",
GTK_SIGNAL_FUNC(mostrar_texto),GTK_TEXT(text));
/* ¿es probable que el fallo este en GTK_TEXT(text)????*/
gtk_box_pack_start (GTK_BOX (box2), save, TRUE, TRUE, 0);
GTK_WIDGET_SET_FLAGS (save, GTK_CAN_DEFAULT);
gtk_widget_grab_default (save);
gtk_widget_show (save);
/* Codigo de la funcion que muestra el texto del widget text por pantalla*/
void mostrar_texto (GtkText *text)
{
gint inicio=0;
gint final=-1;
gchar *buffer;
buffer=gtk_editable_get_chars(GTK_EDITABLE(text),inicio,final);
printf ("This is my text %s\n", buffer);
g_free(buffer);
}
Les pongo aqui el error que me genera al pulsar el boton de guardar
Gtk-WARNING **: invalid cast from `GtkButton' to `GtkEditable'
Gtk-CRITICAL **: file gtkeditable.c: line 489 (gtk_editable_get_chars): assertion `GTK_IS_EDITABLE (editable)' failed.
Segmentation Fault (core dumped)