vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- SavedVariables: XPerlConfig, XPerlConfig_Global, XPerlConfigSavePerCharacter

local varsLoaded

local function Msg(msg)
        DEFAULT_CHAT_FRAME:AddMessage("|c00FF0000X-Perl|r: "..msg)
end

local function CopyConfig()

        if (not varsLoaded) then
                Msg("Variables not loaded yet. Try again")
                return
        end

        if (Perl_Config) then
                if (not XPerlConfig) then
                        XPerlConfig = {}
                end
                for k,v in (Perl_Config) do
                        XPerlConfig[k] = v
                end
                if (Perl_Config.RaidPositions) then
                        XPerlConfig.RaidPositions = {}
                        for k,v in pairs(Perl_Config.RaidPositions) do
                                if (strsub(k, 1, 4) == "Perl") then
                                        XPerlConfig.RaidPositions["X"..k] = v
                                end
                        end
                end

                if (not XPerlConfig_Global) then
                        XPerlConfig_Global = {}
                end
                XPerlConfigSavePerCharacter = Perl_Config_SavePerCharacter
                if (Perl_Global_Config) then
                        for realm,realmData in pairs(Perl_Config_Global) do
                                if (not XPerlConfig_Global[realm]) then
                                        XPerlConfig_Global[realm] = {}
                                end
                                for char,charData in pairs(realmData) do
                                        if (not XPerlConfig_Global[realm][char]) then
                                                XPerlConfig_Global[realm][char] = {}
                                        end

                                        for k,v in pairs(charData) do
                                                XPerlConfig_Global[realm][char][k] = v
                                        end

                                        if (charData.RaidPositions) then
                                                XPerlConfig_Global[realm][char].RaidPositions = {}
                                                for k,v in pairs(charData.RaidPositions) do
                                                        if (strsub(k, 1, 4) == "Perl") then
                                                                XPerlConfig_Global[realm][char].RaidPositions["X"..k] = v
                                                        end
                                                end
                                        end
                                end
                        end
                        if (XPerlConfigSavePerCharacter and XPerl_SetMyGlobal) then
                                XPerl_SetMyGlobal()
                        end
                end

                XPerl_Defaults()

                XPerlConfig.Copied = nil
                Perl_Config.Copied = (Perl_Config.Copied or 0) + 1

                XPerl_OptionActions()

                Msg("Configuration copied from old X-Perl installation. You may now remove the 'Perl' addon folder")
        else
                Msg("There is no old X-Perl configuration to copy")
        end

        SlashCmdList["PERLCOPYCONFIG"] = nil
        SLASH_PERLCOPYCONFIG1 = nil

        DisableAddOn("Perl")
end

local function PerlOnEvent()
        this:UnregisterAllEvents()

        varsLoaded = true

        Msg("Use the command |c0000FF00/xperlcopy|r to copy your configuration. |c00A06060This will replace ALL current X-Perl settings with the settings saved under the old folder names|r")

        if (Perl_Config and Perl_Config.Copied) then
                Msg(string.format("|c00FF0000Note that configuration has been copied %d time(s) before", Perl_Config.Copied))
        end

        SlashCmdList["PERLCOPYCONFIG"] = CopyConfig
        SLASH_PERLCOPYCONFIG1 = "/xperlcopy"
end

do
        local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo("Perl")
        if (name and enabled) then
                local Frame = CreateFrame("Frame", "Perl_Config_Copy")
                if (Frame) then
                        Frame:SetScript("OnEvent", PerlOnEvent)
                        Frame:RegisterEvent("PLAYER_ENTERING_WORLD")
                end
        end
end