skins, not fully working
This commit is contained in:
parent
1c7bbaea89
commit
2d04d41f09
|
@ -8,6 +8,7 @@ Module
|
|||
reloadable: false
|
||||
|
||||
load-later:
|
||||
- client_skins
|
||||
- client_locales
|
||||
- client_topmenu
|
||||
- client_background
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
Skins = { }
|
||||
|
||||
-- private variables
|
||||
local defaultSkinName = 'Default'
|
||||
local installedSkins
|
||||
local currentSkin
|
||||
local skinComboBox
|
||||
|
||||
-- private functions
|
||||
local function onSkinComboBoxOptionChange(self, optionText, optionData)
|
||||
if Skins.setSkin(optionText) then
|
||||
Settings.set('skin', optionText)
|
||||
reloadModules()
|
||||
end
|
||||
end
|
||||
|
||||
-- public functions
|
||||
function Skins.init()
|
||||
installedSkins = {}
|
||||
|
||||
Skins.installSkins('skins')
|
||||
|
||||
local userSkinName = Settings.get('skin')
|
||||
if userSkinName and Skins.setSkin(userSkinName) then
|
||||
info('Using configured skin: ' .. userSkinName)
|
||||
else
|
||||
info('Using default skin: ' .. defaultSkinName)
|
||||
Skins.setSkin(defaultSkinName)
|
||||
Settings.set('skin', defaultSkinName)
|
||||
end
|
||||
|
||||
addEvent( function()
|
||||
skinComboBox = createWidget('ComboBox', rootWidget:recursiveGetChildById('rightButtonsPanel'))
|
||||
for key,value in pairs(installedSkins) do
|
||||
skinComboBox:addOption(value.name)
|
||||
end
|
||||
skinComboBox:setCurrentOption(currentSkin.name)
|
||||
skinComboBox.onOptionChange = onSkinComboBoxOptionChange
|
||||
end, false)
|
||||
end
|
||||
|
||||
function Skins.terminate()
|
||||
installedSkins = nil
|
||||
currentSkin = nil
|
||||
skinComboBox = nil
|
||||
end
|
||||
|
||||
function Skins.installSkin(skin)
|
||||
if not skin or not skin.name or not skin.styles then
|
||||
error('Unable to install skin.')
|
||||
return false
|
||||
end
|
||||
|
||||
installedSkins[skin.name] = skin
|
||||
-- todo: maybe combine styles if skin already exists
|
||||
return true
|
||||
end
|
||||
|
||||
function Skins.installSkins(directory)
|
||||
dofiles(directory)
|
||||
end
|
||||
|
||||
function Skins.setSkin(name)
|
||||
local skin = installedSkins[name]
|
||||
if not skin then
|
||||
warning("Skin " .. name .. ' does not exist.')
|
||||
return false
|
||||
end
|
||||
|
||||
--g_ui.clearStyles() -- this is crashing
|
||||
for i=1,#skin.styles do
|
||||
g_ui.importStyle('skins/' .. string.lower(name) .. '/' .. skin.styles[i])
|
||||
end
|
||||
|
||||
currentSkin = skin
|
||||
return true
|
||||
end
|
|
@ -0,0 +1,12 @@
|
|||
Module
|
||||
name: client_skins
|
||||
description: Changes modules styles
|
||||
author: baxnie
|
||||
website: www.otclient.info
|
||||
|
||||
@onLoad: |
|
||||
dofile 'skins'
|
||||
Skins.init()
|
||||
|
||||
@onUnload: |
|
||||
Skins.terminate()
|
|
@ -0,0 +1,7 @@
|
|||
local skin = {
|
||||
name = 'Default',
|
||||
|
||||
styles = {}
|
||||
}
|
||||
|
||||
Skins.installSkin(skin)
|
|
@ -0,0 +1,9 @@
|
|||
local skin = {
|
||||
name = 'Example',
|
||||
|
||||
styles = {
|
||||
'topmenu.otui'
|
||||
}
|
||||
}
|
||||
|
||||
Skins.installSkin(skin)
|
|
@ -0,0 +1,3 @@
|
|||
#TopButton < UIButton
|
||||
size: 36 36
|
||||
background-color: #ff0000
|
Loading…
Reference in New Issue