The panel's shape -- the title row with its add button, the one statistics switch the whole panel shares, and the box the readings go into -- now lives in src/ui/measures-panel.ui. The readings stay in code: each row is a measurement a user placed, rebuilt whenever the set or the mode changes. A faithful move, not a redesign: the same margins, spacing, labels, tooltips, flat classes and insensitive Reset button, the same two lambdas on the same two signals. The frame is read back through the dump line, which grew the two fields that can disagree with the code that drives them -- `measures pane: n=4 revealed=0 marks_shown=6 pane_rows=4 pane_w=0 pane_h=0 switch_on=1 reset_sensitive=1`. In that reading pane_rows=4 is the four readout rows having landed in the frame's `measures_list`, and switch_on/reset_sensitive are the switch widget and the Reset button following measure_stats_on, which the probe set through the same signal a user would. `check_ui` type-checks the file (8 ok, 0 failed) and the build stays at four warnings.
73 lines
3.1 KiB
XML
73 lines
3.1 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- SPDX-License-Identifier: MIT -->
|
|
<!-- SPDX-FileCopyrightText: 2026 Martino Ferrari -->
|
|
<!--
|
|
The measurements panel: a title row with the button that adds one, the one statistics switch the whole
|
|
panel shares, and the box the readings go into.
|
|
|
|
The readings are not here. Each one is a measurement the user placed — its name, its markers and its
|
|
readout row — so the rows are built and rebuilt in code, and this file holds the frame they land in
|
|
(`measures_list`) plus the three widgets whose state outlives them.
|
|
|
|
One statistics switch for the panel rather than one per reading: statistics are either what a user is
|
|
looking at or they are not, and a per-row switch is a column of chrome paid for on every row to answer a
|
|
question asked once.
|
|
-->
|
|
<interface>
|
|
<object class="GtkBox" id="measures_panel">
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">4</property>
|
|
<property name="margin-top">6</property>
|
|
<property name="margin-bottom">6</property>
|
|
<property name="margin-start">6</property>
|
|
<property name="margin-end">6</property>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="orientation">horizontal</property>
|
|
<property name="spacing">8</property>
|
|
<child>
|
|
<object class="GtkLabel" id="measures_title">
|
|
<property name="label" translatable="yes">Measurements</property>
|
|
<property name="halign">start</property>
|
|
<property name="hexpand">1</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkButton" id="measures_add">
|
|
<property name="icon-name">list-add-symbolic</property>
|
|
<property name="css-classes">flat</property>
|
|
<property name="tooltip-text" translatable="yes">add a measurement</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="orientation">horizontal</property>
|
|
<property name="spacing">8</property>
|
|
<child>
|
|
<object class="GtkCheckButton" id="measures_stats_check">
|
|
<property name="label" translatable="yes">Statistics</property>
|
|
<property name="hexpand">1</property>
|
|
<property name="tooltip-text" translatable="yes">show how each reading has varied: passes, mean, standard deviation and extremes, under the reading itself</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkButton" id="measures_stats_reset">
|
|
<property name="label" translatable="yes">Reset</property>
|
|
<property name="css-classes">flat</property>
|
|
<property name="sensitive">0</property>
|
|
<property name="tooltip-text" translatable="yes">start every measurement's statistics again from the next pass</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkBox" id="measures_list">
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">2</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</interface>
|