- Updated theme plugin to support changing themes on runtime
- Added 4 themes - Added Cache System for States
This commit is contained in:
@@ -101,6 +101,7 @@ function BaseElement:init(props, basalt)
|
||||
self.basalt = basalt
|
||||
self._registeredEvents = {}
|
||||
self._registeredStates = {}
|
||||
self._cachedActiveStates = nil
|
||||
|
||||
local currentClass = getmetatable(self).__index
|
||||
|
||||
@@ -142,6 +143,7 @@ function BaseElement:postInit()
|
||||
return self
|
||||
end
|
||||
self._postInitialized = true
|
||||
self._modifiedProperties = {}
|
||||
if(self._props)then
|
||||
for k,v in pairs(self._props)do
|
||||
self.set(k, v)
|
||||
@@ -234,6 +236,7 @@ function BaseElement:setState(stateName, priority)
|
||||
states[stateName] = priority or 0
|
||||
|
||||
self.set("states", states)
|
||||
self._cachedActiveStates = nil
|
||||
return self
|
||||
end
|
||||
|
||||
@@ -246,6 +249,7 @@ function BaseElement:unsetState(stateName)
|
||||
if states[stateName] ~= nil then
|
||||
states[stateName] = nil
|
||||
self.set("states", states)
|
||||
self._cachedActiveStates = nil
|
||||
end
|
||||
return self
|
||||
end
|
||||
@@ -282,6 +286,11 @@ end
|
||||
--- @shortDescription Gets all active states
|
||||
--- @return table states Array of {name, priority} sorted by priority
|
||||
function BaseElement:getActiveStates()
|
||||
-- Return cached version if available
|
||||
if self._cachedActiveStates then
|
||||
return self._cachedActiveStates
|
||||
end
|
||||
|
||||
local states = self.get("states")
|
||||
local result = {}
|
||||
|
||||
@@ -291,6 +300,7 @@ function BaseElement:getActiveStates()
|
||||
|
||||
table.sort(result, function(a, b) return a.priority > b.priority end)
|
||||
|
||||
self._cachedActiveStates = result
|
||||
return result
|
||||
end
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ function Frame.new()
|
||||
self.class = Frame
|
||||
self.set("width", 12)
|
||||
self.set("height", 6)
|
||||
self.set("background", colors.gray)
|
||||
self.set("z", 10)
|
||||
return self
|
||||
end
|
||||
|
||||
@@ -37,7 +37,6 @@ function Label.new()
|
||||
local self = setmetatable({}, Label):__init()
|
||||
self.class = Label
|
||||
self.set("z", 3)
|
||||
self.set("foreground", colors.black)
|
||||
self.set("backgroundEnabled", false)
|
||||
return self
|
||||
end
|
||||
@@ -49,10 +48,6 @@ end
|
||||
--- @protected
|
||||
function Label:init(props, basalt)
|
||||
VisualElement.init(self, props, basalt)
|
||||
if(self.parent)then
|
||||
self.set("background", self.parent.get("background"))
|
||||
self.set("foreground", self.parent.get("foreground"))
|
||||
end
|
||||
self.set("type", "Label")
|
||||
return self
|
||||
end
|
||||
|
||||
@@ -71,7 +71,6 @@ function List.new()
|
||||
self.set("width", 16)
|
||||
self.set("height", 8)
|
||||
self.set("z", 5)
|
||||
self.set("background", colors.gray)
|
||||
return self
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user