confirmbox with button table

pull/683/head
chrox 10 years ago
parent b0b2149a92
commit 07c2049cc4

@ -1,16 +1,19 @@
local InputContainer = require("ui/widget/container/inputcontainer")
local CenterContainer = require("ui/widget/container/centercontainer") local CenterContainer = require("ui/widget/container/centercontainer")
local FrameContainer = require("ui/widget/container/centercontainer") local FrameContainer = require("ui/widget/container/framecontainer")
local FocusManager = require("ui/widget/focusmanager") local HorizontalGroup = require("ui/widget/horizontalgroup")
local Button = require("ui/widget/button")
local VerticalGroup = require("ui/widget/verticalgroup") local VerticalGroup = require("ui/widget/verticalgroup")
local ImageWidget = require("ui/widget/imagewidget") local ImageWidget = require("ui/widget/imagewidget")
local TextBoxWidget = require("ui/widget/textboxwidget") local TextBoxWidget = require("ui/widget/textboxwidget")
local Font = require("ui/font") local HorizontalSpan = require("ui/widget/horizontalspan")
local ButtonTable = require("ui/widget/buttontable")
local GestureRange = require("ui/gesturerange")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
local Device = require("ui/device")
local Geom = require("ui/geometry")
local Input = require("ui/input")
local Screen = require("ui/screen") local Screen = require("ui/screen")
local HorizontalGroup = require("ui/widget/horizontalgroup") local Font = require("ui/font")
local VerticalSpan = require("ui/widget/verticalspan")
local HorizontalSpan = require("ui/widget/horizontalspan")
local DEBUG = require("dbg") local DEBUG = require("dbg")
local _ = require("gettext") local _ = require("gettext")
@ -19,73 +22,70 @@ local _ = require("gettext")
--[[ --[[
Widget that shows a message and OK/Cancel buttons Widget that shows a message and OK/Cancel buttons
]] ]]
local ConfirmBox = FocusManager:new{ local ConfirmBox = InputContainer:new{
text = _("no text"), text = _("no text"),
width = nil, face = Font:getFace("infofont", 25),
ok_text = _("OK"), ok_text = _("OK"),
cancel_text = _("Cancel"), cancel_text = _("Cancel"),
ok_callback = function() end, ok_callback = function() end,
cancel_callback = function() end, cancel_callback = function() end,
margin = 5,
padding = 5,
} }
function ConfirmBox:init() function ConfirmBox:init()
-- calculate box width on the fly if not given local content = HorizontalGroup:new{
if not self.width then align = "center",
self.width = Screen:getWidth() - 200 ImageWidget:new{
end file = "resources/info-i.png"
-- build bottons },
self.key_events.Close = { {{"Home","Back"}}, doc = "cancel" } HorizontalSpan:new{ width = 10 },
self.key_events.Select = { {{"Enter","Press"}}, doc = "chose selected option" } TextBoxWidget:new{
text = self.text,
local ok_button = Button:new{ face = self.face,
text = self.ok_text, width = Screen:getWidth()*2/3,
callback = function() }
self.ok_callback()
UIManager:close(self)
end,
show_parent = self,
} }
local cancel_button = Button:new{ local button_table = ButtonTable:new{
width = content:getSize().w,
button_font_face = "cfont",
button_font_size = 20,
buttons = {
{
{
text = self.cancel_text, text = self.cancel_text,
preselect = true,
callback = function() callback = function()
self.cancel_callback() self.cancel_callback()
UIManager:close(self) UIManager:close(self)
end, end,
},
{
text = self.ok_text,
callback = function()
self.ok_callback()
UIManager:close(self)
end,
},
},
},
zero_sep = true,
show_parent = self, show_parent = self,
} }
self.layout = { { ok_button, cancel_button } }
self.selected.x = 2 -- Cancel is default
self[1] = CenterContainer:new{ self[1] = CenterContainer:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
FrameContainer:new{ FrameContainer:new{
margin = 2,
background = 0, background = 0,
padding = 10, margin = self.margin,
HorizontalGroup:new{ padding = self.padding,
ImageWidget:new{
file = "resources/info-i.png"
},
HorizontalSpan:new{ width = 10 },
VerticalGroup:new{ VerticalGroup:new{
align = "left", align = "left",
TextBoxWidget:new{ content,
text = self.text, button_table,
face = Font:getFace("cfont", 30),
width = self.width,
},
VerticalSpan:new{ width = 10 },
HorizontalGroup:new{
ok_button,
HorizontalSpan:new{ width = 10 },
cancel_button,
}
}
} }
} }
} }
end end
function ConfirmBox:onClose() function ConfirmBox:onClose()

Loading…
Cancel
Save