src/ui/events-pane.ui holds the pane: the GtkRevealer that slides it in, the header with the way back to the live stream, the Compare and Accumulate actions, and the list inside its scroller. The rows stay in code -- one per latched event, rebuilt whenever the cache changes -- and their sensitivity stays with update_group_buttons(), which is why the file only starts the two actions insensitive. Two statements moved into the file along with the widgets, because they are about what the pane is for rather than about a default: multiple selection, and activation on *double* click. With single-click activation the plain click that builds a selection would replay the event instead. Read back as `events pane: compare=1 accumulate=1 list=1 revealer=1 nested=1`, where `nested` is the list being inside the revealer -- the one thing a lost id cannot show. The [events] probe is the other half and drives the pane end to end: recording, trigger, the history button, a row click and the replay, then Compare and Accumulate, so the file's buttons are read by being clicked. check_ui: 13 ok, 0 failed.
91 lines
4.3 KiB
XML
91 lines
4.3 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- SPDX-License-Identifier: MIT -->
|
|
<!-- SPDX-FileCopyrightText: 2026 Martino Ferrari -->
|
|
<!--
|
|
The events pane: the revealer that slides it in, the header with the way back to the live stream, the two
|
|
actions that read the selection, and the list inside its scroller.
|
|
|
|
The rows are not here. There is one per latched event in the cache, it carries the time, the duration, the
|
|
signals and the rate, and the whole list is rebuilt whenever the cache changes — so the file holds the
|
|
frame and the code holds the rows.
|
|
|
|
The list is multiple-selection and activates on *double* click, which is a statement about what the pane is
|
|
for rather than a default: its other job is choosing which events to compare or accumulate, and with
|
|
single-click activation a plain click — the gesture that builds a selection — would replay the event
|
|
instead. Both actions start insensitive because a selection starts empty, and `update_group_buttons()`
|
|
owns them from there.
|
|
|
|
A width floor, not a width: the divider sets the pane's width, and this is what it needs to stay usable at
|
|
its narrowest.
|
|
-->
|
|
<interface>
|
|
<object class="GtkRevealer" id="events_pane">
|
|
<property name="transition-type">slide-right</property>
|
|
<child>
|
|
<object class="GtkBox" id="events_box">
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">6</property>
|
|
<property name="width-request">170</property>
|
|
<property name="margin-start">6</property>
|
|
<property name="margin-end">6</property>
|
|
<property name="margin-top">6</property>
|
|
<child>
|
|
<object class="GtkBox" id="events_head">
|
|
<property name="orientation">horizontal</property>
|
|
<property name="spacing">6</property>
|
|
<child>
|
|
<object class="GtkLabel" id="events_title">
|
|
<property name="label" translatable="yes"><b>Events</b></property>
|
|
<property name="use-markup">1</property>
|
|
<property name="hexpand">1</property>
|
|
<property name="halign">start</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkButton" id="events_live">
|
|
<property name="label" translatable="yes">Live</property>
|
|
<property name="css-classes">flat</property>
|
|
<property name="tooltip-text" translatable="yes">go back to the live stream after replaying a stored event</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkBox" id="events_actions">
|
|
<property name="orientation">horizontal</property>
|
|
<property name="spacing">6</property>
|
|
<child>
|
|
<object class="GtkButton" id="events_compare">
|
|
<property name="label" translatable="yes">Compare</property>
|
|
<property name="tooltip-text" translatable="yes">the two selected events in two plots side by side, with the axes synchronised</property>
|
|
<property name="hexpand">1</property>
|
|
<property name="sensitive">0</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkButton" id="events_accumulate">
|
|
<property name="label" translatable="yes">Accumulate</property>
|
|
<property name="tooltip-text" translatable="yes">up to four selected events overlaid in the same traces, translucent, so where they agree the trace is brighter</property>
|
|
<property name="hexpand">1</property>
|
|
<property name="sensitive">0</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkScrolledWindow" id="events_scroll">
|
|
<property name="vexpand">1</property>
|
|
<property name="hscrollbar-policy">never</property>
|
|
<child>
|
|
<object class="GtkListBox" id="events_list">
|
|
<property name="activate-on-single-click">0</property>
|
|
<property name="selection-mode">multiple</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</interface>
|