vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
simpleMinimap_Movers = simpleMinimap:NewModule("movers")
local L = AceLibrary("AceLocale-2.1"):GetInstance("simpleMinimap_Movers", true)
--
function simpleMinimap_Movers:OnInitialize()
        self.db = simpleMinimap:AcquireDBNamespace("movers")
        self.movers = {
                QuestWatchFrame = "smmQuestMover",
                DurabilityFrame = "smmDollMover",
                QuestTimerFrame = "smmTimerMover",
                smmCaptureMover = "smmCaptureMover"
        }
        self.framesDefault = {
                QuestWatchFrame = { anchor=MinimapCluster, point="TOPRIGHT", rpoint="BOTTOMRIGHT", x=0, y=10 },
                DurabilityFrame = { anchor=MinimapCluster, point="TOPRIGHT", rpoint="BOTTOMRIGHT", x=40, y=15 },
                QuestTimerFrame = { anchor=MinimapCluster, point="TOPRIGHT", rpoint="BOTTOMRIGHT", x=10, y=0 },
                smmCaptureMover = { anchor=MinimapCluster, point="TOPRIGHT", rpoint="BOTTOMRIGHT", x=10, y=15 }
        }
        self.defaults = { enabled=true, framePos={} }
        self.options = {
                type="group", name=L.movers, desc=L.movers_desc,
                args={
                        title={
                                type="header", order=1, name="simpleMinimap |cFFFFFFCC"..L.movers
                        },
                        spacer1={
                                type="header", order=2
                        },
                        enabled={
                                type="toggle", order=3, name=L.enabled, desc=L.enabled_desc,
                                get=function() return(self.db.profile.enabled) end,
                                set=function(x) self.db.profile.enabled=x simpleMinimap:ToggleModuleActive(self,x) end
                        },
                        spacer2={
                                type="header", order=4, name="---"
                        },
                        hide={
                                type="toggle", order=10, name=L.hide, desc=L.hide_desc,
                                get=function() return(self.db.profile.hide) end,
                                set=function(x) self.db.profile.hide=x self:UpdateScreen() end
                        }
                }
        }
        simpleMinimap.options.args.modules.args.movers = self.options
        simpleMinimap:RegisterDefaults("movers", "profile", self.defaults)
        for n, f in pairs(self.movers) do
                local movee, mover = getglobal(n), getglobal(f)
                mover:SetScript("OnDragStart", function() self:FrameDrag(true) end)
                mover:SetScript("OnDragStop", function() self:FrameDrag(false) end)
                mover:RegisterForDrag("LeftButton")
                mover.smmMover = n
                mover:SetScript("OnEnter", function() GameTooltip:SetOwner(this, "ANCHOR_CURSOR") GameTooltip:SetText(L.drag.." |cFFFFFF99"..this.smmMover)     end)
                mover:SetScript("OnLeave", function() GameTooltip:Hide() end)
                mover:SetAlpha(0.4)
                movee:SetMovable(true)
        end
end
--
function simpleMinimap_Movers:OnEnable()
        if(self.db.profile.enabled) then
                self:RegisterEvent("UPDATE_WORLD_STATES")
                self:UpdateScreen()
        else
                simpleMinimap:ToggleModuleActive(self, false)
        end
end
--
function simpleMinimap_Movers:OnDisable()
        self:UpdateScreen()
end
--
function simpleMinimap_Movers:FrameDrag(kick)
        local f = getglobal(this.smmMover)
        if(kick and not simpleMinimap.db.profile.lock) then
                f.isMoving = true
                f:StartMoving()
                GameTooltip:Hide()
        elseif(f.isMoving) then
                f.isMoving = false
                f:StopMovingOrSizing()
                self.db.profile.framePos[this.smmMover] = {}
                self.db.profile.framePos[this.smmMover].x, self.db.profile.framePos[this.smmMover].y = f:GetCenter()
        end
end
--
function simpleMinimap_Movers:UpdateScreen()
        for n, f in pairs(self.movers) do
                local movee, mover = getglobal(n), getglobal(f)
                if(simpleMinimap:IsModuleActive(self) and self.db.profile.framePos[n]) then
                        simpleMinimap:LockFrame(movee)
                        movee:smm_ClearAllPoints()
                        movee:smm_SetPoint("CENTER", UIParent, "BOTTOMLEFT", self.db.profile.framePos[n].x, self.db.profile.framePos[n].y)
                elseif(movee.smmTouched) then
                        simpleMinimap:UnlockFrame(movee)
                        movee:ClearAllPoints()
                        movee:SetPoint(self.framesDefault[n].point, self.framesDefault[n].anchor, self.framesDefault[n].rpoint, self.framesDefault[n].x, self.framesDefault[n].y)
                        movee:SetUserPlaced(false)
                end
                if(simpleMinimap:IsModuleActive(self) and not self.db.profile.hide and not simpleMinimap.db.profile.lock) then
                        mover:Show()
                else
                        mover:Hide()
                end
        end
end
--
function simpleMinimap_Movers:UPDATE_WORLD_STATES()
        for i = 1, NUM_EXTENDED_UI_FRAMES do
                local frame = getglobal("WorldStateCaptureBar"..i)
                if(frame) then
                        if(simpleMinimap:IsModuleActive(self)) then
                                if(not frame.smmTouched) then
                                        simpleMinimap:LockFrame(frame)
                                        frame:smm_ClearAllPoints()
                                        frame:smm_SetPoint("Center", smmCaptureMover)
                                end
                        elseif(frame.smmTouched) then
                                simpleMinimap:UnlockFrame(frame)
                        end
                end
        end
end

Generated by GNU Enscript 1.6.5.90.