Link fifty gestures on the help sheet to the manual section that shows them
The sheet could now offer "See it", but no gesture said where to look. Every GESTURE tag whose move the manual describes names that section: the white-balance picker, zoom and pan, masks, undo and snapshots, export, colour labels and ratings, selection, collections, the People page, thumbnail size. Fifty of the fifty-one; the one left, putting a single control back to its default, has no section and is too small to earn one. Three important gestures had nowhere to land, so the manual gains three short sections, without pictures for now: Bursts (opening a folded burst, choosing the frame it shows, and the eyes-open filter), Moving between photographs (the roll, the arrows and A/D in develop) and Copying settings (Copy, Paste, Paste to N, and choosing what a copy carries). The page, the gesture book and docs/gestures.md are regenerated from them.
This commit is contained in:
@@ -1634,6 +1634,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// select a second photograph — the first tap would open it.
|
||||
// The hold is the fast way in and the button is the one that
|
||||
// can be found.
|
||||
// manual: selecting-several
|
||||
//
|
||||
// GESTURE: Add or remove one photograph
|
||||
// where: Library grid
|
||||
@@ -1642,12 +1643,14 @@ export component LibraryGrid inherits Rectangle {
|
||||
// why: While selecting, a tap never opens. That is the whole point
|
||||
// of the mode: one meaning per gesture at a time. Press Done to
|
||||
// get tap-to-open back.
|
||||
// manual: selecting-several
|
||||
//
|
||||
// GESTURE: Leave selecting
|
||||
// where: Library grid
|
||||
// touch: Press Done in the header
|
||||
// pointer: Press Done in the header
|
||||
// keys: Escape
|
||||
// manual: selecting-several
|
||||
in property <bool> select-mode: false;
|
||||
callback toggle-select-mode();
|
||||
|
||||
@@ -1683,6 +1686,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// there the drag cannot be lost to a scroll. A mouse never
|
||||
// waits: the cursor is precise enough that a sideways drag is
|
||||
// unambiguous from the first pixel.
|
||||
// manual: collections
|
||||
in-out property <int> held-row: -1;
|
||||
/// TRACES: FR-CAT-5
|
||||
// --- reordering a manual collection (FR-CAT-7) --------------------------
|
||||
@@ -1749,6 +1753,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// can scroll between the two taps — the ranges that hurt on a
|
||||
// tablet are longer than a screenful, which is exactly where a
|
||||
// finger sweep runs out.
|
||||
// manual: selecting-several
|
||||
property <bool> ranging: false;
|
||||
|
||||
// A range armed against nothing has no anchor to extend from, and the strip
|
||||
@@ -2461,6 +2466,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// drops frames where the chosen people are caught
|
||||
// blinking, and leaves sunglasses and eyes it could
|
||||
// not read alone.
|
||||
// manual: bursts
|
||||
if root.filter-people.length > 0: FilterChip {
|
||||
icon: "eye";
|
||||
label: "Eyes open";
|
||||
@@ -2492,6 +2498,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// intersection. The tray is where both terms and the
|
||||
// choice between them live, because a filter belongs
|
||||
// on the filter bar.
|
||||
// manual: people
|
||||
FilterChip {
|
||||
icon: root.people-tray ? "chevron-down" : "chevron-right";
|
||||
label: "People";
|
||||
@@ -2610,6 +2617,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// why: Each chip is the label's mark and its name, so
|
||||
// the one you want is found by reading it; tap
|
||||
// the lit chip again to show every label.
|
||||
// manual: rating-and-flagging
|
||||
//
|
||||
// TRACES: FR-CAT-6 | NFR-A11Y-3
|
||||
// One chip per colour label, each the cell's own mark and the
|
||||
@@ -3077,6 +3085,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// plain chord opens them beside an Export
|
||||
// button and the shifted one skips straight to
|
||||
// exporting.
|
||||
// manual: export
|
||||
//
|
||||
// TRACES: FR-EXP-7 | FR-UI-5
|
||||
// Before the bare keys below: a chord must not also be read
|
||||
@@ -3096,6 +3105,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// selection bar
|
||||
// pointer: Select them, then "Paste to N"
|
||||
// keys: Ctrl+V
|
||||
// manual: copying-settings
|
||||
//
|
||||
// TRACES: FR-DEV-6 | FR-UI-5
|
||||
// Silent with nothing copied, as the button is disabled.
|
||||
@@ -3123,6 +3133,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// with a ceiling — the twos and threes still
|
||||
// to be decided — is the keyboard's alone, and
|
||||
// the bar says so in words while it holds.
|
||||
// manual: rating-and-flagging
|
||||
//
|
||||
// Held rather than typed in sequence, so nothing waits
|
||||
// to find out whether a second digit is coming: every
|
||||
@@ -3176,6 +3187,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// mark carries its label's initial, so the
|
||||
// label is read without telling the colours
|
||||
// apart.
|
||||
// manual: rating-and-flagging
|
||||
//
|
||||
// TRACES: FR-CAT-5 | FR-UI-5 | NFR-A11Y-3
|
||||
// After the F chord above, which has returned for its own
|
||||
@@ -3348,6 +3360,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// why: There is no wheel on a tablet, so without the
|
||||
// pinch the cell size could only be changed by a
|
||||
// control a finger cannot reach.
|
||||
// manual: getting-about
|
||||
grid-pinch := ScaleRotateGestureHandler {
|
||||
width: 100%;
|
||||
height: parent.viewport-height;
|
||||
@@ -3549,6 +3562,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// why: The selection is what the drag carries, which is
|
||||
// why selecting several is worth the mode: forty
|
||||
// photographs file in one gesture.
|
||||
// manual: collections
|
||||
for cell[i] in root.cells: DragArea {
|
||||
// Cells are positioned at their **absolute** place in the
|
||||
// library, not their index in the loaded window: the window
|
||||
@@ -3846,6 +3860,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// finger to dwell 120 ms instead, and that
|
||||
// rejected ordinary taps — a real tap is
|
||||
// often quicker than a brush.
|
||||
// manual: developing-a-photograph
|
||||
property <int> down-finger: -1;
|
||||
property <bool> click-pending: false;
|
||||
|
||||
@@ -3963,6 +3978,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// why: A star has to take the press without it
|
||||
// also reaching the cell, or every rating
|
||||
// throws the user into develop.
|
||||
// manual: rating-and-flagging
|
||||
//
|
||||
// --- the rating strip, INSIDE the cell's hit area ---
|
||||
//
|
||||
@@ -4104,6 +4120,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// they are open and side by side, which is
|
||||
// the one moment the alternatives are on
|
||||
// screen to be compared.
|
||||
// manual: bursts
|
||||
//
|
||||
// Drawn on every frame of an open group and on none of
|
||||
// a folded one. Folded, the single cell showing *is*
|
||||
@@ -4769,6 +4786,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// why: Distinct from Done, which leaves the mode
|
||||
// entirely. Clearing keeps it, so the next
|
||||
// selection can start straight away.
|
||||
// manual: selecting-several
|
||||
if !root.ranging && root.selected-count > 0: Button {
|
||||
text: "Clear";
|
||||
y: (parent.height - self.height) / 2;
|
||||
@@ -4788,6 +4806,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// taps otherwise, and "all of them, except those
|
||||
// three" is a far more common shape than the taps it
|
||||
// took to say it.
|
||||
// manual: selecting-several
|
||||
if !root.ranging && root.selected-count > 0: Button {
|
||||
text: "Select all";
|
||||
y: (parent.height - self.height) / 2;
|
||||
@@ -4928,6 +4947,7 @@ export component LibraryGrid inherits Rectangle {
|
||||
// three collections and never which. This is the sheet
|
||||
// that names them, and the only way out of one the grid
|
||||
// is not currently scoped to.
|
||||
// manual: collections
|
||||
if !root.ranging && root.selected-count > 0: Button {
|
||||
text: "Collections…";
|
||||
y: (parent.height - self.height) / 2;
|
||||
|
||||
Reference in New Issue
Block a user