static void fi_gui_details_treeview_init(void) { static const struct { const char *title; gfloat xalign; gboolean editable; } tab[] = { { "ID", 1.0, FALSE }, { "Item", 1.0, FALSE }, { "Value", 0.0, TRUE }, }; GtkTreeView *tv; GtkTreeModel *model; unsigned i; tv = GTK_TREE_VIEW(gui_main_window_lookup("treeview_download_details")); g_return_if_fail(tv); treeview_download_details = tv; model = GTK_TREE_MODEL(gtk_list_store_new(G_N_ELEMENTS(tab), G_TYPE_UINT, G_TYPE_STRING, G_TYPE_STRING)); gtk_tree_view_set_model(tv, model); g_object_unref(model); for (i = 0; i < G_N_ELEMENTS(tab); i++) { GtkTreeViewColumn *column; GtkCellRenderer *renderer; renderer = create_text_cell_renderer(tab[i].xalign); g_object_set(G_OBJECT(renderer), "editable", tab[i].editable, (void *) 0); gui_signal_connect(renderer, "edited", on_cell_edited, tv); column = gtk_tree_view_column_new_with_attributes(tab[i].title, renderer, "text", i, (void *) 0); g_object_set(column, "visible", i > 0 ? TRUE : FALSE, "min-width", 1, "resizable", TRUE, "sizing", 1 == i ? GTK_TREE_VIEW_COLUMN_AUTOSIZE : GTK_TREE_VIEW_COLUMN_FIXED, (void *) 0); gtk_tree_view_append_column(tv, column); } drag_attach_text(GTK_WIDGET(tv), download_details_get_text); }
static GtkTreeViewColumn * create_column(int column_id, const char *title, gfloat xalign, GtkCellRenderer *renderer, GtkTreeCellDataFunc cell_data_func) { GtkTreeViewColumn *column; if (!renderer) { renderer = create_text_cell_renderer(xalign); } column = gtk_tree_view_column_new_with_attributes(title, renderer, (void *) 0); gtk_tree_view_column_set_cell_data_func(column, renderer, cell_data_func, uint_to_pointer(column_id), NULL); return column; }
void fi_gui_init(void) { fi_sources = g_hash_table_new(NULL, NULL); { GtkTreeViewColumn *column; GtkTreeView *tv; tv = GTK_TREE_VIEW(gui_main_window_lookup("treeview_download_aliases")); treeview_download_aliases = tv; store_aliases = gtk_list_store_new(1, G_TYPE_STRING); gtk_tree_view_set_model(tv, GTK_TREE_MODEL(store_aliases)); column = gtk_tree_view_column_new_with_attributes(_("Aliases"), create_text_cell_renderer(0.0), "text", 0, (void *) 0); configure_column(column); gtk_tree_view_column_set_sort_column_id(column, 0); gtk_tree_view_append_column(tv, column); tree_view_set_fixed_height_mode(tv, TRUE); drag_attach_text(GTK_WIDGET(tv), fi_gui_get_alias); } { static const struct { enum c_src id; const char *title; } tab[] = { { c_src_host, N_("Host"), }, { c_src_country, N_("Country"), }, { c_src_server, N_("Server"), }, { c_src_range, N_("Range"), }, { c_src_progress, N_("Progress"), }, { c_src_status, N_("Status"), }, }; GtkTreeView *tv; unsigned i; STATIC_ASSERT(c_src_num == G_N_ELEMENTS(tab)); tv = GTK_TREE_VIEW(gui_main_window_lookup("treeview_download_sources")); treeview_download_sources = tv; store_sources = gtk_list_store_new(1, G_TYPE_POINTER); gtk_tree_view_set_model(tv, GTK_TREE_MODEL(store_sources)); for (i = 0; i < G_N_ELEMENTS(tab); i++) { GtkCellRenderer *renderer; renderer = tab[i].id == c_src_progress ? gtk_cell_renderer_progress_new() : NULL; add_column(tv, tab[i].id, _(tab[i].title), 0.0, renderer, render_sources); } gtk_tree_view_set_headers_clickable(tv, FALSE); gtk_tree_selection_set_mode(gtk_tree_view_get_selection(tv), GTK_SELECTION_MULTIPLE); tree_view_restore_widths(tv, PROP_SOURCES_COL_WIDTHS); tree_view_set_fixed_height_mode(tv, TRUE); widget_add_popup_menu(GTK_WIDGET(tv), fi_gui_sources_get_popup_menu); } fi_gui_details_treeview_init(); fi_gui_common_init(); }
void fi_gui_init(void) { fi_sources = htable_create(HASH_KEY_SELF, 0); { GtkTreeViewColumn *column; GtkTreeView *tv; tv = GTK_TREE_VIEW(gui_main_window_lookup("treeview_download_aliases")); treeview_download_aliases = tv; store_aliases = gtk_list_store_new(1, G_TYPE_STRING); gtk_tree_view_set_model(tv, GTK_TREE_MODEL(store_aliases)); column = gtk_tree_view_column_new_with_attributes(_("Aliases"), create_text_cell_renderer(0.0), "text", 0, NULL_PTR); configure_column(column); gtk_tree_view_column_set_sort_column_id(column, 0); gtk_tree_view_append_column(tv, column); tree_view_set_fixed_height_mode(tv, TRUE); drag_attach_text(GTK_WIDGET(tv), fi_gui_get_alias); } { static const struct { enum c_src id; const char *title; } tab[] = { { c_src_host, N_("Host"), }, { c_src_country, N_("Country"), }, { c_src_server, N_("Server"), }, { c_src_range, N_("Range"), }, { c_src_progress, N_("Progress"), }, { c_src_status, N_("Status"), }, }; GtkTreeView *tv; unsigned i; STATIC_ASSERT(c_src_num == N_ITEMS(tab)); tv = GTK_TREE_VIEW(gui_main_window_lookup("treeview_download_sources")); treeview_download_sources = tv; store_sources = gtk_list_store_new(1, G_TYPE_POINTER); gtk_tree_view_set_model(tv, GTK_TREE_MODEL(store_sources)); for (i = 0; i < N_ITEMS(tab); i++) { GtkCellRenderer *renderer; renderer = tab[i].id == c_src_progress ? gtk_cell_renderer_progress_new() : NULL; (void) add_column(tv, tab[i].id, _(tab[i].title), 0.0, renderer, render_sources); } gtk_tree_view_set_headers_clickable(tv, FALSE); gtk_tree_selection_set_mode(gtk_tree_view_get_selection(tv), GTK_SELECTION_MULTIPLE); tree_view_restore_widths(tv, PROP_SOURCES_COL_WIDTHS); tree_view_set_fixed_height_mode(tv, TRUE); widget_add_popup_menu(GTK_WIDGET(tv), fi_gui_sources_get_popup_menu); } fi_gui_details_treeview_init(); fi_gui_common_init(); { uint32 page; GtkNotebook *notebook_downloads_info = GTK_NOTEBOOK(gui_main_window_lookup("notebook_downloads_info")); gui_prop_get_guint32_val(PROP_DOWNLOADS_INFO_NOTEBOOK_TAB, &page); if (page >= NUM_DOWNLOADS_INFO_NB_PAGES) page = DOWNLOADS_INFO_NB_PAGE_DETAILS; notebook_downloads_info_current_page = page; gtk_notebook_set_current_page(notebook_downloads_info, page); gui_signal_connect(notebook_downloads_info, "switch-page", on_notebook_downloads_info_switch_page, NULL); } }