docs: events in the dock and on its page
The dock's Events block, the events slide-over page, the availability-rule deviation, the probe lines and the removal of the left pane are described; the false remembered-width claim is gone. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
9db5e4a49c
commit
c4b79da057
7 files changed
+206
-105
No files matched your search
@@ -94,7 +94,7 @@ switches trigger mode on, waits for an event, then leaves trigger mode the way t
|
||||
"Go live" button does, closes the window, and prints on stdout the status line in
|
||||
both states, the frame and per-channel sample counts, each plot's painted-frame
|
||||
count, which channel each trace slot holds, and the allocated size and reveal
|
||||
state of the dock and the events pane.
|
||||
state of the dock, and the events page's controls (present and nested in the page).
|
||||
|
||||
Every size it prints is read from a value the frame tick captured while the window was alive, not
|
||||
from the widget: the dump runs from the destroy handler, where the widget pointer is already freed
|
||||
@@ -146,8 +146,8 @@ 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 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
|
||||
resizes the plot. The right-hand **dock** (the sidebar, **280 px**, fixed) holds the **readouts** and, under
|
||||
them, the **Events** block (below): the readouts are 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
|
||||
@@ -159,8 +159,12 @@ cells are a fixed number of characters wide and ellipsized, so the dock's width
|
||||
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".
|
||||
page's label and to the dock's, so the two cannot disagree. The **Events** block is a heading with a
|
||||
**Manage** button over a short list of the cached events, newest first -- one compact row each, never a
|
||||
picture -- and one click on a row replays that event (see "Captured events"). The full list, with the
|
||||
pictures and the comparison actions, is the `events` slide-over page that **Manage** opens. There is no
|
||||
events pane beside the plot and no Events button in the header: events never take any of the plot's width.
|
||||
The rest 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.
|
||||
@@ -838,20 +842,36 @@ time to look at is still there:
|
||||
20261009-123250-0001.bmp # a picture of it, drawn from the samples
|
||||
```
|
||||
|
||||
The **left pane** is opened on demand from the toolbar's event-history button, is collapsed by
|
||||
default, and its **divider can be dragged**: it starts at 240 pixels and remembers the width you last
|
||||
chose, and while it is closed it takes no room at all. Both the button and the pane exist while **recording is on**, or while an event is on
|
||||
screen: with the cache disabled and nothing being examined there is nothing to show, and a visible
|
||||
empty column beside the plot is what *off* must not look like. Recording is switched in the **trigger
|
||||
panel**, with the trigger's other options rather than in the pane whose contents it decides, and it is
|
||||
**off by default** -- writing every latch to disk is the user's decision about their disk.
|
||||
Events are read in two places. The **dock's Events block** lists them compactly -- one row per event, newest
|
||||
first, at most **24** with a dim "... N more, see Manage" row after them: a marker (a filled circle on the
|
||||
event on screen, a hollow one on each member of the comparison or accumulation on screen), the time and
|
||||
duration, and the event's sequence number (`#7`). **One click on a row replays it.** The block's **Manage**
|
||||
button opens the **`events` page**, a slide-over page over the plot with the full list (below), the *Live*
|
||||
button and the two group actions. The page replaces the left pane that used to sit beside the plot behind a
|
||||
header button and a draggable divider; both are gone, and so is the toolbar's Events button -- opening the
|
||||
list no longer resizes the plot at all.
|
||||
|
||||
The block and the page exist all the time and are **insensitive, not hidden**, when there is nothing to show:
|
||||
they are available while **recording is on**, while an event is on screen (a replay or a group), or while
|
||||
the cache already holds events. **Deviation from the redesign spec,** which has the block insensitive
|
||||
"outside trigger mode": a replay or a group *leaves* trigger mode (a file has no edge to wait for), so a block
|
||||
that went grey outside trigger mode would grey itself under the very click that started the replay. Trigger
|
||||
mode is therefore not one of the conditions. Recording is switched in the **trigger panel**, with the
|
||||
trigger's other options rather than in the list whose contents it decides, and it is **off by default** --
|
||||
writing every latch to disk is the user's decision about their disk. (The session file keeps nothing about
|
||||
this list: there is no remembered width, because there is no pane to size.)
|
||||
|
||||
The dock follows every latch; the page's list is refreshed per latch only while it is open, and rebuilt when
|
||||
**Manage** opens it. **The dock list has no thumbnails** -- its rows are fixed-width, ellipsized cells, so the
|
||||
dock's size does not depend on what an event is called -- the page has them, and its rows are replayed with a
|
||||
**double** click, because on the page a single click builds the selection that *Compare* and *Accumulate* read.
|
||||
|
||||
Each row carries **its own picture** beside the numbers -- time, duration, signal count, rate -- 138
|
||||
pixels wide whatever the pane's width, and as tall as that event's own proportions make it: the
|
||||
pixels wide whatever the page's width, and as tall as that event's own proportions make it: the
|
||||
preview is one 44-pixel strip per signal, so a one-signal event is a short row and a six-signal one a
|
||||
tall one (capped, so that a row stays a row). **Hovering it shows the whole preview at full size**,
|
||||
through a tooltip -- the small picture says *which* event this is, the zoom says what is in it.
|
||||
Clicking a row **replays** it: the same loader `--open` uses, on the event's file. The click **leaves
|
||||
Double-clicking a row on the page (or clicking one in the dock) **replays** it: the same loader `--open` uses, on the event's file. The click **leaves
|
||||
the list alone** -- your scroll position and the pair you had selected for a comparison both survive
|
||||
it, because marking which event is on screen rewrites the rows' titles in place instead of rebuilding
|
||||
the list. **The layout does
|
||||
@@ -862,7 +882,7 @@ rearrange the user's work under a click. What changes is the data, and the trigg
|
||||
file has no edge to wait for. Cursors, measurements, math channels and another export all work on a
|
||||
stored event. **Live** takes you back to the stream.
|
||||
|
||||
Two buttons under the pane's header read the **selection**:
|
||||
Two buttons under the page's header read the **selection**:
|
||||
|
||||
- *Compare* puts the two selected events in **two plots side by side**, each with **the layout you
|
||||
already have** -- the same rows, the same signals in the same slots, the same colours -- one showing
|
||||
@@ -880,8 +900,8 @@ model whose channel count no longer matches the stream), the trigger is left, an
|
||||
|
||||
A replay leaves trigger mode, because a file has no edge to wait for -- an armed trigger keeps a
|
||||
*frozen capture* on screen (`display_mode()` stays `Held` while the model holds a snapshot), and a
|
||||
held display draws that snapshot rather than the file that was just loaded. The events pane stays
|
||||
open through it: it is available while a stored event is on screen.
|
||||
held display draws that snapshot rather than the file that was just loaded. The dock's Events block and
|
||||
the `events` page stay available through it: they are available while a stored event is on screen.
|
||||
|
||||
**Going back to *Live* puts the live view back as it was.** Opening a file changes two things that
|
||||
are not the user's choice -- the time window becomes the event's own span, because that is what
|
||||
@@ -912,7 +932,7 @@ Three things worth knowing:
|
||||
- **The picture is decoded synchronously** (`gdk_texture_new_from_filename()` into
|
||||
`gtk_picture_set_paintable()`), not through `gtk_picture_set_filename()`: that path uses the image
|
||||
loader's sandboxed, asynchronous decoder, which here fails silently -- the picture keeps a
|
||||
paint-able and an allocation, so a probe reports success while the pane shows an empty rectangle.
|
||||
paint-able and an allocation, so a probe reports success while the page shows an empty rectangle.
|
||||
It is then **scaled once to the row's size** and cached by file: a `GtkPicture`'s natural size is
|
||||
its content, so the stored 480-pixel preview given straight to a row claims the row's whole width
|
||||
and squeezes the text out of it -- a size request on the picture is a floor, not a cap.
|
||||
@@ -929,8 +949,8 @@ Three things worth knowing:
|
||||
one at a time was eight of those, which is most of what made the switch feel slow. They are now
|
||||
enabled in a single call, and a rebuild whose plan is unchanged clears the buffer instead of
|
||||
allocating a new one.
|
||||
- The switch in the pane's header stops the recording; the cache is only useful if it was already
|
||||
on when the event you wanted happened, which is why it defaults to on.
|
||||
- The switch in the trigger panel starts and stops the recording; the cache is only useful if it was
|
||||
already on when the event you wanted happened, so switch it on before the event you are waiting for.
|
||||
|
||||
## Opening an exported waveform
|
||||
|
||||
@@ -1241,8 +1261,10 @@ reveals it, while one whose *pane is collapsed* (the dock, in a window too narro
|
||||
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 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
|
||||
describes the readouts and their **Edit** buttons and the Events block under them (one click on a row
|
||||
replays it, **Manage** opens the list); it names no slide-over page, so it closes the panel like the plot's.
|
||||
There is no stop for the `events` page, so nothing in the tour opens it; the contextual help's
|
||||
event-history hint is attached to the page's heading the way the cursors' and measurements' are. 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
|
||||
@@ -3021,11 +3043,16 @@ now — they are listed so they are not mistaken for anything else:
|
||||
**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`).
|
||||
(7) The **Events block and the `events` page are available** while recording is on, a replay is on screen, or
|
||||
the cache holds events -- **not** "outside trigger mode" as the spec has it, because a replay or a group leaves
|
||||
trigger mode and the block would grey itself under the click that started it. (8) The **dock's event rows carry no
|
||||
thumbnails** (the page's do) and show a **hollow marker on the members of the group on screen**, which the page's
|
||||
rows do not. (9) The dock lists at most 24 events; the page lists them all.
|
||||
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.
|
||||
order: `USER-GUIDE.md` and the manual's figures (4). The events section in the dock and the `events`
|
||||
page are done, and the left events pane, its divider and the header's Events toggle are deleted. Until
|
||||
the manual is swept, it (which still describes the side panel's tabs, and the cursors, measurements
|
||||
and events as panes of it) still describes 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