ProbeTableModel

The rows of the probe table: one row per probe of an item, one column per field at it (field-presentation §FVS-6, matrix FVW-63).

In the namespace construct::ui. Declared in src/libs/libconstruct/construct/ui/ProbeTableModel.hpp.

Detailed description

The columns are Probe, x, y, z, How, Order, then one per field reference, with the unit in the header.

A million probes. The model holds the probe points only. The values are computed per block of rendering::kProbeBlock rows, on a pool thread, when data() first asks for a row of the block. A cell shows "…" until its block is ready, and a block lands with dataChanged() over its rows only. The model keeps at most kKeptBlocks blocks, and drops the block that was used last the longest time ago. So the memory stays flat, and the model never builds a block that no view asked for.

Sort. sort() by a value column samples the values on the pool in batches, with sortProgress(), then applies one row permutation. Until then the rows keep their order. The summary does not sort.

The model never changes the document. The probes come in through setProbes(); a removal goes through the shell, as one undo step.

In this section