mirror of https://github.com/OpenMW/openmw.git
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.
157 lines
3.8 KiB
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,
|
|
}
|