summaryrefslogtreecommitdiff
path: root/indra/newview/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/scripts')
-rw-r--r--indra/newview/scripts/lua/require/popup.lua33
1 files changed, 27 insertions, 6 deletions
diff --git a/indra/newview/scripts/lua/require/popup.lua b/indra/newview/scripts/lua/require/popup.lua
index 8a01ab7836..3aaadf85ba 100644
--- a/indra/newview/scripts/lua/require/popup.lua
+++ b/indra/newview/scripts/lua/require/popup.lua
@@ -1,17 +1,34 @@
local leap = require 'leap'
+local mapargs = require 'mapargs'
-- notification is any name defined in notifications.xml as
-- <notification name=>
-- vars is a table providing values for [VAR] substitution keys in the
--- notification body.
+-- notification body
+-- payload prepopulates the response table
+-- wait=false means fire and forget, otherwise wait for user response
local popup_meta = {
-- setting this function as getmetatable(popup).__call() means this gets
-- called when a consumer calls popup(notification, vars, payload)
- __call = function(self, notification, vars, payload)
- return leap.request('LLNotifications',
- {op='requestAdd', name=notification,
- substitutions=vars,
- payload=payload})
+ __call = function(self, ...)
+ local args = mapargs('notification,vars,payload,wait', ...)
+ -- we use convenience argument names different from 'LLNotifications'
+ -- listener
+ args.name = args.notification
+ args.notification = nil
+ args.substitutions = args.vars
+ args.vars = nil
+ local wait = args.wait
+ args.wait = nil
+ args.op = 'requestAdd'
+ -- Specifically test (wait == false), NOT (not wait), because we treat
+ -- nil (omitted, default true) differently than false (explicitly
+ -- DON'T wait).
+ if wait == false then
+ leap.send('LLNotifications', args)
+ else
+ return leap.request('LLNotifications', args).response
+ end
end
}
@@ -29,4 +46,8 @@ function popup:alertYesCancel(message)
return self('GenericAlertYesCancel', {MESSAGE=message})
end
+function popup:tip(message)
+ self{'SystemMessageTip', {MESSAGE=message}, wait=false}
+end
+
return popup