Put the rest of the selection settings on the Options card

Options → Selection already carried the pick box, the selection-area effect
and the grip visuals. Four settings behind it were finished, persisted and
reachable only by typing a system variable, and one more was a constant.

**Four that only needed a widget.** `SELECTIONEFFECT`, `SELECTIONPREVIEW`,
`PICKADD` and `PICKDRAG` are all wired end to end already. `SELECTIONEFFECT`
was the odd one: the card's own "Restore Defaults" button resets it, so it
could be turned off by a button and only turned back on from the command
line.

`SELECTIONPREVIEW` is a bitmask and gets one checkbox per bit, which is why
`set_preview_bit` exists rather than two inline expressions — the bits are
the thing this change is most able to get backwards.

The `PICKADD` checkbox is worded as AutoCAD words it, "use Shift to add to
selection", which is the *inverse* of the stored flag. That inversion is
commented at both ends; it reads as a bug otherwise.

**`GRIPOBJLIMIT`.** The limit past which a selection gets no grips arrived
with the selection work as a hardcoded 100, matching AutoCAD's default. It is
now a setting, a slider and a system variable, following `PICKBOX`'s path
exactly. AutoCAD's 0 means "no limit", which the old `>` comparison could not
express, so the read now guards on it — with a test, because zero is the one
value that would otherwise suppress every grip instead of allowing all of
them.

The slider covers 0..=1000, where every useful value lives; the sysvar takes
AutoCAD's full 0..=32767, and a larger value set from the command line parks
the handle at the end while the read-out keeps showing the real number.

**`SelectionPrefs`** replaces the `pick_box` parameter rather than adding
three more. `view_window` already took seventeen positional arguments, and
`pick_add` / `pick_drag_rect` are two adjacent `bool`s that would swap
silently at the call site.

**Two fixes found on the way.** `OPTIONS` and `OP` were registered for
autocomplete but never dispatched, so typing either answered "Unknown
command" and the dialog could only be opened from the start page. And the
`SELECTIONPREVIEW` doc comment had its bits the wrong way round — the code
reads `& 1` for the idle rollover and `& 2` for the in-command one, as
AutoCAD does — which would have put the two new checkboxes' labels backwards.

**Not done, deliberately.** `PICKFIRST` and `PICKAUTO` exist but are always
on, with no variable. `PICKSTYLE` is stored in the header and read by nobody
— group expansion decides from the group's own `selectable` flag — so an
"object grouping" checkbox would control nothing. Associative-hatch selection
does not exist as a selection behaviour. Each needs a behaviour change rather
than an exposure.

Of the ten new strings, en-US and el-GR are translated; the other nineteen
locales carry the English text. Composing them from existing keys, the way
el-GR composes the neighbouring labels, only works for one of the ten —
there is no existing key for "limit", "unlimited", "shift", "rectangle" or
"lasso", and "Grips: Objects" as the label of a numeric limit would be worse
than an untranslated string.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
PanosandClaude Opus 5 committed 2026-09-09 13:19:06 +03:00
1 parent f9cacaec2b
commit cabb20db45
33 files changed
+585 -37

No files matched your search

+11 -1
View File
@@ -1379,6 +1379,16 @@ common =
.pick-box-size = { common.pickbox }: { common.size }
.controls-both-the-visible-selection-box-and-the-click-aperture = Управляет видимым прицелом выбора и областью щелчка.
.visual-effect-settings = { common.visual-effects } · { properties.settings }
.selection-modes = Selection Modes
.use-shift-to-add-to-selection-pickadd = Use Shift to add to selection (PICKADD)
.press-and-drag-draws-a-rectangle-instead-of-a-lasso-pickdrag = Press and drag draws a rectangle instead of a lasso (PICKDRAG)
.show-selection-effect-selectioneffect = Show selection effect (SELECTIONEFFECT)
.preview-selection-when-no-command-is-active = Preview selection when no command is active
.preview-selection-during-a-command = Preview selection during a command
.highlights-the-object-under-the-cursor-before-it-is-picked-selectionpreview = Highlights the object under the cursor before it is picked (SELECTIONPREVIEW).
.object-limit-for-grips = Object limit for grips
.unlimited = Unlimited
.past-this-many-selected-objects-no-grips-are-drawn-0-removes-the-limit-gripobjlimit = Past this many selected objects no grips are drawn; 0 removes the limit (GRIPOBJLIMIT).
.indicate-selection-area-with-transparent-fill-selectionarea = Показывать область выбора прозрачной заливкой (SELECTIONAREA)
.selection-area-opacity = { common.selection }: { properties.opacity }
.transparency-of-the-window-and-crossing-selection-areas-selectionareaopacity = Прозрачность областей выбора рамкой и секущей рамкой (SELECTIONAREAOPACITY).
@@ -1657,7 +1667,7 @@ common =
.layerstate-no-saved-states-use-layerstate-save-name = LAYERSTATE: нет сохранённых состояний. Используйте LAYERSTATE SAVE <имя>.
.usage-color-bylayer-byblock-1-255-red-yellow-green-cyan-blue-magenta-white = Использование: COLOR <ByLayer|ByBlock|1-255|red|yellow|green|cyan|blue|magenta|white>
.usage-chprop-prop-val-props-layer-color-linetype-ltscale = Использование: CHPROP <{ common.property }> <{ common.value }> ({ common.property }: LAYER COLOR LINETYPE LTSCALE)
.setvar-ltscale-celtscale-pdmode-pdsize-textsize-orthomode-fillmode-mirrtext-fram = SETVAR: LTSCALE CELTSCALE PDMODE PDSIZE TEXTSIZE ORTHOMODE FILLMODE MIRRTEXT FRAME IMAGEFRAME PDFFRAME WIPEOUTFRAME XCLIPFRAME POINTCLOUDCLIPFRAME ZOOMWHEEL ZOOMFACTOR CURSORSIZE PICKBOX CURSORTYPE SNAPANG TEXTFILL CLIPROMPTLINES COMMANDLINEFADETIME ATTREQ ATTDIA DIMASSOC DIMCONTINUEMODE ANGBASE ANGDIR SKETCHINC SKPOLY SKTOLERANCE DONUTID DONUTOD CENTEREXE CENTERLAYER CENTERLTYPE CENTERLTSCALE CENTERLTYPEFILE CENTERCROSSSIZE CENTERCROSSGAP CENTERMARKEXE COLORTHEME SELECTIONAREA SELECTIONAREAOPACITY SELECTIONEFFECT SELECTIONEFFECTCOLOR WINDOWSAREACOLOR CROSSINGAREACOLOR SELECTIONPREVIEW GRIPSIZE GRIPCOLOR GRIPHOT GRIPHOVER | CLAYER CELTYPE TEXTSTYLE ({ common.read-only })
.setvar-ltscale-celtscale-pdmode-pdsize-textsize-orthomode-fillmode-mirrtext-fram = SETVAR: LTSCALE CELTSCALE PDMODE PDSIZE TEXTSIZE ORTHOMODE FILLMODE MIRRTEXT FRAME IMAGEFRAME PDFFRAME WIPEOUTFRAME XCLIPFRAME POINTCLOUDCLIPFRAME ZOOMWHEEL ZOOMFACTOR CURSORSIZE PICKBOX CURSORTYPE SNAPANG TEXTFILL CLIPROMPTLINES COMMANDLINEFADETIME ATTREQ ATTDIA DIMASSOC DIMCONTINUEMODE ANGBASE ANGDIR SKETCHINC SKPOLY SKTOLERANCE DONUTID DONUTOD CENTEREXE CENTERLAYER CENTERLTYPE CENTERLTSCALE CENTERLTYPEFILE CENTERCROSSSIZE CENTERCROSSGAP CENTERMARKEXE COLORTHEME SELECTIONAREA SELECTIONAREAOPACITY SELECTIONEFFECT SELECTIONEFFECTCOLOR WINDOWSAREACOLOR CROSSINGAREACOLOR SELECTIONPREVIEW GRIPSIZE GRIPCOLOR GRIPHOT GRIPHOVER GRIPOBJLIMIT | CLAYER CELTYPE TEXTSTYLE ({ common.read-only })
.setvar-dimcontinuemode-requires-0-or-1 = SETVAR: DIMCONTINUEMODE = 0 / 1.
.setvar-donutid-requires-a-finite-value-greater-than-or-equal-to-zero = SETVAR: DONUTID требует конечное значение, большее или равное нулю.
.setvar-donutod-requires-a-finite-value-greater-than-zero = SETVAR: DONUTOD требует конечное значение больше нуля.