Mercurial > wow > reaction
diff Options.lua @ 182:55c2fc0c8d55
Collect options in one file
clean up ReAction.lua a bit
remove AceConsole-3.0
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Thu, 21 Oct 2010 22:07:11 +0000 |
parents | |
children | 1ee86bbb05a0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Options.lua Thu Oct 21 22:07:11 2010 +0000 @@ -0,0 +1,211 @@ +local addonName, addonTable = ... +local ReAction = addonTable.ReAction +local L = ReAction.L +local InCombatLockdown = InCombatLockdown + + +local configID = "ReAction" +local configProfileID = "ReAction_Profile" + +local function SlashHandler(option) + if option == "config" or option == "options" then + ReAction:ShowOptions() + elseif option == "edit" then + ReAction:ShowEditor() + elseif option == "unlock" then + ReAction:SetConfigMode(true) + elseif option == "lock" then + ReAction:SetConfigMode(false) + elseif option == "kb" then + ReAction:SetKeybindMode(true) + else + print(("%3.1f"):format(version)) + print("/rxn config") + print("/rxn edit") + print("/rxn lock") + print("/rxn unlock") + print("/rxn kb") + end +end + + +function ReAction:GetOptions() + if not self.options then + self.options = { + type = "group", + name = "ReAction", + args = { + _desc = { + type = "description", + name = L["Customizable replacement for Blizzard's Action Bars"], + order = 1, + }, + unlock = { + type = "toggle", + name = L["Unlock Bars"], + desc = L["Unlock bars for dragging and resizing with the mouse"], + handler = self, + get = "GetConfigMode", + set = function(info, value) self:SetConfigMode(value) end, + width = "full", + disabled = InCombatLockdown, + order = 2, + }, + hide = { + type = "toggle", + name = L["Hide Blizzard Action Bars"], + desc = L["Hide the default main bar and extra action bars"], + handler = self:GetModule("HideBlizzard"), + get = "IsHidden", + set = "SetHidden", + disabled = "OptionDisabled", + width = "full", + order = 3, + }, + hideVehicle = { + type = "toggle", + name = L["Hide Blizzard Vehicle Bar"], + desc = L["Hide the default vechicle action bar"], + handler = self:GetModule("HideBlizzard"), + get = "IsHidden", + set = "SetHidden", + disabled = "OptionDisabled", + width = "full", + order = 4, + }, + edit = { + type = "execute", + name = L["Edit Bars..."], + desc = L["Show the ReAction Bar Editor dialogue"], + handler = self:GetModule("ConfigUI"), + func = "OptionShowEditor", + order = 5, + }, + _closeThis = { + type = "toggle", + name = L["Close on Launch"], + desc = L["Close the Interface Options window when launching the ReAction Bar Editor"], + handler = self:GetModule("ConfigUI"), + get = "OptionGetCloseThis", + set = "OptionSetCloseThis", + order = 6, + cmdHidden = true, + dropdownHidden = true, + }, + keybind = { + type = "execute", + name = L["Key Bindings"], + desc = L["Show the keybinding dialogue"], + func = function() self:SetKeybindMode(true) end, + order = 7, + }, + skipProfileWarning = { + type = "toggle", + name = L["Skip profile keybind warning"], + desc = L["Don't show a warning about updating keybinds when switching profiles"], + get = function() return ReAction.db.global.skipKeybindWarning end, + set = function(info, value) ReAction.db.global.skipKeybindWarning = value end, + width = "double", + order = 8, + }, + } + } + end + return self.options +end + + +function ReAction:GetProfileOptions() + if not self.profileOptions then + self.profileOptions = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db) + end + return self.profileOptions +end + + +function ReAction:InitializeOptions() + local AceConfigReg = LibStub("AceConfigRegistry-3.0") + local AceConfigDialog = LibStub("AceConfigDialog-3.0") + + AceConfigReg:RegisterOptionsTable(configID,ReAction:GetOptions()) + AceConfigReg:RegisterOptionsTable(configProfileID,ReAction:GetProfileOptions()) + + self.configFrame = AceConfigDialog:AddToBlizOptions(configID, L["ReAction"]) + self.configProfileFrame = AceConfigDialog:AddToBlizOptions(configProfileID, L["Profiles"], configID) + + self.configFrame.obj:SetCallback("default", + function() + self.db:ResetProfile() + AceConfigReg:NotifyChange(configID) + end ) + + self.db.RegisterCallback(self,"OnProfileChanged") + self.db.RegisterCallback(self,"OnProfileReset", "OnProfileChanged") + self.db.RegisterCallback(self,"OnProfileCopied","OnProfileChanged") + + SlashCmdList["REACTION"] = SlashHandler + _G["SLASH_REACTION1"] = "/reaction" + _G["SLASH_REACTION2"] = "/rxn" + + StaticPopupDialogs["REACTION_KB_WARN"] = { + text = L["ReAction profile changed: check your keybinds, they may need to be updated."], + button1 = L["OK"], + hideOnEscape = true, + enterClicksFirstButton = true, + timeout = 0, + showAlert = true, + whileDead = true, + } +end + + +function ReAction:ShowOptions() + InterfaceOptionsFrame_OpenToCategory(configID) +end + + +function ReAction:PopKeybindWarning() + if not self.db.global.skipKeybindWarning then + StaticPopup_Show("REACTION_KB_WARN") + end +end + +function ReAction:OnProfileChanged() + self:Disable() + self:Enable() + self:PopKeybindWarning() +end + + +-- export to LDB +LibStub:GetLibrary("LibDataBroker-1.1"):NewDataObject( "ReAction", + { + type = "launcher", + icon = "Interface\\Icons\\INV_Qiraj_JewelEncased", + + OnClick = function( frame, button ) + if not InCombatLockdown() then + if IsAltKeyDown() then + ReAction:SetKeybindMode( not ReAction:GetKeybindMode() ) + elseif IsShiftKeyDown() then + ReAction:SetConfigMode( not ReAction:GetConfigMode() ) + elseif button == "RightButton" then + ReAction:ShowEditor() + else + ReAction:ShowOptions() + end + else + ReAction:UserError(L["ReAction: can't configure in combat"]) + end + end, + + -- this isn't included in the 'launcher' type LDB spec but it seems all launcher displays use it + OnTooltipShow = function( tooltip ) + tooltip:AddLine(format("|cffffffff%s|r %s",L["Click"],L["for options"])) + tooltip:AddLine(format("|cffffd200%s|r %s",L["Right-click"],L["for bar editor dialog"])) + tooltip:AddLine(format("|cff00ff00%s|r %s",L["Shift-click"],L["to unlock bars"])) + tooltip:AddLine(format("|cff00cccc%s|r %s",L["Alt-click"],L["for keybind mode"])) + end, + + } +)