[C con Clase] Ayuda, objetos de Glade en C y duda

D1e6o! diegogeid en gmail.com
Mie Oct 13 13:56:45 CEST 2010


Buenas, aprovecho antes de enviarles mi duda para felicitarlos por la
lista y el nivel que presenta, ya que en general veo grandes
respuestas de su parte.

Tengo un problema y tras intentos no logro resolverlo. Deseo comenzar
a utilizar Glade para crear programas Gtk por su aparente practicidad.
Logro crear una ventana y ejecutarla, así como también asociar
funciones a botones y demás, el problema se genera cuando deseo
interactuar con ellos y sus propiedades

Mas específicamente: Cree un botón desde glade con el nombre "Acerca
de" para estudiar como se utiliza y un diálogo predefinido de "acerca
de". Coloco en la señal clicked del botón un manipulador llamado
"AcercaDe", el cual es correctamente llamado desde C cuando lo compilo
y demás.
Ahora tengo 2 dudas del método para interactuar con los widgets:
1 - Como hago para que, desde la función que es llamada por la señal
(una ves compilada y demás), precisamente, la función void AcercaDe
(GtkObject *object, gpointer user_data), abra el diálogo AcercaDe que
se encuentra en el archivo principal.glade?
2 - Como hago para interactuar desde mi programa en C con los objetos?
Por ejemplo, cambiarle el texto a un cuadro de texto o el nombre a un
botón?

Muchas gracias desde ya, dejo el programa con el cual me encuentro
experimentando que es muy básico pero a find e dejar algo conciso o
para quien quiera probar.

#include <gtk/gtk.h>

GtkBuilder      *builder;

void on_window_destroy (GtkObject *object, gpointer
user_data)//conectado con un boton llamado salir
{
    gtk_main_quit ();
}

void AcercaDe (GtkObject *object, gpointer user_data)
{
//rutina para abrir el diálogo acerca de
}

int main (int argc, char *argv[])
{

    GtkWidget       *window;

    gtk_init (&argc, &argv);

    builder = gtk_builder_new ();
    gtk_builder_add_from_file (builder, "Principal.glade", NULL);
    window = GTK_WIDGET (gtk_builder_get_object (builder, "VentPrinc"));
    gtk_builder_connect_signals (builder, NULL);

    g_object_unref (G_OBJECT (builder));

    gtk_widget_show (window);
    gtk_main ();

    return 0;
}


Saludos y muchas gracias nuevamente!




Más información sobre la lista de distribución Cconclase