mirror of
				https://github.com/edubart/otclient.git
				synced 2025-11-04 04:36:23 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			115 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
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
 |