search_and_replace
ispyisail edited this page 2026-09-19 17:31:34 +12:00
Clone

Wiki Page Revisions

2 Commits

Author SHA1 Message Date
ispyisail 147b9e78b1 Deepen the element editor and Search & Replace pages
Both documented less than their subject. The element editor is a whole
second application in 137 lines; Search & Replace listed six conductor
fields where the code edits nineteen.

Element editor, four new sections from the source:

- the Parties and Profondeur panels, and the X/Y readout -- with the
  gotcha that the parts list stops generating past 200 primitives and
  shows a count instead, which is a setting
  (elementeditor/max-parts-element-editor-list) rather than a limit on
  the element;
- getting drawings in and out: import an element to resize, import DXF,
  export SVG, and reload, which warns before discarding changes;
- read-only editing, and that Save as is the way out;
- reshaping handles, pointing at mouse_modifiers rather than repeating
  it, since Alt turning a rectangle into a polygon matters most here.

Search & Replace: the conductor row now lists what applyChange()
actually writes, and says what it does not. Cable and Bus are the only
conductor properties it skips, in both the simple and advanced paths --
which is precisely the field you would want to rename across forty wires
at once. Linked to discussion #934, where adding them is item one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CaKympWT3owLotCpEN2CFj
2026-09-19 17:31:34 +12:00
ispyisail f3bfa8387c Document Search & Replace and the nomenclature/summary query builder
Both were confirmed still-real gaps from the survey: Search & Replace
(sources/SearchAndReplace/, ~3,180 lines) was a single features.md bullet,
and the query-builder UI (sources/dataBase/ui/, ~1,088 lines) was only
named once inside project_database.md as a pointer to ElementQueryWidget,
with no workflow documentation.

## Search & Replace

The name is misleading and worth correcting up front: this is not text
find/replace. SearchAndReplaceWorker::applyChange() shows the real
semantics -- an empty field leaves a property untouched, a filled field
replaces it wholesale (never a substring swap), and a reserved sentinel
string (set via a per-field checkbox, never typed by the user) explicitly
clears a field. Three states per field, not two. Traced through
setupLineEdit()'s own doc comment and applyChange()'s three-branch
behavior to be sure of this before writing it down.

## Nomenclature / summary query builder

ElementQueryWidget (element_nomenclature_view) and SummaryQueryWidget
(project_summary_view) are a visual SELECT builder: two-list column
picker, seven filter modes with their exact SQL traced from
on_m_filter_le_textEdited()'s switch statement (No filter/Not empty/
Empty/Contains/Does not contain/Is equal/Is not equal), group-by and
count, an "Edit SQL query" escape hatch, and named saved configurations.
Explicit about what it is not: not a general SQL client (bound to one
view, can't change the FROM even in raw-SQL mode), and not the same
column set as --export-bom, which was verified to hardcode its own fixed
list in cli_export.cpp rather than sharing this widget's choices.

Links the existing one-line Search & Replace mentions in features (all
three languages) to the new page. EN/FR/DE for both.
2026-09-12 07:29:35 +12:00