Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2021-04-09 11:20:46 +0300
committerJacques Lucke <jacques@blender.org>2021-04-09 11:20:46 +0300
commit75491fe1002122f19fc9fe8eae941a406b81706a (patch)
tree16a05f5b5ccc7087595ce27656aaa60a5f5c118a /source/blender/makesdna/DNA_space_types.h
parent22574f741c4e4d142c7068316296d24bbfc2a12c (diff)
Spreadsheet: persistent column storage and data source
A `DataSource` provides columns for the spreadsheet to display. Every column has a SpreadsheetColumnID as identifier. Columns are not generated eagerly anymore, instead the main spreadsheet code can request a column from a data source with an column identifier. The column identifiers can be stored in DNA and allow us to store persistent data per column. On the user level the only thing that changes is that columns are not shown in alphabetical order anymore. Instead, new columns are always added on the left. The behavior can be changed, however I'd prefer not to automate this too much currently. I think we should just add operators to hide/reorder/resize columns soonish. Differential Revision: https://developer.blender.org/D10901
Diffstat (limited to 'source/blender/makesdna/DNA_space_types.h')
-rw-r--r--source/blender/makesdna/DNA_space_types.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 0ad66c63169..a90047b9daa 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -1854,6 +1854,22 @@ typedef struct SpaceStatusBar {
/** \name Spreadsheet
* \{ */
+typedef struct SpreadsheetColumnID {
+ char *name;
+ int index;
+ char _pad[4];
+} SpreadsheetColumnID;
+
+typedef struct SpreadsheetColumn {
+ struct SpreadsheetColumn *next, *prev;
+ /**
+ * Identifies the data in the column.
+ * This is a pointer instead of a struct to make it easier if we want to "subclass"
+ * #SpreadsheetColumnID in the future for different kinds of ids.
+ */
+ SpreadsheetColumnID *id;
+} SpreadsheetColumn;
+
typedef struct SpaceSpreadsheet {
SpaceLink *next, *prev;
/** Storage of regions for inactive spaces. */
@@ -1863,6 +1879,9 @@ typedef struct SpaceSpreadsheet {
char _pad0[6];
/* End 'SpaceLink' header. */
+ /* List of #SpreadsheetColumn. */
+ ListBase columns;
+
struct ID *pinned_id;
/* eSpaceSpreadsheet_FilterFlag. */
@@ -1880,8 +1899,6 @@ typedef struct SpaceSpreadsheet {
SpaceSpreadsheet_Runtime *runtime;
} SpaceSpreadsheet;
-/** \} */
-
typedef enum eSpaceSpreadsheet_FilterFlag {
SPREADSHEET_FILTER_SELECTED_ONLY = (1 << 0),
} eSpaceSpreadsheet_FilterFlag;
@@ -1892,6 +1909,8 @@ typedef enum eSpaceSpreadsheet_ObjectEvalState {
SPREADSHEET_OBJECT_EVAL_STATE_NODE = 2,
} eSpaceSpreadsheet_Context;
+/** \} */
+
/* -------------------------------------------------------------------- */
/** \name Space Defines (eSpace_Type)
* \{ */