3
0
mirror of https://github.com/britzl/monarch.git synced 2025-06-27 18:37:46 +02:00
Monarch-Extension/monarch/screen_factory.script
Björn Ritzl 478835f888
New options to keep focus on screens even when covered by other screens (#51)
* Added option to continue to receive input when below a popup

* Added option to not remove input focus when a screen is put on top of another one
2019-08-03 15:44:39 +02:00

46 lines
1.5 KiB
Plaintext

local monarch
go.property("screen_factory", msg.url("#collectionfactory"))
go.property("screen_id", hash("UNIQUE ID HERE"))
go.property("popup", false)
go.property("popup_on_popup", false)
go.property("screen_keeps_input_focus_when_below_popup", false)
go.property("others_keep_input_focus_when_below_screen", false)
go.property("transition_id", hash(""))
go.property("focus_id", hash(""))
go.property("preload", false)
function init(self)
monarch = require "monarch.monarch"
assert(not self.popup_on_popup or (self.popup_on_popup and self.popup), "Popup on Popups can only be set if the Popup flag is set")
assert(self.screen_factory ~= msg.url(), "You must specify either a factory URL")
local settings = {
popup = self.popup,
popup_on_popup = self.popup_on_popup,
screen_keeps_input_focus_when_below_popup = self.screen_keeps_input_focus_when_below_popup,
others_keep_input_focus_when_below_screen = self.others_keep_input_focus_when_below_screen,
transition_id = self.transition_id,
focus_id = self.focus_id,
auto_preload = self.preload,
}
monarch.register_factory(self.screen_id, self.screen_factory, settings)
end
function final(self)
monarch.unregister(self.screen_id)
end
function on_message(self, message_id, message, sender)
if message_id == hash("show") then
monarch.show(self.screen_id, { clear = message.clear })
elseif message_id == hash("hide") then
monarch.back()
elseif message_id == hash("back") then
monarch.back()
else
monarch.on_message(message_id, message, sender)
end
end