Bueno...lo he logrado !!

Me faltaba describir el CellLayout...en donde se indica cual sera el campo a
mostrar...
(fuente:
https://stage.maemo.org/svn/maemo/projects/haf/trunk/gtk+/tests/testcombo.c)

Ahora lo q me faltaria para cerrar el tema es COMO DEMONIOS hago para
obtener la data asociada a la fila seleccionada cada vez que cambia el valor
del Combo...

A quien tenga ganas de ayudarme, mas que agradecido....=)

Aca paso el codigo que tengo hasta ahora:

#include <gtk/gtk.h>
#include <glib/gprintf.h>

enum {
  COLUMN_STRING,
  COLUMN_INT,
  N_COLUMNS
};

void combo_selected_item(GtkWidget *widget) {

  /*
*************************************************************************
   COMO HAGO PARA OBTENER LA DATA ASOCIADA AL ITEM SELECCIONADO ???????????
  *************************************************************************
*/

  g_printf("Item Changed...\n");
  fflush(stdout);
}


int combobox_maxx(int argc, char **argv) {

    GtkWidget * ventana;
    GtkWidget * combo;

    GtkListStore *list_store;
    GtkTreeIter iter;
    GtkCellRenderer *renderer;

    gtk_init(&argc, &argv);

    /*
     * Creamos la lista para el ComboBox con los nombres de Meses
     * y un entero asociado que indica los dias que tiene cada mes
     *
     * */
    list_store = gtk_list_store_new (N_COLUMNS,
                                     G_TYPE_STRING,
                                     G_TYPE_INT);

    gtk_list_store_append (list_store, &iter);
    gtk_list_store_set (list_store, &iter,
                        COLUMN_STRING, "Enero",
                        COLUMN_INT, 31,
                        -1);

    gtk_list_store_append (list_store, &iter);
    gtk_list_store_set (list_store, &iter,
                        COLUMN_STRING, "Febrero",
                        COLUMN_INT, 28,
                        -1);

    gtk_list_store_append (list_store, &iter);
    gtk_list_store_set (list_store, &iter,
                        COLUMN_STRING, "Marzo",
                        COLUMN_INT, 31,
                        -1);

    gtk_list_store_append (list_store, &iter);
    gtk_list_store_set (list_store, &iter,
                        COLUMN_STRING, "Abril",
                        COLUMN_INT, 30,
                        -1);

    /* Creamos el ComboBox a partir de la lista de arriba */
    combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(list_store));

    /* Atributos visuales de la lista desplegable del Combo */
    renderer = gtk_cell_renderer_text_new ();
    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
    /* ESTE INDICA CUAL SERA EL CAMPO DE LA LISTA QUE SE MUESTRA
(COLUMN_STRING en nuestro caso) */
    gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
"text", COLUMN_STRING, NULL);

    /* setea el item activo default (el primero) */
    gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);

    /* callback para el ItemChanged del ComboBox */
    g_signal_connect(G_OBJECT(combo), "changed",
G_CALLBACK(combo_selected_item), NULL );

       /* Creamos la ventana */
    ventana = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_container_set_border_width(GTK_CONTAINER(ventana), 10);

    /* Callbacks para que al cerrarse la ventana se termine la aplicacion */
    g_signal_connect(G_OBJECT(ventana), "delete_event",
G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(G_OBJECT(ventana), "destroy",
G_CALLBACK(gtk_main_quit), NULL);

    /* Agregamos el ComboBox directamente en la ventana */
    gtk_container_add(GTK_CONTAINER(ventana), combo);

       /* LISTO !! */
    gtk_widget_show_all(ventana);

    gtk_main();

    return 0;
}

Muchas gracias !
Saludos
MA_Xx

PS: que complicado que es este GTK !!!!!!!!!!!! =(

On Sat, Dec 13, 2008 at 10:34 PM, Maximiliano Milicich <
[email protected]> wrote:

> Ricardo:
> Muchas gracias...pero estos ejemplos de combo que me pasas tienen solo
> entradas de texto, sin valor asociado...
>
> Yo queria saber como se hace para construir un combo con una lista de
> opciones, en la q cada una tenga un valor asociado...de forma de al elegir
> una yo pueda tener el valor asociado (un ID)
>
> Mi duda surge a partir de un ejercicio de final de Taller 1 Veiga, en la
> que se pide hacer un combo con los meses del año y cada mes tenga como valor
> asociado la cantidad de dias en el mes (enero (31), febrero (28), marzo
> (31), abril (30), ....)
>
> Juro que no puedo encontrar la  forma de hacerlo...
> Tengo este codigo, lo unico que pude construir en base al tutorial oficial
> de GTK: me aparece la ventana con el combo, me aparecen hasta las 4 lineas
> en la lista desplegable, pero no me aparecen las opciones como texto
> (aparecen vacias)
>
>
> #include <gtk/gtk.h>
>
> enum {
>   COLUMN_STRING,
>   COLUMN_INT,
>   COLUMN_BOOLEAN,
>   N_COLUMNS
> };
>
> int combobox(int argc, char **argv) {
>
>     GtkWidget * ventana;
>     GtkWidget * combo;
>
>     GtkListStore *list_store;
>     GtkTreeIter iter;
>
>     gtk_init(&argc, &argv);
>
>     list_store = gtk_list_store_new (N_COLUMNS,
>                                      G_TYPE_STRING,
>                                      G_TYPE_INT,
>                                      G_TYPE_BOOLEAN);
>
>     gtk_list_store_append (list_store, &iter);
>       gtk_list_store_set (list_store, &iter,
>                           COLUMN_STRING, "some_data1",
>                           COLUMN_INT, 1,
>                           COLUMN_BOOLEAN,  FALSE,
>                           -1);
>     gtk_list_store_append (list_store, &iter);
>       gtk_list_store_set (list_store, &iter,
>                           COLUMN_STRING, "some_data2",
>                           COLUMN_INT, 2,
>                           COLUMN_BOOLEAN,  FALSE,
>                           -1);
>     gtk_list_store_append (list_store, &iter);
>       gtk_list_store_set (list_store, &iter,
>                           COLUMN_STRING, "some_data3",
>                           COLUMN_INT, 3,
>                           COLUMN_BOOLEAN,  FALSE,
>                           -1);
>     gtk_list_store_append (list_store, &iter);
>       gtk_list_store_set (list_store, &iter,
>                           COLUMN_STRING, "some_data4",
>                           COLUMN_INT, 4,
>                           COLUMN_BOOLEAN,  FALSE,
>                           -1);
>
>     combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(list_store));
>
>     ventana = gtk_window_new(GTK_WINDOW_TOPLEVEL);
>
>     g_signal_connect(G_OBJECT(ventana), "delete_event",
> G_CALLBACK(gtk_main_quit), NULL);
>     g_signal_connect(G_OBJECT(ventana), "destroy",
> G_CALLBACK(gtk_main_quit), NULL);
>     gtk_container_set_border_width(GTK_CONTAINER(ventana), 10);
>
>     gtk_container_add(GTK_CONTAINER(ventana), combo);
>
>     gtk_widget_show(combo);
>
>     gtk_widget_show(ventana);
>
>     gtk_main();
>
>     return 0;
> }
>
>
> A quien me pueda ayudar, muchas gracias !!!!!!!
> MA_Xx
>
>
>
> On Fri, Dec 5, 2008 at 12:58 AM, Ricardo Markiewicz <[email protected]>wrote:
>
>> 2008/12/5 Ricardo Markiewicz <[email protected]>:
>> > 2008/12/5 Maximiliano Milicich <[email protected]>:
>> >> Hola:
>> >> Alguien q sepa de GTK+2.0 (en C) me podra pasar un ejemplo de como
>> construir
>> >> un combo box con entradas y valores asociados ?
>> >> Puedo lograr un Combo Box con solo entradas de texto, pero me estoy
>> >> volviendo loco intentando encontrar la manera de que el Combo tenga
>> cada
>> >> elemento con un valor  asociado (digamos, un numero para cada entrada
>> de
>> >> texto)...
>> >>
>> >> Ejemplo
>> >> Juan  (valor asociado 1)
>> >> Pepe (valor asociado 2)
>> >> Jose (valor asociado 3)
>> >>
>> >> Me lei el tutorial oficial de GTK de punta a punta y no hay un ejemplo
>> de
>> >> eso...
>> >> Y en el GTK Reference Manual no dan ejemplos...solo explican que hace
>> cada
>> >> funcion y no puedo llegar a entender como hacerlo... =(
>> >
>> > http://library.gnome.org/devel/gtk-tutorial/stable/x1065.html
>>
>> Y http://zetcode.com/tutorials/gtktutorial/gtkwidgetsII/ también te
>> puede servir.
>>
>> Saludos
>>
>> --
>> --
>> Ricardo Markiewicz
>> http://www.gazer.com.ar/
>>
>> _______________________________________________
>> Lista de correo Programacion.
>> [email protected]
>> http://listas.fi.uba.ar/mailman/listinfo/programacion
>>
>
>
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a