annotate Options.lua @ 281:2098dba4baf5

Merge
author Flick
date Wed, 11 May 2011 16:20:48 -0700
parents 36a29870bf34
children
rev   line source
Flick@276 1 local _, ns = ...
Flick@276 2 local ReAction = ns.ReAction
flickerstreak@182 3 local L = ReAction.L
flickerstreak@182 4 local InCombatLockdown = InCombatLockdown
flickerstreak@182 5
flickerstreak@182 6
flickerstreak@182 7 local configID = "ReAction"
flickerstreak@184 8 local displayName = L["ReAction"]
flickerstreak@182 9
flickerstreak@182 10
flickerstreak@182 11 function ReAction:InitializeOptions()
flickerstreak@184 12 local AceConfigReg = LibStub("AceConfigRegistry-3.0")
flickerstreak@182 13 local AceConfigDialog = LibStub("AceConfigDialog-3.0")
flickerstreak@182 14
flickerstreak@184 15 local options = {
flickerstreak@184 16 type = "group",
flickerstreak@184 17 name = displayName,
flickerstreak@184 18 handler = self,
flickerstreak@184 19 args = {
flickerstreak@184 20 general = {
flickerstreak@184 21 type = "group",
flickerstreak@184 22 name = displayName,
flickerstreak@184 23 args = {
flickerstreak@184 24 _desc = {
flickerstreak@184 25 type = "description",
flickerstreak@184 26 name = L["Customizable replacement for Blizzard's Action Bars"],
flickerstreak@184 27 order = 1,
flickerstreak@184 28 },
flickerstreak@184 29 unlock = {
flickerstreak@184 30 type = "toggle",
flickerstreak@184 31 name = L["Unlock Bars"],
flickerstreak@184 32 desc = L["Unlock bars for dragging and resizing with the mouse"],
flickerstreak@184 33 get = "GetConfigMode",
flickerstreak@184 34 set = "OptionSetConfigMode",
flickerstreak@184 35 width = "full",
flickerstreak@184 36 disabled = InCombatLockdown,
flickerstreak@184 37 order = 2,
flickerstreak@184 38 },
flickerstreak@184 39 hide = {
flickerstreak@184 40 type = "toggle",
flickerstreak@184 41 name = L["Hide Blizzard Action Bars"],
flickerstreak@184 42 desc = L["Hide the default main bar and extra action bars"],
flickerstreak@211 43 get = "OptionGetHideBlizzardBars",
flickerstreak@211 44 set = "OptionSetHideBlizzardBars",
flickerstreak@211 45 disabled = InCombatLockdown,
flickerstreak@184 46 width = "full",
flickerstreak@184 47 order = 3,
flickerstreak@184 48 },
flickerstreak@184 49 hideVehicle = {
flickerstreak@184 50 type = "toggle",
flickerstreak@184 51 name = L["Hide Blizzard Vehicle Bar"],
flickerstreak@184 52 desc = L["Hide the default vechicle action bar"],
flickerstreak@211 53 get = "OptionGetHideBlizzardVehicleBar",
flickerstreak@211 54 set = "OptionSetHideBlizzardVehicleBar",
flickerstreak@211 55 disabled = function() return InCombatLockdown() or ReAction:OptionGetHideBlizzardBars() == false end,
flickerstreak@184 56 width = "full",
flickerstreak@184 57 order = 4,
flickerstreak@184 58 },
flickerstreak@184 59 edit = {
flickerstreak@184 60 type = "execute",
flickerstreak@184 61 name = L["Edit Bars..."],
flickerstreak@184 62 desc = L["Show the ReAction Bar Editor dialogue"],
flickerstreak@184 63 func = "OptionShowEditor",
flickerstreak@184 64 order = 5,
flickerstreak@184 65 },
flickerstreak@184 66 keybind = {
flickerstreak@184 67 type = "execute",
flickerstreak@184 68 name = L["Key Bindings"],
flickerstreak@184 69 desc = L["Show the keybinding dialogue"],
flickerstreak@184 70 func = "OptionLaunchKeybindMode",
flickerstreak@194 71 order = 6,
flickerstreak@184 72 },
flickerstreak@184 73 skipProfileWarning = {
flickerstreak@184 74 type = "toggle",
flickerstreak@184 75 name = L["Skip profile keybind warning"],
flickerstreak@184 76 desc = L["Don't show a warning about updating keybinds when switching profiles"],
flickerstreak@184 77 get = "OptionGetSkipKeybindWarning",
flickerstreak@184 78 set = "OptionSetSkipKeybindWarning",
flickerstreak@184 79 width = "double",
flickerstreak@194 80 order = 7,
flickerstreak@184 81 },
flickerstreak@184 82 }
flickerstreak@184 83 },
flickerstreak@184 84 profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db),
flickerstreak@184 85 }
flickerstreak@184 86 }
flickerstreak@182 87
flickerstreak@184 88 AceConfigReg:RegisterOptionsTable(configID,options)
flickerstreak@182 89
flickerstreak@184 90 local f = AceConfigDialog:AddToBlizOptions(configID, displayName, nil, "general")
flickerstreak@184 91
flickerstreak@184 92 if f and f.obj then
flickerstreak@184 93 f.obj:SetCallback("default",
flickerstreak@184 94 function()
flickerstreak@184 95 self.db:ResetProfile()
flickerstreak@184 96 AceConfigReg:NotifyChange(configID)
flickerstreak@184 97 end )
flickerstreak@184 98 end
flickerstreak@184 99
flickerstreak@184 100 AceConfigDialog:AddToBlizOptions(configID, options.args.profiles.name, configID, "profiles")
flickerstreak@182 101
flickerstreak@184 102 SlashCmdList["REACTION"] = function(option)
flickerstreak@184 103 option = string.match(option or "", "^%s*(%S+)")
flickerstreak@184 104 if option == "config" or option == "options" then
flickerstreak@184 105 ReAction:ShowOptions()
flickerstreak@184 106 elseif option == "edit" then
flickerstreak@184 107 ReAction:ShowEditor()
flickerstreak@184 108 elseif option == "unlock" then
flickerstreak@184 109 ReAction:SetConfigMode(true)
flickerstreak@184 110 elseif option == "lock" then
flickerstreak@184 111 ReAction:SetConfigMode(false)
flickerstreak@184 112 elseif option == "kb" then
flickerstreak@184 113 ReAction:SetKeybindMode(true)
flickerstreak@184 114 else
flickerstreak@185 115 print(("%s %s %s"):format(L["ReAction"], ReAction.version, L["Usage:"]))
flickerstreak@184 116 print("/rxn config")
flickerstreak@184 117 print("/rxn edit")
flickerstreak@184 118 print("/rxn lock")
flickerstreak@184 119 print("/rxn unlock")
flickerstreak@184 120 print("/rxn kb")
flickerstreak@184 121 end
flickerstreak@184 122 end
flickerstreak@184 123
flickerstreak@182 124 _G["SLASH_REACTION1"] = "/reaction"
flickerstreak@182 125 _G["SLASH_REACTION2"] = "/rxn"
flickerstreak@182 126
flickerstreak@182 127 StaticPopupDialogs["REACTION_KB_WARN"] = {
flickerstreak@182 128 text = L["ReAction profile changed: check your keybinds, they may need to be updated."],
flickerstreak@182 129 button1 = L["OK"],
flickerstreak@182 130 hideOnEscape = true,
flickerstreak@182 131 enterClicksFirstButton = true,
flickerstreak@182 132 timeout = 0,
flickerstreak@182 133 showAlert = true,
flickerstreak@182 134 whileDead = true,
flickerstreak@182 135 }
flickerstreak@211 136
flickerstreak@211 137 -- reroute blizzard action bar config to ReAction config window
flickerstreak@211 138 InterfaceOptionsActionBarsPanel:HookScript("OnShow",
flickerstreak@211 139 function()
flickerstreak@211 140 if ReAction:OptionGetHideBlizzardBars() then
flickerstreak@211 141 ReAction:ShowOptions()
flickerstreak@211 142 end
flickerstreak@211 143 end )
flickerstreak@182 144 end
flickerstreak@182 145
flickerstreak@182 146
flickerstreak@182 147 function ReAction:ShowOptions()
flickerstreak@182 148 InterfaceOptionsFrame_OpenToCategory(configID)
flickerstreak@182 149 end
flickerstreak@182 150
flickerstreak@182 151
flickerstreak@184 152 function ReAction:OptionSetConfigMode(info, value)
flickerstreak@184 153 self:SetConfigMode(value)
flickerstreak@182 154 end
flickerstreak@182 155
flickerstreak@182 156
flickerstreak@184 157 function ReAction:OptionShowEditor()
flickerstreak@184 158 self:ShowEditor()
flickerstreak@194 159 InterfaceOptionsFrame:Hide()
flickerstreak@184 160 end
flickerstreak@184 161
flickerstreak@184 162
flickerstreak@184 163 function ReAction:OptionLaunchKeybindMode()
flickerstreak@184 164 self:SetKeybindMode(true)
flickerstreak@184 165 end
flickerstreak@184 166
flickerstreak@184 167
flickerstreak@184 168 function ReAction:OptionGetSkipKeybindWarning()
flickerstreak@184 169 return self.db.global.skipKeybindWarning
flickerstreak@184 170 end
flickerstreak@184 171
flickerstreak@184 172
flickerstreak@184 173 function ReAction:OptionSetSkipKeybindWarning(info, value)
flickerstreak@184 174 self.db.global.skipKeybindWarning = value
flickerstreak@184 175 end
flickerstreak@184 176
flickerstreak@184 177
flickerstreak@211 178 function ReAction:OptionSetHideBlizzardBars( info, hide )
flickerstreak@211 179 self.db.profile.options.hideBlizzardBars = hide
flickerstreak@211 180 self:ManageBlizzardBars()
flickerstreak@211 181 end
flickerstreak@211 182
flickerstreak@211 183 function ReAction:OptionGetHideBlizzardBars()
flickerstreak@211 184 return self.db.profile.options.hideBlizzardBars
flickerstreak@211 185 end
flickerstreak@211 186
flickerstreak@211 187 function ReAction:OptionSetHideBlizzardVehicleBar( info, hide )
flickerstreak@211 188 self.db.profile.options.hideBlizzardVehicleBar = hide
flickerstreak@211 189 self:ManageBlizzardBars()
flickerstreak@211 190 end
flickerstreak@211 191
flickerstreak@211 192 function ReAction:OptionGetHideBlizzardVehicleBar()
flickerstreak@211 193 return self.db.profile.options.hideBlizzardVehicleBar
flickerstreak@211 194 end
flickerstreak@211 195
flickerstreak@211 196
flickerstreak@182 197 -- export to LDB
flickerstreak@184 198 local LDB = LibStub:GetLibrary("LibDataBroker-1.1")
flickerstreak@184 199 if LDB then
flickerstreak@184 200 LDB:NewDataObject( "ReAction",
flickerstreak@182 201 {
flickerstreak@182 202 type = "launcher",
flickerstreak@182 203 icon = "Interface\\Icons\\INV_Qiraj_JewelEncased",
flickerstreak@182 204
flickerstreak@182 205 OnClick = function( frame, button )
flickerstreak@182 206 if not InCombatLockdown() then
flickerstreak@182 207 if IsAltKeyDown() then
flickerstreak@182 208 ReAction:SetKeybindMode( not ReAction:GetKeybindMode() )
flickerstreak@182 209 elseif IsShiftKeyDown() then
flickerstreak@182 210 ReAction:SetConfigMode( not ReAction:GetConfigMode() )
flickerstreak@182 211 elseif button == "RightButton" then
flickerstreak@182 212 ReAction:ShowEditor()
flickerstreak@182 213 else
flickerstreak@182 214 ReAction:ShowOptions()
flickerstreak@182 215 end
flickerstreak@182 216 else
flickerstreak@182 217 ReAction:UserError(L["ReAction: can't configure in combat"])
flickerstreak@182 218 end
flickerstreak@182 219 end,
flickerstreak@182 220
flickerstreak@182 221 -- this isn't included in the 'launcher' type LDB spec but it seems all launcher displays use it
flickerstreak@182 222 OnTooltipShow = function( tooltip )
flickerstreak@182 223 tooltip:AddLine(format("|cffffffff%s|r %s",L["Click"],L["for options"]))
flickerstreak@182 224 tooltip:AddLine(format("|cffffd200%s|r %s",L["Right-click"],L["for bar editor dialog"]))
flickerstreak@182 225 tooltip:AddLine(format("|cff00ff00%s|r %s",L["Shift-click"],L["to unlock bars"]))
flickerstreak@182 226 tooltip:AddLine(format("|cff00cccc%s|r %s",L["Alt-click"],L["for keybind mode"]))
flickerstreak@182 227 end,
flickerstreak@182 228
flickerstreak@184 229 })
flickerstreak@184 230 end