115 lines
3.6 KiB
Lua
115 lines
3.6 KiB
Lua
if not UIWindow then dofile 'uiwindow' end
|
|
|
|
-- @docclass
|
|
UIInputBox = extends(UIWindow)
|
|
|
|
function UIInputBox.create(title, okCallback, cancelCallback)
|
|
local inputBox = UIInputBox.internalCreate()
|
|
|
|
inputBox:setText(title)
|
|
inputBox.inputs = {}
|
|
inputBox.onEnter = function()
|
|
local results = {}
|
|
for _,func in pairs(inputBox.inputs) do
|
|
table.insert(results, func())
|
|
end
|
|
okCallback(unpack(results))
|
|
inputBox:destroy()
|
|
end
|
|
inputBox.onEscape = function()
|
|
if cancelCallback then
|
|
cancelCallback()
|
|
end
|
|
inputBox:destroy()
|
|
end
|
|
|
|
return inputBox
|
|
end
|
|
|
|
function UIInputBox:addLabel(text)
|
|
local label = g_ui.createWidget('InputBoxLabel', self)
|
|
label:setText(text)
|
|
return label
|
|
end
|
|
|
|
function UIInputBox:addLineEdit(labelText, defaultText, maxLength)
|
|
if labelText then self:addLabel(labelText) end
|
|
local lineEdit = g_ui.createWidget('InputBoxLineEdit', self)
|
|
if defaultText then lineEdit:setText(defaultText) end
|
|
if maxLength then lineEdit:setMaxLength(maxLength) end
|
|
table.insert(self.inputs, function() return lineEdit:getText() end)
|
|
return lineEdit
|
|
end
|
|
|
|
function UIInputBox:addTextEdit(labelText, defaultText, maxLength, visibleLines)
|
|
if labelText then self:addLabel(labelText) end
|
|
local textEdit = g_ui.createWidget('InputBoxTextEdit', self)
|
|
if defaultText then textEdit:setText(defaultText) end
|
|
if maxLength then textEdit:setMaxLength(maxLength) end
|
|
visibleLines = visibleLines or 1
|
|
textEdit:setHeight(textEdit:getHeight() * visibleLines)
|
|
table.insert(self.inputs, function() return textEdit:getText() end)
|
|
return textEdit
|
|
end
|
|
|
|
function UIInputBox:addCheckBox(text, checked)
|
|
local checkBox = g_ui.createWidget('InputBoxCheckBox', self)
|
|
checkBox:setText(text)
|
|
checkBox:setChecked(checked)
|
|
table.insert(self.inputs, function() return checkBox:isChecked() end)
|
|
return checkBox
|
|
end
|
|
|
|
function UIInputBox:addComboBox(labelText, ...)
|
|
if labelText then self:addLabel(labelText) end
|
|
local comboBox = g_ui.createWidget('InputBoxComboBox', self)
|
|
local options = {...}
|
|
for i=1,#options do
|
|
comboBox:addOption(options[i])
|
|
end
|
|
table.insert(self.inputs, function() return comboBox:getCurrentOption() end)
|
|
return comboBox
|
|
end
|
|
|
|
function UIInputBox:addSpinBox(labelText, minimum, maximum, value, step)
|
|
if labelText then self:addLabel(labelText) end
|
|
local spinBox = g_ui.createWidget('InputBoxSpinBox', self)
|
|
spinBox:setMinimum(minimum)
|
|
spinBox:setMaximum(maximum)
|
|
spinBox:setValue(value)
|
|
spinBox:setStep(step)
|
|
table.insert(self.inputs, function() return spinBox:getValue() end)
|
|
return spinBox
|
|
end
|
|
|
|
function UIInputBox:display(okButtonText, cancelButtonText)
|
|
okButtonText = okButtonText or tr('Ok')
|
|
cancelButtonText = cancelButtonText or tr('Cancel')
|
|
|
|
local buttonsWidget = g_ui.createWidget('InputBoxButtonsPanel', self)
|
|
local okButton = g_ui.createWidget('InputBoxButton', buttonsWidget)
|
|
okButton:setText(okButtonText)
|
|
okButton.onClick = self.onEnter
|
|
|
|
local cancelButton = g_ui.createWidget('InputBoxButton', buttonsWidget)
|
|
cancelButton:setText(cancelButtonText)
|
|
cancelButton.onClick = self.onEscape
|
|
|
|
buttonsWidget:setHeight(okButton:getHeight())
|
|
|
|
rootWidget:addChild(self)
|
|
self:setStyle('InputBoxWindow')
|
|
end
|
|
|
|
function displayTextInputBox(title, label, okCallback, cancelCallback)
|
|
local inputBox = UIInputBox.create(title, okCallback, cancelCallback)
|
|
inputBox:addLineEdit(label)
|
|
inputBox:display()
|
|
end
|
|
|
|
function displayNumberInputBox(title, label, okCallback, cancelCallback, min, max, value, step)
|
|
local inputBox = UIInputBox.create(title, okCallback, cancelCallback)
|
|
inputBox:addSpinBox(label, min, max, value, step)
|
|
inputBox:display()
|
|
end
|