Files
test/source/blender/editors/space_spreadsheet/spreadsheet_data_source.hh
Campbell Barton e955c94ed3 License Headers: Set copyright to "Blender Authors", add AUTHORS
Listing the "Blender Foundation" as copyright holder implied the Blender
Foundation holds copyright to files which may include work from many
developers.

While keeping copyright on headers makes sense for isolated libraries,
Blender's own code may be refactored or moved between files in a way
that makes the per file copyright holders less meaningful.

Copyright references to the "Blender Foundation" have been replaced with
"Blender Authors", with the exception of `./extern/` since these this
contains libraries which are more isolated, any changed to license
headers there can be handled on a case-by-case basis.

Some directories in `./intern/` have also been excluded:

- `./intern/cycles/` it's own `AUTHORS` file is planned.
- `./intern/opensubdiv/`.

An "AUTHORS" file has been added, using the chromium projects authors
file as a template.

Design task: #110784

Ref !110783.
2023-08-16 00:20:26 +10:00

65 lines
1.8 KiB
C++

/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "BLI_function_ref.hh"
#include "spreadsheet_column.hh"
#include "spreadsheet_column_values.hh"
namespace blender::ed::spreadsheet {
/**
* This class is subclassed to implement different data sources for the spreadsheet. A data source
* provides the information that should be displayed. It is not concerned with how data is laid
* out in the spreadsheet editor exactly.
*/
class DataSource {
public:
virtual ~DataSource();
/**
* Calls the callback with all the column ids that should be displayed as long as the user does
* not manually add or remove columns. The column id can be stack allocated. Therefore, the
* callback should not keep a reference to it (and copy it instead).
*
* The `is_extra` argument indicates that this column is special and should be drawn as the first
* column. (This can be made a bit more generic in the future when necessary.)
*/
virtual void foreach_default_column_ids(
FunctionRef<void(const SpreadsheetColumnID &, bool is_extra)> /*fn*/) const
{
}
/**
* Returns the column values the given column id. If no data exists for this id, null is
* returned.
*/
virtual std::unique_ptr<ColumnValues> get_column_values(
const SpreadsheetColumnID & /*column_id*/) const
{
return {};
}
/**
* Returns true if the data source has the ability to limit visible rows
* by user interface selection status.
*/
virtual bool has_selection_filter() const
{
return false;
}
/**
* Returns the number of rows in columns returned by #get_column_values.
*/
virtual int tot_rows() const
{
return 0;
}
};
} // namespace blender::ed::spreadsheet