/* gtv-basico-arbol.c: Ejemplo básico de GtkTreeStore. Time-stamp: <2004-11-14 14:28:28 claudio> (copyleft) 2004 Claudio Saavedra V GPL */ /* */ #define I_CUTE "\xC3\xAD" #define O_CUTE "\xC3\xB3" #define N_TILDE "\xC3\xB1" #include enum { COL_FLAG, COL_DATA, COL_NUM, COL_TOTAL }; GtkTreeModel * create_model (void) { GtkTreeStore *model; GtkTreeIter top; GtkTreeIter child; GdkPixbuf *pixbuf; model = gtk_tree_store_new (COL_TOTAL, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT); pixbuf = gdk_pixbuf_new_from_file ("debian-logo.png", NULL); gtk_tree_store_append (model, &top, NULL); gtk_tree_store_set (model, &top, COL_DATA, "Argentina", COL_NUM, 1, -1); gtk_tree_store_append (model, &child, &top); gtk_tree_store_set (model, &child, COL_DATA, "Buenos Aires", -1); gtk_tree_store_append (model, &child, &top); gtk_tree_store_set (model, &child, COL_DATA, "Mendoza", -1); gtk_tree_store_append (model, &child, &top); gtk_tree_store_set (model, &child, COL_DATA, "C" O_CUTE "rdoba", -1); gtk_tree_store_append (model, &top, NULL); gtk_tree_store_set (model, &top, COL_DATA, "Chile", COL_FLAG, pixbuf, -1); gtk_tree_store_set (model, &top, COL_NUM, 15000000, -1); gtk_tree_store_append (model, &child, &top); gtk_tree_store_set (model, &child, COL_DATA, "Valpara" I_CUTE "so", -1); gtk_tree_store_append (model, &child, &top); gtk_tree_store_set (model, &child, COL_DATA, "Santiago", -1); gtk_tree_store_append (model, &child, &top); gtk_tree_store_set (model, &child, COL_DATA, "Concepci" O_CUTE "n", COL_NUM, 3000000, -1); gtk_tree_store_append (model, &top, NULL); gtk_tree_store_set (model, &top, COL_DATA, "Espa" N_TILDE "a", -1); gtk_tree_store_append (model, &child, &top); gtk_tree_store_set (model, &child, COL_DATA, "Barcelona", -1); gtk_tree_store_append (model, &child, &top); gtk_tree_store_set (model, &child, COL_DATA, "Madrid", -1); gtk_tree_store_append (model, &child, &top); gtk_tree_store_set (model, &child, COL_DATA, g_locale_to_utf8 ("Zaragoza", -1, NULL, NULL, NULL), -1); return GTK_TREE_MODEL (model); } GtkWidget * create_view_and_model (void) { GtkWidget *view; GtkTreeModel *model; GtkTreeViewColumn *col; GtkCellRenderer *renderer; view = gtk_tree_view_new (); col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, "Paises/Ciudades"); gtk_tree_view_append_column (GTK_TREE_VIEW (view), col); renderer = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (col, renderer, FALSE); gtk_tree_view_column_add_attribute (col, renderer, "pixbuf", COL_FLAG); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_tree_view_column_add_attribute (col, renderer, "text", COL_DATA); col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, "Habitantes"); gtk_tree_view_append_column (GTK_TREE_VIEW (view), col); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_tree_view_column_add_attribute (col, renderer, "text", COL_NUM); model = create_model (); gtk_tree_view_set_model (GTK_TREE_VIEW (view), model); g_object_unref (model); return view; } gboolean app_quit (GtkWidget *widget, GdkEvent *event, gpointer data) { gtk_main_quit (); return TRUE; } int main (int argc, char **argv) { GtkWidget *window; GtkWidget *view; gtk_init (&argc, &argv); GtkWidget *hbox; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); hbox = gtk_hbox_new (TRUE, 10); gtk_window_set_title (GTK_WINDOW (window), "Pa" I_CUTE "ses y Ciudades"); g_signal_connect (window, "delete_event", G_CALLBACK (app_quit), NULL); view = create_view_and_model (); gtk_container_add (GTK_CONTAINER (hbox), view); gtk_container_add (GTK_CONTAINER (window), hbox); gtk_window_set_default_size (GTK_WINDOW (window), 400, 300); gtk_widget_show_all (window); gtk_main (); return 0; } /* */