pub enum Mode {
Show 24 variants
Board,
BulkModal,
TriageInbox,
RolloverDialog,
Detail,
Form,
ConfirmDelete,
MoveIntoDone {
target_col: usize,
buffer: String,
},
ConfirmBlockedMove {
target_col: usize,
warning: String,
},
TransitionReason {
target_col: usize,
reason: String,
buffer: String,
},
Help {
return_to: Box<Mode>,
},
ContextMenu {
return_to: Box<Mode>,
},
Filter {
buffer: String,
},
FilterModal,
Settings,
PlanningManagement,
PlanningForm,
DatePicker {
return_to: Box<Mode>,
},
Comment {
buffer: String,
},
Asset {
buffer: String,
},
EditLintWarning {
filename: String,
message: String,
},
LinkCreate {
buffer: String,
step: LinkStep,
target: Option<u32>,
},
LinkEdit {
index: usize,
buffer: String,
step: LinkStep,
target: Option<u32>,
kind: Option<RelationKind>,
},
ConfirmRemoveRelationship {
index: usize,
},
}Variants§
Board
BulkModal
The batch modal (WP07). The modal’s state is in App::bulk; the mode says
only that it is open, exactly as Mode::FilterModal does.
TriageInbox
The triage inbox (WP06, T029). A modal over the board like settings and the batch modal, so the board, its tabs and its card cursor are all still there underneath and unchanged when it closes.
The inbox’s own cursor and selection live in App::triage rather than
in BoardState, which is what makes “the normal board/detail
selection is unchanged when the inbox is not active” a property of
which struct each cursor is in rather than something a test has to
remember to restore.
RolloverDialog
Detail
Form
ConfirmDelete
MoveIntoDone
ConfirmBlockedMove
The blocked-move acknowledgement prompt (WP04, FR-004).
Reached instead of applying a move toward the board’s completion column
when the issue has open blockers. warning is the shared text from
commands::blocked_note, so the TUI says exactly what the CLI says.
TransitionReason
The reasoned-override prompt (WP05, FR-002, contract §3.3).
Reached instead of applying a move that leaves a terminal category
when the board declares a category_map. reason is the shared
diagnostic from the service, so the TUI says exactly what the CLI says —
parity includes the message, not only the accept/refuse decision.
This prompt is the whole reason WP05 exists on this path. Until it, a
terminal-exit transition was refused by the seam with a message naming
tix move … --reason, and the TUI had no way to supply one — the flag
is a CLI spelling and the TUI has no flags. So a user who moved an issue to
done in the TUI could not move it back, in the TUI, at all.
Fields
Help
ContextMenu
Issue context menu opened by right-clicking a card (D5); return_to is
the mode it was opened from (the board). Activation runs the exact
action the equivalent key binding would.
Filter
FilterModal
Settings
PlanningManagement
PlanningForm
DatePicker
Calendar date picker popup; return_to is the modal it overlays.
Comment
Asset
EditLintWarning
LinkCreate
Create a relationship from the detail view (#1359), in two steps.
Step::Target asks for the other issue as a selector — the same string
tix link <from> <to> takes, so #4, 4, or a title fragment all work and
an unresolvable one produces the CLI’s own error rather than a TUI-specific
one. Step::Kind then asks for the kind, and it is required: C-001 forbids
an untypeable relationship, so there is no default to fall back to and an
empty or unrecognised answer is a refusal, not a guess.
Fields
target: Option<u32>The target resolved by the Target step, carried forward to Kind.
Carried rather than re-resolved: the first step already applied the CLI’s
selector rules and reported its errors, and re-reading the buffer’s
meaning a second time would be a second place for the two to disagree. A
Kind step with no target cannot happen — the mode is only entered in
that state with one.
LinkEdit
Re-kind or retarget the relationship under the detail pane’s cursor.
Carries the target it was opened with so the kind step can submit an edit
rather than a create: tix link edit <id> is an edit precisely because the
stable id survives a re-kind, and a create-then-remove pair would lose it.
Fields
target: Option<u32>The new target, when the user supplied one. None means keep the
existing target and change only the kind — the same as tix link edit <id> --type … with no --to.
kind: Option<RelationKind>The new kind, when the user supplied one. None likewise means keep.
ConfirmRemoveRelationship
Confirm removing the relationship under the cursor.
A relationship is stored in exactly one issue’s file, so removing it is a
write to another issue from the one on screen. It gets a confirmation for the
same reason ConfirmDelete does, and the confirmation names the edge.
Trait Implementations§
impl Eq for Mode
impl StructuralPartialEq for Mode
Auto Trait Implementations§
impl Freeze for Mode
impl RefUnwindSafe for Mode
impl Send for Mode
impl Sync for Mode
impl Unpin for Mode
impl UnsafeUnpin for Mode
impl UnwindSafe for Mode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more