docs » hs.dialog

A collection of useful dialog boxes, alerts and panels for user interaction.

Submodules

API Overview

API Documentation

Functions

alert
Signature hs.dialog.alert(rect, callbackFn, message, [informativeText], [buttonOne], [buttonTwo], [style]) -> string
Type Function
Description

Displays a simple non-blocking dialog box using NSAlert and a hidden hs.webview that's automatically destroyed when the alert is closed.

Parameters:

  • x - A number containing the horizontal co-ordinate of the top-left point of the dialog box.
  • y - A number containing the vertical co-ordinate of the top-left point of the dialog box.
  • callbackFn - The callback function that's called when a button is pressed.
  • message - The message text to display.
  • [informativeText] - Optional informative text to display.
  • [buttonOne] - An optional value for the first button as a string. Defaults to "OK".
  • [buttonTwo] - An optional value for the second button as a string. If nil is used, no second button will be displayed.
  • [style] - An optional style of the dialog box as a string. Defaults to "warning".

Returns:

  • nil

Notes:

  • The optional values must be entered in order (i.e. you can't supply style without also supplying buttonOne and buttonTwo).
  • [style] can be "warning", "informational" or "critical". If something other than these string values is given, it will use "informational".
  • Example: testCallbackFn = function(result) print("Callback Result: " .. result) end hs.dialog.alert(100, 100, testCallbackFn, "Message", "Informative Text", "Button One", "Button Two", "NSCriticalAlertStyle") hs.dialog.alert(200, 200, testCallbackFn, "Message", "Informative Text", "Single Button")
blockAlert
Signature hs.dialog.blockAlert(message, informativeText, [buttonOne], [buttonTwo], [style]) -> string
Type Function
Description

Displays a simple dialog box using NSAlert that will halt Lua code processing until the alert is closed.

Parameters:

  • message - The message text to display.
  • informativeText - The informative text to display.
  • [buttonOne] - An optional value for the first button as a string. Defaults to "OK".
  • [buttonTwo] - An optional value for the second button as a string. If nil is used, no second button will be displayed.
  • [style] - An optional style of the dialog box as a string. Defaults to "informational".

Returns:

  • The value of the button as a string.

Notes:

  • The optional values must be entered in order (i.e. you can't supply style without also supplying buttonOne and buttonTwo).
  • [style] can be "warning", "informational" or "critical". If something other than these string values is given, it will use "informational".
  • Example: hs.dialog.blockAlert("Message", "Informative Text", "Button One", "Button Two", "NSCriticalAlertStyle")
chooseFileOrFolder
Signature hs.dialog.chooseFileOrFolder([message], [defaultPath], [canChooseFiles], [canChooseDirectories], [allowsMultipleSelection], [allowedFileTypes], [resolvesAliases]) -> string
Type Function
Description

Displays a file and/or folder selection dialog box using NSOpenPanel.

Parameters:

  • [message] - The optional message text to display.
  • [defaultPath] - The optional path you want to dialog to open to.
  • [canChooseFiles] - Whether or not the user can select files. Defaults to true.
  • [canChooseDirectories] - Whether or not the user can select folders. Default to false.
  • [allowsMultipleSelection] - Allow multiple selections of files and/or folders. Defaults to false.
  • [allowedFileTypes] - An optional table of allowed file types. Defaults to true.
  • [resolvesAliases] - An optional boolean that indicates whether the panel resolves aliases.

Returns:

  • The selected files in a table or nil if cancel was pressed.

Notes:

  • The optional values must be entered in order (i.e. you can't supply allowsMultipleSelection without also supplying canChooseFiles and canChooseDirectories).
  • Example: hs.inspect(hs.dialog.chooseFileOrFolder("Please select a file:", "~/Desktop", true, false, true, {"jpeg", "pdf"}, true))
textPrompt
Signature hs.dialog.textPrompt(message, informativeText, [defaultText], [buttonOne], [buttonTwo]) -> string, string
Type Function
Description

Displays a simple text input dialog box.

Parameters:

  • message - The message text to display
  • informativeText - The informative text to display
  • [defaultText] - The informative text to display
  • [buttonOne] - An optional value for the first button as a string
  • [buttonTwo] - An optional value for the second button as a string

Returns:

  • The value of the button as a string
  • The value of the text input as a string

Notes:

  • buttonOne defaults to "OK" if no value is supplied.
  • buttonOne will also be triggered by pressing ENTER, whereas buttonTwo will be triggered by pressing ESC.
  • Examples: hs.dialog.textPrompt("Main message.", "Please enter something:") hs.dialog.textPrompt("Main message.", "Please enter something:", "Default Value", "OK") hs.dialog.textPrompt("Main message.", "Please enter something:", "Default Value", "OK", "Cancel")
webviewAlert
Signature hs.dialog.webviewAlert(webview, callbackFn, message, [informativeText], [buttonOne], [buttonTwo], [style]) -> string
Type Function
Description

Displays a simple dialog box using NSAlert in a hs.webview.

Parameters:

  • webview - The hs.webview to display the alert on.
  • callbackFn - The callback function that's called when a button is pressed.
  • message - The message text to display.
  • [informativeText] - Optional informative text to display.
  • [buttonOne] - An optional value for the first button as a string. Defaults to "OK".
  • [buttonTwo] - An optional value for the second button as a string. If nil is used, no second button will be displayed.
  • [style] - An optional style of the dialog box as a string. Defaults to "warning".

Returns:

  • nil

Notes:

  • This alert is will prevent the user from interacting with the hs.webview until a button is pressed on the alert.
  • The optional values must be entered in order (i.e. you can't supply style without also supplying buttonOne and buttonTwo).
  • [style] can be "warning", "informational" or "critical". If something other than these string values is given, it will use "informational".
  • Example: testCallbackFn = function(result) print("Callback Result: " .. result) end testWebviewA = hs.webview.newBrowser(hs.geometry.rect(250, 250, 250, 250)):show() testWebviewB = hs.webview.newBrowser(hs.geometry.rect(450, 450, 450, 450)):show() hs.dialog.webviewAlert(testWebviewA, testCallbackFn, "Message", "Informative Text", "Button One", "Button Two", "warning") hs.dialog.webviewAlert(testWebviewB, testCallbackFn, "Message", "Informative Text", "Single Button")