• Sábado 4 de Mayo de 2024, 10:23

Autor Tema:  Gtk 1.2 En Unix  (Leído 1720 veces)

pescadofresco

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Gtk 1.2 En Unix
« en: Jueves 16 de Noviembre de 2006, 21:01 »
0
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.

Código: Text
  1.  
  2.  GtkWidget *text;
  3.  
  4. /* Crear el widget GtkText */
  5.   text = gtk_text_new (NULL, NULL);
  6.   gtk_text_set_editable (GTK_TEXT (text), TRUE);
  7.   gtk_table_attach (GTK_TABLE (table), text, 0, 1, 0, 1,
  8.                     GTK_EXPAND | GTK_SHRINK | GTK_FILL,
  9.                     GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
  10.   gtk_widget_show (text);
  11.  
  12.  

Código: Text
  1.  
  2. /* Codigo que crea el boton guardar y el que llama a la funcion mostrar_texto */
  3.  save = gtk_button_new_with_label ("Guardar");
  4.   gtk_signal_connect (GTK_OBJECT (save), "clicked",
  5.                       GTK_SIGNAL_FUNC(mostrar_texto),GTK_TEXT(text));
  6.  
  7. /* ¿es probable que el fallo este en GTK_TEXT(text)????*/
  8.  
  9.  
  10.   gtk_box_pack_start (GTK_BOX (box2), save, TRUE, TRUE, 0);
  11.   GTK_WIDGET_SET_FLAGS (save, GTK_CAN_DEFAULT);
  12.   gtk_widget_grab_default (save);
  13.   gtk_widget_show (save);
  14.  


Código: Text
  1.  
  2. /* Codigo de la funcion que muestra el texto del widget text por pantalla*/
  3. void mostrar_texto (GtkText *text)
  4. {
  5.  
  6.   gint inicio=0;
  7.   gint final=-1;
  8.   gchar *buffer;
  9.  
  10.   buffer=gtk_editable_get_chars(GTK_EDITABLE(text),inicio,final);
  11.   printf ("This is my text %s\n", buffer);
  12.  
  13.   g_free(buffer);
  14.  
  15. }
  16.  
  17.  

Código: Text
  1.  
  2. Les pongo aqui el error que me genera al pulsar el boton de guardar
  3.  
  4.  
  5. Gtk-WARNING **: invalid cast from `GtkButton' to `GtkEditable'
  6.  
  7. Gtk-CRITICAL **: file gtkeditable.c: line 489 (gtk_editable_get_chars): assertion `GTK_IS_EDITABLE (editable)' failed.
  8. Segmentation Fault (core dumped)
  9.  
  10.  
  11.  

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Gtk 1.2 En Unix
« Respuesta #1 en: Jueves 16 de Noviembre de 2006, 21:12 »
0
Gtk 1.2, a ver... seriam mejor Gtk+ pero bueno.

http://www.gtk.org/tutorial1.2/gtk_tut-14.html#ss14.4

Nunca buscan lo sufisiente, no?
 :rolleyes:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Gtk 1.2 En Unix
« Respuesta #2 en: Jueves 16 de Noviembre de 2006, 21:13 »
0
Ahh, si, ejecuta gtk-demo que tiene muchos ejemplos que te pueden serbir de algo
 :hola:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

pescadofresco

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Gtk 1.2 En Unix
« Respuesta #3 en: Jueves 16 de Noviembre de 2006, 22:22 »
0
Muchas gracias por la pronta respuesta su. Pero te tengo que decir que esa pagina con esos ejemplos ya la tengo muy mirada y vista. De hecho, el codigo viene de esa misma pagina. Pero yo le quiero añadir la funcion de guardar el texto que se haya modificado en la ventana en un fichero de texto. Eso es lo que yo quiero, todo lo demas ya esta hecho en el ejemplo.

Gracias y a ver si alguien me puede ayudar   :comp:

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Gtk 1.2 En Unix
« Respuesta #4 en: Jueves 16 de Noviembre de 2006, 23:06 »
0
Cita de: "pescadofresco"
Muchas gracias por la pronta respuesta su. Pero te tengo que decir que esa pagina con esos ejemplos ya la tengo muy mirada y vista. De hecho, el codigo viene de esa misma pagina. Pero yo le quiero añadir la funcion de guardar el texto que se haya modificado en la ventana en un fichero de texto. Eso es lo que yo quiero, todo lo demas ya esta hecho en el ejemplo.

Gracias y a ver si alguien me puede ayudar   :comp:
Entonces es cuestion de referencias...
En Perl se hace algo como esto (para tomar el texto)
Código: Text
  1.   my $text = $input->get_buffer->get_text(
  2.     $input->get_buffer->get_start_iter,
  3.     $input->get_buffer->get_end_iter,
  4.     0,
  5.   );
  6.   chomp($text);
  7.   open(DL, "+>texto") or die "Can not create texto\n";
  8.   print DL "$text" or die "Error $!\n";
  9.   close DL;
  10.  
http://developer.gnome.org/doc/API/2.0/gtk...TextBuffer.html
Ahi encuentras el equivalente, creo :whistling:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

pescadofresco

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Gtk 1.2 En Unix
« Respuesta #5 en: Jueves 16 de Noviembre de 2006, 23:13 »
0
Muchisimas gracias su por toda la informacion que me esta dando.Me pongo a mirarlo de inmediato, pero tengo un problema. Todas estas funciones trabajan sobre un buffer. Yo lo que necesitaria es coger el texto de Text Widget y ahi ya manipularlo donde sea...

DE todas formas hare pruebas y mañana os cuento si ha habido suerte
Muchas gracias!

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Gtk 1.2 En Unix
« Respuesta #6 en: Jueves 16 de Noviembre de 2006, 23:18 »
0
Cita de: "pescadofresco"
Muchisimas gracias su por toda la informacion que me esta dando.Me pongo a mirarlo de inmediato, pero tengo un problema. Todas estas funciones trabajan sobre un buffer. Yo lo que necesitaria es coger el texto de Text Widget y ahi ya manipularlo donde sea...

DE todas formas hare pruebas y mañana os cuento si ha habido suerte
Muchas gracias!
Es que asi se trabaja en Gtk con el TextView, todo es por medios de buffers.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Gtk 1.2 En Unix
« Respuesta #7 en: Jueves 16 de Noviembre de 2006, 23:43 »
0
supongo que GTK 1.2 trabaja como GTK+, entonces cuando usas un TextView lo que haces es decirle de
que TextBuffer queres que muestre la informacion (trabaja con MVC), lo que tenes que hacer es un
get_text con el iter_start y el iter_end, no tengo la referencia a mano pero esa es la idea,
eso te va a devolver el texto.

pescadofresco

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Gtk 1.2 En Unix
« Respuesta #8 en: Lunes 20 de Noviembre de 2006, 12:46 »
0
Muchas gracias a todos...

Todo funcionando.... :kicking:  :kicking: