docs: the todo's status checked against the code, item by item
(7) is done and was the only unticked item: a resize handle per row boundary, and the weights persisted in the layout file (LayoutState::Row::weight), which is what 'persistent between sessions as the layout' asked for. (1)'s three sub-items are done too -- intensity_grading is on for this host, a vertical edge is floored by stage_trace_slopes() rather than graded toward nothing, and the sample dots are Style::marker_px. (10) keeps eight slices in code; its 'next:' line predated four of its own entries and is gone. (9) had one clause pasted twice.
This commit is contained in:
1 parent
f00d161900
commit
723f5c3b4c
1 file changed
+6
-6
@@ -1,7 +1,7 @@
|
||||
- [x] (1) fix vertical lines to small to be seen: in some cases (e.g. rect waveform in @mock_upstreamer.py) the vertical lines are to thin to be visible (sometime they glitch in and out of existence):
|
||||
1. the antialisaing strategy with phosphore effect should be applied with more stregth
|
||||
2. the lines should be more tick
|
||||
3. the sample points should be bigger
|
||||
1. ~~the antialisaing strategy with phosphore effect should be applied with more stregth~~ **done**: `Style::intensity_grading` — the library's phosphor model, off by default because it is a change of look rather than a correction — is turned on for this host on the first tick that finds a renderer (`src/ui.cpp`), with `UDPSCOPE_NO_PHOSPHOR` to read the frame cost against the ungraded path.
|
||||
2. ~~the lines should be more tick~~ **done**: what made a vertical edge *disappear* was the grading, not the width — a segment is graded by its own slope (`Renderer::stage_trace_slopes()`) with `Style::intensity_floor` as the floor, so a discontinuity keeps a minimum of ink instead of being graded toward nothing and flickering in and out as it crosses the threshold. Line AA is the library's `Style::line_aa_px`.
|
||||
3. ~~the sample points should be bigger~~ **done**: `Style::marker_px`, and the README records the result — a trace's own 3 px sample dots, against the 9 px hover mark that has to read as the answer to a question rather than as one more sample.
|
||||
- [x] (2) ~~relative timing~~ **done**: `--relative-time`; see README and SPECS.md for the measured history cost.
|
||||
- in order to avoid problem with time jitter user can decide to go in relative time mode
|
||||
- in this mode absolute signal time is only use for export
|
||||
@@ -13,9 +13,9 @@
|
||||
- [x] (4) ~~optional udp frame storage for debugging of strange behaviours~~ **done**: `--capture-packets N`; see README and the design note in `docs/superpowers/specs/` for the ring file, the popover toggle and `tools/capture_to_pcap.py`.
|
||||
- [x] (5) ~~open exported binary waveforms to view/analyse~~ **done**: `--open FILE` and the chooser's **Waveforms** page (the files opened before, newest first, plus _Open…_); the `.npy`'s dtype names the columns, so a load restores the signals, the samples and the axis the export had, and every instrument works on it — see README and `docs/claude/invariants-data-path.md`.
|
||||
- [x] (6) ~~imporve right click menu on the plots~~ **done**: the plot's context menu uses the main menu's row style (`menu_button` + `.udpscope-menu`, asserted by `UDPSCOPE_PROBE_ROWMENU_MS`: uniform `label_x=26`, `h=18`, the shortcut flush right), and deleting a signal is a **Remove signal** submenu listing that plot's traces plus _All traces on this plot_.
|
||||
- [ ] (7) in layout edit mode add the option to drag plot border to resize them (sizing should be persistant between sessesions as the layout)
|
||||
- [x] (7) ~~in layout edit mode add the option to drag plot border to resize them~~ **done**: every row boundary carries its own `udpscope-resize-rows-symbolic` handle ("drag to resize the two rows here"), a widget of its own rather than a second gesture on the `+` so a handle that cannot be clicked cannot be clicked by accident — the figure's own top and bottom edges have no pair to share, so those two are hidden rather than greyed. The sizing is persistent because it is an *arrangement*: the weights live in the same layout file as the row's signals (`LayoutState::Row::weight`, `RowSet::set_row_weights()`), and a file from before weights existed loads as equal rows.
|
||||
- [x] (8) ~~add option to automatic save the last <N> triggered acquisitions in a cache folder and let the user replay them~~ **done**: every latch is written to `<cache>/<source>/events/` as a `.npy` (the export format), a `.txt` sidecar and a `.bmp` preview drawn from the samples; the **events pane** (revealed with trigger mode, switchable) lists them with time, duration, signals and rate, shows the preview, replays one through the `--open` loader and has _Live_ to go back -- see README and `docs/claude/invariants-trigger-and-pinning.md`.
|
||||
- [x] (9) ~~preferences dialog~~ **done**: `src/settings.{hpp,cpp}` (the store: load/save/defaults, GTK-free) + `src/ui_prefs.cpp` (the dialog, opened from the overflow menu); the cache directory and keep count reach `EventStore`, the cache directory (one `events/` directory for every source, each source a folder inside) and the keep count reach `EventStore`, and relative time is a start-up default; whether anything is cached at all stays the trigger pane's own switch. The same dialog opens from the **host selection dialog** too (a `PrefsForm` has no owner, so both windows hold one), where a change still reaches the run about to start.
|
||||
- [x] (9) ~~preferences dialog~~ **done**: `src/settings.{hpp,cpp}` (the store: load/save/defaults, GTK-free) + `src/ui_prefs.cpp` (the dialog, opened from the overflow menu); the cache directory (one `events/` directory for every source, each source a folder inside) and the keep count reach `EventStore`, and relative time is a start-up default; whether anything is cached at all stays the trigger pane's own switch. The same dialog opens from the **host selection dialog** too (a `PrefsForm` has no owner, so both windows hold one), where a change still reaches the run about to start.
|
||||
- user can choose evnt cache directory (default <home>/.cache/udpscope/<source>/events/)
|
||||
- maximum number of events to cache
|
||||
- disable completly the events storage option
|
||||
@@ -31,5 +31,5 @@
|
||||
- the host form is **done** (`src/ui/source-form.ui`); the source chooser's own window is next
|
||||
- the main window's skeleton is **done** (`src/ui/main-window.ui`: the window, the two panes, the plot column and the status line, the sidebar's scroller); the panels inside it are the next slices
|
||||
- the side panels are being extracted one per commit on that pattern: the cursors panel is **done** (`src/ui/cursors-panel.ui`), and the measurements panel, the trigger panel, the signals panel, the math panel, the events pane, the layout editor's buttons and the header bar are queued in the plan
|
||||
- next: the preferences (`AdwPreferencesDialog` + `AdwEntryRow`/`AdwSpinRow`/`AdwSwitchRow`), the help window's chrome, the source chooser and its host form, then the main window's skeleton
|
||||
- still in code, in the plan's own order: the source chooser's window (its host form is done), the measurements panel, the trigger panel, the signals panel, the math panel and the node editor's chrome, the events pane, the layout editor's overlay buttons, and the header bar — eight slices, each with its own row in the plan's table
|
||||
- plan, conventions and acceptance for each slice: `docs/superpowers/plans/2026-10-11-ui-files-and-gtk4-practice.md`
|
||||
Reference in new issue
Block a user