Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::view::TableModel Class Referenceabstract

Data model for TableListBox — implement this to provide row data. More...

#include <table.hpp>

Public Member Functions

virtual ~TableModel ()=default
virtual int row_count () const =0
 Number of rows in the table.
virtual std::string cell_text (int row, int column) const =0
 Cell text for a given row and column index.
virtual bool sort (int column, bool ascending)
 Optional: sort the data by column. Return true if handled.
virtual void row_selected (int row)
 Optional: called when a row is selected.
virtual void row_double_clicked (int row)
 Optional: called when a row is double-clicked.
void add_column (TableColumn column)
void add_row (std::vector< TableCell > cells)
 Add a row.
std::size_t column_count () const
std::size_t row_count () const
const TableColumn & column (std::size_t i) const
const TableCell & cell (std::size_t row, std::size_t col) const
void toggle_sort (std::size_t col)
 Sort rows by column col.
void sort_by (std::size_t col, TableSortOrder order)
 Explicit sort (used by tests and by code that wants a specific order).
void clear_sort ()
 Clear any sort; original insertion order is restored.
int sort_column () const
TableSortOrder sort_order () const

Detailed Description

Data model for TableListBox — implement this to provide row data.

Constructor & Destructor Documentation

◆ ~TableModel()

virtual pulp::view::TableModel::~TableModel ( )
virtualdefault

Member Function Documentation

◆ add_column()

void pulp::view::TableModel::add_column ( TableColumn column)
inline

◆ add_row()

void pulp::view::TableModel::add_row ( std::vector< TableCell > cells)
inline

Add a row.

Pads with empty cells if short.

If a previous sort was active, sort state is dropped but the insertion-order mapping is restored first so a later clear_sort() can still return rows to their original order. This matches the clear_sort contract documented above; without the restore step a dynamic table that receives new rows after sorting would get stuck at the post-sort layout. Fix per #200 review.

◆ cell()

const TableCell & pulp::view::TableModel::cell ( std::size_t row,
std::size_t col ) const
inline

◆ cell_text()

virtual std::string pulp::view::TableModel::cell_text ( int row,
int column ) const
pure virtual

Cell text for a given row and column index.

Implemented in pulp::view::SimpleTableModel.

◆ clear_sort()

void pulp::view::TableModel::clear_sort ( )
inline

Clear any sort; original insertion order is restored.

◆ column()

const TableColumn & pulp::view::TableModel::column ( std::size_t i) const
inline

◆ column_count()

std::size_t pulp::view::TableModel::column_count ( ) const
inline

◆ row_count() [1/2]

std::size_t pulp::view::TableModel::row_count ( ) const
inline

◆ row_count() [2/2]

virtual int pulp::view::TableModel::row_count ( ) const
pure virtual

Number of rows in the table.

Implemented in pulp::view::SimpleTableModel.

◆ row_double_clicked()

virtual void pulp::view::TableModel::row_double_clicked ( int row)
inlinevirtual

Optional: called when a row is double-clicked.

◆ row_selected()

virtual void pulp::view::TableModel::row_selected ( int row)
inlinevirtual

Optional: called when a row is selected.

◆ sort()

virtual bool pulp::view::TableModel::sort ( int column,
bool ascending )
inlinevirtual

Optional: sort the data by column. Return true if handled.

Reimplemented in pulp::view::SimpleTableModel.

◆ sort_by()

void pulp::view::TableModel::sort_by ( std::size_t col,
TableSortOrder order )

Explicit sort (used by tests and by code that wants a specific order).

◆ sort_column()

int pulp::view::TableModel::sort_column ( ) const
inline

◆ sort_order()

TableSortOrder pulp::view::TableModel::sort_order ( ) const
inline

◆ toggle_sort()

void pulp::view::TableModel::toggle_sort ( std::size_t col)

Sort rows by column col.

Passing the same column cycles None → Ascending → Descending → None, matching how spreadsheet UIs toggle via header clicks.


The documentation for this class was generated from the following files:
  • /home/runner/work/pulp/pulp/core/view/include/pulp/view/table.hpp
  • /home/runner/work/pulp/pulp/core/view/include/pulp/view/table_model.hpp