Mercurial > wow > reaction
comparison 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 |
comparison
equal
deleted
inserted
replaced
181:c8777ae7d460 | 182:55c2fc0c8d55 |
---|---|
1 local addonName, addonTable = ... | |
2 local ReAction = addonTable.ReAction | |
3 local L = ReAction.L | |
4 local InCombatLockdown = InCombatLockdown | |
5 | |
6 | |
7 local configID = "ReAction" | |
8 local configProfileID = "ReAction_Profile" | |
9 | |
10 local function SlashHandler(option) | |
11 if option == "config" or option == "options" then | |
12 ReAction:ShowOptions() | |
13 elseif option == "edit" then | |
14 ReAction:ShowEditor() | |
15 elseif option == "unlock" then | |
16 ReAction:SetConfigMode(true) | |
17 elseif option == "lock" then | |
18 ReAction:SetConfigMode(false) | |
19 elseif option == "kb" then | |
20 ReAction:SetKeybindMode(true) | |
21 else | |
22 print(("%3.1f"):format(version)) | |
23 print("/rxn config") | |
24 print("/rxn edit") | |
25 print("/rxn lock") | |
26 print("/rxn unlock") | |
27 print("/rxn kb") | |
28 end | |
29 end | |
30 | |
31 | |
32 function ReAction:GetOptions() | |
33 if not self.options then | |
34 self.options = { | |
35 type = "group", | |
36 name = "ReAction", | |
37 args = { | |
38 _desc = { | |
39 type = "description", | |
40 name = L["Customizable replacement for Blizzard's Action Bars"], | |
41 order = 1, | |
42 }, | |
43 unlock = { | |
44 type = "toggle", | |
45 name = L["Unlock Bars"], | |
46 desc = L["Unlock bars for dragging and resizing with the mouse"], | |
47 handler = self, | |
48 get = "GetConfigMode", | |
49 set = function(info, value) self:SetConfigMode(value) end, | |
50 width = "full", | |
51 disabled = InCombatLockdown, | |
52 order = 2, | |
53 }, | |
54 hide = { | |
55 type = "toggle", | |
56 name = L["Hide Blizzard Action Bars"], | |
57 desc = L["Hide the default main bar and extra action bars"], | |
58 handler = self:GetModule("HideBlizzard"), | |
59 get = "IsHidden", | |
60 set = "SetHidden", | |
61 disabled = "OptionDisabled", | |
62 width = "full", | |
63 order = 3, | |
64 }, | |
65 hideVehicle = { | |
66 type = "toggle", | |
67 name = L["Hide Blizzard Vehicle Bar"], | |
68 desc = L["Hide the default vechicle action bar"], | |
69 handler = self:GetModule("HideBlizzard"), | |
70 get = "IsHidden", | |
71 set = "SetHidden", | |
72 disabled = "OptionDisabled", | |
73 width = "full", | |
74 order = 4, | |
75 }, | |
76 edit = { | |
77 type = "execute", | |
78 name = L["Edit Bars..."], | |
79 desc = L["Show the ReAction Bar Editor dialogue"], | |
80 handler = self:GetModule("ConfigUI"), | |
81 func = "OptionShowEditor", | |
82 order = 5, | |
83 }, | |
84 _closeThis = { | |
85 type = "toggle", | |
86 name = L["Close on Launch"], | |
87 desc = L["Close the Interface Options window when launching the ReAction Bar Editor"], | |
88 handler = self:GetModule("ConfigUI"), | |
89 get = "OptionGetCloseThis", | |
90 set = "OptionSetCloseThis", | |
91 order = 6, | |
92 cmdHidden = true, | |
93 dropdownHidden = true, | |
94 }, | |
95 keybind = { | |
96 type = "execute", | |
97 name = L["Key Bindings"], | |
98 desc = L["Show the keybinding dialogue"], | |
99 func = function() self:SetKeybindMode(true) end, | |
100 order = 7, | |
101 }, | |
102 skipProfileWarning = { | |
103 type = "toggle", | |
104 name = L["Skip profile keybind warning"], | |
105 desc = L["Don't show a warning about updating keybinds when switching profiles"], | |
106 get = function() return ReAction.db.global.skipKeybindWarning end, | |
107 set = function(info, value) ReAction.db.global.skipKeybindWarning = value end, | |
108 width = "double", | |
109 order = 8, | |
110 }, | |
111 } | |
112 } | |
113 end | |
114 return self.options | |
115 end | |
116 | |
117 | |
118 function ReAction:GetProfileOptions() | |
119 if not self.profileOptions then | |
120 self.profileOptions = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db) | |
121 end | |
122 return self.profileOptions | |
123 end | |
124 | |
125 | |
126 function ReAction:InitializeOptions() | |
127 local AceConfigReg = LibStub("AceConfigRegistry-3.0") | |
128 local AceConfigDialog = LibStub("AceConfigDialog-3.0") | |
129 | |
130 AceConfigReg:RegisterOptionsTable(configID,ReAction:GetOptions()) | |
131 AceConfigReg:RegisterOptionsTable(configProfileID,ReAction:GetProfileOptions()) | |
132 | |
133 self.configFrame = AceConfigDialog:AddToBlizOptions(configID, L["ReAction"]) | |
134 self.configProfileFrame = AceConfigDialog:AddToBlizOptions(configProfileID, L["Profiles"], configID) | |
135 | |
136 self.configFrame.obj:SetCallback("default", | |
137 function() | |
138 self.db:ResetProfile() | |
139 AceConfigReg:NotifyChange(configID) | |
140 end ) | |
141 | |
142 self.db.RegisterCallback(self,"OnProfileChanged") | |
143 self.db.RegisterCallback(self,"OnProfileReset", "OnProfileChanged") | |
144 self.db.RegisterCallback(self,"OnProfileCopied","OnProfileChanged") | |
145 | |
146 SlashCmdList["REACTION"] = SlashHandler | |
147 _G["SLASH_REACTION1"] = "/reaction" | |
148 _G["SLASH_REACTION2"] = "/rxn" | |
149 | |
150 StaticPopupDialogs["REACTION_KB_WARN"] = { | |
151 text = L["ReAction profile changed: check your keybinds, they may need to be updated."], | |
152 button1 = L["OK"], | |
153 hideOnEscape = true, | |
154 enterClicksFirstButton = true, | |
155 timeout = 0, | |
156 showAlert = true, | |
157 whileDead = true, | |
158 } | |
159 end | |
160 | |
161 | |
162 function ReAction:ShowOptions() | |
163 InterfaceOptionsFrame_OpenToCategory(configID) | |
164 end | |
165 | |
166 | |
167 function ReAction:PopKeybindWarning() | |
168 if not self.db.global.skipKeybindWarning then | |
169 StaticPopup_Show("REACTION_KB_WARN") | |
170 end | |
171 end | |
172 | |
173 function ReAction:OnProfileChanged() | |
174 self:Disable() | |
175 self:Enable() | |
176 self:PopKeybindWarning() | |
177 end | |
178 | |
179 | |
180 -- export to LDB | |
181 LibStub:GetLibrary("LibDataBroker-1.1"):NewDataObject( "ReAction", | |
182 { | |
183 type = "launcher", | |
184 icon = "Interface\\Icons\\INV_Qiraj_JewelEncased", | |
185 | |
186 OnClick = function( frame, button ) | |
187 if not InCombatLockdown() then | |
188 if IsAltKeyDown() then | |
189 ReAction:SetKeybindMode( not ReAction:GetKeybindMode() ) | |
190 elseif IsShiftKeyDown() then | |
191 ReAction:SetConfigMode( not ReAction:GetConfigMode() ) | |
192 elseif button == "RightButton" then | |
193 ReAction:ShowEditor() | |
194 else | |
195 ReAction:ShowOptions() | |
196 end | |
197 else | |
198 ReAction:UserError(L["ReAction: can't configure in combat"]) | |
199 end | |
200 end, | |
201 | |
202 -- this isn't included in the 'launcher' type LDB spec but it seems all launcher displays use it | |
203 OnTooltipShow = function( tooltip ) | |
204 tooltip:AddLine(format("|cffffffff%s|r %s",L["Click"],L["for options"])) | |
205 tooltip:AddLine(format("|cffffd200%s|r %s",L["Right-click"],L["for bar editor dialog"])) | |
206 tooltip:AddLine(format("|cff00ff00%s|r %s",L["Shift-click"],L["to unlock bars"])) | |
207 tooltip:AddLine(format("|cff00cccc%s|r %s",L["Alt-click"],L["for keybind mode"])) | |
208 end, | |
209 | |
210 } | |
211 ) |