static void add_list_columns(GtkTreeView *tv) { static const struct { const gchar * const title; const gint id; const gfloat align; } columns[] = { { N_("Search"), c_sl_name, 0.0 }, { N_("Hits"), c_sl_hit, 1.0 }, { N_("New"), c_sl_new, 1.0 } }; guint i; STATIC_ASSERT(SEARCH_LIST_VISIBLE_COLUMNS == G_N_ELEMENTS(columns)); for (i = 0; i < G_N_ELEMENTS(columns); i++) { GtkTreeViewColumn *column; column = add_column(tv, _(columns[i].title), columns[i].id, columns[i].align, NULL, c_sl_fg, c_sl_bg); gtk_tree_view_column_set_sort_column_id(column, columns[i].id); column_sort_tristate_register(column, on_search_list_column_clicked, NULL); } tree_view_restore_widths(tv, PROP_SEARCH_LIST_COL_WIDTHS); }
void search_gui_show_search(struct search *search) { GtkTreeView *tv; g_return_if_fail(search); tv = GTK_TREE_VIEW(search->tree); tree_view_restore_visibility(tv, PROP_SEARCH_RESULTS_COL_VISIBLE); tree_view_restore_widths(tv, PROP_SEARCH_RESULTS_COL_WIDTHS); tvm_search = tree_view_motion_set_callback(tv, search_update_tooltip, 400); if (!search->sort) { int i; /* * The signal handler for "clicked" must only be installed once, * not each time the treeview is made visible. */ search->sort = TRUE; for (i = 0; i < c_sr_num; i++) { GtkTreeViewColumn *column; column = gtk_tree_view_get_column(tv, i); gtk_tree_view_column_set_sort_column_id(column, i); gtk_tree_sortable_set_sort_func( GTK_TREE_SORTABLE(gtk_tree_view_get_model(tv)), i, search_gui_cmp, uint_to_pointer(i), NULL); column_sort_tristate_register(column, on_tree_view_search_results_click_column, search); } } }
static void treeview_download_files_init(void) { GtkTreeView *tv; unsigned i; STATIC_ASSERT(FILEINFO_VISIBLE_COLUMNS == c_fi_num); tv = GTK_TREE_VIEW(gtk_tree_view_new()); treeview_download_files = tv; for (i = 0; i < c_fi_num; i++) { GtkTreeViewColumn *column; column = add_column(tv, i, fi_gui_files_column_title(i), fi_gui_files_column_justify_right(i) ? 1.0 : 0.0, c_fi_progress == i ? gtk_cell_renderer_progress_new() : NULL, render_files); column_sort_tristate_register(column, on_fileinfo_treeview_column_clicked, NULL); } gtk_tree_selection_set_mode(gtk_tree_view_get_selection(tv), GTK_SELECTION_MULTIPLE); gtk_tree_view_set_headers_visible(tv, TRUE); gtk_tree_view_set_headers_clickable(tv, TRUE); gtk_tree_view_set_enable_search(tv, FALSE); gtk_tree_view_set_rules_hint(tv, TRUE); tree_view_set_fixed_height_mode(tv, TRUE); gtk_tree_view_set_model(tv, GTK_TREE_MODEL(store_files)); tree_view_restore_visibility(tv, PROP_FILE_INFO_COL_VISIBLE); tree_view_restore_widths(tv, PROP_FILE_INFO_COL_WIDTHS); gui_signal_connect(tv, "cursor-changed", on_treeview_download_files_cursor_changed, NULL); }