#include #include void list_create_and_fill_model( GtkWidget *list_view ) { GtkListStore *list_store; GtkTreeIter iter; GtkTreeSelection *selection; list_store = gtk_list_store_new( 2, G_TYPE_STRING, G_TYPE_STRING ); gtk_tree_view_set_model( GTK_TREE_VIEW( list_view), GTK_TREE_MODEL( list_store )); for ( int i = 0; ( i < 20 ); i++ ) { gtk_list_store_append( list_store, &iter ); gtk_list_store_set( list_store, &iter, 0, "Testing", 1, "Another", -1 ); } selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( list_view )); gtk_tree_selection_select_path( selection, gtk_tree_path_new_from_string( "0" )); } void list_view_and_model( GtkWidget *box, GtkWidget **list_view ) { GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkWidget *scrolled_win; *list_view = gtk_tree_view_new(); gtk_widget_override_font( *list_view, pango_font_description_from_string( "Courier New 12" )); gtk_tree_view_set_grid_lines( GTK_TREE_VIEW( *list_view ), GTK_TREE_VIEW_GRID_LINES_BOTH ); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( "test", renderer, "text", 0, NULL ); // g_object_set( G_OBJECT( renderer ), "width-chars", 100, NULL ); g_object_set( G_OBJECT( renderer ), "width", 200, NULL ); gtk_tree_view_append_column( GTK_TREE_VIEW( *list_view ), column ); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( "test", renderer, "text", 1, NULL ); g_object_set( G_OBJECT( renderer ), "width-chars", 30, NULL ); gtk_tree_view_append_column( GTK_TREE_VIEW( *list_view ), column ); gtk_tree_selection_set_mode( gtk_tree_view_get_selection( GTK_TREE_VIEW( *list_view )), GTK_SELECTION_BROWSE ); scrolled_win = gtk_scrolled_window_new( NULL, NULL ); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolled_win ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); list_create_and_fill_model( *list_view ); scrolled_win = gtk_scrolled_window_new( NULL, NULL ); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolled_win ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_widget_set_size_request( GTK_WIDGET( scrolled_win ), 600, 400 ); gtk_container_add( GTK_CONTAINER( scrolled_win ), *list_view ); gtk_box_pack_start( GTK_BOX( box ), scrolled_win, TRUE, TRUE, 0 ); gtk_tree_view_expand_all( GTK_TREE_VIEW( *list_view )); } int main( int argc, char *argv[] ) { GtkWidget *window; GtkWidget *main_box; GtkWidget *list_view; gtk_init(&argc, &argv); window = gtk_window_new( GTK_WINDOW_TOPLEVEL ); gtk_window_set_default_size(GTK_WINDOW(window), 400, 250); gtk_window_set_title(GTK_WINDOW(window), "Linux-buddy.blogspot.com"); main_box = gtk_box_new( GTK_ORIENTATION_VERTICAL, 0 ); gtk_container_set_border_width( GTK_CONTAINER( main_box ), 0 ); gtk_container_add( GTK_CONTAINER( window ), main_box ); list_view_and_model( main_box, &list_view ); gtk_widget_show_all( window ); gtk_main(); return 0; }