You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw/files/data/scripts/omw/mwui/init.lua

157 lines
3.8 KiB
Lua

local util = require('openmw.util')
local function shallowLayoutCopy(source, target)
for k in pairs(target) do
target[k] = nil
end
for k, v in pairs(source) do
target[k] = v
end
return target
end
---
-- @type Templates
-- @usage
-- local I = require('openmw.interfaces')
-- local ui = require('openmw.ui')
-- local auxUi = require('openmw_aux.ui')
-- ui.create {
-- template = I.MWUI.templates.textNormal,
-- layer = 'Windows',
-- type = ui.TYPE.Text,
-- props = {
-- text = 'Hello, world!',
-- },
-- }
-- -- important to copy here
-- local myText = auxUi.deepLayoutCopy(I.MWUI.templates.textNormal)
-- myText.props.textSize = 20
-- I.MWUI.templates.textNormal = myText
-- ui.updateAll()
local templatesMeta = {
__index = function(self, key)
return self.__templates[key]
end,
__newindex = function(self, key, template)
local target = self.__templates[key]
if target == template then
error("Overriding a template with itself")
else
shallowLayoutCopy(template, target)
end
end,
}
---
-- @module MWUI
-- @usage require('openmw.interfaces').MWUI
local function TemplateOverrides(templates)
return setmetatable({
__templates = util.makeReadOnly(templates),
}, templatesMeta)
end
---
-- @field [parent=#MWUI] #Templates templates
local templates = {}
---
-- Container that adds padding around its content.
-- @field [parent=#Templates] openmw.ui#Template padding
---
-- Standard spacing interval
-- @field [parent=#Templates] openmw.ui#Template interval
require('scripts.omw.mwui.space')(templates)
---
-- Standard rectangular borders
-- @field [parent=#Templates] openmw.ui#Template borders
---
-- Container wrapping the content with borders
-- @field [parent=#Templates] openmw.ui#Template box
---
-- Same as box, but with a semi-transparent background
-- @field [parent=#Templates] openmw.ui#Template boxTransparent
---
-- Same as box, but with a solid background
-- @field [parent=#Templates] openmw.ui#Template boxSolid
---
-- Expanding vertical line
-- @field [parent=#Templates] openmw.ui#Template verticalLine
---
-- Expanding horizontal line
-- @field [parent=#Templates] openmw.ui#Template horizontalLine
---
-- Standard rectangular borders
-- @field [parent=#Templates] openmw.ui#Template bordersThick
---
-- Container wrapping the content with borders
-- @field [parent=#Templates] openmw.ui#Template boxThick
---
-- Same as box, but with a semi-transparent background
-- @field [parent=#Templates] openmw.ui#Template boxTransparentThick
---
-- Same as box, but with a solid background
-- @field [parent=#Templates] openmw.ui#Template boxSolidThick
---
-- Expanding vertical line
-- @field [parent=#Templates] openmw.ui#Template verticalLineThick
---
-- Expanding horizontal line
-- @field [parent=#Templates] openmw.ui#Template horizontalLineThick
require('scripts.omw.mwui.borders')(templates)
---
-- Standard "sand" colored text
-- @field [parent=#Templates] openmw.ui#Template textNormal
---
-- Header white colored text
-- @field [parent=#Templates] openmw.ui#Template textHeader
---
-- Standard "sand" colored multiline text
-- @field [parent=#Templates] openmw.ui#Template textParagraph
require('scripts.omw.mwui.text')(templates)
---
-- Single line text input
-- @field [parent=#Templates] openmw.ui#Template textEditLine
---
-- Multiline text input
-- @field [parent=#Templates] openmw.ui#Template textEditBox
require('scripts.omw.mwui.textEdit')(templates)
---
-- Shades its children and makes them uninteractible
-- @field [parent=#Templates] openmw.ui#Template disabled
require('scripts.omw.mwui.filters')(templates)
---
-- Interface version
-- @field [parent=#MWUI] #number version
local interface = {
version = 0,
templates = TemplateOverrides(templates),
}
return {
interfaceName = "MWUI",
interface = interface,
}