vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:

assert(BigWigs, "BigWigs not found!")

------------------------------
--      Are you local?      --
------------------------------

local L = AceLibrary("AceLocale-2.2"):new("BigWigsOptions")
local tablet = AceLibrary("Tablet-2.0")

----------------------------
--      Localization      --
----------------------------

L:RegisterTranslations("enUS", function() return {
        ["|cff00ff00Module running|r"] = true,
        ["|cffeda55fClick|r to reset all running modules. |cffeda55fAlt+Click|r to disable them. |cffeda55fCtrl+Alt+Click|r to disable Big Wigs completely."] = true,
        ["|cffeda55fClick|r to enable."] = true,
        ["Big Wigs is currently disabled."] = true,
        ["Active boss modules"] = true,
        ["hidden"] = true,
        ["shown"] = true,
        ["minimap"] = true,
        ["Minimap"] = true,
        ["Toggle the minimap button."] = true,
        ["All running modules have been reset."] = true,
        ["All running modules have been disabled."] = true,
        ["%s reset."] = true,
        ["%s disabled."] = true,
        ["%s icon is now %s."] = true,
        ["Show it again with /bw plugin minimap."] = true,
} end)

L:RegisterTranslations("frFR", function() return {
        ["|cff00ff00Module running|r"] = "|cff00ff00Module d\195\169marr\195\169|r",
        ["|cffeda55fClick|r to reset all running modules. |cffeda55fAlt+Click|r to disable them. |cffeda55fCtrl+Alt+Click|r to disable Big Wigs completely."] = "|cffeda55fClic|r pour red\195\169marrer les modules actifs. |cffeda55fAlt+Clic|r pour les d\195\169sactiver. |cffeda55fCtrl+Alt+Clic|r pour d\195\169sactiver Big Wigs compl\195\168tement.",
        ["|cffeda55fClick|r to enable."] = "|cffeda55fClic|r pour activer.",
        ["Big Wigs is currently disabled."] = "Big Wigs est actuellement d\195\169sactiv\195\169.",
        ["Active boss modules"] = "Modules de boss actifs",
        ["hidden"] = "cach\195\169e",
        ["shown"] = "affich\195\169e",
        -- ["minimap"] = true,
        -- ["Minimap"] = true,
        ["Toggle the minimap button."] = "Afficher ou masquer le bouton sur la minimap.",
        ["All running modules have been reset."] = "Tous les modules actifs ont \195\169t\195\169 red\195\169marr\195\169s.",
        ["All running modules have been disabled."] = "Tous les modules ont \195\169t\195\169 d\195\169sactiv\195\169s.",
        ["%s reset."] = "%s red\195\169marr\195\169.",
        ["%s disabled."] = "%s d\195\169sactiv\195\169.",
        ["%s icon is now %s."] = "L'ic\195\180ne de %s est d\195\169sormais %s.",
        ["Show it again with /bw plugin minimap."] = "Vous pouvez la r\195\169afficher avec /bw plugin minimap.",
  } end)
  
L:RegisterTranslations("koKR", function() return {
        ["|cff00ff00Module running|r"] = "|cff00ff00모듈 실행중|r",
        ["|cffeda55fClick|r to reset all running modules. |cffeda55fAlt+Click|r to disable them. |cffeda55fCtrl+Alt+Click|r to disable Big Wigs completely."] = "|cffeda55f클릭|r : 모두 초기화 |cffeda55f알트+클릭|r 비활성화 |cffeda55f컨트롤+알트+클릭|r : BigWigs 비활성화.",
        ["|cffeda55fClick|r to enable."] = "|cffeda55f클릭|r : 모듈 활성화.",
        ["Big Wigs is currently disabled."] = "BigWigs가 비활성화 되어 있습니다.",
        ["Active boss modules"] = "보스 모듈 활성화",
        ["hidden"] = "숨김",
        ["shown"] = "표시",
        ["Minimap"] = "미니맵",
        ["Toggle the minimap button."] = "미니맵 버튼 토글",
        ["All running modules have been reset."] = "모든 실행중인 모듈을 초기화합니다.",
        ["All running modules have been disabled."] = "모든 실행중인 모듈을 비활성화 합니다.",
        ["%s reset."] = "%s 초기화되었습니다.",
        ["%s disabled."] = "%s 비활성화 되었습니다.",
        ["%s icon is now %s."] = "%s 아이콘은 현재 %s 입니다.",
        ["Show it again with /bw plugin minimap."] = "/bw plugin minimap 명령으로 다시 나타납니다.",
} end)

L:RegisterTranslations("zhCN", function() return {
        ["|cff00ff00Module running|r"] = "|cff00ff00模块运行中|r",
        ["|cffeda55fClick|r to reset all running modules. |cffeda55fAlt+Click|r to disable them. |cffeda55fCtrl+Alt+Click|r to disable Big Wigs completely."] = "|cffeda55f点击|r图标重置所有运行中的模块。|cffeda55fAlt+点击|r图标关闭所有运行中的模块。|cffeda55fCtrl+Alt+点击|r图标关闭BigWigs。",
        ["|cffeda55fClick|r to enable."] = "|cffeda55f点击|r图标开启BigWigs。",
        ["Big Wigs is currently disabled."] = "Big Wigs目前关闭。",
        ["Active boss modules"] = "激活首领模块",
        ["hidden"] = "隐藏",
        ["shown"] = "显示",
        ["Minimap"] = "小地图",
        ["Minimap"] = "小地图",
        ["Toggle the minimap button."] = "切换是否显示小地图图标。",
        ["All running modules have been reset."] = "所有运行中的模块都已重置。",
        ["All running modules have been disabled."] = "所有运行中的模块都已关闭。",
        ["%s reset."] = "%s重置。",
        ["%s disabled."] = "%s关闭。",
} end)


L:RegisterTranslations("zhTW", function() return {
        ["|cff00ff00Module running|r"] = "|cff00ff00模組運作中|r",
        ["|cffeda55fClick|r to reset all running modules. |cffeda55fAlt+Click|r to disable them. |cffeda55fCtrl+Alt+Click|r to disable Big Wigs completely."] = "|cffeda55f點擊|r圖示重置所有運作中的模組。|cffeda55fAlt+點擊|r圖示關閉所有運作中的模組。|cffeda55fCtrl+Alt+點擊|r圖示關閉BigWigs。",
        ["|cffeda55fClick|r to enable."] = "|cffeda55f點擊|r圖示開啟BigWigs。",
        ["Big Wigs is currently disabled."] = "Big Wigs目前關閉。",
        ["Active boss modules"] = "啟動首領模組",
        ["hidden"] = "隱藏",
        ["shown"] = "顯示",
        ["Minimap"] = "小地圖",
        ["Minimap"] = "小地圖",
        ["Toggle the minimap button."] = "切換是否顯示小地圖圖標。",
        ["All running modules have been reset."] = "所有運行中的模組都已重置。",
        ["All running modules have been disabled."] = "所有運行中的模組都已關閉。",
        ["%s reset."] = "%s重置。",
        ["%s disabled."] = "%s關閉。",
} end)

L:RegisterTranslations("deDE", function() return {
        ["|cff00ff00Module running|r"] = "|cff00ff00Modul aktiviert|r",
--      ["|cffeda55fClick|r to reset all running modules. |cffeda55fShift+Click|r to disable them. |cffeda55fCtrl+Shift+Click|r to disable Big Wigs completely."] = "|cffeda55fKlicken|r, um alle laufenden Module zur\195\188ckzusetzen. |cffeda55fShift+Klick|r um alle laufenden Module zu beenden. |cffeda55fStrg+Shift+Klick|r um BigWigs komplett zu beenden.",
        ["|cffeda55fClick|r to enable."] = "|cffeda55fKlicken|r um zu aktivieren.",
        ["Big Wigs is currently disabled."] = "Big Wigs ist gegenw\195\164rtig deaktiviert.",
        ["Active boss modules"] = "Aktive Boss Module",
        ["hidden"] = "versteckt",
        ["shown"] = "angezeigt",
        -- ["minimap"] = true,
        ["Minimap"] = "Minimap",
        ["Toggle the minimap button."] = "Minimap Button anzeigen.",
        ["All running modules have been reset."] = "Alle laufenden Module wurden zur\195\188ckgesetzt.",
        ["All running modules have been disabled."] = "Alle laufenden Module wurden beendet.",
        ["%s reset."] = "%s zur\195\188ckgesetzt.",
        ["%s disabled."] = "%s beendet.",
} end)

----------------------------------
--      Module Declaration      --
----------------------------------

local deuce = BigWigs:NewModule("Options Menu")
deuce.hasFuBar = IsAddOnLoaded("FuBar") and FuBar
deuce.consoleCmd = not deuce.hasFuBar and L["minimap"]
deuce.consoleOptions = not deuce.hasFuBar and {
        type = "toggle",
        name = L["Minimap"],
        desc = L["Toggle the minimap button."],
        get = function() return BigWigsOptions.minimapFrame and BigWigsOptions.minimapFrame:IsVisible() or false end,
        set = function(v)
                if v then
                        BigWigsOptions:Show()
                else
                        BigWigsOptions:Hide()
                        BigWigs:Print(L["Show it again with /bw plugin minimap."])
                end
        end,
        map = {[false] = L["hidden"], [true] = L["shown"]},
        message = L["%s icon is now %s."],
        hidden = function() return deuce.hasFuBar end,
}

----------------------------
--      FuBar Plugin      --
----------------------------

BigWigsOptions = AceLibrary("AceAddon-2.0"):new("AceEvent-2.0", "AceConsole-2.0", "AceDB-2.0", "FuBarPlugin-2.0")
BigWigsOptions.name = "FuBar - BigWigs"
BigWigsOptions:RegisterDB("BigWigsFubarDB")

BigWigsOptions.hasNoColor = true
BigWigsOptions.hasIcon = "Interface\\AddOns\\BigWigs\\Icons\\core-enabled"
BigWigsOptions.defaultMinimapPosition = 180
BigWigsOptions.clickableTooltip = true
BigWigsOptions.hideWithoutStandby = true
--BigWigsOptions.hasNoText = true

-- XXX total hack
BigWigsOptions.OnMenuRequest = deuce.core.cmdtable
local args = AceLibrary("FuBarPlugin-2.0"):GetAceOptionsDataTable(BigWigsOptions)
for k,v in pairs(args) do
        if BigWigsOptions.OnMenuRequest.args[k] == nil then
                BigWigsOptions.OnMenuRequest.args[k] = v
        end
end
-- XXX end hack

-----------------------------
--      Icon Handling      --
-----------------------------

function BigWigsOptions:OnEnable()
        self:RegisterEvent("BigWigs_CoreEnabled", "CoreState")
        self:RegisterEvent("BigWigs_CoreDisabled", "CoreState")

        self:CoreState()
end

function BigWigsOptions:CoreState()
        if BigWigs:IsActive() then
                self:SetIcon("Interface\\AddOns\\BigWigs\\Icons\\core-enabled")
        else
                self:SetIcon("Interface\\AddOns\\BigWigs\\Icons\\core-disabled")
        end

        self:UpdateTooltip()
end

-----------------------------
--      FuBar Methods      --
-----------------------------

function BigWigsOptions:ModuleAction(module)
        if IsAltKeyDown() then
                deuce.core:ToggleModuleActive(module, false)
                self:Print(string.format(L["%s disabled."], module:ToString()))
        else
                deuce.core:BigWigs_RebootModule(module)
                self:Print(string.format(L["%s reset."], module:ToString()))
        end
        self:UpdateTooltip()
end

function BigWigsOptions:OnTooltipUpdate()
        if BigWigs:IsActive() then
                local cat = tablet:AddCategory("text", L["Active boss modules"])
                for name, module in deuce.core:IterateModules() do
                        if module:IsBossModule() and deuce.core:IsModuleActive(module) then
                                cat:AddLine("text", name, "func", function(mod) BigWigsOptions:ModuleAction(mod) end, "arg1", module)
                        end
                end
                tablet:SetHint(L["|cffeda55fClick|r to reset all running modules. |cffeda55fAlt+Click|r to disable them. |cffeda55fCtrl+Alt+Click|r to disable Big Wigs completely."])
        else
                -- use a text line for this, since the hint is not shown when we are
                -- detached.
                local cat = tablet:AddCategory("colums", 1)
                cat:AddLine("text", L["Big Wigs is currently disabled."], "func", function() BigWigsOptions:OnClick() end)
                tablet:SetHint(L["|cffeda55fClick|r to enable."])
        end
end

function BigWigsOptions:OnClick()
        if BigWigs:IsActive() then
                if IsAltKeyDown() then
                        if IsControlKeyDown() then
                                BigWigs:ToggleActive(false)
                                self:UpdateTooltip()
                        else
                                for name, module in deuce.core:IterateModules() do
                                        if module:IsBossModule() and deuce.core:IsModuleActive(module) then
                                                deuce.core:ToggleModuleActive(module, false)
                                        end
                                end
                                self:Print(L["All running modules have been disabled."])
                        end
                else
                        for name, module in deuce.core:IterateModules() do
                                if module:IsBossModule() and deuce.core:IsModuleActive(module) then
                                        deuce.core:BigWigs_RebootModule(module)
                                end
                        end
                        self:Print(L["All running modules have been reset."])
                end
        else
                BigWigs:ToggleActive(true)
        end

        self:UpdateTooltip()
end