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
@@ -50,7 +50,7 @@ Part of [CLAUDE.md](../../CLAUDE.md). These are rules that cost a defect to lear
|
||||
runs after the window is destroyed and asking GTK about a widget then is four criticals, which is
|
||||
how the first version of that line earned them. What stays in the menu is what acts on the *data*
|
||||
(Fit, Export, Configurations) and the one editor that is not a pane (the layout editor): the signal list
|
||||
is a section of the sidebar's dock, so there is nothing left to reveal or hide about it. The Arm/Disarm button in the trigger panel still has text.
|
||||
is the `signals` slide-over page, so there is nothing left to reveal or hide about it. The Arm/Disarm button in the trigger panel still has text.
|
||||
- **Five of this app's icons are its own, and they are a `GResource` compiled into the
|
||||
binary.** No icon theme has a glyph for an oscilloscope trigger, a pair of cursors or a
|
||||
measurement ruler, and the stock names those buttons used to carry said something else
|
||||
@@ -225,13 +225,15 @@ Part of [CLAUDE.md](../../CLAUDE.md). These are rules that cost a defect to lear
|
||||
take room has to be hidden and not merely unrevealed; the revealer keeps the slide while the pane
|
||||
*is* open. The allocated width is how this was found -- the revealer's own measure said 0.
|
||||
**The sidebar is one dock now, and has no `GtkRevealer` left in it**: a single `GtkScrolledWindow`
|
||||
(`dock_scroller`) holding the cursors and the measurements one under another. It
|
||||
(`dock_scroller`) holding only the compact **readouts** (`src/ui_dock.cpp`). It
|
||||
replaced an `AdwViewSwitcher` over an `AdwViewStack`, whose four text tabs did not fit 320 px (and a source
|
||||
can add more); a source kind's own panels are slide-over pages, not dock sections. The reason is the one
|
||||
this trap teaches: sections competing for one 320 px column each left every one of them short of room, and
|
||||
a scroller gives each its natural height. `m` scrolls the dock to the cursors (`dock_show_section()`); the signal list is
|
||||
not a dock section but the `signals` slide-over page, which `g` and the `+` badge open. A *feature's* on/off is no longer a visibility at all -- the
|
||||
**cursors'** toggle sets its pane's **body** insensitive -- the readout has nothing to show with the
|
||||
this trap teaches: full panels competing for one narrow column each left every one of them short of room.
|
||||
The full cursors and measurements panels are now the `cursors` and `measure` **slide-over pages**, reached
|
||||
by the readouts' **Edit** buttons, and `m` toggles `measure` (it no longer scrolls the dock;
|
||||
`dock_show_section()` is gone); the signal list is the `signals` slide-over page, which `g` and the `+` badge
|
||||
open. The header's Cursors toggle no longer opens anything: it only enables the cursors. A *feature's* on/off is no longer a visibility at all -- the
|
||||
**cursors'** toggle sets its pane's **body** insensitive (and the dock's cursor grid beside it) -- the readout has nothing to show with the
|
||||
instruments off -- and the *body* and not the pane, because the pane's heading carries its own switch
|
||||
(see the next bullet). The **trigger's body is deliberately never disabled**: a trigger is configured
|
||||
*before* it is switched on, so switching it off to change it, or to read what it is set to, is the
|
||||
@@ -243,7 +245,10 @@ Part of [CLAUDE.md](../../CLAUDE.md). These are rules that cost a defect to lear
|
||||
- **The dock is shown but insensitive until the stream has signals ("disable, do not hide").**
|
||||
`update_side_visibility()` and the tick's per-frame block set the column's visibility from the user's wish
|
||||
alone (`sidebar_wanted`) and the dock's *sensitivity* from `have_signals`; the toolbar's Dock button stays
|
||||
sensitive throughout. The wish is persisted (`dock = true|false` in the session file) and a change of it
|
||||
sensitive throughout. The `cursors` and `measure` **pages follow the same condition** through
|
||||
`update_signal_availability()` (called from `update_side_visibility()` and the per-frame block), so a
|
||||
page opened by `m` before the stream has signals is insensitive, not refused. `[readouts] ... pages_sensitive=`
|
||||
reads it. The wish is persisted (`dock = true|false` in the session file) and a change of it
|
||||
schedules a save. `dock:` in the dump reads the result.
|
||||
- **The signal badge is the drag handle, and a drop handler only moves widgets.** Dragging a signal onto a plot
|
||||
starts on its badge in the badge bar (a `GtkDragSource` on the badge's button, payload the signal index as a
|
||||
@@ -584,6 +589,18 @@ The `Help` submenu, the contextual help's "?" and the guided tour, and the traps
|
||||
`ui_impl::hint_button()` reached either by the table's `context_help_sync()` or by
|
||||
`context_help_button()` for a window with no `App` (the source chooser) -- one button, two callers,
|
||||
so the two windows cannot drift into two affordances.
|
||||
- **A hint on a slide-over page's heading is attached all the time and drawn only while the page is open.**
|
||||
The trigger's, signals', cursors' and measurements' headings (`trigger_head`, `signals_head`,
|
||||
`cursors_head`, `measures_head`) live on pages that exist, unmapped, whether or not they are open, so
|
||||
`context_help_sync()` attaches their "(i)" like any other and the count (`hints=12`) does not depend on
|
||||
which page is up. There is **no second code path** and the dock's readouts carry no hint of their own: the
|
||||
pages' hints say what the dock shows too (the cursors' and measurements' bodies mention the read-only copy
|
||||
and the Edit button). A probe that must *see* one drawn needs its page open, like every other reading off a page.
|
||||
- **The tour has one stop for the readouts and none for the pages behind them.** The dock's stop
|
||||
(`side`, target `side_box`, no `page`, so it closes the panel) describes the readouts, the **Edit**
|
||||
buttons and the click on a measurement; the `cursors` and `measure` pages are reached from there rather than
|
||||
walked. A stop for either would be one more `TourStop::page` (see the next bullet), and the plan's
|
||||
length is asserted (`steps=6`, `steps=5` with the dock put away) -- a new stop changes both.
|
||||
- **The guided tour takes no grab, and that is the whole reason it is an overlay.** Four dim
|
||||
rectangles around the hole are ordinary widgets that swallow the clicks that land on them and
|
||||
nothing else; `Skip`, `Finish` and `Escape` hide them, and there is no popover, no gesture and no
|
||||
|
||||
Reference in new issue
Block a user