WoWInterface SVN Critline

[/] [tags/] [3.1.1/] [reset.lua] - Rev 14

Go to most recent revision | Compare with Previous | Blame | View Log

local addonName, addon = ...

local L = LibStub("AceLocale-3.0"):GetLocale(addonName)
local templates = addon.templates

local treeNames = addon.treeNames


local module = templates:CreateList("CritlineReset", L["Reset"])

do
        local button = module.button
        button:SetScript("OnClick", function()
                PlaySound("gsTitleOptionOK")
                module:ResetRecords()
        end)
        
        local resetAll = templates:CreateButton(module)
        resetAll:SetSize(100, 22)
        resetAll:SetPoint("TOP", button, "BOTTOM", 0, -10)
        resetAll:SetText(L["Reset all"])
        resetAll:SetScript("OnClick", function(self)
                PlaySound("gsTitleOptionOK")
                StaticPopup_Show("CRITLINE_RESET_ALL", addon.treeNames[module.tree:GetSelectedValue()])
        end)

        -- "edit tooltip format" popup
        StaticPopupDialogs["CRITLINE_RESET_ALL"] = {
                text = L["Are you sure you want to reset all %s records?"],
                button1 = OKAY,
                button2 = CANCEL,
                OnAccept = function(self)
                        module:ResetRecords(true)
                end,
                whileDead = true,
                timeout = 0,
        }
end


function module:ResetRecords(resetAll)
        local selectedSpells = self.selectedSpells
        local tree = self.tree:GetSelectedValue()
        local spells = addon.percharDB.profile.spells[tree]
        
        if resetAll then
                for i = #spells, 1, -1 do
                        local data = spells[i]
                        if data.filtered then
                                data.normal = nil
                                data.crit = nil
                        else
                                tremove(spells, i)
                        end
                end
                addon:Message(format(L["Reset all %s records."], treeNames[tree]))
        else
                -- remove selected spells from database
                -- iterate first in ascending order to print chat messages in alphabetical order
                for i = 1, table.maxn(selectedSpells) do
                        if selectedSpells[i] then
                                local data = spells[i]
                                if data.filtered then
                                        -- don't remove filtered entries completely; save the 'filtered' flag
                                        data.normal = nil
                                        data.crit = nil
                                        selectedSpells[i] = nil
                                end
                                addon:Message(format(L["Reset %s (%s) records."], addon:GetFullSpellName(tree, data.spellName, data.isPeriodic), treeNames[tree]))
                        end
                end
                -- then iterate in descending order not to mess up the loop with tremove
                for i = table.maxn(selectedSpells), 1, -1 do
                        if selectedSpells[i] then
                                tremove(spells, i)
                        end
                end
        end
        
        wipe(selectedSpells)
        self:Update()
        self.button:Disable()
        addon:UpdateSpells(tree)
end

Go to most recent revision | Compare with Previous | Blame