end |
end |
|
local function getCoords(frame) |
local s = frame:GetEffectiveScale() |
local function getCoords(self) |
local s = self:GetEffectiveScale() |
local uis = UIParent:GetScale() |
local fn = frame:GetName() |
return frame['db'][fn]['xpos']*uis/s, frame['db'][fn]['ypos']*uis/s |
local fn = self:GetName() |
return self['db'][fn]['xpos']*uis/s, self['db'][fn]['ypos']*uis/s |
end |
|
local function loadFrame(frame) |
if not frame then return end |
loadFrame = function(self) -- local because of previous dummy |
if not self then return end |
if( InCombatLockdown() ) then |
addSchedule(frame, loadFrame) |
addSchedule(self, loadFrame) |
return |
end |
frame:SetMovable(true) |
local db = frame['db'] |
local fn = frame:GetName() |
self:SetMovable(true) |
local db = self['db'] |
local fn = self:GetName() |
db[fn] = db[fn] or { |
['xpos'] = 0, |
['ypos'] = 0, |
} |
local x, y = getCoords(frame) |
frame:ClearAllPoints() |
frame:SetPoint("CENTER", UIParent, "CENTER", x, y) |
frame:SetUserPlaced(true) |
local x, y = getCoords(self) |
self:ClearAllPoints() |
self:SetPoint("CENTER", UIParent, "CENTER", x, y) |
self:SetUserPlaced(true) |
end |
|
local function dragView2(frame) |
if(IsAltKeyDown() and frame['dragAble']()) then |
frame['tex']:SetTexture(0, .5, 0, .5) |
local function dragView2(self) |
if(IsAltKeyDown() and self['dragAble']()) then |
self['tex']:SetTexture(0, .5, 0, .5) |
else |
frame['tex']:SetTexture(0, 0, 0 , 0) |
self['tex']:SetTexture(0, 0, 0 , 0) |
end |
end |
|
local function storePoints(frame) |
wipe(frame['db']) |
for i = 1, frame:GetNumPoints() do |
frame['db'][#frame['db'] + 1] = {frame:GetPoint(i)} |
frame['db'][#frame['db']][2] = frame['db'][#frame['db']][2] and frame['db'][#frame['db']][2]:GetName() or "UIParent" |
frame['db'][#frame['db']][4] = round(frame['db'][#frame['db']][4]) |
frame['db'][#frame['db']][5] = round(frame['db'][#frame['db']][5]) |
print("save", frame:GetName(),frame:GetPoint(i),frame['db'][#frame['db']][4],frame['db'][#frame['db']][5]) |
local function storePoints(self) |
wipe(self['db']) |
for i = 1, self:GetNumPoints() do |
|
self['db'][#self['db'] + 1] = {self:GetPoint(i)} |
self['db'][#self['db']][2] = self['db'][#self['db']][2] and self['db'][#self['db']][2]:GetName() or "UIParent" |
self['db'][#self['db']][4] = round(self['db'][#self['db']][4]) |
self['db'][#self['db']][5] = round(self['db'][#self['db']][5]) |
-- print("save", self:GetName(),self:GetPoint(i),self['db'][#self['db']][4],self['db'][#self['db']][5]) |
end |
end |
|
local function restorePoints(frame) |
if(#frame['db']<1) then |
storePoints(frame) |
local function restorePoints(self) |
if(#self['db']<1) then |
storePoints(self) |
end |
frame:ClearAllPoints() |
for i = 1, #frame['db'] do |
if(frame['db'][i][2] == "UIParent") then |
frame['db'][i][2] = UIParent |
self:ClearAllPoints() |
for i = 1, #self['db'] do |
if(self['db'][i][2] == "UIParent") then |
self['db'][i][2] = UIParent |
end |
print("load", frame:GetName(),frame['db'][i][1],_G[frame['db'][i][2]],frame['db'][i][3],frame['db'][i][4],frame['db'][i][5]) |
frame:SetPoint(frame['db'][i][1],frame['db'][i][2] == "UIParent" and UIParent or _G[frame['db'][i][2]],frame['db'][i][3],frame['db'][i][4],frame['db'][i][5]) |
-- print("load", self:GetName(),self['db'][i][1],_G[self['db'][i][2]],self['db'][i][3],self['db'][i][4],self['db'][i][5]) |
self:SetPoint(self['db'][i][1],self['db'][i][2] == "UIParent" and UIParent or _G[self['db'][i][2]],self['db'][i][3],self['db'][i][4],self['db'][i][5]) |
end |
|
end |
local function toggle(frame) |
if(frame:IsVisible()) then |
frame:Hide() |
local function toggle(self) |
if(self:IsVisible()) then |
self:Hide() |
else |
frame:Show() |
self:Show() |
end |
end |
|
local function center(frame) |
frame:ClearAllPoints() |
frame:SetPoint("Center", UIParent,"Center",0,0) |
saveFrame(frame) |
local function center(self) |
self:ClearAllPoints() |
self:SetPoint("Center", UIParent,"Center",0,0) |
saveFrame(self) |
end |
|
local function center2(frame) |
frame:ClearAllPoints() |
frame:SetPoint("Center", UIParent,"Center",0,0) |
storePoints(frame) |
local function center2(self) |
self:ClearAllPoints() |
self:SetPoint("Center", UIParent,"Center",0,0) |
storePoints(self) |
end |
|
local function startMove(frame) |
local function startMove(self) |
if InCombatLockdown() then return end |
if(frame['locked']) then return end |
if(frame['moveparent']) then |
frame:GetParent():StartMoving() |
frame:GetParent():SetUserPlaced(false) |
if(self['locked']) then return end |
if(self['moveparent']) then |
self:GetParent():StartMoving() |
self:GetParent():SetUserPlaced(false) |
else |
frame:StartMoving() |
frame:SetUserPlaced(false) |
self:StartMoving() |
self:SetUserPlaced(false) |
end |
|
end |
|
local function stopMove(frame) |
if(frame['moveparent']) then |
frame:GetParent():StopMovingOrSizing() |
saveFrame(frame:GetParent()) |
local function stopMove(self) |
if(self['moveparent']) then |
self:GetParent():StopMovingOrSizing() |
saveFrame(self:GetParent()) |
else |
frame:StopMovingOrSizing() |
saveFrame(frame) |
self:StopMovingOrSizing() |
saveFrame(self) |
end |
end |
|
local function startMove2(frame) |
if(not frame:dragAble()) then return end |
frame:StartMoving() |
frame:SetUserPlaced(false) |
local function startMove2(self) |
if(not self:dragAble()) then return end |
self:StartMoving() |
self:SetUserPlaced(false) |
end |
|
local function stopMove2(frame) |
frame:StopMovingOrSizing() |
storePoints(frame) |
local function stopMove2(self) |
self:StopMovingOrSizing() |
storePoints(self) |
end |
|
local function dragView(frame) |
if(IsAltKeyDown() and frame:GetParent()['dragAble']() and not InCombatLockdown()) then |
frame['tex']:SetTexture(0, .5, 0, .5) |
frame:Show() |
local function dragView(self) |
if(IsAltKeyDown() and self:GetParent()['dragAble']() and not InCombatLockdown()) then |
self['tex']:SetTexture(0, .5, 0, .5) |
self:Show() |
else |
if(frame:IsVisible()) then |
frame['tex']:SetTexture(0, 1, 0 , 0) |
stopMove(frame) |
frame:Hide() |
if(self:IsVisible()) then |
self['tex']:SetTexture(0, 1, 0 , 0) |
stopMove(self) |
self:Hide() |
end |
end |
end |
local function checkShow(frame, elapsed) |
frame['elapsed'] = frame['elapsed'] + elapsed |
if(frame['elapsed']>1) then |
dragView(frame) |
frame['elapsed'] = 0 |
local function checkShow(self, elapsed) |
self['elapsed'] = self['elapsed'] + elapsed |
if(self['elapsed']>1) then |
dragView(self) |
self['elapsed'] = 0 |
end |
end |
local lib = {} |