ui: the math editor's window, identity row and canvas are a .ui file
The second half of this plan row, and the half of that dialog which is template. src/ui/math-editor.ui holds the window (its size and modality), the box around it, the identity row -- the name and the unit -- and the body with the canvas in it. What stays in code is the drawing: the canvas is a GtkDrawingArea the file *declares* and the code draws, with the gestures that make it a graph editor, and the parameter form follows which node is selected. The palette and the buttons go next. The builder is held on `App` and cleared on the *next* opening rather than with the window: the window belongs to the builder's object list, so freeing the builder under a live window frees the window with it. That is the source form's pattern, and the probe's close-then-reopen path is what exercises it -- `reopened: dialog=ok, nodes=2`. The identity row is read back too, since a `.ui` can hold the widget but not the value: `dialog build: ... name='math3' unit='' ...`, the entries having been filled from the channel being edited. check_ui is at 12 ok, 0 failed.
This commit is contained in:
1 parent
90a17eb186
commit
1a02946656
7 files changed
+123
-36
No files matched your search
@@ -246,6 +246,10 @@ struct App {
|
||||
GtkWidget* math_toggle = nullptr;
|
||||
GtkWidget* math_revealer = nullptr;
|
||||
GtkWidget* math_list = nullptr;
|
||||
/// The math editor's builder. The editor's window belongs to the builder's object list, so the builder is
|
||||
/// held for as long as the window is up and cleared on the *next* opening rather than with the window --
|
||||
/// freeing it under a live window frees the window with it. That is the source form's pattern.
|
||||
GtkBuilder* math_dialog_ui = nullptr;
|
||||
GtkWidget* math_dialog = nullptr;
|
||||
/// One value label per measure, in `measures` order; rebuilt with the list.
|
||||
std::vector<GtkWidget*> measure_labels;
|
||||
|
||||
Reference in new issue
Block a user