# HG changeset patch # User Nenue # Date 1471978418 14400 # Node ID d80db9a9b7e430c6dcf0a7e72d0b8c7c50313b6a # Parent 6f86610946437418151b964b65180a0618a65205 - created 'VeneerTemplate' xml - implement drag drop parent re-anchoring diff -r 6f8661094643 -r d80db9a9b7e4 Modules/ObjectiveTracker.lua --- a/Modules/ObjectiveTracker.lua Tue Aug 23 06:35:08 2016 -0400 +++ b/Modules/ObjectiveTracker.lua Tue Aug 23 14:53:38 2016 -0400 @@ -12,23 +12,36 @@ local ResetObjectiveTrackerAnchor = function() print('|cFFFF4400ObjectiveTracker_Initialize|r') - otvn = vn.GetVeneer(ot.BlocksFrame) + otvn = vn.GetVeneer(ot) print(otvn:GetHeight()) - vn:print(ot:GetHeight(), ot:GetWidth()) for i = 1, #ot.MODULES do print(i, ot.MODULES[i]) end + ot:ClearAllPoints() + ot:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', -5, -140) + print(ot:GetHeight(), ot:GetWidth()) + local width, height = ot:GetSize() + ot:SetSize(width, height) + + print(ot:GetHeight(), ot:GetWidth()) + --vn.GetVeneer(ot):SetAllPoints(ot) end local UpdateVeneer = function() - if not ot.initialized then + if not ot.initialized or not otvn then return end - ot:ClearAllPoints() - ot:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', -5, -140) + + + print(ot:GetPoint(1),ot:GetPoint(2), ot:GetSize()) + print(ot:GetTop(), ot:GetLeft()) + print(ot:GetBottom(), ot:GetRight()) + print(otvn:GetTop(), otvn:GetLeft()) + print(otvn:GetBottom(), otvn:GetRight()) + otvn:Show() end local CreateVeneer = function() diff -r 6f8661094643 -r d80db9a9b7e4 Modules/PaperDoll.lua --- a/Modules/PaperDoll.lua Tue Aug 23 06:35:08 2016 -0400 +++ b/Modules/PaperDoll.lua Tue Aug 23 14:53:38 2016 -0400 @@ -205,9 +205,9 @@ end -plugin:SetScript('OnEvent', plugin.event) +--plugin:SetScript('OnEvent', plugin.event) plugin:RegisterEvent('PLAYER_EQUIPMENT_CHANGED') plugin:RegisterEvent('PLAYER_ENTERING_WORLD') -hooksecurefunc("PaperDollItemSlotButton_Update", PaperDollItemSlotButton_Update) +--hooksecurefunc("PaperDollItemSlotButton_Update", PaperDollItemSlotButton_Update) diff -r 6f8661094643 -r d80db9a9b7e4 Veneer.lua --- a/Veneer.lua Tue Aug 23 06:35:08 2016 -0400 +++ b/Veneer.lua Tue Aug 23 14:53:38 2016 -0400 @@ -25,16 +25,74 @@ end end +local anchor_coefficients = { + ['TOP'] = function(x, y) return x, y end, + ['BOTTOM'] = function(x, y) return x,y end, + ['LEFT'] = function(x, y) return x,y end, + ['RIGHT'] = function(x,y) return x,y end, +} + +local VeneerButton_OnDragStart = function(self) + self.startingLeft = self:GetLeft() + self.startingBottom = self:GetBottom() + self.anchors = self.anchors or {} + table.wipe(self.anchors) + + local frame = self:GetParent() + local n = frame:GetNumPoints() + for i = 1, n do + local anchor, parent, relative, x, y = frame:GetPoint(i) + self.anchors[i] = { + anchor = anchor, + parent = parent, + relative = relative, + x = x, + y = y + } + end + + print(self:GetName(), 'start moving', self.startingLeft, self.startingBottom) + self:StartMoving() +end + +local VeneerButton_OnDragStop = function(self) + self:StopMovingOrSizing() + if self.OnDragStop then + self.OnDragStop(self) + else + local frame = self:GetParent() + local dx = self:GetLeft() - self.startingLeft + local dy = self:GetBottom() - self.startingBottom + + frame:ClearAllPoints() + for i, point in ipairs(self.anchors) do + frame:SetPoint(point.anchor, point.parent, point.relative, point.x + dx, point.y + dy) + print('adjusting anchor', point.anchor, point.parent, point.relative, point.x + dx, point.y + dy) + end + end +end + +local Veneer_FixMovers = function() + for frame, veneer in pairs(veneers) do + if veneer:IsMoving() then + VeneerButton_OnDragStop(veneer) + end + 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:SetScript('OnDragStart', VeneerButton_OnDragStart) + self:SetScript('OnDragStop', VeneerButton_OnDragStop) + self:SetMovable(true) + self:EnableMouse(true) self:RegisterForDrag('LeftButton') self.bg:SetColorTexture(0,1,0,0.5) + for i, region in ipairs(self.configLayers) do + region:Show() + end + self:Show() else self:SetScript('OnDragStart', self.StartMoving) @@ -43,6 +101,13 @@ self:EnableMouse(false) self.bg:SetColorTexture(0,1,0,0) + for i, region in ipairs(self.configLayers) do + region:Hide() + end + if self.isHidden then + self:Hide() + end + end end @@ -75,14 +140,14 @@ return veneers[frame] end - local veneer = CreateFrame('Frame', (frame:GetName() or AnonymousName())..'Veneer', UIParent) + local name = (frame:GetName() or AnonymousName())..'Veneer' + local veneer = CreateFrame('Frame', name, frame, 'VeneerTemplate') + print('+veneer', name) veneer:SetAllPoints(frame) veneer:SetParent(frame) - veneer.bg = veneer:CreateTexture() + veneer.label:SetText(name) veneer.bg:SetColorTexture(1,1,1,0) - veneer.bg:SetAllPoints(veneer) - veneer.bg:Show() veneer:Hide() veneer:EnableMouse(false) @@ -92,6 +157,7 @@ veneer.currentLeft = frame:GetLeft() veneer.currentTop = frame:GetTop() + veneers[frame] = veneer return veneers[frame] end diff -r 6f8661094643 -r d80db9a9b7e4 Veneer.xml --- a/Veneer.xml Tue Aug 23 06:35:08 2016 -0400 +++ b/Veneer.xml Tue Aug 23 14:53:38 2016 -0400 @@ -85,6 +85,35 @@ + + + + + + + + + + + + + + + + + +