Esempio n. 1
0
void inventory_selector::prepare_columns( bool multiselect )
{
    for( auto &column : columns ) {
        column->set_multiselect( multiselect );
    }

    if( custom_column != nullptr ) {
        if( columns.empty() || column_can_fit( *custom_column ) ) {
            // Make the column second if possible
            const auto position = ( !columns.empty() ) ? std::next( columns.begin() ) : columns.begin();

            custom_column->set_multiselect( multiselect );
            insert_column( position, custom_column );
        } else {
            columns.front()->add_entries( *custom_column );
            custom_column.release();
        }
    }

    for( auto &column : columns ) {
        column->prepare_paging( getmaxy( w_inv ) - 5 );
    }

    refresh_active_column();
}
void inventory_selector::insert_selection_column( const std::string &id, const std::string &name )
{
    std::unique_ptr<inventory_column> new_column( new selection_column( id, name ) );

    for( const auto &column : columns ) {
        static_cast<selection_column *>( new_column.get() )->reserve_width_for( *column );
    }

    if( column_can_fit( *new_column ) ) { // Insert only if it will be visible. Ignore otherwise.
        insert_column( columns.end(), new_column );
    }
}