vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | |
2 | -- Class Setup |
||
3 | AceCommands = AceChatCmd:new(ACE_COMMANDS, ACE_CMD_OPTIONS) |
||
4 | |||
5 | |||
6 | --[[-------------------------------------------------------------------------- |
||
7 | Ace Information |
||
8 | -----------------------------------------------------------------------------]] |
||
9 | |||
10 | function AceCommands:DisplayInfo() |
||
11 | local mem = gcinfo() |
||
12 | |||
13 | self:report(ACE_INFO_HEADER, { |
||
14 | {text=ACE_INFO_PROFILE_LOADED, val=ace.db.profileName}, |
||
15 | {text=ACE_TEXT_MEM_USAGE, val=format("%.3f", mem/1024)}, |
||
16 | {text=ACE_TEXT_TOTAL_ADDONS, val=GetNumAddOns()}, |
||
17 | {text=ACE_TEXT_TOTAL_LOADED, val=ace.addons.numLoaded, indent=1}, |
||
18 | {text=ACE_TEXT_ACE_ADDONS_LOADED, val=ace.addons.numAceAddons, indent=1}, |
||
19 | {text=ACE_TEXT_ACE_REGISTERED, val=ace.addons.numAceApps, indent=2}, |
||
20 | {text=ACE_TEXT_OTHERS_LOADED, val=ace.addons.numLoaded-ace.addons.numAceAddons, indent=1}, |
||
21 | {text=ACE_TEXT_NOT_LOADED, val=GetNumAddOns()-ace.addons.numLoaded, indent=1} |
||
22 | }) |
||
23 | end |
||
24 | |||
25 | |||
26 | --[[-------------------------------------------------------------------------- |
||
27 | Enable/Disable Addons |
||
28 | -----------------------------------------------------------------------------]] |
||
29 | |||
30 | function AceCommands:EnableAddon(addon) |
||
31 | if( strlower(addon) == ACE_TEXT_ALL ) then |
||
32 | EnableAllAddOns() |
||
33 | self:msg(ACE_CMD_ADDON_ENABLED_ALL) |
||
34 | elseif( ace.addons.list[strlower(addon)] ) then |
||
35 | EnableAddOn(addon) |
||
36 | self:msg(ACE_CMD_ADDON_ENABLED, addon) |
||
37 | else |
||
38 | self:msg(ACE_CMD_ADDON_NOTFOUND, addon) |
||
39 | end |
||
40 | end |
||
41 | |||
42 | function AceCommands:DisableAddon(addon) |
||
43 | if( strlower(addon) == ACE_TEXT_ALL ) then |
||
44 | DisableAllAddOns() |
||
45 | EnableAddOn("ace") -- Ace should be disabled separately |
||
46 | self:msg(ACE_CMD_ADDON_DISABLED_ALL) |
||
47 | elseif( ace.addons.list[strlower(addon)] ) then |
||
48 | DisableAddOn(addon) |
||
49 | self:msg(ACE_CMD_ADDON_DISABLED, ace.addons.list[strlower(addon)].name) |
||
50 | else |
||
51 | self:msg(ACE_CMD_ADDON_NOTFOUND, addon) |
||
52 | end |
||
53 | end |
||
54 | |||
55 | |||
56 | --[[-------------------------------------------------------------------------- |
||
57 | Addon Lists |
||
58 | -----------------------------------------------------------------------------]] |
||
59 | |||
60 | function AceCommands:ListAddons(opt) |
||
61 | ace:print(format(ACE_CMD_RESULT, ACE_CMD_OPT_LIST_ADDONS, "")) |
||
62 | if( (opt or "") == "" ) then |
||
63 | for _, addon in ace.sort(ace.GetTableKeys(ace.addons.list)) do |
||
64 | self:DisplayAddon(ace.addons.list[addon], addon == "ace") |
||
65 | end |
||
66 | else |
||
67 | local _, addon = ace.TableFindKeyCaseless(ace.addons.list, opt) |
||
68 | if( addon ) then |
||
69 | self:DisplayAddon(addon, strlower(opt) == "ace", TRUE) |
||
70 | else |
||
71 | ace:print(format(ACE_CMD_ADDON_NOTFOUND, opt)) |
||
72 | end |
||
73 | end |
||
74 | end |
||
75 | |||
76 | function AceCommands:DisplayAddon(addon, isAce, showNotLoaded) |
||
77 | if( isAce ) then |
||
78 | self:DisplayAceAddon(addon, Ace) |
||
79 | elseif( addon.apps and addon.ace ) then |
||
80 | if( getn(addon.apps) > 1 ) then |
||
81 | ace:print(" - "..addon.title) |
||
82 | for _, app in addon.apps do |
||
83 | self:DisplayAceAddon(addon, app, " "..app.name) |
||
84 | end |
||
85 | else |
||
86 | self:DisplayAceAddon(addon, addon.apps[1]) |
||
87 | end |
||
88 | elseif( addon.loaded or showNotLoaded ) then |
||
89 | ace:print(" - ", addon.title) |
||
90 | end |
||
91 | end |
||
92 | |||
93 | function AceCommands:DisplayAceAddon(addon, app, prefix) |
||
94 | ace:print(prefix or " - "..addon.title, |
||
95 | ((app.cmd and app.cmd.commands) |
||
96 | and " "..format(ACE_ADDON_CHAT_COMMAND, app.cmd.commands[1]) |
||
97 | or "") or "", |
||
98 | (app.disabled and " "..ACE_ADDON_STANDBY) or "", |
||
99 | app.aceMismatch and " "..ACE_VERSION_MISMATCH |
||
100 | ) |
||
101 | end |
||
102 | |||
103 | function AceCommands:ListAddonsAce() |
||
104 | ace:print(format(ACE_CMD_RESULT, ACE_CMD_OPT_LIST_ADDONS, "")) |
||
105 | for _, addon in ace.sort(ace.GetTableKeys(ace.addons.list)) do |
||
106 | if( ace.addons.list[addon].ace or (addon == "ace") ) then |
||
107 | self:DisplayAddon(ace.addons.list[addon], addon == "ace") |
||
108 | end |
||
109 | end |
||
110 | end |
||
111 | |||
112 | function AceCommands:ListAddonsOther() |
||
113 | ace:print(format(ACE_CMD_RESULT, ACE_CMD_OPT_LIST_ADDONS, "")) |
||
114 | for _, addon in ace.sort(ace.GetTableKeys(ace.addons.list)) do |
||
115 | if( (not ace.addons.list[addon].ace) and (addon ~= "ace") ) then |
||
116 | self:DisplayAddon(ace.addons.list[addon]) |
||
117 | end |
||
118 | end |
||
119 | end |
||
120 | |||
121 | function AceCommands:ListAddonsLoadable() |
||
122 | ace:print(format(ACE_CMD_RESULT, ACE_CMD_OPT_LIST_ADDONS, "")) |
||
123 | for i = 1, GetNumAddOns() do |
||
124 | local name, _, _, _, loadable = GetAddOnInfo(i) |
||
125 | if( loadable and (not IsAddOnLoaded(i)) ) then |
||
126 | ace:print(" - ", name) |
||
127 | end |
||
128 | end |
||
129 | end |
||
130 | |||
131 | |||
132 | --[[-------------------------------------------------------------------------- |
||
133 | Addon Loading |
||
134 | -----------------------------------------------------------------------------]] |
||
135 | |||
136 | function AceCommands:LoadAddon(addon) |
||
137 | if( IsAddOnLoaded(addon) ) then |
||
138 | self:result(format(ACE_CMD_OPT_LOAD_IS_LOADED, addon)) |
||
139 | return |
||
140 | end |
||
141 | |||
142 | local loaded, reason = LoadAddOn(addon) |
||
143 | if( loaded ) then |
||
144 | self:result(format(ACE_CMD_OPT_LOAD_LOADED, GetAddOnInfo(addon))) |
||
145 | else |
||
146 | self:result(format(ACE_CMD_OPT_LOAD_ERROR, addon, strlower(reason))) |
||
147 | end |
||
148 | end |
||
149 | |||
150 | function AceCommands:LoadAddonAuto(addon) |
||
151 | ace.db:SetLoadOnStart(addon, TRUE) |
||
152 | self:LoadAddon(addon) |
||
153 | end |
||
154 | |||
155 | function AceCommands:LoadAddonOff(addon) |
||
156 | if( ace.db:GetLoadOnStart(addon) ) then |
||
157 | ace.db:SetLoadOnStart(addon, FALSE) |
||
158 | self:result(format(ACE_CMD_OPT_AUTO_OFF_MSG, addon)) |
||
159 | end |
||
160 | end |
||
161 | |||
162 | |||
163 | --[[-------------------------------------------------------------------------- |
||
164 | Configurations |
||
165 | -----------------------------------------------------------------------------]] |
||
166 | |||
167 | function AceCommands:ChangeLoadMsgAddon() |
||
168 | ace.db:SetOpt("loadMsg", "addon") |
||
169 | self:status(ACE_TEXT_LOADMSG, "addon", ACE_MAP_LOADMSG) |
||
170 | end |
||
171 | |||
172 | function AceCommands:ChangeLoadMsgNone() |
||
173 | ace.db:SetOpt("loadMsg", "none") |
||
174 | self:status(ACE_TEXT_LOADMSG, "none", ACE_MAP_LOADMSG) |
||
175 | end |
||
176 | |||
177 | function AceCommands:ChangeLoadMsgSum() |
||
178 | ace.db:SetOpt("loadMsg") |
||
179 | self:status(ACE_TEXT_LOADMSG, 0, ACE_MAP_LOADMSG) |
||
180 | end |
||
181 | |||
182 | |||
183 | --[[-------------------------------------------------------------------------- |
||
184 | Profile Options |
||
185 | -----------------------------------------------------------------------------]] |
||
186 | |||
187 | function AceCommands:ProfileInfo() |
||
188 | local profile = ace.db:GetProfile(ace.db.profileName) |
||
189 | |||
190 | |||
191 | end |
||
192 | |||
193 | function AceCommands:SetProfile(profile, key, msg) |
||
194 | if( (key or "") ~= "" ) then |
||
195 | if( strlower(key) == ACE_CMD_PROFILE_ALL ) then |
||
196 | for _, addon in ace.registry:get() do |
||
197 | if( addon.db and (not ace.db:GetAddonProfile(profile, addon, profile)) ) then |
||
198 | ace.db:SetAddonProfile(profile, addon, profile) |
||
199 | end |
||
200 | end |
||
201 | self:result(format(ACE_CMD_PROFILE_ALL_ADDED, profile)) |
||
202 | msg = nil |
||
203 | else |
||
204 | local _, addon = ace.TableFindKeyCaseless(ace.registry:get(), key) |
||
205 | if( not addon ) then |
||
206 | self:result(format(ACE_CMD_ADDON_NOTFOUND, key)) |
||
207 | return |
||
208 | end |
||
209 | if( not addon.db ) then |
||
210 | self:result(format(ACE_CMD_PROFILE_NO_PROFILE, addon.name)) |
||
211 | return |
||
212 | end |
||
213 | ace.db:SetAddonProfile(profile, addon, profile) |
||
214 | self:result(format(ACE_CMD_PROFILE_ADDON_ADDED, addon.name, profile)) |
||
215 | msg = nil |
||
216 | end |
||
217 | end |
||
218 | |||
219 | -- Load the profile last so that any individual addons added to it will be set to |
||
220 | -- the correct path. |
||
221 | self:LoadProfile(profile, msg) |
||
222 | end |
||
223 | |||
224 | function AceCommands:LoadProfile(profile, msg) |
||
225 | if( ace.db:GetProfile(profile) ) then |
||
226 | ace.db:LoadProfile(profile) |
||
227 | else |
||
228 | ace.db:SaveProfile(profile, ace.db:NewProfile()) |
||
229 | ace.db:LoadProfile(profile) |
||
230 | end |
||
231 | if( msg ) then self:result(msg) end |
||
232 | end |
||
233 | |||
234 | function AceCommands:UseProfileChar(opt) |
||
235 | local _, _, addon, import = strfind(opt, "(%S*)%s?(.*)") |
||
236 | self:SetProfile(ace.char.id, addon, format(ACE_PROFILE_LOADED_CHAR, ace.char.id)) |
||
237 | end |
||
238 | |||
239 | function AceCommands:UseProfileClass(addon) |
||
240 | self:SetProfile(ace.char.class, addon, |
||
241 | format(ACE_PROFILE_LOADED_CLASS, ace.char.class, ace.char.id) |
||
242 | ) |
||
243 | end |
||
244 | |||
245 | function AceCommands:UseProfileDefault() |
||
246 | ace.db:LoadProfile(ACE_PROFILE_DEFAULT) |
||
247 | self:result(format(ACE_PROFILE_LOADED_DEFAULT, ace.char.id)) |
||
248 | end |
||
249 | |||
250 | |||
251 | ace.cmd = AceCommands |
||
252 | ace.cmd.app = ace |
||
253 |