Skip to main content

Module save_panel

Module save_panel 

Source
Expand description

SavePanel (M-SAVE.GATE) — the post-record Save panel that replaces the record/stop footer once a recording is parked awaiting export.

Two visual states, both rendered inside the same recorder-page-action-bar recorder-save-panel footer so the panel drops into the recorder column with no layout shift:

  • Choosing — a folder row (configured output dir + a Change… button), a format dropdown (MP4 / WebM), and Discard / Edit / Export actions (Edit saves the recording and opens it in the editor). The busy flag dims the controls and flips the Export label to “Exporting…” during the (software-VP9) WebM transcode.
  • Saved — a “Saved to <path>” confirmation with Done / Reveal-in-Finder actions.

Stateless: the parent (app-ui’s RecorderPage) owns the pending export, the chosen format, the export-in-flight signal, and the post-export saved path. It maps that state into a SavePanelView and wires the optional Callback<()> props to the Tauri IPC commands (export_recording, discard_recording, reveal_in_file_manager, the output-dir picker). Stories leave the callbacks unset.

Structs§

ChoosingCallbacks 🔒
The Choosing-state callbacks, grouped so choosing_body stays under the argument-count lint. Every field is a Copy Leptos Callback.
SavePanelProps
Props for the SavePanel component.

Enums§

SaveFormat
Export container format offered by the Save panel.
SavePanelView
View-model for the Save panel — which of the two states to render plus the data each needs.

Functions§

SavePanel
The post-record Save panel.
choosing_body 🔒
The Choosing-state body: folder row + format dropdown + Discard / Edit / Export actions. Split out of SavePanel so neither branch trips the function-length lint; it carries no state (every prop is owned or a Copy callback).
saved_body 🔒
The Saved-state body: the “Saved to <path>” confirmation plus Done / Reveal-in-Finder actions.