Lines
56.94 %
Functions
25 %
Branches
100 %
//! Functions that construct and push overlay modals onto the app's overlay stack.
use crate::app::App;
use crate::form::Form;
use crate::modal::Modal;
use crate::widgets::{Editor, SelectOption};
pub(super) fn open_config_set_modal(app: &mut App, args: &[(String, String)]) {
let mut name = Editor::new(app.edit_mode);
let mut value = Editor::new(app.edit_mode);
for (k, v) in args {
match k.as_str() {
"name" => name = Editor::with_buffer(app.edit_mode, v.clone()),
"value" => value = Editor::with_buffer(app.edit_mode, v.clone()),
_ => {}
}
app.overlays
.push(Modal::Form(Form::config_set(name, value)));
pub(super) fn open_commodity_create_modal(app: &mut App) {
.push(Modal::Form(Form::commodity_create(app.edit_mode)));
pub(super) fn open_commodity_convert_modal(app: &mut App) {
.push(Modal::Form(Form::commodity_convert(app.edit_mode)));
app.fetch_commodity_convert_form_options();
pub(super) fn open_account_create_modal(app: &mut App) {
let none_opt = SelectOption {
id: String::new(),
label: "(none)".to_string(),
};
let form = Form::account_create(app.edit_mode, vec![none_opt]);
app.overlays.push(Modal::Form(form));
app.fetch_account_form_options();
pub(super) fn open_transaction_create_modal(app: &mut App) {
.push(Modal::Form(Form::transaction_create(app.edit_mode)));
app.fetch_transaction_form_options();
pub(super) fn open_report_params_modal(
app: &mut App,
kind: crate::tabs::reports::ReportKind,
chart_default: &str,
) {
let mode = app.edit_mode;
let chart = Editor::with_buffer(mode, chart_default.to_string());
app.overlays.push(Modal::Form(Form::report_params(
Editor::new(mode),
chart,
kind,
)));
/// Open the account-tag form for the currently selected account.
///
/// Sets a status message when no account is selected.
pub(super) fn open_account_tag_modal_for_selected(app: &mut App) {
let Some(id) = app.accounts.selected_id().map(str::to_string) else {
app.set_status("no account selected");
return;
open_account_tag_modal(app, &id);
pub(crate) fn open_account_tag_modal(app: &mut App, account_id: &str) {
app.overlays.push(Modal::Form(Form::account_tag(
app.edit_mode,
account_id.to_string(),
/// Open the transaction-tag form for the currently selected transaction.
/// Sets a status message when no transaction is selected.
pub(super) fn open_transaction_tag_modal_for_selected(app: &mut App) {
let Some(id) = app.transactions.selected_id().map(str::to_string) else {
app.set_status("no transaction selected");
open_transaction_tag_modal(app, &id);
pub(crate) fn open_transaction_tag_modal(app: &mut App, transaction_id: &str) {
app.overlays.push(Modal::Form(Form::transaction_tag(
transaction_id.to_string(),