El Thu, 22 de Aug de 2002, a las 10:16:06AM +0200, Faro dijo:
> Perd�n por el OT.
> 
> Me he liado la manta a la cabeza y he decidido meterme de lleno en la
> programaci�n, campo que ten�a pr�cticamente olvidado. He elegido gtk y
> anjuta.

> Como es l�gico me est�n surgiendo muchas dudas.
> 
> La primera es c�mo acceder a las propiedades de un widget desde otro.
> Por ejemplo, cambiar un label al pulsar un bot�n. Hay una funci�n que se
> ejecuta al pulsar el bot�n, pero �c�mo obtengo el puntero al label?
> 
> De momento lo he solucionado con una chapucilla:
> 
>   gtk_signal_connect (GTK_OBJECT (entry1), "changed",
>                       GTK_SIGNAL_FUNC (on_entry1_changed),
>                       label1);
> 
> Es decir, en vez de pasar un puntero nulo, paso como par�metro la
> etiqueta label1. Esto funciona, pero requiere tocar un fichero que dice
> que no lo edite porque es autogenerado por glade. Si hago cambios en el
> interfaz con glade me lo machaca y tengo que volver a hacer el cambio.
> Adem�s, de esa forma no puedo pasar varios widgets. Sospecho que tiene
> que haber un m�todo m�s eficaz y estandar.

Bueno, yo no soy un gran programador en gtk, pero espero ayudarte. En
Glade puedes indicar el dato u objeto a pasar en la funci�n
gtk_signal_connect (en la ventana de propiedades, pesta�a Se�ales).
Respecto a pasar varios datos a la vez, el sistema que yo he visto es
crear una estructura de datos espec�fica y pasar un puntero a dicha
estructura (un array de punteros a objetos o un struct con todos los
datos que necesitas pasar). O puedes usar variables globales (en general
menos recomendable). 

Ultimamente he descubierto el "libglade" que permite trabajar con glade
sin necesidad de generar el c�digo. Trabaja directamente del XML que
guarda el programa y as� se evita uno la "tentaci�n" de modificar el
codigo generado.

> PD: �Conoceis alguna lista que hable de estos temas? Si me podeis enviar
> por privado la forma de suscribirse mejor. No tengo acceso a ninguna
> web.
> 

No, mejor en la lista y as� somos al menos dos que no preguntaremos lo mismo.
   B-)

Responder a