docs: the readouts dock, the cursors and measurement pages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
a2ce02db92
commit
ce3cc97b91
11 files changed
+205
-88
No files matched your search
@@ -146,10 +146,21 @@ panel laid over the plot's right edge, opaque, with its own title, a *Close* but
|
||||
page. The Trigger badge opens the trigger form; the Source badge (when shown) opens the source kind's own panels
|
||||
(the E-1608's *Analog out* and *Digital I/O*, behind a segmented switch at the top of the panel). It
|
||||
closes with a second click on its badge, with `Esc`, with *Close*, or with a click on the plot; it never
|
||||
resizes the plot. The right-hand **dock** (the existing sidebar, 320 px) holds what is left of the old
|
||||
tabs in one scroller: the cursors and the measurements, shown from the start and insensitive until
|
||||
the stream has signals (the signal list moved to the `signals` slide-over page). It is temporary -- see
|
||||
"Review findings not (yet) implemented" for what the redesign still has to do with it.
|
||||
resizes the plot. The right-hand **dock** (the sidebar, **280 px**, fixed) holds the **readouts**: a
|
||||
compact, read-only copy of the cursors table (a header row `A B delta`, then one line per cursor
|
||||
line) and of the measurements (one line each: the signal's colour chip, the type, the value). It is
|
||||
shown from the start and insensitive until the stream has signals. Each of the two blocks has an
|
||||
**Edit** button, which opens the full panel as a slide-over page -- `cursors` or `measure` -- over the
|
||||
plot; `m` toggles the `measure` page, and a click on a measurement's line in the dock opens that
|
||||
measurement's dialog. The header's **Cursors** toggle only switches the cursors on and off (it
|
||||
mirrors the switch inside the `cursors` page); with the cursors off the dock's cursor lines are
|
||||
insensitive, not hidden. Both pages are insensitive until the stream has signals, like the dock. The dock's
|
||||
cells are a fixed number of characters wide and ellipsized, so the dock's width and height do not
|
||||
depend on what a value reads: the **who** cell of a cursor line is 5 characters (the full text is its
|
||||
tooltip), a value cell 9 (its tooltip is the full text). The dock and the pages show **one string**:
|
||||
`update_cursors_pane()` and `update_measures()` format each value once and hand that variable to the
|
||||
page's label and to the dock's, so the two cannot disagree. The remaining part of the redesign is
|
||||
listed under "Review findings not (yet) implemented".
|
||||
|
||||
Threading: one producer thread owns the data source (the UDPStreamer client is the built-in
|
||||
one) and calls `poll()`; the GTK main thread owns every widget and the GL contexts.
|
||||
@@ -1229,7 +1240,11 @@ decides which steps exist at all: a stop on a slide-over page is always kept, be
|
||||
reveals it, while one whose *pane is collapsed* (the dock, in a window too narrow to put it beside the
|
||||
plot) is dropped, because it is unmapped with its pane (a hidden page keeps its own *visible* flag
|
||||
true -- the widget's own flag, which is all `is_visible()` walks -- so the old test walked over
|
||||
surfaces that were not on screen); a narrow window therefore walks four steps. The chooser's
|
||||
surfaces that were not on screen); a narrow window therefore walks five steps. The dock's stop
|
||||
describes the readouts and the **Edit** buttons; it names no slide-over page, so it closes the panel
|
||||
like the plot's. The cursors and measurements pages have no stop of their own, and their contextual
|
||||
help "(i)" hints are attached to the pages' headings the way the trigger's and the signals' are: they
|
||||
are drawn while the page is open, and the dock has none. The chooser's
|
||||
tour works the same way over its own two pages: its tabs step shows the *Waveforms* page and
|
||||
stepping off it -- in either direction -- brings the *Sources* page back.
|
||||
|
||||
@@ -1631,9 +1646,10 @@ it holds more than the window the bound became the whole ring, and a zoom-out wa
|
||||
view past the window into data the window was never set to show. A partly filled window
|
||||
simply has an empty left-hand side.
|
||||
|
||||
**The panel switches are on the toolbar, and the panes own their own controls.** Cursors,
|
||||
Measurements and Math channels are icon toggles in the header bar rather than rows in the overflow
|
||||
menu, and **Reset cursors** sits in the cursors pane beside the mode it resets (it acts on that
|
||||
**The panel switches are on the toolbar, and the panes own their own controls.** (Since the
|
||||
slide-over redesign the toolbar keeps only the **Cursors** toggle of the three icons named here, and it
|
||||
only enables the cursors; the measurements are reached by `m` or the dock's Edit button, and the math
|
||||
editor from the signal list.) **Reset cursors** sits in the cursors page beside the mode it resets (it acts on that
|
||||
pane's instruments and is only visible while they exist). The rows read, left to right: **window control, trigger, pause** — the trigger and the pause are
|
||||
read against the span on screen, so they sit with the control that sets it — then, on the right,
|
||||
**cursors, measurements, math, sidebar** and **the menu last**. With `HeaderBar::pack_end()` the
|
||||
@@ -2849,7 +2865,7 @@ reaches every widget). The full key table:
|
||||
| `Space` | pause / resume |
|
||||
| `t` | enable / disable trigger mode |
|
||||
| `c` | enable / disable the cursors |
|
||||
| `m` | go to Measure (scroll the dock to the cursors and the measurements) |
|
||||
| `m` | open or close the Measurements page (the `measure` slide-over page; the dock's Edit button for the cursors opens the `cursors` page) |
|
||||
| `g` | go to Signals (open or close the signal list, the `signals` slide-over page, also reached by the `+` badge) |
|
||||
| `l` | show / hide the layout editor |
|
||||
| `s` | show / hide the dock |
|
||||
@@ -2970,9 +2986,10 @@ now — they are listed so they are not mistaken for anything else:
|
||||
signal list -- in one scrolling column; with four of them open in a 320 px sidebar every
|
||||
section was short of room, and finding one meant scrolling past the others. The sidebar was then two
|
||||
text tabs (a **Measure** tab and a **Signals** tab, with a source kind's own tabs beside them), and four
|
||||
tabs did not fit 320 px. It is **one dock** now, with no tab switcher: the cursors and the
|
||||
measurements in one scroller, shown from the start and insensitive until the stream has signals; `m`
|
||||
scrolls it to the cursors; the **signal list** is the `signals` slide-over page (`g`, or the `+` badge). The **trigger form** and a **source's own
|
||||
tabs did not fit 320 px. It is **one dock** now, with no tab switcher: the **readouts** (a compact,
|
||||
read-only copy of the cursors and of the measurements, each block with an **Edit** button), shown from
|
||||
the start and insensitive until the stream has signals; the full cursors and measurements panels are the
|
||||
`cursors` and `measure` slide-over pages (`m` toggles `measure`); the **signal list** is the `signals` slide-over page (`g`, or the `+` badge). The **trigger form** and a **source's own
|
||||
controls** are pages of the slide-over, reached from the badge bar. The trigger pane also has a **locked** mode, which is what a returning user gets: it
|
||||
shows one line saying what it is set to and offers no control that changes the configuration -- its
|
||||
heading has an `[edit]` button to switch to the full pane, and back. The signals have no lock: the
|
||||
@@ -2987,19 +3004,28 @@ now — they are listed so they are not mistaken for anything else:
|
||||
toggle hides a pane any more: cursors-off **disables** its readout and leaves it in place, and
|
||||
trigger-off leaves the trigger form fully editable -- a trigger is configured *before* it is
|
||||
switched on, and the locked view says `stream (trigger off)` instead of the settings -- and the measurements' and math panes' toolbar toggles are gone with the panes.
|
||||
- **The badge bar / slide-over / dock redesign is in progress; this is its first step, and it deviates
|
||||
from `docs/superpowers/specs/2026-11-02-ui-badges-dock-design.md` in three known ways.**
|
||||
(1) The dock keeps the sidebar's **320 px**, not the spec's ~280: the panels it holds were built for
|
||||
320, and the width changes when they become compact readouts (step 3). (2) The session file gains the
|
||||
dock's *shown* state only, not a width -- the dock's width is fixed, so there is nothing to persist
|
||||
-- and does not store the open slide-over page. (3) The **Trigger badge** shows `off`, `armed` and
|
||||
`triggered` as the spec says, and two more words, `capturing` (a post-trigger window is filling) and
|
||||
`disarmed` (trigger on, not armed), so the label never claims a state the engine is not in. The signal badges, the
|
||||
signal pages and the drag (step 2) are done. Still to
|
||||
come, in the spec's order: the compact readouts (3), the events
|
||||
section in the dock, the deletion of the left pane and the Events toggle, and `USER-GUIDE.md` and the
|
||||
manual's figures (4). Until then the events pane, the header's Events toggle and the manual still
|
||||
describe the previous layout.
|
||||
- **The badge bar / slide-over / dock redesign is in progress; steps 1-3 are done, and they deviate
|
||||
from `docs/superpowers/specs/2026-11-02-ui-badges-dock-design.md` in these known ways.**
|
||||
(1) The session file gains the dock's *shown* state only, not a width -- the dock's width is
|
||||
fixed (**280 px**, as the spec says), so there is nothing to persist -- and does not store the open
|
||||
slide-over page. (2) The **Trigger badge** shows `off`, `armed` and `triggered` as the spec says, and
|
||||
two more words, `capturing` (a post-trigger window is filling) and `disarmed` (trigger on, not
|
||||
armed), so the label never claims a state the engine is not in. (3) The **`cursors` and `measure`
|
||||
pages hold the existing panels unchanged** (the cursors table with its mode, its Reset and its
|
||||
switch; the measurement list with its `+`, statistics and per-row edit), so the pages carry the
|
||||
panels' own controls, not a new form. (4) The **measurement editor stays a dialog**: the spec has the
|
||||
measurement add/edit/remove inside the `measure` page, but the dialog (`open_measure_dialog()`) is
|
||||
what the `+`, a row's edit button and a click on a dock line all open; the page lists the measurements
|
||||
and hosts the dialog's entry points. (5) A **dock cursor line carries the full who / A / B / delta
|
||||
cells** (not one value per line as the spec sketches), in a 5 + 3 x 9 character fixed-width grid: the
|
||||
**who** cell ellipsizes at **5 characters** -- the width the 280 px pin allows; with 8 the readouts'
|
||||
minimum width was 304 px and widened the sidebar -- and its tooltip carries the full text. (6) The dock and
|
||||
the pages **share one string** for every value (see `docs/claude/invariants-readouts-and-cursors.md`).
|
||||
The signal badges, the signal pages and the drag (step 2) are done. Still to come, in the spec's
|
||||
order: the events section in the dock, the deletion of the left pane and the Events toggle, and
|
||||
`USER-GUIDE.md` and the manual's figures (4). Until then the events pane, the header's Events toggle
|
||||
and the manual (which still describes the side panel's tabs, and the cursors and measurements as
|
||||
panes of it) still describe the previous layout.
|
||||
- **A plot holds at most eight signals** (`RowSet::kSlotsPerRow`), because a `Plot`
|
||||
cannot give up a trace and the slots are therefore created up front.
|
||||
- **One toggle drives both cursor orientations.** The vertical markers and the
|
||||
|
||||
Reference in new issue
Block a user