Bueno muchachos os cuento algunos avances y nuevos problemas con
respecto a Gazpacho y las librerías GTK+.
(disculpen si resulto un poco pesado ya, pero como dicen por mi barrio "todos
lo pesados llegan a Roma"; ... ésto me lo acabo de inventar ...).
Hasta ahora utilizar Gazpacho me ha resultado bastante más fácil de lo que yo
esperaba.
Para hacer referencia a un botón sólo hay que poner el código:
****************************************************************************
GtkWidget *button1;
GladeXML *xml;
//Conectamos con la interfaz
xml = glade_xml_new("saludo3.glade", NULL, NULL);
glade_xml_signal_autoconnect(xml);
//Conectamos con el botón button1
button1 = glade_xml_get_widget (xml, "button1");
********************************************************************************
Para controlar el evento de cuando se pulsa el botón:
********************************************************************************
g_signal_connect (G_OBJECT (button1), "clicked", G_CALLBACK
(on_button1_clicked), NULL);
void on_button1_clicked(){
printf("Has pulsado el boton 1\n");
}
Y cuando pulses el botón que con Gazpacho lo has llamado button1, se imprimirá
en línea de comandos:
$ Has pulsado el boton 1
**************************************************************************************************
Lo de antes parece una chorrada pero a partir de aquí se te abre un mundo, ya
que en lugar de hacer una función que imprima "Has pulsado el boton 1", puedes
hacer cosas bastante más complejas.
AHORA MI NUEVO PROBLEMA ES EL SIGUIENTE:
En la interfaz tengo un botón de estos que es para seleccionar archivos, en
concreto se llaman "filechooserbutton".
Parece que hago referencia a él correctamente:
GtkWidget *filechooserbutton1;
filechooserbutton1 = glade_xml_get_widget (xml, "filechooserbutton1");
Pero ahora lo que pretendo es obtener el nomrbre del fichero que selecciona el
usuario.
He estado probando varios métodos que vienen en el programa Gazpacho.
"add"
"show"
"button-press-event"
"client-event"
"event"
El único que he conseguido hacer funcionar es "event", de la siguiente forma:
g_signal_connect (G_OBJECT (filechooserbutton1), "event",
G_CALLBACK(on_filechooserbutton1_event), NULL);
Pero lo único que hace "event", es ejecutarse cada vez que se mueve el ratón.
¿Alguno de ustedes sabe como recuperar el nombre del archivo que selecciona el
cliente con el botón filechooserbutton1?
Un saludo, gracias por leerlo, no obstante seguiremos investigando.
Aprovecho para deciros que si os quereis instalar OpenCV en Ubuntu, esta receta
va al pelo:
http://dircweb.king.ac.uk/reason/opencv_cvs.php#Dapper
/******************************************************************/
Las mejores cosas de este mundo suelen ser gratis.
----------------------------------------> From: [EMAIL PROTECTED]> To:
[email protected]> Date: Mon, 1 Oct 2007 22:43:21 +0000> Subject: Re:
[CRySoL] Glade, or Gazpacho: that is the question>>> Hola a todos, os cuento el
último problemilla que tengo con Gazpacho. Verán el código que tengo para
conectar con la interfaz que he creado es el siguiente:>>>> #include> #include>
#include> #include>>>> GtkWidget * prueba_crear_main(void);> void
on_window1_destroy();>>>>
/*********************************************************************************************>
* Funcion principal main>
*********************************************************************************************>>
int main(int argc, char *argv[]) {> GtkWidget* window_main;>>>>
gtk_init(&argc, &argv);>> window_main = prueba_crear_main();>> /* Iniciar el
ciclo principal */> gtk_main();>> return 0;> }>>
/*****************************************************************************************>
* fin del main>
*****************************************************************************************/>>>>
/*******************************************************************************>
* CARGAMOS LA VENTANA>
*******************************************************************************>>
GtkWidget * prueba_crear_main(void){> GladeXML *xml;> GtkWidget *window;>> xml
= glade_xml_new("saludo3.glade", NULL, NULL);>
glade_xml_signal_autoconnect(xml);>> window = glade_xml_get_widget (xml,
"principal");>>>> window = gtk_window_new (GTK_WINDOW_TOPLEVEL);>
gtk_window_set_default_size (GTK_WINDOW (window), 800, 500);>> g_signal_connect
(window, "destroy",G_CALLBACK (on_window1_destroy), NULL);>>> return window;>
}>>>>
/*****************************************************************************>
* Funcion que al pinchar salir en la ventana se ejecuta y fuerza la salida del
programa>
*****************************************************************************>>
void on_window1_destroy(){> gtk_main_quit();>> }>>>>> Lo compilo como
siempre:>> $ gcc -o aver2 aver.c `pkg-config --cflags --libs gtk+-2.0
libglade-2.0`>> ¡ y guay!, me crea el ejecutable.>> entonces yo hago:>> $
./aver2>> y vale la ventana me la muestra bien, pero en línea de comandos me
sale la siguiente mierda:>> (aver2:9788): libglade-WARNING **: could not find
signal handler 'on_window1_destroy'.>>> Es decir como que no me reconoce el
método "on_window1_destroy".>> Vale, alguno que haya utilizado glade, glade-3 o
Gazpacho, podría pensar que se me ha olivado ponerlo en el apartado de señales
de la ventana principal "window1", pero no, justo en:>> -GtkObject> - destroy
on_window1_destroy>> (Esto está en el programa Gazpacho)>>> He estado buscando
por ahí, y he leido que quizá me podría faltar la librería:>> #include>> pero
no creo que este sea el problema, ya que a mi me da el problema con libglade.>
el enlace está aquí:>>
http://listas.hispalinux.es/pipermail/gnome-libros/2006-June/000852.html>>> ¿A
alguno de ustedes le ha pasado esto alguna vez?>> Venga un saludo, no obstante
seguiré investigando.>>>>
*******************************************************************************>
"Por mucho que camine nunca alcanzaré la utopía, pero al menos para eso me
sirve, para caminar" eslogan de una manifestación ANTIglobalización... si ,
esos locos dando gritos que nos sacan en los telediarios a la hora de comer ...
. ¿Acaso un loco escribiría una frase como la anterior? ...>>>>>>>>>>>>>>>>>>
----------------------------------------> From: [EMAIL PROTECTED]> To:
[email protected]> Date: Sun, 30 Sep 2007 18:25:22 +0000> Subject: Re:
[CRySoL] Glade, or Gazpacho: that is the question>>> Os cuento alguno de los
últimos avances con Gazpacho.> Al igual que glade o glade-3, Gazpacho genera
archivos .glade (esto es la interfaz que creas y luego guardas).>> Hasta ahora
sólo sabía cargar la interfaz (el archivo .glade ), dese Python, el código es
el siguiente:> (El archivo en mi caso se llama saludo3.glade)>>> #Importamos
las librerias Gtk necesarias> import gtk> from gtk import glade>> #Creamos
nuestra clase principal> class saludo:> def __init__ (self):>> #Cargamos el
archivo .glade> self.xml = glade.XML("saludo3.glade", None, None)>
self.xml.signal_connect("on_principal_destroy",lambda w: gtk.main_quit())>>>
#Iniciamos la aplicacion> if __name__ == "__main__":> c = saludo()>
gtk.main()>>> Para compilar:>> $ python este_archivo.py>>>>> Pero esta tarde
también he aprendido a cargarla desde C, el código es el sigiuente:>> #include>
#include>>> int main(int argc, char *argv[]) {> GladeXML *xml;>>
gtk_init(&argc, &argv);>> /* Cargar la interfaz de usuario */> xml =
glade_xml_new("saludo3.glade", NULL, NULL);>> /* Conectar las señales de la
interfaz */> glade_xml_signal_autoconnect(xml);>> /* Iniciar el ciclo principal
*/> gtk_main();>> return 0;> }>>> Para compilar:>> $ gcc -o este_archivo
este_archivo.c `pkg-config --cflags --libs gtk+-2.0 libglade-2.0`>
$./este_archivo>>>>> la librería libglade, te permite a partir del archivo XML
que define una interfaz creada con glade generarla en tiempo de ejecución, sin
la necesidad de código en C generado. Desde entonces, ya no es recomendable
usar el código generado por glade, y se da preferencia al uso de esta
librería.>>> Por ahora nada màs, ahora toca ponerse a controlar los eventos de
los botones y todo eso.>> Un saludo.>>>>>>>>>
----------------------------------------> From: [EMAIL PROTECTED]> To:
[email protected]> Date: Sun, 30 Sep 2007 10:44:20 +0000> Subject: Re:
[CRySoL] Glade, or Gazpacho: that is the question>>>>>>>>Puedes subirlo como
receta.> Un saludo!>> Hola David!, pues si, al final me va a tocar ponerlo como
receta, aunque más que una receta va ser un mini libro de cocina (son unas 20
caras), pero en fin, todo sea para que le pueda ser útil a alguien.>> Un
saludo.>>
**************************************************************************************************>
Siempre pongo citas, pero lo cierto es que hace tiempo que no tengo una.>>>>>
El sáb, 29-09-2007 a las 23:20 +0000, manuel david jimenez patiño> escribió:>>
Oye muchachos os estaba adjuntando un manual de introducción a glade, glade-3 y
Gazpacho,que había estado realizando estos días. pero parece ser que ocupa más
de 100 KB y no me deja adjuntarlo.>>>> He mirado la sección de manuales en
Crysol, pero creo que yo no lo puedo subir ..., así que de momento mi manual
está aquí inutilizado en mi escritorio, que rabia ... .>>>> Un saludo.>>>>
*******************************************************************************************************
Anímense hombre, ¡que todos los días toca! ..., toca ver el cielo, toca
aprender, toca reir, toca luchar ... .¿Existe lotería mejor?>>>>>>>>>>
----------------------------------------> From: [EMAIL PROTECTED]> To:
[email protected]> Date: Sun, 23 Sep 2007 11:25:32 +0000> Subject: Re:
[CRySoL] Glade, or Gazpacho: that is the question>>> Vale. Voya ver que soy
capaz de hacer estas semanas.>> Un saludo.>>> ________________________________>
Date: Sun, 23 Sep 2007 02:23:09 +0200> From: [EMAIL PROTECTED]> To: [EMAIL
PROTECTED]> Subject: Re: [CRySoL] Glade, or Gazpacho: that is the question> CC:
[email protected]>> Si haces un tuto, cuelga la receta en
www.crysol.org> Un saludo.> El día 22/09/07, manuel david jimenez patiño <
[EMAIL PROTECTED]> escribió:>>
_________________________________________________________________> Prueba
algunos de los nuevos servicios en línea que te ofrece Windows Live Ideas: tan
nuevos que ni siquiera se han publicado oficialmente todavía.>
http://ideas.live.com> _______________________________________________> CRySoL
mailing list> http://crysol.inf-cr.uclm.es/>
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol>>>>
_________________________________________________________________>> Busca desde
cualquier página Web con una protección excepcional. Consigue la Barra de
herramientas de Windows Live hoy mismo y GRATUITAMENTE.>>
http://www.toolbar.live.com>> _______________________________________________>>
CRySoL mailing list>> http://crysol.inf-cr.uclm.es/>>
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol>>>
_________________________________________________________________> ¡Ya está
aquí Windows Live Spaces! Ahora podrás crear fácilmente tu propio sitio Web.>
http://spaces.live.com/signup.aspx>
_______________________________________________> CRySoL mailing list>
http://crysol.inf-cr.uclm.es/>
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol>>
_________________________________________________________________> ¡Ya está
aquí Windows Live Spaces! Ahora podrás crear fácilmente tu propio sitio Web.>
http://spaces.live.com/signup.aspx>
_______________________________________________> CRySoL mailing list>
http://crysol.inf-cr.uclm.es/>
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol>>
_________________________________________________________________> ¡Ya está
aquí Windows Live Spaces! Ahora podrás crear fácilmente tu propio sitio Web.>
http://spaces.live.com/signup.aspx>
_______________________________________________> CRySoL mailing list>
http://crysol.inf-cr.uclm.es/>
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
_______________________________________________
CRySoL mailing list
http://crysol.inf-cr.uclm.es/
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol