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" />