In this case, with integers.
You have two important items:
switch(G_VALUE_TYPE(&val))
and
g_object_set_data(G_OBJECT(column),"idcoln",GINT_TO_POINTER(4));
ViewCol(GTK_TREE_VIEW(widget),GPOINTER_TO_INT(g_object_get_data(G_OBJECT(col),"idcoln")));
Code:
#include <gtk/gtk.h>
#include <string.h>
enum
{
COL_JEDEN,
COL_DVA,
COL_TEXT,
COL_INT,
COL_IMG,
N_COLS
};
void ViewCol (GtkTreeView *tview,gint column)
{
GtkTreeModel *Tmod=gtk_tree_view_get_model(GTK_TREE_VIEW(tview));
GtkTreePath *tpath=gtk_tree_path_new_first();
GtkTreeIter itr;
GValue val = {0};
gchar *col;
gint i;
col = (gchar *)g_malloc(1);
while (gtk_tree_model_get_iter(Tmod,&itr,tpath) == TRUE)
{
gtk_tree_model_get_value(Tmod,&itr,column,&val);
switch(G_VALUE_TYPE(&val))
{
case G_TYPE_STRING:
{
col = (gchar *)g_realloc(col,(gint)strlen(g_value_get_string(&val))+1);
strcpy(col,g_value_get_string(&val));
} break;
case G_TYPE_INT:
{
col = (gchar *)g_realloc(col,32); //up 32 digits
i = g_value_get_int(&val);
g_ascii_dtostr(col,32,i);
} break;
}
g_value_unset(&val);
g_print("test: %s \n",col);
gtk_tree_path_next(tpath);
}
g_free(col);
}
static gboolean treeclic(GtkWidget *widget,GdkEventButton *event,gpointer data)
{
if((event->button == 1) && (event->type == GDK_BUTTON_PRESS))
{
printf("tree click \n");
GtkTreeViewColumn *col;
gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), (gint) event->x,(gint) event->y, NULL, &col, NULL, NULL);
ViewCol(GTK_TREE_VIEW(widget),GPOINTER_TO_INT(g_object_get_data(G_OBJECT(col),"idcoln")));
}
return FALSE;
}
int
main( int argc,
char **argv )
{
GtkWidget *window;
GtkWidget *treeview;
GtkListStore *store;
GtkTreeIter iter;
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
register gint i;
gtk_init( &argc, &argv );
/* Create main window */
window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
gtk_window_set_default_size( GTK_WINDOW( window ), 400, 300 );
g_signal_connect( G_OBJECT( window ), "destroy",
G_CALLBACK( gtk_main_quit ), NULL );
/* Create tree view and pack it into window */
treeview = gtk_tree_view_new();
gtk_container_add( GTK_CONTAINER( window ), treeview );
/* Create store and populate it with some data */
store = gtk_list_store_new( N_COLS, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_INT, GDK_TYPE_PIXBUF );
for( i = 0; i < 15; i++ )
{
GdkPixbuf *pixbuf;
pixbuf = gtk_widget_render_icon( GTK_WIDGET( treeview ),
GTK_STOCK_CANCEL,GTK_ICON_SIZE_BUTTON,
NULL );
gtk_list_store_append( store, &iter );
gtk_list_store_set( store, &iter,
COL_JEDEN, g_strdup_printf( "Sample %d", i + 1),
COL_DVA, g_strdup_printf( "vzor %d", i + 1 ),
COL_TEXT, g_strdup_printf( "ejemplo %d", i + 1),
COL_INT, i + 100,
COL_IMG, pixbuf,-1 );
g_object_unref( G_OBJECT( pixbuf ) );
}
/* Set treeview's model */
gtk_tree_view_set_model( GTK_TREE_VIEW( treeview ),
GTK_TREE_MODEL( store ) );
g_object_unref( G_OBJECT( store ) );
/* Create display part of tree view - column 1 - 2 - 3*/
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column ), renderer, TRUE );
gtk_tree_view_column_set_attributes( column, renderer,
"text", COL_JEDEN, NULL );
gtk_tree_view_column_set_title(column,"English");
//LOOK!!!!!!!
gtk_tree_view_column_set_resizable(column,TRUE);
gtk_tree_view_column_set_sizing(column,GTK_TREE_VIEW_COLUMN_FIXED);
gtk_tree_view_column_set_fixed_width(column,40);
g_object_set_data(G_OBJECT(column),"idcoln",GINT_TO_POINTER(0));
gtk_tree_view_append_column( GTK_TREE_VIEW( treeview ), column );
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column ), renderer, TRUE );
gtk_tree_view_column_set_attributes( column, renderer,
"text", COL_DVA, NULL );
gtk_tree_view_column_set_title(column,"Slovenský");
gtk_tree_view_column_set_resizable(column,TRUE);
g_object_set_data(G_OBJECT(column),"idcoln",GINT_TO_POINTER(1));
gtk_tree_view_append_column( GTK_TREE_VIEW( treeview ), column );
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column ), renderer, TRUE );
gtk_tree_view_column_set_attributes( column, renderer,
"text", COL_TEXT, NULL );
gtk_tree_view_column_set_title(column,"Español");
gtk_tree_view_column_set_resizable(column,TRUE);
g_object_set_data(G_OBJECT(column),"idcoln",GINT_TO_POINTER(2));
gtk_tree_view_append_column( GTK_TREE_VIEW( treeview ), column );
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column ), renderer, TRUE );
gtk_tree_view_column_set_attributes( column, renderer,
"text", COL_INT, NULL );
gtk_tree_view_column_set_title(column,"Integer");
gtk_tree_view_column_set_resizable(column,TRUE);
g_object_set_data(G_OBJECT(column),"idcoln",GINT_TO_POINTER(3));
gtk_tree_view_append_column( GTK_TREE_VIEW( treeview ), column );
/* Create display part of tree view - column 2 */
renderer = gtk_cell_renderer_pixbuf_new();
column = gtk_tree_view_column_new();
gtk_cell_layout_pack_start( GTK_CELL_LAYOUT( column ), renderer, TRUE );
gtk_tree_view_column_set_attributes( column, renderer,
"pixbuf", COL_IMG, NULL );
g_object_set_data(G_OBJECT(column),"idcoln",GINT_TO_POINTER(4));
gtk_tree_view_append_column( GTK_TREE_VIEW( treeview ), column );
g_signal_connect(G_OBJECT(treeview),"button-press-event",G_CALLBACK(treeclic),NULL);
gtk_widget_show_all( window );
gtk_main();
return( 0 );
}