Mercurial > wow > buffalo2
diff Veneer.lua @ 71:6f8661094643
- obtains veneer objects through a common function and track them as a unified table.
author | Nenue |
---|---|
date | Tue, 23 Aug 2016 06:35:08 -0400 |
parents | ef4116179e2f |
children | d80db9a9b7e4 |
line wrap: on
line diff
--- a/Veneer.lua Mon Aug 22 20:38:43 2016 -0400 +++ b/Veneer.lua Tue Aug 23 06:35:08 2016 -0400 @@ -1,9 +1,5 @@ -- Veneer --- Customization tool for the small bits and pieces - --- BuffFrame --- Provides mechanisms for positioning and alter buff button parameters. --- Mostly re-configures the blizzard UI frames due to limitations of SecureTemplate. +-- Base framework for making things draggable. local vn, print = LibStub("LibKraken").register(VeneerController) @@ -18,11 +14,104 @@ height = 48, } } +local configMode +local veneers = {} + +do + local anonID = 0 + local AnonymousName = function() + anonID = anonID + 1 + return 'VN' .. anonID + end +end + + +local VeneerButton_Update = function(self) + if configMode then + self:SetScript('OnDragStart', self.StartMoving) + self:SetScript('OnDragStop', self.StopMovingOrSizing) + self:SetMovable(false) + self:EnableMouse(false) + self:RegisterForDrag('LeftButton') + + self.bg:SetColorTexture(0,1,0,0.5) + else + + self:SetScript('OnDragStart', self.StartMoving) + self:SetScript('OnDragStop', self.StopMovingOrSizing) + self:SetMovable(false) + self:EnableMouse(false) + + self.bg:SetColorTexture(0,1,0,0) + end +end + +local ToggleVeneerConfig = function() + if configMode then + configMode = false + vn:print('Config mode off.') + else + configMode = true + vn:print('Config mode on.') + end + + for frame, veneer in pairs(veneers) do + VeneerButton_Update(veneer) + end +end + +local VeneerButton_OnShow = function(self) + VeneerButton_Update(self) +end + +vn.GetVeneer = function(frame) + if not frame then + print('|cFFFF4400Unable to acquire frame...|r') + return + end + + + if veneers[frame] then + return veneers[frame] + end + + local veneer = CreateFrame('Frame', (frame:GetName() or AnonymousName())..'Veneer', UIParent) + + veneer:SetAllPoints(frame) + veneer:SetParent(frame) + veneer.bg = veneer:CreateTexture() + veneer.bg:SetColorTexture(1,1,1,0) + veneer.bg:SetAllPoints(veneer) + veneer.bg:Show() + veneer:Hide() + veneer:EnableMouse(false) + + veneer:SetScript('OnShow', VeneerButton_OnShow) + + -- find current X/Y + veneer.currentLeft = frame:GetLeft() + veneer.currentTop = frame:GetTop() + + veneers[frame] = veneer + return veneers[frame] +end vn.init = function() if (not VeneerData) or (not VeneerData.version) then VeneerData = defaults end vn.db = VeneerData +end + +vn.wrap = function(module) + vn.modules = vn.modules or {} + tinsert(vn.modules, module) +end + +SLASH_VENEER1 = "/veneer" +SLASH_VENEER2 = "/vn" + +SlashCmdList.VENEER = function() + ToggleVeneerConfig() end \ No newline at end of file