Skip to content

dialog

stable

Native OS file and message dialogs for desktop applications, providing file pickers, folder selectors, save dialogs, and confirmation prompts.

use plugin dialog::{open_file, open_files, open_folder, …}
9 functions UI
/ filter jk navigate Esc clear
Functions (9)
  1. open_file Opens a single-file picker dialog
  2. open_files Opens a multi-file picker dialog
  3. open_folder Opens a single-folder picker dialog
  4. open_folders Opens a multi-folder picker dialog
  5. save_file Opens a save-file dialog
  6. message Shows an informational message dialog
  7. confirm Shows a Yes/No confirmation dialog
  8. ok_cancel Shows an OK/Cancel dialog
  9. yes_no_cancel Shows a Yes/No/Cancel dialog

Opens a single-file picker dialog

Opens a native file picker dialog and returns the selected file path as a string, or nil if the user cancels. The optional config table supports title, directory (initial directory), file_name (default name), and filters (array of {name, extensions} objects).

use plugin dialog::{open_file}

let path = open_file(#{"title": "Open Image", "filters": [#{"name": "Images", "extensions": ["png", "jpg"]}]})
if path != nil {
  print("Selected: {path}")
}

Opens a multi-file picker dialog

Opens a file picker that allows selecting multiple files. Returns a table (array) of file path strings, or nil if cancelled.

use plugin dialog::{open_files}

let paths = open_files(#{"title": "Select files"})
if paths != nil {
  let i = 1
  while i <= table_len(paths) {
    print(paths[i])
    i = i + 1
  }
}

Opens a single-folder picker dialog

Opens a folder picker dialog and returns the selected folder path, or nil if cancelled.

use plugin dialog::{open_folder}

let folder = open_folder(#{"title": "Choose output directory"})
if folder != nil {
  print("Output: {folder}")
}

Opens a multi-folder picker dialog

Opens a folder picker that allows selecting multiple folders. Returns a table (array) of folder path strings, or nil if cancelled.

use plugin dialog::{open_folders}

let dirs = open_folders()
if dirs != nil {
  print("Selected {table_len(dirs)} folders")
}

Opens a save-file dialog

Opens a save-file dialog and returns the chosen save path (which may not yet exist), or nil if cancelled. Supports the same config options as open_file.

use plugin dialog::{save_file}

let dest = save_file(#{"title": "Save Report", "file_name": "report.csv"})
if dest != nil {
  print("Saving to: {dest}")
}

Shows an informational message dialog

Shows a modal message dialog with the given title and body text. level can be "info" (default), "warning", or "error".

use plugin dialog::{message}

message("Success", "File exported successfully.")
message("Warning", "Disk space is low.", "warning")
message("Error", "Could not connect to server.", "error")

Shows a Yes/No confirmation dialog

Shows a Yes/No dialog and returns true if the user clicked Yes, false otherwise. Use for irreversible actions.

use plugin dialog::{confirm}

let ok = confirm("Delete file?", "This action cannot be undone.")
if ok {
  print("Deleting...")
}

Shows an OK/Cancel dialog

Shows an OK/Cancel dialog and returns true if OK was clicked.

use plugin dialog::{ok_cancel}

let proceed = ok_cancel("Apply changes?", "Settings will be updated.")
if proceed {
  print("Changes applied.")
}

Shows a Yes/No/Cancel dialog

Shows a Yes/No/Cancel dialog and returns "yes", "no", or "cancel" depending on which button was clicked.

use plugin dialog::{yes_no_cancel}

let choice = yes_no_cancel("Save changes?", "Do you want to save before closing?")
if choice == "yes" {
  print("Saving...")
} else if choice == "no" {
  print("Discarding changes.")
} else {
  print("Cancelled.")
}
enespt-br