mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-10-15 23:04:54 +02:00
fix items, map, protocls
This commit is contained in:
114
800OTClient/modules/corelib/ui/uiinputbox.lua
Normal file
114
800OTClient/modules/corelib/ui/uiinputbox.lua
Normal file
@@ -0,0 +1,114 @@
|
||||
if not UIWindow then dofile 'uiwindow' end
|
||||
|
||||
-- @docclass
|
||||
UIInputBox = extends(UIWindow, "UIInputBox")
|
||||
|
||||
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
|
Reference in New Issue
Block a user