A Single Dialog to Handle Multiple Entries - Scripting Forums / unScripted - MacScripter

PHOTO EMBED

Sun Jan 28 2024 02:16:40 GMT+0000 (Coordinated Universal Time)

Saved by @thuston88

on multi_dialog for q given listing:l
	tell q as list
		set {a, b, c} to {{}, beginning, count}
		set v to b's class is integer
		if v then set {c, v, q} to {b, b is 0, rest}
	end tell
	if v then set c to 30
	repeat c + 1 div (1 + (system attribute "sysv") div 4160) times
		set a's end to ""
	end repeat
	set {d, text item delimiters} to {text item delimiters, return}
	set {q, a, text item delimiters} to {q as string, a as string, d}
	set r to (display dialog q default answer a)'s text returned
	if not v then tell r & a
		if l then return items 1 thru c of paragraphs
		if c > 1 then return text 1 thru paragraph c
	end tell
	tell r to repeat with i from (count paragraphs) to 1 by -1
		if (count paragraph i) is not 0 then
			if l then return paragraphs 1 thru i
			return text 1 thru paragraph i
		end if
	end repeat
	if l then return {}
	""
end multi_dialog

------------------
-- demonstration --
------------------

property l : {"1]  Name: {items: 2, length: fixed, output: list}", ¬
	"2]  Address: {items: 3, length: fixed, output: list}", ¬
	"3]  Reasons: {items: 6, length: fixed, output: list}", ¬
	"4]  ToDo List: {items: ?, length: variable, output: text}", ¬
	"5]  Standard: {items: 1, length: variable, output: text}"} ¬
	
property d : l's item 1

tell (choose from list l default items d with prompt "Choose a multi-dialog demonstration:")
	if it is false then error number -128
	set d to it
	set i to item 1's item 1 as integer
end tell

--------------------
-- syntax examples --
--------------------

if i is 1 then
	multi_dialog for {"... What is your first name?", "... And your last name?"} with listing
else if i is 2 then
	multi_dialog for {3, "Please enter your:", "", "1: house number & street name", "2: city/area", "3: zip code"} with listing
else if i is 3 then
	multi_dialog for {6, "List up to six reasons to be cheerful:"} with listing
else if i is 4 then
	multi_dialog for {0, "To Do list for " & (current date)'s weekday & ":"} with listing
else
	multi_dialog for "Did you *really* just want a standard dialog?" without listing
end if

content_copyCOPY

https://www.macscripter.net/t/a-single-dialog-to-handle-multiple-entries/48025