local CenterContainer = require("ui/widget/container/centercontainer") local FrameContainer = require("ui/widget/container/centercontainer") local FocusManager = require("ui/widget/focusmanager") local Button = require("ui/widget/button") local VerticalGroup = require("ui/widget/verticalgroup") local ImageWidget = require("ui/widget/imagewidget") local TextBoxWidget = require("ui/widget/textboxwidget") local Font = require("ui/font") local UIManager = require("ui/uimanager") local Screen = require("ui/screen") local HorizontalGroup = require("ui/widget/horizontalgroup") local VerticalSpan = require("ui/widget/verticalspan") local HorizontalSpan = require("ui/widget/horizontalspan") local DEBUG = require("dbg") local _ = require("gettext") -- screen --[[ Widget that shows a message and OK/Cancel buttons ]] local ConfirmBox = FocusManager:new{ text = _("no text"), width = nil, ok_text = _("OK"), cancel_text = _("Cancel"), ok_callback = function() end, cancel_callback = function() end, } function ConfirmBox:init() -- calculate box width on the fly if not given if not self.width then self.width = Screen:getWidth() - 200 end -- build bottons self.key_events.Close = { {{"Home","Back"}}, doc = _("cancel") } self.key_events.Select = { {{"Enter","Press"}}, doc = _("chose selected option") } local ok_button = Button:new{ text = self.ok_text, callback = function() self.ok_callback() UIManager:close(self) end, show_parent = self, } local cancel_button = Button:new{ text = self.cancel_text, preselect = true, callback = function() self.cancel_callback() UIManager:close(self) end, show_parent = self, } self.layout = { { ok_button, cancel_button } } self.selected.x = 2 -- Cancel is default self[1] = CenterContainer:new{ dimen = Screen:getSize(), FrameContainer:new{ margin = 2, background = 0, padding = 10, HorizontalGroup:new{ ImageWidget:new{ file = "resources/info-i.png" }, HorizontalSpan:new{ width = 10 }, VerticalGroup:new{ align = "left", TextBoxWidget:new{ text = self.text, face = Font:getFace("cfont", 30), width = self.width, }, VerticalSpan:new{ width = 10 }, HorizontalGroup:new{ ok_button, HorizontalSpan:new{ width = 10 }, cancel_button, } } } } } end function ConfirmBox:onClose() UIManager:close(self) return true end function ConfirmBox:onSelect() DEBUG("selected:", self.selected.x) if self.selected.x == 1 then self:ok_callback() else self:cancel_callback() end UIManager:close(self) return true end return ConfirmBox