void tartifical_list::catalog_page(twindow& window, int catalog, bool swap)
{
	if (catalog < MIN_PAGE || catalog > MAX_PAGE) {
		return;
	}
	int index = catalog - MIN_PAGE;

	if (window.alternate_index() == index) {
		// desired page is the displaying page, do nothing.
		return;
	}
	
	int selected_row = 0;
	if (swap) {
		selected_row = hero_table_->get_selected_row();
	}

	window.alternate_uh(hero_table_, index);

	fill_table(catalog);

	if (swap) {
		window.alternate_bh(hero_table_, index);
		hero_table_->select_row(selected_row);
	} else {
		city_changed(window);
	}
}
Example #2
0
void tside_report::catalog_page(twindow& window, int catalog, bool swap)
{
	fill_table(*hero_table_, catalog);
	city_changed(window, *hero_table_);

	// in order to support sortable, form relative data.
	std::vector<tbutton*> widgets;
	if (catalog == STATUS_PAGE) {
		widgets.push_back(&find_widget<tbutton>(&window, "button_name", false));
		widgets.back()->set_active(false);
		widgets.push_back(&find_widget<tbutton>(&window, "button_hp", false));
		widgets.back()->set_active(false);
		widgets.push_back(&find_widget<tbutton>(&window, "button_xp", false));
		widgets.back()->set_active(false);
		widgets.push_back(&find_widget<tbutton>(&window, "button_hero", false));
		widgets.back()->set_active(false);
		widgets.push_back(&find_widget<tbutton>(&window, "button_troop", false));
		widgets.back()->set_active(false);
		widgets.push_back(&find_widget<tbutton>(&window, "button_income", false));
		widgets.back()->set_label(tintegrate::generate_img("misc/gold.png") + " " + tintegrate::generate_img("misc/technology.png"));
		widgets.back()->set_active(false);
		widgets.push_back(&find_widget<tbutton>(&window, "button_ea", false));
		widgets.back()->set_active(false);
	}
	for (std::vector<tbutton*>::iterator i = widgets.begin(); i != widgets.end(); ++ i) {
		tbutton& widget = **i;
		connect_signal_mouse_left_click(
			widget
			, boost::bind(
				&tside_report::sort_column
				, this
				, boost::ref(widget)));
	}
	sorting_widgets_[catalog] = widgets;

	// speeden compare_row, remember this catalog.
	current_page_ = catalog;
}
void ttroop_list::catalog_page(twindow& window, int catalog, bool swap)
{
	if (catalog < MIN_PAGE || catalog > MAX_PAGE) {
		return;
	}
	int index = catalog - MIN_PAGE;

	if (window.alternate_index() == index) {
		// desired page is the displaying page, do nothing.
		return;
	}
	
	unsigned int selected_row = 0;
	if (swap) {
		// because sort, order is changed.
		selected_row = hero_table_->get_selected_row();
		tgrid* grid_ptr = hero_table_->get_row_grid(hero_table_->get_selected_row());
		selected_row = dynamic_cast<ttoggle_panel*>(grid_ptr->find("_toggle", true))->get_data();
	}

	window.alternate_uh(hero_table_, index);

	fill_table(catalog);

	if (swap) {
		window.alternate_bh(hero_table_, index);
		hero_table_->select_row(selected_row);
		// swap to other page, there is no sorted column.
		sorting_widget_ = NULL;
	} else {
		city_changed(window);
	}

	// in order to support sortable, form relative data.
	std::vector<tbutton*> widgets;
	if (catalog == OWNERSHIP_PAGE) {
		widgets.push_back(&find_widget<tbutton>(&window, "button_name", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_type", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_side", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_city", false));
	} else if (catalog == STATUS_PAGE) {
		widgets.push_back(&find_widget<tbutton>(&window, "button_name", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_type", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_level", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_hp", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_xp", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_traits", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_movement", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_status", false));
		widgets.back()->set_active(false);
	} else if (catalog == MERIT_PAGE) {
		widgets.push_back(&find_widget<tbutton>(&window, "button_name", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_type", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_cause_damage", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_been_damage", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_defeat_units", false));
		widgets.push_back(&find_widget<tbutton>(&window, "button_field_turns", false));
	}
	for (std::vector<tbutton*>::iterator i = widgets.begin(); i != widgets.end(); ++ i) {
		tbutton& widget = **i;
		connect_signal_mouse_left_click(
			widget
			, boost::bind(
				&ttroop_list::sort_column
				, this
				, boost::ref(widget)));
	}
	sorting_widgets_[catalog] = widgets;

	// speeden compare_row, remember this catalog.
	current_page_ = catalog;
}