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
|