pub struct ManagerState { /* private fields */ }Expand description
Denotes the complete renderer-neutral manager application state.
Implementations§
Source§impl ManagerState
impl ManagerState
Sourcepub const fn page(&self) -> ManagerPage<QueueId>
pub const fn page(&self) -> ManagerPage<QueueId>
Observes the current page.
Sourcepub fn queue(&self) -> &[QueueEntry]
pub fn queue(&self) -> &[QueueEntry]
Observes queue entries in collection order.
Sourcepub const fn selected_id(&self) -> Option<QueueId>
pub const fn selected_id(&self) -> Option<QueueId>
Observes the selected stable identity.
Sourcepub const fn detail_control(&self) -> Option<DetailControl>
pub const fn detail_control(&self) -> Option<DetailControl>
Observes the selected visible details control.
Sourcepub fn selected(&self) -> Option<&QueueEntry>
pub fn selected(&self) -> Option<&QueueEntry>
Observes the selected entry.
Sourcepub fn entry(&self, id: QueueId) -> Option<&QueueEntry>
pub fn entry(&self, id: QueueId) -> Option<&QueueEntry>
Observes one entry by stable identity.
Sourcepub fn output_draft(&self) -> &str
pub fn output_draft(&self) -> &str
Observes the output-file-name editor draft.
Sourcepub fn waiting(&self) -> impl Iterator<Item = &QueueEntry>
pub fn waiting(&self) -> impl Iterator<Item = &QueueEntry>
Observes all waiting entries in collection order.
Sourcepub fn first_waiting_format_catalog(&self) -> Option<&QueueEntry>
pub fn first_waiting_format_catalog(&self) -> Option<&QueueEntry>
Observes the first format inspection waiting for an interpreter.
Sourcepub fn has_active_transfer(&self) -> bool
pub fn has_active_transfer(&self) -> bool
Observes whether any transfer is active.
Source§impl ManagerState
impl ManagerState
Sourcepub fn transfer_request(&mut self, id: QueueId)
pub fn transfer_request(&mut self, id: QueueId)
Makes one request a transfer, the way a submitted line naming two ends does.
A submitted line states what a request is; this is how a test states one without a line that would.
Trait Implementations§
Source§impl Clone for ManagerState
impl Clone for ManagerState
Source§impl Debug for ManagerState
impl Debug for ManagerState
Source§impl DetailSelectionAlg for ManagerState
impl DetailSelectionAlg for ManagerState
Source§fn selected_detail_control(&self) -> Option<DetailControl>
fn selected_detail_control(&self) -> Option<DetailControl>
Source§fn set_selected_detail_control(&mut self, control: Option<DetailControl>)
fn set_selected_detail_control(&mut self, control: Option<DetailControl>)
Source§impl DownloadCollectionAlg for ManagerState
impl DownloadCollectionAlg for ManagerState
Source§fn add_sources(self, sources: impl IntoIterator<Item = Self::Source>) -> Self
fn add_sources(self, sources: impl IntoIterator<Item = Self::Source>) -> Self
Source§impl DownloadLogAlg for ManagerState
impl DownloadLogAlg for ManagerState
Source§fn note_download(&mut self, id: Self::Id, note: String)
fn note_download(&mut self, id: Self::Id, note: String)
Source§impl DraftStateAlg for ManagerState
impl DraftStateAlg for ManagerState
Source§impl FormatCatalogStateAlg for ManagerState
impl FormatCatalogStateAlg for ManagerState
Source§fn request_format_catalog(&mut self, id: Self::Id)
fn request_format_catalog(&mut self, id: Self::Id)
Source§fn apply_format_catalog_event(
&mut self,
id: Self::Id,
event: FormatDiscoveryOp<Self::Format>,
)
fn apply_format_catalog_event( &mut self, id: Self::Id, event: FormatDiscoveryOp<Self::Format>, )
Source§impl InputDraftAlg for ManagerState
impl InputDraftAlg for ManagerState
Source§fn input_draft(&self) -> &str
fn input_draft(&self) -> &str
Source§fn set_input_draft(&mut self, draft: String)
fn set_input_draft(&mut self, draft: String)
Source§impl ManagerSorts for ManagerState
impl ManagerSorts for ManagerState
Source§type Source = SourceRequest
type Source = SourceRequest
Source§type Options = DownloadOptions
type Options = DownloadOptions
Source§type Change = PlannedChange
type Change = PlannedChange
Source§type Entry = QueueEntry
type Entry = QueueEntry
Source§impl ManagerStatusAlg for ManagerState
impl ManagerStatusAlg for ManagerState
Source§fn manager_message(&self) -> Option<&str>
fn manager_message(&self) -> Option<&str>
Source§fn set_manager_message(&mut self, message: Option<String>)
fn set_manager_message(&mut self, message: Option<String>)
Source§impl MediaOptionsAlg for ManagerState
impl MediaOptionsAlg for ManagerState
Source§fn page(&self) -> ManagerPage<Self::Id>
fn page(&self) -> ManagerPage<Self::Id>
Source§fn set_page(&mut self, page: ManagerPage<Self::Id>)
fn set_page(&mut self, page: ManagerPage<Self::Id>)
Source§impl OutputChoiceAlg for ManagerState
impl OutputChoiceAlg for ManagerState
Source§fn suggested_output(&self) -> Self::Output
fn suggested_output(&self) -> Self::Output
Source§impl OutputDraftAlg for ManagerState
impl OutputDraftAlg for ManagerState
Source§fn output_draft(&self) -> &str
fn output_draft(&self) -> &str
Source§fn set_output_draft(&mut self, draft: String)
fn set_output_draft(&mut self, draft: String)
Source§impl PartialEq for ManagerState
impl PartialEq for ManagerState
Source§impl QueueAppendAlg for ManagerState
impl QueueAppendAlg for ManagerState
Source§impl QueueCatalogAlg for ManagerState
impl QueueCatalogAlg for ManagerState
Source§fn queue_ids(&self) -> impl Iterator<Item = Self::Id>
fn queue_ids(&self) -> impl Iterator<Item = Self::Id>
Source§fn selected_queue_id(&self) -> Option<Self::Id>
fn selected_queue_id(&self) -> Option<Self::Id>
Source§fn set_selected_queue_id(&mut self, selected: Option<Self::Id>)
fn set_selected_queue_id(&mut self, selected: Option<Self::Id>)
Source§impl QueueDryRunAlg for ManagerState
impl QueueDryRunAlg for ManagerState
Source§fn set_queue_dry_run(&mut self, id: Self::Id, dry_run: bool)
fn set_queue_dry_run(&mut self, id: Self::Id, dry_run: bool)
Source§impl QueueDuplicateAlg for ManagerState
impl QueueDuplicateAlg for ManagerState
Source§impl QueueFormatEditAlg for ManagerState
impl QueueFormatEditAlg for ManagerState
Source§fn cycle_queue_format(&mut self, id: Self::Id, forward: bool)
fn cycle_queue_format(&mut self, id: Self::Id, forward: bool)
Source§impl QueueOutputAlg for ManagerState
impl QueueOutputAlg for ManagerState
Source§fn set_queue_output(&mut self, id: Self::Id, output: PathBuf)
fn set_queue_output(&mut self, id: Self::Id, output: PathBuf)
Source§impl QueuePauseAlg for ManagerState
impl QueuePauseAlg for ManagerState
Source§fn toggle_queue_pause(&mut self, id: Self::Id)
fn toggle_queue_pause(&mut self, id: Self::Id)
Source§impl QueueRemoveAlg for ManagerState
impl QueueRemoveAlg for ManagerState
Source§fn remove_queue_entry(&mut self, id: Self::Id)
fn remove_queue_entry(&mut self, id: Self::Id)
Source§impl QueueSourceAlg for ManagerState
impl QueueSourceAlg for ManagerState
Source§fn set_queue_source(&mut self, id: Self::Id, source: String)
fn set_queue_source(&mut self, id: Self::Id, source: String)
Source§impl RehearsalStateAlg for ManagerState
impl RehearsalStateAlg for ManagerState
Source§fn apply_rehearsal_event(
&mut self,
id: Self::Id,
event: RehearsalObservationOp<Self::Change>,
)
fn apply_rehearsal_event( &mut self, id: Self::Id, event: RehearsalObservationOp<Self::Change>, )
Source§impl SafeExitAlg for ManagerState
impl SafeExitAlg for ManagerState
Source§fn exit_requested(&self) -> bool
fn exit_requested(&self) -> bool
Source§fn request_safe_exit(&mut self)
fn request_safe_exit(&mut self)
Source§impl SourceMetadataAlg for ManagerState
impl SourceMetadataAlg for ManagerState
Source§impl SourceRecognitionAlg for ManagerState
impl SourceRecognitionAlg for ManagerState
Source§fn recognizes_source(&self, line: &str) -> bool
fn recognizes_source(&self, line: &str) -> bool
Source§impl SourceRequestAlg for ManagerState
impl SourceRequestAlg for ManagerState
impl StructuralPartialEq for ManagerState
Source§impl SubmissionAlg for ManagerState
impl SubmissionAlg for ManagerState
Source§impl TextEditorStateAlg for ManagerState
impl TextEditorStateAlg for ManagerState
Source§impl TransferStateAlg for ManagerState
impl TransferStateAlg for ManagerState
Source§fn set_waiting(&mut self, id: Self::Id)
fn set_waiting(&mut self, id: Self::Id)
Source§fn restart_waiting(&mut self, id: Self::Id)
fn restart_waiting(&mut self, id: Self::Id)
Source§fn apply_transfer_event(&mut self, id: Self::Id, event: TransferObservationOp)
fn apply_transfer_event(&mut self, id: Self::Id, event: TransferObservationOp)
Auto Trait Implementations§
impl Freeze for ManagerState
impl RefUnwindSafe for ManagerState
impl Send for ManagerState
impl Sync for ManagerState
impl Unpin for ManagerState
impl UnsafeUnpin for ManagerState
impl UnwindSafe for ManagerState
Blanket Implementations§
Source§impl<This> AttentionLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueOutputAlg + DraftStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg + TransferStateAlg + RehearsalStateAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Change: PlannedChangeAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
impl<This> AttentionLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueOutputAlg + DraftStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg + TransferStateAlg + RehearsalStateAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Change: PlannedChangeAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
Source§fn attention_laws(&mut self) -> Result<(), Error>
fn attention_laws(&mut self) -> Result<(), Error>
Checks what the collection states to whoever is doing the work it asks for.
The laws checked are:
- exactly the requests waiting for an interpreter want work done;
- a request whose work has begun is no longer waiting for it;
- a request being worked on wants its run, a paused one wants it held, and a removed one wants none;
- once the reader is leaving, no request wants its run;
- a destination is taken exactly while another request is writing to it.
§Errors
Returns the first violated law.
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<This> BreadcrumbExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy,
impl<This> BreadcrumbExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy,
Derives one breadcrumb per page the current page rests under, the collection first.
Source§fn entry_label(&self, id: <This as ManagerSorts>::Id) -> &str
fn entry_label(&self, id: <This as ManagerSorts>::Id) -> &str
Observes what one identity denotes, or that the collection no longer holds it.
Source§impl<This> ChoiceEditingExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + FormatCatalogStateAlg + QueueDryRunAlg + ManagerStatusAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy,
impl<This> ChoiceEditingExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + FormatCatalogStateAlg + QueueDryRunAlg + ManagerStatusAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy,
Source§fn open_report(&mut self)
fn open_report(&mut self)
Opens the report of what the selected request would do.
Source§fn open_command(&mut self)
fn open_command(&mut self)
Opens the command the selected request would run, stated whole.
Source§fn toggle_dry_run(&mut self)
fn toggle_dry_run(&mut self)
Turns the rehearsal mode of the selected request on or off.
A request that states no rehearsal mode has none to turn, so the intention denotes nothing.
Source§fn open_formats(&mut self)
fn open_formats(&mut self)
Opens format selection only while the selected request is editable.
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§fn select_relative(&mut self, forward: bool)
fn select_relative(&mut self, forward: bool)
Selects the adjacent entry with collection-end wraparound.
Source§fn remove_selected(&mut self)
fn remove_selected(&mut self)
Removes selection and chooses its nearest remaining neighbor.
Source§fn select_detail(&mut self, forward: bool)
fn select_detail(&mut self, forward: bool)
Selects an adjacent expanded-row position, including the row itself.
Source§fn normalize_detail_control(&mut self, id: <This as ManagerSorts>::Id)
fn normalize_detail_control(&mut self, id: <This as ManagerSorts>::Id)
Keeps row focus and replaces a detail cursor that is no longer meaningful.
Source§impl<This> DraftLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
impl<This> DraftLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
Source§fn draft_laws(&mut self) -> Result<(), Error>
fn draft_laws(&mut self) -> Result<(), Error>
Checks that a draft is observed back and submits exactly the sources it names.
The laws checked are:
- a draft is observed back exactly as it was replaced;
- the source draft and the output-name draft are independent;
- submitting adds the non-blank trimmed lines in draft order and nothing else;
- submitting clears the draft and denotes the collection;
- submitting a draft naming no source adds nothing and moves no focus.
§Errors
Returns the first violated law.
Source§impl<This> DraftSubmissionExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + DraftStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Id: Copy,
impl<This> DraftSubmissionExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + DraftStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Id: Copy,
Source§fn add_sources(&mut self, requests: Vec<<This as ManagerSorts>::Source>)
fn add_sources(&mut self, requests: Vec<<This as ManagerSorts>::Source>)
Adds requests, focuses the first new identity, and clears stale status.
Source§fn submit_draft(&mut self)
fn submit_draft(&mut self)
Submits non-empty trimmed draft lines as progressive requests.
Source§impl<This> GaugeLaws<This> for This
impl<This> GaugeLaws<This> for This
Source§fn gauge_laws(&self) -> Result<(), Error>
fn gauge_laws(&self) -> Result<(), Error>
Checks that a gauge states a share without claiming more resolution than it has.
The laws checked are:
- a gauge occupies its stated width whatever share it states;
- no share is stated as filled before it is reached, and none is stated twice;
- nothing stated is nothing filled, and everything stated fills the whole track;
- the stated text occupies exactly one cell per counted cell.
§Errors
Returns the first violated law.
Source§impl<This> IntentLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueDuplicateAlg + QueueFormatEditAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + TransferStateAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + QueueOutputAlg + QueueSourceAlg + SourceMetadataAlg + TextEditorStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
impl<This> IntentLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueDuplicateAlg + QueueFormatEditAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + TransferStateAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + QueueOutputAlg + QueueSourceAlg + SourceMetadataAlg + TextEditorStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
Source§fn intent_laws(&mut self) -> Result<(), Error>
fn intent_laws(&mut self) -> Result<(), Error>
Checks that each intention denotes exactly the meaning derived for it.
The laws checked are:
- the selection intentions denote derived collection navigation;
- expanding and returning is the identity on page and selection;
- the editing intentions denote the derived cursor operations;
- an intention addressed to one identity leaves the others unobserved.
§Errors
Returns the first violated law.
Source§fn law_entry_shape(
&self,
id: <This as ManagerSorts>::Id,
) -> Option<(Vec<DetailControl>, Option<SpaceAction>)>
fn law_entry_shape( &self, id: <This as ManagerSorts>::Id, ) -> Option<(Vec<DetailControl>, Option<SpaceAction>)>
Observes one entry through exactly what the specification exposes about it.
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 moreSource§impl<This> IntoExt<This> for This
impl<This> IntoExt<This> for This
Source§fn to<R>(self) -> Rwhere
This: Into<R>,
fn to<R>(self) -> Rwhere
This: Into<R>,
A version of Into::into function that can be used to explicitly specify the target
conversion type.
use alux_sdk::*;
// `Into` requires context to infer the type,
let _: i64 = Into::into(42_i8);
// The opposite `From` requires context to infer the type,
let _: i64 = From::from(42_i8);
// `.to()` can be used in the same way as a postfix function (the same as `.into()`),
let _: i64 = 42_i8.to();
// but also with the type specified explicitly.
let _ = 42_i8.to::<i64>();
// Especially useful to chain multiple conversions inline.
let _: i64 = 42_i8.to::<i16>().to::<i32>().into();Source§impl<This> IntoIteratorExt<This> for This
impl<This> IntoIteratorExt<This> for This
Source§fn try_collect_vec<T, E>(self) -> Result<Vec<T>, E>
fn try_collect_vec<T, E>(self) -> Result<Vec<T>, E>
A variant of the try_collect and collect_vec combined function from the Itertools
library. The materialized value is a Vec inside a Result object.
Returns the first error without collecting later values.
use alux_sdk::*;
let values = [Ok::<_, &str>(1), Ok(2), Ok(3)]
.into_iter()
.try_collect_vec();
assert_eq!(values, Ok(vec![1, 2, 3]));Source§fn collect_exact<T>(self, n: usize) -> Option<Vec<T>>where
This: Iterator<Item = T>,
fn collect_exact<T>(self, n: usize) -> Option<Vec<T>>where
This: Iterator<Item = T>,
Takes exactly n elements from the iterator.
Returns Some(Vec<T>) if the iterator yields exactly n elements,
otherwise returns None.
use alux_sdk::*;
let v = [1, 2, 3];
assert_eq!(v.iter().copied().collect_exact(3), Some(vec![1, 2, 3]));
assert_eq!(v.iter().copied().collect_exact(4), None);
assert_eq!(v.iter().copied().collect_exact(2), None);Source§fn try_unzip<A, B, E>(self) -> Result<(Vec<A>, Vec<B>), E>
fn try_unzip<A, B, E>(self) -> Result<(Vec<A>, Vec<B>), E>
Efficiently splits an iterator of Result<(A, B), E> into two Vecs, short-circuiting on error.
Consumes the iterator, collecting all A elements into one vector and all B elements into another,
without first allocating an intermediate vector of tuples. Returns the tuple (Vec<A>, Vec<B>) on success,
or the first error encountered.
use alux_sdk::*;
let input = vec![Ok((1, "x")), Ok((2, "y"))];
let (xs, ys) = input.try_unzip::<_, _, ()>().unwrap();
assert_eq!(xs, vec![1, 2]);
assert_eq!(ys, vec!["x", "y"]);Source§impl<This> KeyBindingExt<This> for Thiswhere
This: NavigationStateAlg,
impl<This> KeyBindingExt<This> for Thiswhere
This: NavigationStateAlg,
Source§fn page_bindings(
&self,
) -> impl Iterator<Item = KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>>
fn page_bindings( &self, ) -> impl Iterator<Item = KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>>
States every keystroke the current page binds, cursor movement first.
Typed scalars are not bound here: on an editor page every scalar the table leaves free denotes insertion, which is one rule rather than one binding per character.
Source§fn keystroke_meaning(
&self,
stroke: Keystroke,
) -> Option<KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>>
fn keystroke_meaning( &self, stroke: Keystroke, ) -> Option<KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>>
States what one keystroke denotes on the current page.
Exit is bound on every page. Any other modified keystroke denotes nothing, so a chord the terminal reports is never mistaken for the unmodified key inside it.
Source§fn typed_meaning(
&self,
typed: char,
) -> Option<KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>>
fn typed_meaning( &self, typed: char, ) -> Option<KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>>
States what one typed scalar denotes on the current page.
Source§fn paste_meaning(
&self,
text: &str,
) -> Option<KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>>
fn paste_meaning( &self, text: &str, ) -> Option<KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>>
States what pasted text denotes on the current page.
Source§fn page_accepts_text(&self) -> bool
fn page_accepts_text(&self) -> bool
Observes whether the current page holds a text draft free scalars belong to.
Source§fn action_keys(&self, action: ManagerAction) -> impl Iterator<Item = Keystroke>
fn action_keys(&self, action: ManagerAction) -> impl Iterator<Item = Keystroke>
States the keys reaching one action on the current page, the primary key first.
Source§impl<This> KeyBindingLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueDuplicateAlg + QueueFormatEditAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + TransferStateAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + QueueOutputAlg + QueueSourceAlg + SourceMetadataAlg + TextEditorStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
impl<This> KeyBindingLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueDuplicateAlg + QueueFormatEditAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + TransferStateAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + QueueOutputAlg + QueueSourceAlg + SourceMetadataAlg + TextEditorStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
Source§fn key_binding_laws(&mut self) -> Result<(), Error>
fn key_binding_laws(&mut self) -> Result<(), Error>
Checks that every page binds its keys unambiguously and admits nothing it did not bind.
The laws checked are:
- no two bindings on one page are reached by the same keystroke;
- every keystroke a page binds denotes that binding;
- exit is bound on every page, and no other modified keystroke denotes anything;
- typed scalars denote insertion exactly on the pages holding a draft;
- a gated binding whose action has no meaning leaves the manager as it was.
§Errors
Returns the first violated law.
Source§impl<This> KeyInputExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueDuplicateAlg + QueueFormatEditAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + TransferStateAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + QueueOutputAlg + QueueSourceAlg + SourceMetadataAlg + TextEditorStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
impl<This> KeyInputExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueDuplicateAlg + QueueFormatEditAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + TransferStateAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + QueueOutputAlg + QueueSourceAlg + SourceMetadataAlg + TextEditorStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
Source§fn apply_keystroke(&mut self, stroke: Keystroke) -> bool
fn apply_keystroke(&mut self, stroke: Keystroke) -> bool
Applies what one keystroke denotes, and observes whether it denoted anything.
A gated binding applies only while its action has meaning, so a disabled menu entry and a pressed key refuse the same intention.
Source§fn apply_paste(&mut self, text: &str) -> bool
fn apply_paste(&mut self, text: &str) -> bool
Applies what pasted text denotes, and observes whether it denoted anything.
Source§fn apply_binding(
&mut self,
binding: KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>,
) -> bool
fn apply_binding( &mut self, binding: KeyBinding<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>, ) -> bool
Applies one binding while the action gating it has meaning.
Source§impl<This> LogLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + DownloadLogAlg + DetailSelectionAlg + DraftStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
impl<This> LogLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + DownloadLogAlg + DetailSelectionAlg + DraftStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
Source§fn log_laws(&mut self) -> Result<(), Error>
fn log_laws(&mut self) -> Result<(), Error>
Checks that the record is keyed, ordered, and reachable from the entry it describes.
The laws checked are:
- a note reaches exactly the identity it addresses;
- notes are observed in the order they were stated;
- every entry offers its record among its details controls;
- activating that control denotes the record of that identity.
§Errors
Returns the first violated law.
Source§impl<This> ManagerAttentionExt<This> for Thiswhere
This: QueueCatalogAlg + SafeExitAlg + TransferStateAlg + RehearsalStateAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Change: PlannedChangeAlg,
<This as ManagerSorts>::Id: Copy + Eq,
impl<This> ManagerAttentionExt<This> for Thiswhere
This: QueueCatalogAlg + SafeExitAlg + TransferStateAlg + RehearsalStateAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Change: PlannedChangeAlg,
<This as ManagerSorts>::Id: Copy + Eq,
Source§fn wanting_work(&self) -> Vec<<This as ManagerSorts>::Id>
fn wanting_work(&self) -> Vec<<This as ManagerSorts>::Id>
States every request waiting for an interpreter to do what it asks, in collection order.
Source§fn wanted(&self, id: <This as ManagerSorts>::Id) -> Wanted
fn wanted(&self, id: <This as ManagerSorts>::Id) -> Wanted
States what one request wants of the run working on its behalf.
Source§fn rehearses(&self, id: <This as ManagerSorts>::Id) -> bool
fn rehearses(&self, id: <This as ManagerSorts>::Id) -> bool
States whether one request asks for a rehearsal rather than for the thing itself.
Source§fn begun(&mut self, id: <This as ManagerSorts>::Id, holdable: bool)
fn begun(&mut self, id: <This as ManagerSorts>::Id, holdable: bool)
States that a run has begun, as the kind of run the request asks for.
A rehearsal moves nothing and is over when it has said what it would do, so it is never told that it could be held still.
Source§fn ran_for(&mut self, id: <This as ManagerSorts>::Id, elapsed: Duration)
fn ran_for(&mut self, id: <This as ManagerSorts>::Id, elapsed: Duration)
States how long one run has been running, when the request counts that.
A rehearsal moves nothing, so how long it took states nothing about a transfer.
Source§fn refused(&mut self, id: <This as ManagerSorts>::Id, detail: &str)
fn refused(&mut self, id: <This as ManagerSorts>::Id, detail: &str)
States that one run refused, as the kind of run the request asks for.
Source§fn performed(
&mut self,
id: <This as ManagerSorts>::Id,
destination: PathBuf,
changes: Vec<<This as ManagerSorts>::Change>,
)
fn performed( &mut self, id: <This as ManagerSorts>::Id, destination: PathBuf, changes: Vec<<This as ManagerSorts>::Change>, )
States what one finished run did, as the kind of run the request asks for.
A rehearsal states what it would have changed. A transfer states that it is done, and how much it moved, which is what its changes add up to.
Source§fn destination_is_taken(&self, id: <This as ManagerSorts>::Id) -> bool
fn destination_is_taken(&self, id: <This as ManagerSorts>::Id) -> bool
States whether another request is already writing where this one would write.
Two runs writing one path would each publish over the other, and which of them a reader ends up with is decided by whichever finished last. The collection knows both, so it is the collection that states the clash rather than whoever happens to be running them.
Source§fn entry_phase(&self, id: <This as ManagerSorts>::Id) -> Option<TransferPhase>
fn entry_phase(&self, id: <This as ManagerSorts>::Id) -> Option<TransferPhase>
Observes the phase one request has reached, while the collection still holds it.
Source§impl<This> ManagerIntentExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueDuplicateAlg + QueueFormatEditAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + TransferStateAlg + DetailSelectionAlg + DraftStateAlg + InputDraftAlg + OutputDraftAlg + QueueOutputAlg + QueueSourceAlg + SourceMetadataAlg + TextEditorStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
impl<This> ManagerIntentExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueueRemoveAlg + QueuePauseAlg + QueueDuplicateAlg + QueueFormatEditAlg + FormatCatalogStateAlg + QueueDryRunAlg + RehearsalStateAlg + TransferStateAlg + DetailSelectionAlg + DraftStateAlg + InputDraftAlg + OutputDraftAlg + QueueOutputAlg + QueueSourceAlg + SourceMetadataAlg + TextEditorStateAlg + ManagerStatusAlg + SafeExitAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
Source§fn apply_manager_event(
&mut self,
event: ManagerIntentOp<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>,
)
fn apply_manager_event( &mut self, event: ManagerIntentOp<<This as ManagerSorts>::Id, <This as ManagerSorts>::Source, <This as ManagerSorts>::Format, <This as ManagerSorts>::Change>, )
Applies one manager intention or external observation. Applies one manager intention through the generated fold.
Source§impl<This> ManagerLawAuthoring<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + DraftStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Id: Copy,
impl<This> ManagerLawAuthoring<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + DraftStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Id: Copy,
Authors the stated number of media requests and observes the identities they were given.
The requests are stated rather than submitted: what a line reads as is what one interpreter recognizes, and a scenario about the collection is not about that.
Source§impl<This> ManagerMenuExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + DraftStateAlg + InputDraftAlg + OutputDraftAlg + TextEditorStateAlg + DetailSelectionAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
impl<This> ManagerMenuExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + DraftStateAlg + InputDraftAlg + OutputDraftAlg + TextEditorStateAlg + DetailSelectionAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
Source§fn action_availability(&self, action: ManagerAction) -> ActionAvailability
fn action_availability(&self, action: ManagerAction) -> ActionAvailability
Derives whether one reusable action currently has meaning.
Source§fn cursor_can_move(&self, forward: bool) -> bool
fn cursor_can_move(&self, forward: bool) -> bool
Derives whether the current page cursor can move in one direction.
Source§fn selection_can_activate(&self) -> bool
fn selection_can_activate(&self) -> bool
Derives whether the current cursor position denotes an activatable value.
Source§impl<This> ManagerScreenExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + DetailSelectionAlg + ManagerStatusAlg + TextEditorStateAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg + TransferViewAlg + FormatChoiceViewAlg + RehearsalViewAlg,
<<This as ManagerSorts>::Entry as FormatChoiceViewAlg>::Format: FormatDescriptionAlg,
<<This as ManagerSorts>::Entry as RehearsalViewAlg>::Change: PlannedChangeAlg,
<This as ManagerSorts>::Id: Copy + Eq,
impl<This> ManagerScreenExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + DetailSelectionAlg + ManagerStatusAlg + TextEditorStateAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg + TransferViewAlg + FormatChoiceViewAlg + RehearsalViewAlg,
<<This as ManagerSorts>::Entry as FormatChoiceViewAlg>::Format: FormatDescriptionAlg,
<<This as ManagerSorts>::Entry as RehearsalViewAlg>::Change: PlannedChangeAlg,
<This as ManagerSorts>::Id: Copy + Eq,
Source§fn screen<Syntax>(
&self,
syntax: &Syntax,
application: Application<'_>,
) -> <Syntax as ScreenSyntax>::Screenwhere
Syntax: ScreenSyntax,
fn screen<Syntax>(
&self,
syntax: &Syntax,
application: Application<'_>,
) -> <Syntax as ScreenSyntax>::Screenwhere
Syntax: ScreenSyntax,
States the whole screen the current page denotes.
Source§fn header_line<Syntax>(
&self,
syntax: &Syntax,
application: Application<'_>,
) -> <Syntax as ScreenSyntax>::Linewhere
Syntax: ScreenSyntax,
fn header_line<Syntax>(
&self,
syntax: &Syntax,
application: Application<'_>,
) -> <Syntax as ScreenSyntax>::Linewhere
Syntax: ScreenSyntax,
States what the current page belongs to and the path that reached it.
States every menu entry the page offers, the unavailable ones stated quietly.
Source§fn body<Syntax>(&self, syntax: &Syntax) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
fn body<Syntax>(&self, syntax: &Syntax) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
States what the current page holds.
Source§fn collection_body<Syntax>(
&self,
syntax: &Syntax,
expanded: Option<<This as ManagerSorts>::Id>,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
fn collection_body<Syntax>(
&self,
syntax: &Syntax,
expanded: Option<<This as ManagerSorts>::Id>,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
States the collection, one row per request, at most one of them expanded.
Source§fn compact_row<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
entry: &<This as ManagerSorts>::Entry,
) -> <Syntax as ScreenSyntax>::Rowwhere
Syntax: ScreenSyntax,
fn compact_row<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
entry: &<This as ManagerSorts>::Entry,
) -> <Syntax as ScreenSyntax>::Rowwhere
Syntax: ScreenSyntax,
States one request in one line: how far it has come, what it is, and where it stands.
Source§fn expanded_row<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
entry: &<This as ManagerSorts>::Entry,
) -> <Syntax as ScreenSyntax>::Rowwhere
Syntax: ScreenSyntax,
fn expanded_row<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
entry: &<This as ManagerSorts>::Entry,
) -> <Syntax as ScreenSyntax>::Rowwhere
Syntax: ScreenSyntax,
States everything one request holds, and everything that can be done to it.
Source§fn input_line<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
entry: &<This as ManagerSorts>::Entry,
) -> <Syntax as ScreenSyntax>::Linewhere
Syntax: ScreenSyntax,
fn input_line<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
entry: &<This as ManagerSorts>::Entry,
) -> <Syntax as ScreenSyntax>::Linewhere
Syntax: ScreenSyntax,
States where the request comes from, or the draft renaming that.
Source§fn output_line<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
entry: &<This as ManagerSorts>::Entry,
) -> <Syntax as ScreenSyntax>::Linewhere
Syntax: ScreenSyntax,
fn output_line<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
entry: &<This as ManagerSorts>::Entry,
) -> <Syntax as ScreenSyntax>::Linewhere
Syntax: ScreenSyntax,
States where the request will be published, or the draft renaming it.
Source§fn format_choice_parts(
&self,
entry: &<This as ManagerSorts>::Entry,
) -> (String, String)
fn format_choice_parts( &self, entry: &<This as ManagerSorts>::Entry, ) -> (String, String)
States what the request chose: what it is called, and what choosing it does.
A choice a reader would not recognize by name says what it does, and says it right after its name: the two are one phrase, and a column between them would break it in half.
Source§fn command_body<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
fn command_body<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
States the whole command one request would run, and nothing else.
Source§fn transfer_summary_text(&self, entry: &<This as ManagerSorts>::Entry) -> String
fn transfer_summary_text(&self, entry: &<This as ManagerSorts>::Entry) -> String
States what a transfer has moved and how quickly, in one phrase.
Source§fn formats_body<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
fn formats_body<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
States the choices one request offers: the roles first, then everything discovered.
Source§fn chosen_choice_row(
&self,
entry: &<This as ManagerSorts>::Entry,
discovered: bool,
) -> usize
fn chosen_choice_row( &self, entry: &<This as ManagerSorts>::Entry, discovered: bool, ) -> usize
States which offered row the request’s current choice rests on.
Source§fn report_body<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
fn report_body<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
States what the rehearsal said one request would do.
Source§fn record_body<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
fn record_body<Syntax>(
&self,
syntax: &Syntax,
id: <This as ManagerSorts>::Id,
) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
States everything observed about one request, in the order it was observed.
Source§fn draft_body<Syntax>(&self, syntax: &Syntax) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
fn draft_body<Syntax>(&self, syntax: &Syntax) -> <Syntax as ScreenSyntax>::Bodywhere
Syntax: ScreenSyntax,
States the sources draft under edit, and the shapes a source may be written in.
Source§impl<This> MenuLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueuePauseAlg + QueueDuplicateAlg + TransferStateAlg + SourceMetadataAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + TextEditorStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
impl<This> MenuLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueuePauseAlg + QueueDuplicateAlg + TransferStateAlg + SourceMetadataAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + TextEditorStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
Checks that availability is derived from page, selection, and queue observations.
The laws checked are:
- an empty collection enables only the actions that still have meaning;
- a selected ready entry enables Space, Remove, and activation;
- cursor movement is enabled exactly when the page holds another value to move to;
- activation on the add-sources page is enabled exactly when the draft names a source;
- a disabled action denotes no operation, so applying it changes nothing observable.
§Errors
Returns the first violated law.
Source§fn law_space(
&self,
id: <This as ManagerSorts>::Id,
) -> Result<Option<SpaceAction>, Error>
fn law_space( &self, id: <This as ManagerSorts>::Id, ) -> Result<Option<SpaceAction>, Error>
Observes one entry’s Space meaning by stable identity.
§Errors
Returns a violation when the collection holds no such identity.
Source§impl<This> MenuPresentationExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + TextEditorStateAlg + DetailSelectionAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
impl<This> MenuPresentationExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + TextEditorStateAlg + DetailSelectionAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
States every entry the current page offers, in the order a reader scans them.
Exit closes every menu, because it is the one action every page offers.
States one entry naming one action, with the keys the page binds to it.
Source§fn cursor_item(&self, verb: impl Into<String>) -> MenuItem
fn cursor_item(&self, verb: impl Into<String>) -> MenuItem
States the one entry walking a list, which both cursor directions reach.
Source§fn choice_verb(&self, id: <This as ManagerSorts>::Id) -> &'static str
fn choice_verb(&self, id: <This as ManagerSorts>::Id) -> &'static str
Names what the chooser page chooses between for one request.
Source§fn space_verb(&self) -> String
fn space_verb(&self) -> String
Names what Space would do to the selected entry, whether or not it is offered.
Source§impl<This> MenuPresentationLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + TextEditorStateAlg + DetailSelectionAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
impl<This> MenuPresentationLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + TextEditorStateAlg + DetailSelectionAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + RequestOptionsAlg,
<This as ManagerSorts>::Id: Copy + Eq,
Checks that the menu states what the keys actually do.
The laws checked are:
- every menu entry states at least one key, and states it in brackets;
- every key a menu entry states denotes an action on that page;
- every page offers exit, and offers it last;
- a menu entry is stated as unavailable exactly when its action has no meaning.
§Errors
Returns the first violated law.
Checks that selection, expansion, and removal preserve stable queue identity.
The laws checked are:
- adding sources focuses the first new identity;
- selection advances in collection order and wraps at both ends;
- expanded details name the selected identity and move with it;
- removing the selected entry chooses a remaining neighbor;
- removing an expanded entry denotes the collection again;
- breadcrumbs are rooted at the collection and name the expanded identity.
§Errors
Returns the first violated law.
Source§impl<This> OutputEditingExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + OutputDraftAlg + InputDraftAlg + QueueOutputAlg + QueueSourceAlg + ManagerStatusAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy,
impl<This> OutputEditingExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + OutputDraftAlg + InputDraftAlg + QueueOutputAlg + QueueSourceAlg + ManagerStatusAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy,
Source§fn open_input(&mut self)
fn open_input(&mut self)
Opens input editing only while the selected request still permits its input to change.
A request whose input was already read — extracted, described, named after — no longer permits it: changing the input then would make everything derived from it a lie.
Source§fn submit_input(&mut self)
fn submit_input(&mut self)
Applies a non-empty input draft.
Source§fn open_output(&mut self)
fn open_output(&mut self)
Opens output-file-name editing only while the selected request is editable.
Source§fn submit_output(&mut self)
fn submit_output(&mut self)
Applies a non-empty output draft, as the kind of name the request states it is.
Source§impl<This> QueueLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + TransferStateAlg + SourceMetadataAlg + DraftStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + TransferViewAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
impl<This> QueueLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + TransferStateAlg + SourceMetadataAlg + DraftStateAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg + TransferViewAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
Source§fn queue_laws(&mut self) -> Result<(), Error>
fn queue_laws(&mut self) -> Result<(), Error>
Checks that observations are keyed and that derived progress follows only from them.
The laws checked are:
- an observation updates exactly the identity it addresses;
- byte rate, remaining time, and completed share are derived from bytes and elapsed time;
- full byte progress denotes publication, while only terminal success denotes completion;
- the submitted source is the label until extraction supplies a title.
§Errors
Returns the first violated law.
Source§fn law_entry(
&self,
id: <This as ManagerSorts>::Id,
) -> Result<&<This as ManagerSorts>::Entry, Error>
fn law_entry( &self, id: <This as ManagerSorts>::Id, ) -> Result<&<This as ManagerSorts>::Entry, Error>
Observes one entry by stable identity.
§Errors
Returns a violation when the collection holds no such identity.
Source§fn law_transferred(&self, id: <This as ManagerSorts>::Id) -> Option<u64>
fn law_transferred(&self, id: <This as ManagerSorts>::Id) -> Option<u64>
Observes the bytes one identity has retrieved, when it names an entry.
Source§impl<This> QueueLifecycleExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueuePauseAlg + QueueDuplicateAlg + TransferStateAlg + DetailSelectionAlg + ManagerStatusAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy + Eq,
impl<This> QueueLifecycleExt<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueuePauseAlg + QueueDuplicateAlg + TransferStateAlg + DetailSelectionAlg + ManagerStatusAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy + Eq,
Source§fn apply_selected_space(&mut self)
fn apply_selected_space(&mut self)
Applies the selected entry’s state-dependent Space transition.
Space names a collection entry, so it denotes nothing while another page is current.
Source§fn duplicate_selected(&mut self)
fn duplicate_selected(&mut self)
Duplicates selection as a fresh editable identity and opens its details.
Source§fn restart_selected(&mut self)
fn restart_selected(&mut self)
Restarts the selected failed request with its fixed options.
Source§impl<This> TextCursorExt<This> for Thiswhere
This: TextEditorStateAlg,
impl<This> TextCursorExt<This> for Thiswhere
This: TextEditorStateAlg,
Source§fn insert_text(&mut self, insertion: &str)
fn insert_text(&mut self, insertion: &str)
Inserts text at the active cursor and advances past the insertion.
Source§fn delete_before_cursor(&mut self)
fn delete_before_cursor(&mut self)
Deletes the Unicode scalar immediately preceding the active cursor.
Source§fn delete_at_cursor(&mut self)
fn delete_at_cursor(&mut self)
Deletes the Unicode scalar at the active cursor.
Source§fn move_cursor_left(&mut self)
fn move_cursor_left(&mut self)
Moves the active cursor one Unicode scalar to the left.
Source§fn move_cursor_right(&mut self)
fn move_cursor_right(&mut self)
Moves the active cursor one Unicode scalar to the right.
Source§fn move_cursor_home(&mut self)
fn move_cursor_home(&mut self)
Moves the active cursor to the beginning of its logical line.
Source§fn move_cursor_end(&mut self)
fn move_cursor_end(&mut self)
Moves the active cursor to the end of its logical line.
Source§impl<This> TextLaws<This> for Thiswhere
This: NavigationStateAlg + TextEditorStateAlg,
impl<This> TextLaws<This> for Thiswhere
This: NavigationStateAlg + TextEditorStateAlg,
Source§fn text_editor_laws(&mut self) -> Result<(), Error>
fn text_editor_laws(&mut self) -> Result<(), Error>
Checks that editing moves by Unicode scalar and never splits one.
The laws checked are:
- the cursor moves by whole scalars in both directions;
- insertion advances past exactly the inserted bytes;
- deleting before and at the cursor removes one whole scalar;
- every observed cursor rests on a UTF-8 boundary.
§Errors
Returns the first violated law.
Source§impl<This> TransitionLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueuePauseAlg + QueueDuplicateAlg + QueueOutputAlg + QueueSourceAlg + TransferStateAlg + SourceMetadataAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
impl<This> TransitionLaws<This> for Thiswhere
This: NavigationStateAlg + QueueCatalogAlg + QueueAppendAlg + QueuePauseAlg + QueueDuplicateAlg + QueueOutputAlg + QueueSourceAlg + TransferStateAlg + SourceMetadataAlg + DetailSelectionAlg + DraftStateAlg + OutputDraftAlg + InputDraftAlg + ManagerStatusAlg + SourceRequestAlg + SubmissionAlg + MediaOptionsAlg + OutputChoiceAlg,
<This as ManagerSorts>::Entry: QueueEntryAlg,
<This as ManagerSorts>::Id: Copy + Eq + Debug,
Source§fn transition_laws(&mut self) -> Result<(), Error>
fn transition_laws(&mut self) -> Result<(), Error>
Checks that Space, restart, duplication, and output editing denote their transitions.
The laws checked are:
- Space schedules exactly the selected ready entry and fixes its request;
- pause is offered only while the active interpreter advertises that capability;
- a failed request offers restart and restarts without becoming editable again;
- duplication creates a fresh editable identity with its own transfer state;
- an extracted title is the default output stem;
- an output name is editable before first start and normalized when applied.
§Errors
Returns the first violated law.
Source§fn law_entry(
&self,
id: <This as ManagerSorts>::Id,
) -> Result<&<This as ManagerSorts>::Entry, Error>
fn law_entry( &self, id: <This as ManagerSorts>::Id, ) -> Result<&<This as ManagerSorts>::Entry, Error>
Observes one entry by stable identity.
§Errors
Returns a violation when the collection holds no such identity.
Source§fn law_space(
&self,
id: <This as ManagerSorts>::Id,
) -> Result<Option<SpaceAction>, Error>
fn law_space( &self, id: <This as ManagerSorts>::Id, ) -> Result<Option<SpaceAction>, Error>
Observes the Space meaning one identity currently offers.
§Errors
Returns a violation when the collection holds no such identity.