Mercurial > wow > buffalo2
diff Init.lua @ 24:66b927b46776
Refine the XML data logic, and sort out some EnableMouse inconsistencies.
author | Nenue |
---|---|
date | Mon, 11 Apr 2016 09:07:40 -0400 |
parents | d5ee940de273 |
children | e84d645c8ab8 |
line wrap: on
line diff
--- a/Init.lua Sun Apr 10 04:35:32 2016 -0400 +++ b/Init.lua Mon Apr 11 09:07:40 2016 -0400 @@ -125,7 +125,7 @@ --- localize for speed local layers, refs, displays = B.configLayers, B.configLayersRef, B.displays -local ModulesCall = function(func) +local ModulesCall = function(func, flag) local n = 0 for i = 1, #moduleStack do @@ -134,11 +134,19 @@ for name, module in pairs(stackset) do n = n + 1 - print(n..' '..name..'.'..func..'()') if module[func] then - module[func](module) + -- nil = pass + if not flag or module.Conf[flag] then + if (flag) then + print(' check', flag, '=', module.Conf[flag]) + end + + print(' ',n..' '..name..'.'..func..'()') + module[func](module, module.Conf) + end + end end end @@ -161,6 +169,8 @@ if not VeneerData then VeneerData = {} for k,v in pairs(defaults) do + + VeneerData[k] = v end print('Veneer defaults being used.') @@ -238,6 +248,10 @@ for level, batch in ipairs(moduleStack) do print('config level', level) for name, module in pairs(batch) do + if not VeneerData[name] then + VeneerData[name] = {} + end + if module.defaults then print('setting defaults for module', name) --[===[@non-debug@ @@ -253,6 +267,10 @@ module.Conf = VeneerData[name] end + if VeneerData[name].enabled == nil then + VeneerData[name].enabled = true + end + end end @@ -272,7 +290,7 @@ local lastUpdate function B.UpdateAll(...) lastUpdate = GetTime() - ModulesCall('OnUpdate', lastUpdate) + ModulesCall('OnUpdate') end B:RegisterEvent('PLAYER_ENTERING_WORLD') @@ -285,16 +303,20 @@ C_Timer.After(1, function() if GetSpecialization() then print(GetSpecialization(), 'enabling') - ModulesCall('OnEnable') + + ModulesCall('OnEnable', 'enabled') B:SetScript('OnUpdate', nil) end - end) end - end B.UpdateAll() + + if event == 'PLAYER_ENTERING_WORLD' then + B.UpdateConfigLayers() + end + end) --- Modulizer method @@ -333,10 +355,10 @@ B.SetConfigLayers = function(frame) local print = B.fprint() if not frame.config then - print(frame:GetName(), 'has no config layers') + --print(frame:GetName(), 'has no config layers') return end - print('Registering config layers from', frame:GetName()) + --print('Registering config layers from', frame:GetName()) for i, subframe in ipairs(frame.config) do -- make sure there are no duplicates @@ -345,7 +367,7 @@ layers[key] = subframe refs[subframe] = key end - print(' ', i, subframe:GetName()) + --print(' ', i, subframe:GetName()) end end @@ -380,7 +402,8 @@ end end - + print(B.Conf.ConfigMode) + display.anchor:EnableMouse(B.Conf.ConfigMode) end for id, region in pairs(layers) do print(id, region:GetName(), func) @@ -390,24 +413,66 @@ print('['..func..'] updated', #layers, 'regions,', numAnchors, 'frames') end +local XMLFrame_SetEnabled = function(self, value) + local name = self:GetName() + + + if not B.Conf[name] then + B.Conf[name] = { + enabled = true + } + end + + print() + local enabled + if value == nil then + if B.Conf[name].enabled == nil then + print('toggle based on visibility') + enabled = (not self:IsVisible()) and true or false + else + print('toggle a config value =', B.Conf[name].enabled) + enabled = B.Conf[name].enabled + end + + enabled = (enabled ~= true) and true or false + else + print('use argument value', value) + enabled = value + end + + print('arg =', value, 'conf =', B.Conf[name].enabled, 'result=', enabled) + + B.Conf[name].enabled = enabled + + local stateFunc = enabled and 'Show' or 'Hide' + local eventFunc = enabled and 'OnToggle' or 'OnToggle' + for i, region in pairs(self.toggled) do + region[stateFunc](region) + end + if self.OnToggle then + self:OnToggle(B.Conf[name].enabled) + end + if B.Conf[name].enabled then + if self.OnEnable then + self:OnEnable() + end + else + if self.OnDisable then + self:OnDisable() + end + end + + +end --- Generic handlers for keeping track of XML-defined frames B.OnLoad = function(self) tinsert(checkForConfig, self) - self.Minimize = function(self, forceDown) - if not self:IsVisible() then - return - end - local state = (forceDown and 1 or (B.Conf.FrameState[self:GetName()] == 1 and 2 or 1)) - local stateFunc = (state == 1) and 'Hide' or 'Show' - for i, region in pairs(self.minimizeFrames) do - region[stateFunc](region) - end - B.Conf.FrameState[self:GetName()] = state - end + self.SetEnabled = XMLFrame_SetEnabled end B.InitXMLFrame = function(self) - print('|cFF00FF00hello from '..self:GetName()) + local name = self:GetName() + print('|cFF00FF00hello from '.. name) if self.drag then self:RegisterForDrag('LeftButton') @@ -415,28 +480,25 @@ self:EnableMouse(false) end - if not B.Conf.FramePosition then - B.Conf.FramePosition = {} + if not B.Conf[name] then + B.Conf[name] = { + enabled = true, + } end - if not B.Conf.FrameState then - B.Conf.FrameState = {} + local c = B.Conf[name] + + if c.position then + print('restoring frame position', unpack(c.position)) + self:ClearAllPoints() + local anchorTo, relativePoint, x, y = unpack(c.position) + self:SetPoint(anchorTo, UIParent, relativePoint, x, y) + else + local a, _, b, c, d = self:GetPoint(1) + print('seeding default position', a, b, c, d) + c.position = {a, b, c, d} end - - if B.Conf.FramePosition[self:GetName()] then - print('restoring frame position', unpack(B.Conf.FramePosition[self:GetName()])) - self:ClearAllPoints() - local anchorTo, relativePoint, x, y = unpack(B.Conf.FramePosition[self:GetName()]) - self:SetPoint(anchorTo, UIParent, relativePoint, x, y) - end - local state = B.Conf.FrameState[self:GetName()] and B.Conf.FrameState[self:GetName()] or 2 - if state == 0 then - self:Hide() - elseif state == 1 then - self.Minimize(self, true) - elseif state == 2 then - self:Show() - end - B.Conf.FrameState[self:GetName()] = state + local state = c.enabled + self:SetEnabled(state) end B.OnDragStart = function(self) @@ -449,13 +511,13 @@ end B.OnDragStop = function(self) - print(self:GetName(), 'stop moving ('..self:GetLeft()..', '..self:GetBottom()..')') + local name = self:GetName() + print(name, 'stop moving ('..self:GetLeft()..', '..self:GetBottom()..')') local xB = self:GetLeft() - self.xA local yB = self:GetBottom() - self.yA print('storing anchor point', self.anchorTo, self.relativePoint, self.x + xB, self.y + yB) self:StopMovingOrSizing() - B.Conf.FramePosition[self:GetName()] = {self.anchorTo, self.relativePoint, self.x + xB, self.y + yB} + B.Conf[name].position = {self.anchorTo, self.relativePoint, self.x + xB, self.y + yB} B.InitXMLFrame(self) - end \ No newline at end of file