Mercurial > wow > itemauditor
comparison Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua @ 0:169f5211fc7f
First public revision.
At this point ItemAuditor watches mail for auctions sold or purchased, watches for buy/sell (money and 1 item type change) and conversions/tradeskills. Milling isn't working yet because there is too much time between the first event and the last event.
author | Asa Ayers <Asa.Ayers@Gmail.com> |
---|---|
date | Thu, 20 May 2010 19:22:19 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:169f5211fc7f |
---|---|
1 --- AceDBOptions-3.0 provides a universal AceConfig options screen for managing AceDB-3.0 profiles. | |
2 -- @class file | |
3 -- @name AceDBOptions-3.0 | |
4 -- @release $Id: AceDBOptions-3.0.lua 895 2009-12-06 16:28:55Z nevcairiel $ | |
5 local ACEDBO_MAJOR, ACEDBO_MINOR = "AceDBOptions-3.0", 11 | |
6 local AceDBOptions, oldminor = LibStub:NewLibrary(ACEDBO_MAJOR, ACEDBO_MINOR) | |
7 | |
8 if not AceDBOptions then return end -- No upgrade needed | |
9 | |
10 -- Lua APIs | |
11 local pairs, next = pairs, next | |
12 | |
13 -- WoW APIs | |
14 local UnitClass = UnitClass | |
15 | |
16 -- Global vars/functions that we don't upvalue since they might get hooked, or upgraded | |
17 -- List them here for Mikk's FindGlobals script | |
18 -- GLOBALS: NORMAL_FONT_COLOR_CODE, FONT_COLOR_CODE_CLOSE | |
19 | |
20 AceDBOptions.optionTables = AceDBOptions.optionTables or {} | |
21 AceDBOptions.handlers = AceDBOptions.handlers or {} | |
22 | |
23 --[[ | |
24 Localization of AceDBOptions-3.0 | |
25 ]] | |
26 | |
27 local L = { | |
28 default = "Default", | |
29 intro = "You can change the active database profile, so you can have different settings for every character.", | |
30 reset_desc = "Reset the current profile back to its default values, in case your configuration is broken, or you simply want to start over.", | |
31 reset = "Reset Profile", | |
32 reset_sub = "Reset the current profile to the default", | |
33 choose_desc = "You can either create a new profile by entering a name in the editbox, or choose one of the already exisiting profiles.", | |
34 new = "New", | |
35 new_sub = "Create a new empty profile.", | |
36 choose = "Existing Profiles", | |
37 choose_sub = "Select one of your currently available profiles.", | |
38 copy_desc = "Copy the settings from one existing profile into the currently active profile.", | |
39 copy = "Copy From", | |
40 delete_desc = "Delete existing and unused profiles from the database to save space, and cleanup the SavedVariables file.", | |
41 delete = "Delete a Profile", | |
42 delete_sub = "Deletes a profile from the database.", | |
43 delete_confirm = "Are you sure you want to delete the selected profile?", | |
44 profiles = "Profiles", | |
45 profiles_sub = "Manage Profiles", | |
46 current = "Current Profile:", | |
47 } | |
48 | |
49 local LOCALE = GetLocale() | |
50 if LOCALE == "deDE" then | |
51 L["default"] = "Standard" | |
52 L["intro"] = "Hier kannst du das aktive Datenbankprofile \195\164ndern, damit du verschiedene Einstellungen f\195\188r jeden Charakter erstellen kannst, wodurch eine sehr flexible Konfiguration m\195\182glich wird." | |
53 L["reset_desc"] = "Setzt das momentane Profil auf Standardwerte zur\195\188ck, f\195\188r den Fall das mit der Konfiguration etwas schief lief oder weil du einfach neu starten willst." | |
54 L["reset"] = "Profil zur\195\188cksetzen" | |
55 L["reset_sub"] = "Das aktuelle Profil auf Standard zur\195\188cksetzen." | |
56 L["choose_desc"] = "Du kannst ein neues Profil erstellen, indem du einen neuen Namen in der Eingabebox 'Neu' eingibst, oder w\195\164hle eines der vorhandenen Profile aus." | |
57 L["new"] = "Neu" | |
58 L["new_sub"] = "Ein neues Profil erstellen." | |
59 L["choose"] = "Vorhandene Profile" | |
60 L["choose_sub"] = "W\195\164hlt ein bereits vorhandenes Profil aus." | |
61 L["copy_desc"] = "Kopiere die Einstellungen von einem vorhandenen Profil in das aktive Profil." | |
62 L["copy"] = "Kopieren von..." | |
63 L["delete_desc"] = "L\195\182sche vorhandene oder unbenutzte Profile aus der Datenbank um Platz zu sparen und um die SavedVariables Datei 'sauber' zu halten." | |
64 L["delete"] = "Profil l\195\182schen" | |
65 L["delete_sub"] = "L\195\182scht ein Profil aus der Datenbank." | |
66 L["delete_confirm"] = "Willst du das ausgew\195\164hlte Profil wirklich l\195\182schen?" | |
67 L["profiles"] = "Profile" | |
68 L["profiles_sub"] = "Profile verwalten" | |
69 --L["current"] = "Current Profile:" | |
70 elseif LOCALE == "frFR" then | |
71 L["default"] = "D\195\169faut" | |
72 L["intro"] = "Vous pouvez changer le profil actuel afin d'avoir des param\195\168tres diff\195\169rents pour chaque personnage, permettant ainsi d'avoir une configuration tr\195\168s flexible." | |
73 L["reset_desc"] = "R\195\169initialise le profil actuel au cas o\195\185 votre configuration est corrompue ou si vous voulez tout simplement faire table rase." | |
74 L["reset"] = "R\195\169initialiser le profil" | |
75 L["reset_sub"] = "R\195\169initialise le profil actuel avec les param\195\168tres par d\195\169faut." | |
76 L["choose_desc"] = "Vous pouvez cr\195\169er un nouveau profil en entrant un nouveau nom dans la bo\195\174te de saisie, ou en choississant un des profils d\195\169j\195\160 existants." | |
77 L["new"] = "Nouveau" | |
78 L["new_sub"] = "Cr\195\169\195\169e un nouveau profil vierge." | |
79 L["choose"] = "Profils existants" | |
80 L["choose_sub"] = "Permet de choisir un des profils d\195\169j\195\160 disponibles." | |
81 L["copy_desc"] = "Copie les param\195\168tres d'un profil d\195\169j\195\160 existant dans le profil actuellement actif." | |
82 L["copy"] = "Copier \195\160 partir de" | |
83 L["delete_desc"] = "Supprime les profils existants inutilis\195\169s de la base de donn\195\169es afin de gagner de la place et de nettoyer le fichier SavedVariables." | |
84 L["delete"] = "Supprimer un profil" | |
85 L["delete_sub"] = "Supprime un profil de la base de donn\195\169es." | |
86 L["delete_confirm"] = "Etes-vous s\195\187r de vouloir supprimer le profil s\195\169lectionn\195\169 ?" | |
87 L["profiles"] = "Profils" | |
88 L["profiles_sub"] = "Gestion des profils" | |
89 --L["current"] = "Current Profile:" | |
90 elseif LOCALE == "koKR" then | |
91 L["default"] = "기본값" | |
92 L["intro"] = "모든 캐릭터의 다양한 설정과 사용중인 데이터베이스 프로필, 어느것이던지 매우 다루기 쉽게 바꿀수 있습니다." | |
93 L["reset_desc"] = "단순히 다시 새롭게 구성을 원하는 경우, 현재 프로필을 기본값으로 초기화 합니다." | |
94 L["reset"] = "프로필 초기화" | |
95 L["reset_sub"] = "현재의 프로필을 기본값으로 초기화 합니다" | |
96 L["choose_desc"] = "새로운 이름을 입력하거나, 이미 있는 프로필중 하나를 선택하여 새로운 프로필을 만들 수 있습니다." | |
97 L["new"] = "새로운 프로필" | |
98 L["new_sub"] = "새로운 프로필을 만듭니다." | |
99 L["choose"] = "프로필 선택" | |
100 L["choose_sub"] = "당신이 현재 이용할수 있는 프로필을 선택합니다." | |
101 L["copy_desc"] = "현재 사용중인 프로필에, 선택한 프로필의 설정을 복사합니다." | |
102 L["copy"] = "복사" | |
103 L["delete_desc"] = "데이터베이스에 사용중이거나 저장된 프로파일 삭제로 SavedVariables 파일의 정리와 공간 절약이 됩니다." | |
104 L["delete"] = "프로필 삭제" | |
105 L["delete_sub"] = "데이터베이스의 프로필을 삭제합니다." | |
106 L["delete_confirm"] = "정말로 선택한 프로필의 삭제를 원하십니까?" | |
107 L["profiles"] = "프로필" | |
108 L["profiles_sub"] = "프로필 설정" | |
109 --L["current"] = "Current Profile:" | |
110 elseif LOCALE == "esES" or LOCALE == "esMX" then | |
111 L["default"] = "Por defecto" | |
112 L["intro"] = "Puedes cambiar el perfil activo de tal manera que cada personaje tenga diferentes configuraciones." | |
113 L["reset_desc"] = "Reinicia el perfil actual a los valores por defectos, en caso de que se haya estropeado la configuración o quieras volver a empezar de nuevo." | |
114 L["reset"] = "Reiniciar Perfil" | |
115 L["reset_sub"] = "Reinicar el perfil actual al de por defecto" | |
116 L["choose_desc"] = "Puedes crear un nuevo perfil introduciendo un nombre en el recuadro o puedes seleccionar un perfil de los ya existentes." | |
117 L["new"] = "Nuevo" | |
118 L["new_sub"] = "Crear un nuevo perfil vacio." | |
119 L["choose"] = "Perfiles existentes" | |
120 L["choose_sub"] = "Selecciona uno de los perfiles disponibles." | |
121 L["copy_desc"] = "Copia los ajustes de un perfil existente al perfil actual." | |
122 L["copy"] = "Copiar de" | |
123 L["delete_desc"] = "Borra los perfiles existentes y sin uso de la base de datos para ganar espacio y limpiar el archivo SavedVariables." | |
124 L["delete"] = "Borrar un Perfil" | |
125 L["delete_sub"] = "Borra un perfil de la base de datos." | |
126 L["delete_confirm"] = "¿Estas seguro que quieres borrar el perfil seleccionado?" | |
127 L["profiles"] = "Perfiles" | |
128 L["profiles_sub"] = "Manejar Perfiles" | |
129 --L["current"] = "Current Profile:" | |
130 elseif LOCALE == "zhTW" then | |
131 L["default"] = "預設" | |
132 L["intro"] = "你可以選擇一個活動的資料設定檔,這樣你的每個角色就可以擁有不同的設定值,可以給你的插件設定帶來極大的靈活性。" | |
133 L["reset_desc"] = "將當前的設定檔恢復到它的預設值,用於你的設定檔損壞,或者你只是想重來的情況。" | |
134 L["reset"] = "重置設定檔" | |
135 L["reset_sub"] = "將當前的設定檔恢復為預設值" | |
136 L["choose_desc"] = "你可以通過在文本框內輸入一個名字創立一個新的設定檔,也可以選擇一個已經存在的設定檔。" | |
137 L["new"] = "新建" | |
138 L["new_sub"] = "新建一個空的設定檔。" | |
139 L["choose"] = "現有的設定檔" | |
140 L["choose_sub"] = "從當前可用的設定檔裏面選擇一個。" | |
141 L["copy_desc"] = "從當前某個已保存的設定檔複製到當前正使用的設定檔。" | |
142 L["copy"] = "複製自" | |
143 L["delete_desc"] = "從資料庫裏刪除不再使用的設定檔,以節省空間,並且清理SavedVariables檔。" | |
144 L["delete"] = "刪除一個設定檔" | |
145 L["delete_sub"] = "從資料庫裏刪除一個設定檔。" | |
146 L["delete_confirm"] = "你確定要刪除所選擇的設定檔嗎?" | |
147 L["profiles"] = "設定檔" | |
148 L["profiles_sub"] = "管理設定檔" | |
149 --L["current"] = "Current Profile:" | |
150 elseif LOCALE == "zhCN" then | |
151 L["default"] = "默认" | |
152 L["intro"] = "你可以选择一个活动的数据配置文件,这样你的每个角色就可以拥有不同的设置值,可以给你的插件配置带来极大的灵活性。" | |
153 L["reset_desc"] = "将当前的配置文件恢复到它的默认值,用于你的配置文件损坏,或者你只是想重来的情况。" | |
154 L["reset"] = "重置配置文件" | |
155 L["reset_sub"] = "将当前的配置文件恢复为默认值" | |
156 L["choose_desc"] = "你可以通过在文本框内输入一个名字创立一个新的配置文件,也可以选择一个已经存在的配置文件。" | |
157 L["new"] = "新建" | |
158 L["new_sub"] = "新建一个空的配置文件。" | |
159 L["choose"] = "现有的配置文件" | |
160 L["choose_sub"] = "从当前可用的配置文件里面选择一个。" | |
161 L["copy_desc"] = "从当前某个已保存的配置文件复制到当前正使用的配置文件。" | |
162 L["copy"] = "复制自" | |
163 L["delete_desc"] = "从数据库里删除不再使用的配置文件,以节省空间,并且清理SavedVariables文件。" | |
164 L["delete"] = "删除一个配置文件" | |
165 L["delete_sub"] = "从数据库里删除一个配置文件。" | |
166 L["delete_confirm"] = "你确定要删除所选择的配置文件么?" | |
167 L["profiles"] = "配置文件" | |
168 L["profiles_sub"] = "管理配置文件" | |
169 --L["current"] = "Current Profile:" | |
170 elseif LOCALE == "ruRU" then | |
171 L["default"] = "По умолчанию" | |
172 L["intro"] = "Изменяя активный профиль, вы можете задать различные настройки модификаций для каждого персонажа." | |
173 L["reset_desc"] = "Если ваша конфигурации испорчена или если вы хотите настроить всё заново - сбросьте текущий профиль на стандартные значения." | |
174 L["reset"] = "Сброс профиля" | |
175 L["reset_sub"] = "Сброс текущего профиля на стандартный" | |
176 L["choose_desc"] = "Вы можете создать новый профиль, введя название в поле ввода, или выбрать один из уже существующих профилей." | |
177 L["new"] = "Новый" | |
178 L["new_sub"] = "Создать новый чистый профиль" | |
179 L["choose"] = "Существующие профили" | |
180 L["choose_sub"] = "Выбор одиного из уже доступных профилей" | |
181 L["copy_desc"] = "Скопировать настройки из выбранного профиля в активный." | |
182 L["copy"] = "Скопировать из" | |
183 L["delete_desc"] = "Удалить существующий и неиспользуемый профиль из БД для сохранения места, и очистить SavedVariables файл." | |
184 L["delete"] = "Удалить профиль" | |
185 L["delete_sub"] = "Удаление профиля из БД" | |
186 L["delete_confirm"] = "Вы уверены, что вы хотите удалить выбранный профиль?" | |
187 L["profiles"] = "Профили" | |
188 L["profiles_sub"] = "Управление профилями" | |
189 --L["current"] = "Current Profile:" | |
190 end | |
191 | |
192 local defaultProfiles | |
193 local tmpprofiles = {} | |
194 | |
195 -- Get a list of available profiles for the specified database. | |
196 -- You can specify which profiles to include/exclude in the list using the two boolean parameters listed below. | |
197 -- @param db The db object to retrieve the profiles from | |
198 -- @param common If true, getProfileList will add the default profiles to the return list, even if they have not been created yet | |
199 -- @param nocurrent If true, then getProfileList will not display the current profile in the list | |
200 -- @return Hashtable of all profiles with the internal name as keys and the display name as value. | |
201 local function getProfileList(db, common, nocurrent) | |
202 local profiles = {} | |
203 | |
204 -- copy existing profiles into the table | |
205 local currentProfile = db:GetCurrentProfile() | |
206 for i,v in pairs(db:GetProfiles(tmpprofiles)) do | |
207 if not (nocurrent and v == currentProfile) then | |
208 profiles[v] = v | |
209 end | |
210 end | |
211 | |
212 -- add our default profiles to choose from ( or rename existing profiles) | |
213 for k,v in pairs(defaultProfiles) do | |
214 if (common or profiles[k]) and not (nocurrent and k == currentProfile) then | |
215 profiles[k] = v | |
216 end | |
217 end | |
218 | |
219 return profiles | |
220 end | |
221 | |
222 --[[ | |
223 OptionsHandlerPrototype | |
224 prototype class for handling the options in a sane way | |
225 ]] | |
226 local OptionsHandlerPrototype = {} | |
227 | |
228 --[[ Reset the profile ]] | |
229 function OptionsHandlerPrototype:Reset() | |
230 self.db:ResetProfile() | |
231 end | |
232 | |
233 --[[ Set the profile to value ]] | |
234 function OptionsHandlerPrototype:SetProfile(info, value) | |
235 self.db:SetProfile(value) | |
236 end | |
237 | |
238 --[[ returns the currently active profile ]] | |
239 function OptionsHandlerPrototype:GetCurrentProfile() | |
240 return self.db:GetCurrentProfile() | |
241 end | |
242 | |
243 --[[ | |
244 List all active profiles | |
245 you can control the output with the .arg variable | |
246 currently four modes are supported | |
247 | |
248 (empty) - return all available profiles | |
249 "nocurrent" - returns all available profiles except the currently active profile | |
250 "common" - returns all avaialble profiles + some commonly used profiles ("char - realm", "realm", "class", "Default") | |
251 "both" - common except the active profile | |
252 ]] | |
253 function OptionsHandlerPrototype:ListProfiles(info) | |
254 local arg = info.arg | |
255 local profiles | |
256 if arg == "common" and not self.noDefaultProfiles then | |
257 profiles = getProfileList(self.db, true, nil) | |
258 elseif arg == "nocurrent" then | |
259 profiles = getProfileList(self.db, nil, true) | |
260 elseif arg == "both" then -- currently not used | |
261 profiles = getProfileList(self.db, (not self.noDefaultProfiles) and true, true) | |
262 else | |
263 profiles = getProfileList(self.db) | |
264 end | |
265 | |
266 return profiles | |
267 end | |
268 | |
269 function OptionsHandlerPrototype:HasNoProfiles(info) | |
270 local profiles = self:ListProfiles(info) | |
271 return ((not next(profiles)) and true or false) | |
272 end | |
273 | |
274 --[[ Copy a profile ]] | |
275 function OptionsHandlerPrototype:CopyProfile(info, value) | |
276 self.db:CopyProfile(value) | |
277 end | |
278 | |
279 --[[ Delete a profile from the db ]] | |
280 function OptionsHandlerPrototype:DeleteProfile(info, value) | |
281 self.db:DeleteProfile(value) | |
282 end | |
283 | |
284 --[[ fill defaultProfiles with some generic values ]] | |
285 local function generateDefaultProfiles(db) | |
286 defaultProfiles = { | |
287 ["Default"] = L["default"], | |
288 [db.keys.char] = db.keys.char, | |
289 [db.keys.realm] = db.keys.realm, | |
290 [db.keys.class] = UnitClass("player") | |
291 } | |
292 end | |
293 | |
294 --[[ create and return a handler object for the db, or upgrade it if it already existed ]] | |
295 local function getOptionsHandler(db, noDefaultProfiles) | |
296 if not defaultProfiles then | |
297 generateDefaultProfiles(db) | |
298 end | |
299 | |
300 local handler = AceDBOptions.handlers[db] or { db = db, noDefaultProfiles = noDefaultProfiles } | |
301 | |
302 for k,v in pairs(OptionsHandlerPrototype) do | |
303 handler[k] = v | |
304 end | |
305 | |
306 AceDBOptions.handlers[db] = handler | |
307 return handler | |
308 end | |
309 | |
310 --[[ | |
311 the real options table | |
312 ]] | |
313 local optionsTable = { | |
314 desc = { | |
315 order = 1, | |
316 type = "description", | |
317 name = L["intro"] .. "\n", | |
318 }, | |
319 descreset = { | |
320 order = 9, | |
321 type = "description", | |
322 name = L["reset_desc"], | |
323 }, | |
324 reset = { | |
325 order = 10, | |
326 type = "execute", | |
327 name = L["reset"], | |
328 desc = L["reset_sub"], | |
329 func = "Reset", | |
330 }, | |
331 current = { | |
332 order = 11, | |
333 type = "description", | |
334 name = function(info) return L["current"] .. " " .. NORMAL_FONT_COLOR_CODE .. info.handler:GetCurrentProfile() .. FONT_COLOR_CODE_CLOSE end, | |
335 width = "default", | |
336 }, | |
337 choosedesc = { | |
338 order = 20, | |
339 type = "description", | |
340 name = "\n" .. L["choose_desc"], | |
341 }, | |
342 new = { | |
343 name = L["new"], | |
344 desc = L["new_sub"], | |
345 type = "input", | |
346 order = 30, | |
347 get = false, | |
348 set = "SetProfile", | |
349 }, | |
350 choose = { | |
351 name = L["choose"], | |
352 desc = L["choose_sub"], | |
353 type = "select", | |
354 order = 40, | |
355 get = "GetCurrentProfile", | |
356 set = "SetProfile", | |
357 values = "ListProfiles", | |
358 arg = "common", | |
359 }, | |
360 copydesc = { | |
361 order = 50, | |
362 type = "description", | |
363 name = "\n" .. L["copy_desc"], | |
364 }, | |
365 copyfrom = { | |
366 order = 60, | |
367 type = "select", | |
368 name = L["copy"], | |
369 desc = L["copy_desc"], | |
370 get = false, | |
371 set = "CopyProfile", | |
372 values = "ListProfiles", | |
373 disabled = "HasNoProfiles", | |
374 arg = "nocurrent", | |
375 }, | |
376 deldesc = { | |
377 order = 70, | |
378 type = "description", | |
379 name = "\n" .. L["delete_desc"], | |
380 }, | |
381 delete = { | |
382 order = 80, | |
383 type = "select", | |
384 name = L["delete"], | |
385 desc = L["delete_sub"], | |
386 get = false, | |
387 set = "DeleteProfile", | |
388 values = "ListProfiles", | |
389 disabled = "HasNoProfiles", | |
390 arg = "nocurrent", | |
391 confirm = true, | |
392 confirmText = L["delete_confirm"], | |
393 }, | |
394 } | |
395 | |
396 --- Get/Create a option table that you can use in your addon to control the profiles of AceDB-3.0. | |
397 -- @param db The database object to create the options table for. | |
398 -- @return The options table to be used in AceConfig-3.0 | |
399 -- @usage | |
400 -- -- Assuming `options` is your top-level options table and `self.db` is your database: | |
401 -- options.args.profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db) | |
402 function AceDBOptions:GetOptionsTable(db, noDefaultProfiles) | |
403 local tbl = AceDBOptions.optionTables[db] or { | |
404 type = "group", | |
405 name = L["profiles"], | |
406 desc = L["profiles_sub"], | |
407 } | |
408 | |
409 tbl.handler = getOptionsHandler(db, noDefaultProfiles) | |
410 tbl.args = optionsTable | |
411 | |
412 AceDBOptions.optionTables[db] = tbl | |
413 return tbl | |
414 end | |
415 | |
416 -- upgrade existing tables | |
417 for db,tbl in pairs(AceDBOptions.optionTables) do | |
418 tbl.handler = getOptionsHandler(db) | |
419 tbl.args = optionsTable | |
420 end |