Mercurial > wow > buffalo2
changeset 72:d80db9a9b7e4
- created 'VeneerTemplate' xml
- implement drag drop parent re-anchoring
author | Nenue |
---|---|
date | Tue, 23 Aug 2016 14:53:38 -0400 |
parents | 6f8661094643 |
children | 95ed343c3a42 |
files | Modules/ObjectiveTracker.lua Modules/PaperDoll.lua Veneer.lua Veneer.xml |
diffstat | 4 files changed, 123 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- 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()
--- 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)
--- 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
--- 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 @@ </Frames> </Frame> + <Frame name="VeneerTemplate" virtual="true"> + <Layers> + <Layer level="BACKGROUND"> + <Texture parentKey="bg" setAllPoints="true" parentArray="configLayers" /> + </Layer> + <Layer level="OVERLAY"> + <FontString parentKey="label" inherits="VeneerNumberFontLarge" parentArray="configLayers"> + <Anchors> + <Anchor point="TOPLEFT" /> + </Anchors> + </FontString> + </Layer> + </Layers> + <Frames> + <Button parentKey="resize" parentArray="configLayers"> + <Size x="48" y="16" /> + <Anchors> + <Anchor point="BOTTOMRIGHT" /> + </Anchors> + <NormalTexture setAllPoints="true"> + <Color a="1" r="1" g="1" b="1" /> + </NormalTexture> + <PushedTexture> + <Color a="1" r="1" g="0.5" b="1" /> + </PushedTexture> + </Button> + </Frames> + </Frame> + <Script file="Veneer.lua" />