diff --git a/libs/CallbackHandler-1.0.lua b/libs/CallbackHandler-1.0.lua
index ca21919..06befb3 100644
--- a/libs/CallbackHandler-1.0.lua
+++ b/libs/CallbackHandler-1.0.lua
@@ -1,239 +1,239 @@
---[[ $Id: CallbackHandler-1.0.lua 504 2008-02-07 11:04:06Z nevcairiel $ ]]
-local MAJOR, MINOR = "CallbackHandler-1.0", 3
-local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
-
-if not CallbackHandler then return end -- No upgrade needed
-
-local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end}
-
-local type = type
-local pcall = pcall
-local pairs = pairs
-local assert = assert
-local concat = table.concat
-local loadstring = loadstring
-local next = next
-local select = select
-local type = type
-local xpcall = xpcall
-
-local function errorhandler(err)
- return geterrorhandler()(err)
-end
-
-local function CreateDispatcher(argCount)
- local code = [[
- local next, xpcall, eh = ...
-
- local method, ARGS
- local function call() method(ARGS) end
-
- local function dispatch(handlers, ...)
- local index
- index, method = next(handlers)
- if not method then return end
- local OLD_ARGS = ARGS
- ARGS = ...
- repeat
- xpcall(call, eh)
- index, method = next(handlers, index)
- until not method
- ARGS = OLD_ARGS
- end
-
- return dispatch
- ]]
-
- local ARGS, OLD_ARGS = {}, {}
- for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end
- code = code:gsub("OLD_ARGS", concat(OLD_ARGS, ", ")):gsub("ARGS", concat(ARGS, ", "))
- return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler)
-end
-
-local Dispatchers = setmetatable({}, {__index=function(self, argCount)
- local dispatcher = CreateDispatcher(argCount)
- rawset(self, argCount, dispatcher)
- return dispatcher
-end})
-
---------------------------------------------------------------------------
--- CallbackHandler:New
---
--- target - target object to embed public APIs in
--- RegisterName - name of the callback registration API, default "RegisterCallback"
--- UnregisterName - name of the callback unregistration API, default "UnregisterCallback"
--- UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API.
-
-function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName, OnUsed, OnUnused)
- -- TODO: Remove this after beta has gone out
- assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused")
-
- RegisterName = RegisterName or "RegisterCallback"
- UnregisterName = UnregisterName or "UnregisterCallback"
- if UnregisterAllName==nil then -- false is used to indicate "don't want this method"
- UnregisterAllName = "UnregisterAllCallbacks"
- end
-
- -- we declare all objects and exported APIs inside this closure to quickly gain access
- -- to e.g. function names, the "target" parameter, etc
-
-
- -- Create the registry object
- local events = setmetatable({}, meta)
- local registry = { recurse=0, events=events }
-
- -- registry:Fire() - fires the given event/message into the registry
- function registry:Fire(eventname, ...)
- if not rawget(events, eventname) or not next(events[eventname]) then return end
- local oldrecurse = registry.recurse
- registry.recurse = oldrecurse + 1
-
- Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...)
-
- registry.recurse = oldrecurse
-
- if registry.insertQueue and oldrecurse==0 then
- -- Something in one of our callbacks wanted to register more callbacks; they got queued
- for eventname,callbacks in pairs(registry.insertQueue) do
- local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten.
- for self,func in pairs(callbacks) do
- events[eventname][self] = func
- -- fire OnUsed callback?
- if first and registry.OnUsed then
- registry.OnUsed(registry, target, eventname)
- first = nil
- end
- end
- end
- registry.insertQueue = nil
- end
- end
-
- -- Registration of a callback, handles:
- -- self["method"], leads to self["method"](self, ...)
- -- self with function ref, leads to functionref(...)
- -- "addonId" (instead of self) with function ref, leads to functionref(...)
- -- all with an optional arg, which, if present, gets passed as first argument (after self if present)
- target[RegisterName] = function(self, eventname, method, ... --[[actually just a single arg]])
- if type(eventname) ~= "string" then
- error("Usage: "..RegisterName.."(eventname, method[, arg]): 'eventname' - string expected.", 2)
- end
-
- method = method or eventname
-
- local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten.
-
- if type(method) ~= "string" and type(method) ~= "function" then
- error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - string or function expected.", 2)
- end
-
- local regfunc
-
- if type(method) == "string" then
- -- self["method"] calling style
- if type(self) ~= "table" then
- error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): self was not a table?", 2)
- elseif self==target then
- error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): do not use Library:"..RegisterName.."(), use your own 'self'", 2)
- elseif type(self[method]) ~= "function" then
- error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - method '"..tostring(method).."' not found on self.", 2)
- end
-
- if select("#",...)>=1 then -- this is not the same as testing for arg==nil!
- local arg=select(1,...)
- regfunc = function(...) self[method](self,arg,...) end
- else
- regfunc = function(...) self[method](self,...) end
- end
- else
- -- function ref with self=object or self="addonId"
- if type(self)~="table" and type(self)~="string" then
- error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string expected.", 2)
- end
-
- if select("#",...)>=1 then -- this is not the same as testing for arg==nil!
- local arg=select(1,...)
- regfunc = function(...) method(arg,...) end
- else
- regfunc = method
- end
- end
-
-
- if events[eventname][self] or registry.recurse<1 then
- -- if registry.recurse<1 then
- -- we're overwriting an existing entry, or not currently recursing. just set it.
- events[eventname][self] = regfunc
- -- fire OnUsed callback?
- if registry.OnUsed and first then
- registry.OnUsed(registry, target, eventname)
- end
- else
- -- we're currently processing a callback in this registry, so delay the registration of this new entry!
- -- yes, we're a bit wasteful on garbage, but this is a fringe case, so we're picking low implementation overhead over garbage efficiency
- registry.insertQueue = registry.insertQueue or setmetatable({},meta)
- registry.insertQueue[eventname][self] = regfunc
- end
- end
-
- -- Unregister a callback
- target[UnregisterName] = function(self, eventname)
- if not self or self==target then
- error("Usage: "..UnregisterName.."(eventname): bad 'self'", 2)
- end
- if type(eventname) ~= "string" then
- error("Usage: "..UnregisterName.."(eventname): 'eventname' - string expected.", 2)
- end
- if rawget(events, eventname) and events[eventname][self] then
- events[eventname][self] = nil
- -- Fire OnUnused callback?
- if registry.OnUnused and not next(events[eventname]) then
- registry.OnUnused(registry, target, eventname)
- end
- end
- if registry.insertQueue and rawget(registry.insertQueue, eventname) and registry.insertQueue[eventname][self] then
- registry.insertQueue[eventname][self] = nil
- end
- end
-
- -- OPTIONAL: Unregister all callbacks for given selfs/addonIds
- if UnregisterAllName then
- target[UnregisterAllName] = function(...)
- if select("#",...)<1 then
- error("Usage: "..UnregisterAllName.."([whatFor]): missing 'self' or \"addonId\" to unregister events for.", 2)
- end
- if select("#",...)==1 and ...==target then
- error("Usage: "..UnregisterAllName.."([whatFor]): supply a meaningful 'self' or \"addonId\"", 2)
- end
-
-
- for i=1,select("#",...) do
- local self = select(i,...)
- if registry.insertQueue then
- for eventname, callbacks in pairs(registry.insertQueue) do
- if callbacks[self] then
- callbacks[self] = nil
- end
- end
- end
- for eventname, callbacks in pairs(events) do
- if callbacks[self] then
- callbacks[self] = nil
- -- Fire OnUnused callback?
- if registry.OnUnused and not next(callbacks) then
- registry.OnUnused(registry, target, eventname)
- end
- end
- end
- end
- end
- end
-
- return registry
-end
-
-
--- CallbackHandler purposefully does NOT do explicit embedding. Nor does it
--- try to upgrade old implicit embeds since the system is selfcontained and
--- relies on closures to work.
-
+--[[ $Id: CallbackHandler-1.0.lua 504 2008-02-07 11:04:06Z nevcairiel $ ]]
+local MAJOR, MINOR = "CallbackHandler-1.0", 3
+local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
+
+if not CallbackHandler then return end -- No upgrade needed
+
+local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end}
+
+local type = type
+local pcall = pcall
+local pairs = pairs
+local assert = assert
+local concat = table.concat
+local loadstring = loadstring
+local next = next
+local select = select
+local type = type
+local xpcall = xpcall
+
+local function errorhandler(err)
+ return geterrorhandler()(err)
+end
+
+local function CreateDispatcher(argCount)
+ local code = [[
+ local next, xpcall, eh = ...
+
+ local method, ARGS
+ local function call() method(ARGS) end
+
+ local function dispatch(handlers, ...)
+ local index
+ index, method = next(handlers)
+ if not method then return end
+ local OLD_ARGS = ARGS
+ ARGS = ...
+ repeat
+ xpcall(call, eh)
+ index, method = next(handlers, index)
+ until not method
+ ARGS = OLD_ARGS
+ end
+
+ return dispatch
+ ]]
+
+ local ARGS, OLD_ARGS = {}, {}
+ for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end
+ code = code:gsub("OLD_ARGS", concat(OLD_ARGS, ", ")):gsub("ARGS", concat(ARGS, ", "))
+ return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler)
+end
+
+local Dispatchers = setmetatable({}, {__index=function(self, argCount)
+ local dispatcher = CreateDispatcher(argCount)
+ rawset(self, argCount, dispatcher)
+ return dispatcher
+end})
+
+--------------------------------------------------------------------------
+-- CallbackHandler:New
+--
+-- target - target object to embed public APIs in
+-- RegisterName - name of the callback registration API, default "RegisterCallback"
+-- UnregisterName - name of the callback unregistration API, default "UnregisterCallback"
+-- UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API.
+
+function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName, OnUsed, OnUnused)
+ -- TODO: Remove this after beta has gone out
+ assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused")
+
+ RegisterName = RegisterName or "RegisterCallback"
+ UnregisterName = UnregisterName or "UnregisterCallback"
+ if UnregisterAllName==nil then -- false is used to indicate "don't want this method"
+ UnregisterAllName = "UnregisterAllCallbacks"
+ end
+
+ -- we declare all objects and exported APIs inside this closure to quickly gain access
+ -- to e.g. function names, the "target" parameter, etc
+
+
+ -- Create the registry object
+ local events = setmetatable({}, meta)
+ local registry = { recurse=0, events=events }
+
+ -- registry:Fire() - fires the given event/message into the registry
+ function registry:Fire(eventname, ...)
+ if not rawget(events, eventname) or not next(events[eventname]) then return end
+ local oldrecurse = registry.recurse
+ registry.recurse = oldrecurse + 1
+
+ Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...)
+
+ registry.recurse = oldrecurse
+
+ if registry.insertQueue and oldrecurse==0 then
+ -- Something in one of our callbacks wanted to register more callbacks; they got queued
+ for eventname,callbacks in pairs(registry.insertQueue) do
+ local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten.
+ for self,func in pairs(callbacks) do
+ events[eventname][self] = func
+ -- fire OnUsed callback?
+ if first and registry.OnUsed then
+ registry.OnUsed(registry, target, eventname)
+ first = nil
+ end
+ end
+ end
+ registry.insertQueue = nil
+ end
+ end
+
+ -- Registration of a callback, handles:
+ -- self["method"], leads to self["method"](self, ...)
+ -- self with function ref, leads to functionref(...)
+ -- "addonId" (instead of self) with function ref, leads to functionref(...)
+ -- all with an optional arg, which, if present, gets passed as first argument (after self if present)
+ target[RegisterName] = function(self, eventname, method, ... --[[actually just a single arg]])
+ if type(eventname) ~= "string" then
+ error("Usage: "..RegisterName.."(eventname, method[, arg]): 'eventname' - string expected.", 2)
+ end
+
+ method = method or eventname
+
+ local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten.
+
+ if type(method) ~= "string" and type(method) ~= "function" then
+ error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - string or function expected.", 2)
+ end
+
+ local regfunc
+
+ if type(method) == "string" then
+ -- self["method"] calling style
+ if type(self) ~= "table" then
+ error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): self was not a table?", 2)
+ elseif self==target then
+ error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): do not use Library:"..RegisterName.."(), use your own 'self'", 2)
+ elseif type(self[method]) ~= "function" then
+ error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - method '"..tostring(method).."' not found on self.", 2)
+ end
+
+ if select("#",...)>=1 then -- this is not the same as testing for arg==nil!
+ local arg=select(1,...)
+ regfunc = function(...) self[method](self,arg,...) end
+ else
+ regfunc = function(...) self[method](self,...) end
+ end
+ else
+ -- function ref with self=object or self="addonId"
+ if type(self)~="table" and type(self)~="string" then
+ error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string expected.", 2)
+ end
+
+ if select("#",...)>=1 then -- this is not the same as testing for arg==nil!
+ local arg=select(1,...)
+ regfunc = function(...) method(arg,...) end
+ else
+ regfunc = method
+ end
+ end
+
+
+ if events[eventname][self] or registry.recurse<1 then
+ -- if registry.recurse<1 then
+ -- we're overwriting an existing entry, or not currently recursing. just set it.
+ events[eventname][self] = regfunc
+ -- fire OnUsed callback?
+ if registry.OnUsed and first then
+ registry.OnUsed(registry, target, eventname)
+ end
+ else
+ -- we're currently processing a callback in this registry, so delay the registration of this new entry!
+ -- yes, we're a bit wasteful on garbage, but this is a fringe case, so we're picking low implementation overhead over garbage efficiency
+ registry.insertQueue = registry.insertQueue or setmetatable({},meta)
+ registry.insertQueue[eventname][self] = regfunc
+ end
+ end
+
+ -- Unregister a callback
+ target[UnregisterName] = function(self, eventname)
+ if not self or self==target then
+ error("Usage: "..UnregisterName.."(eventname): bad 'self'", 2)
+ end
+ if type(eventname) ~= "string" then
+ error("Usage: "..UnregisterName.."(eventname): 'eventname' - string expected.", 2)
+ end
+ if rawget(events, eventname) and events[eventname][self] then
+ events[eventname][self] = nil
+ -- Fire OnUnused callback?
+ if registry.OnUnused and not next(events[eventname]) then
+ registry.OnUnused(registry, target, eventname)
+ end
+ end
+ if registry.insertQueue and rawget(registry.insertQueue, eventname) and registry.insertQueue[eventname][self] then
+ registry.insertQueue[eventname][self] = nil
+ end
+ end
+
+ -- OPTIONAL: Unregister all callbacks for given selfs/addonIds
+ if UnregisterAllName then
+ target[UnregisterAllName] = function(...)
+ if select("#",...)<1 then
+ error("Usage: "..UnregisterAllName.."([whatFor]): missing 'self' or \"addonId\" to unregister events for.", 2)
+ end
+ if select("#",...)==1 and ...==target then
+ error("Usage: "..UnregisterAllName.."([whatFor]): supply a meaningful 'self' or \"addonId\"", 2)
+ end
+
+
+ for i=1,select("#",...) do
+ local self = select(i,...)
+ if registry.insertQueue then
+ for eventname, callbacks in pairs(registry.insertQueue) do
+ if callbacks[self] then
+ callbacks[self] = nil
+ end
+ end
+ end
+ for eventname, callbacks in pairs(events) do
+ if callbacks[self] then
+ callbacks[self] = nil
+ -- Fire OnUnused callback?
+ if registry.OnUnused and not next(callbacks) then
+ registry.OnUnused(registry, target, eventname)
+ end
+ end
+ end
+ end
+ end
+ end
+
+ return registry
+end
+
+
+-- CallbackHandler purposefully does NOT do explicit embedding. Nor does it
+-- try to upgrade old implicit embeds since the system is selfcontained and
+-- relies on closures to work.
+
diff --git a/libs/LibSharedMedia-3.0.lua b/libs/LibSharedMedia-3.0.lua
index ef062a0..44f6c09 100644
--- a/libs/LibSharedMedia-3.0.lua
+++ b/libs/LibSharedMedia-3.0.lua
@@ -1,230 +1,230 @@
---[[
-Name: LibSharedMedia-3.0
-Revision: $Revision: 58 $
-Author: Elkano (elkano@gmx.de)
-Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com)
-Website: http://www.wowace.com/projects/libsharedmedia-3-0/
-Description: Shared handling of media data (fonts, sounds, textures, ...) between addons.
-Dependencies: LibStub, CallbackHandler-1.0
-License: LGPL v2.1
-]]
-
-local MAJOR, MINOR = "LibSharedMedia-3.0", 90000 + tonumber(("$Revision: 58 $"):match("(%d+)"))
-local lib = LibStub:NewLibrary(MAJOR, MINOR)
-
-if not lib then return end
-
-local _G = getfenv(0)
-
-local pairs = _G.pairs
-local type = _G.type
-
-local band = _G.bit.band
-
-local table_insert = _G.table.insert
-local table_sort = _G.table.sort
-
-local locale = GetLocale()
-local locale_is_western
-local LOCALE_MASK = 0
-lib.LOCALE_BIT_koKR = 1
-lib.LOCALE_BIT_ruRU = 2
-lib.LOCALE_BIT_zhCN = 4
-lib.LOCALE_BIT_zhTW = 8
-lib.LOCALE_BIT_western = 128
-
-local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0")
-
-lib.callbacks = lib.callbacks or CallbackHandler:New(lib)
-
-lib.DefaultMedia = lib.DefaultMedia or {}
-lib.MediaList = lib.MediaList or {}
-lib.MediaTable = lib.MediaTable or {}
-lib.MediaType = lib.MediaType or {}
-lib.OverrideMedia = lib.OverrideMedia or {}
-
-local defaultMedia = lib.DefaultMedia
-local mediaList = lib.MediaList
-local mediaTable = lib.MediaTable
-local overrideMedia = lib.OverrideMedia
-
-
--- create mediatype constants
-lib.MediaType.BACKGROUND = "background" -- background textures
-lib.MediaType.BORDER = "border" -- border textures
-lib.MediaType.FONT = "font" -- fonts
-lib.MediaType.STATUSBAR = "statusbar" -- statusbar textures
-lib.MediaType.SOUND = "sound" -- sound files
-
--- populate lib with default Blizzard data
--- BACKGROUND
-if not lib.MediaTable.background then lib.MediaTable.background = {} end
-lib.MediaTable.background["Blizzard Dialog Background"] = [[Interface\DialogFrame\UI-DialogBox-Background]]
-lib.MediaTable.background["Blizzard Low Health"] = [[Interface\FullScreenTextures\LowHealth]]
-lib.MediaTable.background["Blizzard Out of Control"] = [[Interface\FullScreenTextures\OutOfControl]]
-lib.MediaTable.background["Blizzard Parchment"] = [[Interface\AchievementFrame\UI-Achievement-Parchment-Horizontal]]
-lib.MediaTable.background["Blizzard Parchment 2"] = [[Interface\AchievementFrame\UI-Achievement-Parchment]]
-lib.MediaTable.background["Blizzard Tabard Background"] = [[Interface\TabardFrame\TabardFrameBackground]]
-lib.MediaTable.background["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Background]]
-lib.MediaTable.background["Solid"] = [[Interface\Buttons\WHITE8X8]]
-
--- BORDER
-if not lib.MediaTable.border then lib.MediaTable.border = {} end
-lib.MediaTable.border["None"] = [[Interface\None]]
-lib.MediaTable.border["Blizzard Achievement Wood"] = [[Interface\AchievementFrame\UI-Achievement-WoodBorder]]
-lib.MediaTable.border["Blizzard Chat Bubble"] = [[Interface\Tooltips\ChatBubble-Backdrop]]
-lib.MediaTable.border["Blizzard Dialog"] = [[Interface\DialogFrame\UI-DialogBox-Border]]
-lib.MediaTable.border["Blizzard Dialog Gold"] = [[Interface\DialogFrame\UI-DialogBox-Gold-Border]]
-lib.MediaTable.border["Blizzard Party"] = [[Interface\CHARACTERFRAME\UI-Party-Border]]
-lib.MediaTable.border["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Border]]
-
--- FONT
-if not lib.MediaTable.font then lib.MediaTable.font = {} end
-local SML_MT_font = lib.MediaTable.font
-if locale == "koKR" then
- LOCALE_MASK = lib.LOCALE_BIT_koKR
---
- SML_MT_font["굵은 글꼴"] = [[Fonts\2002B.TTF]]
- SML_MT_font["기본 글꼴"] = [[Fonts\2002.TTF]]
- SML_MT_font["데미지 글꼴"] = [[Fonts\K_Damage.TTF]]
- SML_MT_font["퀘스트 글꼴"] = [[Fonts\K_Pagetext.TTF]]
---
- lib.DefaultMedia["font"] = "기본 글꼴" -- someone from koKR please adjust if needed
---
-elseif locale == "zhCN" then
- LOCALE_MASK = lib.LOCALE_BIT_zhCN
---
- SML_MT_font["伤害数字"] = [[Fonts\ZYKai_C.ttf]]
- SML_MT_font["默认"] = [[Fonts\ZYKai_T.ttf]]
- SML_MT_font["聊天"] = [[Fonts\ZYHei.ttf]]
---
- lib.DefaultMedia["font"] = "默认" -- someone from zhCN please adjust if needed
---
-elseif locale == "zhTW" then
- LOCALE_MASK = lib.LOCALE_BIT_zhTW
---
- SML_MT_font["提示訊息"] = [[Fonts\bHEI00M.ttf]]
- SML_MT_font["聊天"] = [[Fonts\bHEI01B.ttf]]
- SML_MT_font["傷害數字"] = [[Fonts\bKAI00M.ttf]]
- SML_MT_font["預設"] = [[Fonts\bLEI00D.ttf]]
---
- lib.DefaultMedia["font"] = "預設" -- someone from zhTW please adjust if needed
-
-elseif locale == "ruRU" then
- LOCALE_MASK = lib.LOCALE_BIT_ruRU
---
- SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]]
- SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT__.TTF]]
- SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS.TTF]]
- SML_MT_font["Nimrod MT"] = [[Fonts\NIM_____.ttf]]
- SML_MT_font["Skurri"] = [[Fonts\SKURRI.TTF]]
---
- lib.DefaultMedia.font = "Friz Quadrata TT"
---
-else
- LOCALE_MASK = lib.LOCALE_BIT_western
- locale_is_western = true
---
- SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]]
- SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT__.TTF]]
- SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS.TTF]]
- SML_MT_font["Skurri"] = [[Fonts\SKURRI.TTF]]
---
- lib.DefaultMedia.font = "Friz Quadrata TT"
---
-end
-
--- STATUSBAR
-if not lib.MediaTable.statusbar then lib.MediaTable.statusbar = {} end
-lib.MediaTable.statusbar["Blizzard"] = [[Interface\TargetingFrame\UI-StatusBar]]
-lib.DefaultMedia.statusbar = "Blizzard"
-
--- SOUND
-if not lib.MediaTable.sound then lib.MediaTable.sound = {} end
-lib.MediaTable.sound["None"] = [[Interface\Quiet.mp3]] -- Relies on the fact that PlaySound[File] doesn't error on non-existing input.
-lib.DefaultMedia.sound = "None"
-
-local function rebuildMediaList(mediatype)
- local mtable = mediaTable[mediatype]
- if not mtable then return end
- if not mediaList[mediatype] then mediaList[mediatype] = {} end
- local mlist = mediaList[mediatype]
- -- list can only get larger, so simply overwrite it
- local i = 0
- for k in pairs(mtable) do
- i = i + 1
- mlist[i] = k
- end
- table_sort(mlist)
-end
-
-function lib:Register(mediatype, key, data, langmask)
- if type(mediatype) ~= "string" then
- error(MAJOR..":Register(mediatype, key, data, langmask) - mediatype must be string, got "..type(mediatype))
- end
- if type(key) ~= "string" then
- error(MAJOR..":Register(mediatype, key, data, langmask) - key must be string, got "..type(key))
- end
- if mediatype == lib.MediaType.FONT and ((langmask and band(langmask, LOCALE_MASK) == 0) or not (langmask or locale_is_western)) then return false end
- mediatype = mediatype:lower()
- if not mediaTable[mediatype] then mediaTable[mediatype] = {} end
- local mtable = mediaTable[mediatype]
- if mtable[key] then return false end
-
- mtable[key] = data
- rebuildMediaList(mediatype)
- self.callbacks:Fire("LibSharedMedia_Registered", mediatype, key)
- return true
-end
-
-function lib:Fetch(mediatype, key, noDefault)
- local mtt = mediaTable[mediatype]
- local overridekey = overrideMedia[mediatype]
- local result = mtt and ((overridekey and mtt[overridekey] or mtt[key]) or (not noDefault and defaultMedia[mediatype] and mtt[defaultMedia[mediatype]])) or nil
-
- return result
-end
-
-function lib:IsValid(mediatype, key)
- return mediaTable[mediatype] and (not key or mediaTable[mediatype][key]) and true or false
-end
-
-function lib:HashTable(mediatype)
- return mediaTable[mediatype]
-end
-
-function lib:List(mediatype)
- if not mediaTable[mediatype] then
- return nil
- end
- if not mediaList[mediatype] then
- rebuildMediaList(mediatype)
- end
- return mediaList[mediatype]
-end
-
-function lib:GetGlobal(mediatype)
- return overrideMedia[mediatype]
-end
-
-function lib:SetGlobal(mediatype, key)
- if not mediaTable[mediatype] then
- return false
- end
- overrideMedia[mediatype] = (key and mediaTable[mediatype][key]) and key or nil
- self.callbacks:Fire("LibSharedMedia_SetGlobal", mediatype, overrideMedia[mediatype])
- return true
-end
-
-function lib:GetDefault(mediatype)
- return defaultMedia[mediatype]
-end
-
-function lib:SetDefault(mediatype, key)
- if mediaTable[mediatype] and mediaTable[mediatype][key] and not defaultMedia[mediatype] then
- defaultMedia[mediatype] = key
- return true
- else
- return false
- end
-end
+--[[
+Name: LibSharedMedia-3.0
+Revision: $Revision: 58 $
+Author: Elkano (elkano@gmx.de)
+Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com)
+Website: http://www.wowace.com/projects/libsharedmedia-3-0/
+Description: Shared handling of media data (fonts, sounds, textures, ...) between addons.
+Dependencies: LibStub, CallbackHandler-1.0
+License: LGPL v2.1
+]]
+
+local MAJOR, MINOR = "LibSharedMedia-3.0", 90000 + tonumber(("$Revision: 58 $"):match("(%d+)"))
+local lib = LibStub:NewLibrary(MAJOR, MINOR)
+
+if not lib then return end
+
+local _G = getfenv(0)
+
+local pairs = _G.pairs
+local type = _G.type
+
+local band = _G.bit.band
+
+local table_insert = _G.table.insert
+local table_sort = _G.table.sort
+
+local locale = GetLocale()
+local locale_is_western
+local LOCALE_MASK = 0
+lib.LOCALE_BIT_koKR = 1
+lib.LOCALE_BIT_ruRU = 2
+lib.LOCALE_BIT_zhCN = 4
+lib.LOCALE_BIT_zhTW = 8
+lib.LOCALE_BIT_western = 128
+
+local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0")
+
+lib.callbacks = lib.callbacks or CallbackHandler:New(lib)
+
+lib.DefaultMedia = lib.DefaultMedia or {}
+lib.MediaList = lib.MediaList or {}
+lib.MediaTable = lib.MediaTable or {}
+lib.MediaType = lib.MediaType or {}
+lib.OverrideMedia = lib.OverrideMedia or {}
+
+local defaultMedia = lib.DefaultMedia
+local mediaList = lib.MediaList
+local mediaTable = lib.MediaTable
+local overrideMedia = lib.OverrideMedia
+
+
+-- create mediatype constants
+lib.MediaType.BACKGROUND = "background" -- background textures
+lib.MediaType.BORDER = "border" -- border textures
+lib.MediaType.FONT = "font" -- fonts
+lib.MediaType.STATUSBAR = "statusbar" -- statusbar textures
+lib.MediaType.SOUND = "sound" -- sound files
+
+-- populate lib with default Blizzard data
+-- BACKGROUND
+if not lib.MediaTable.background then lib.MediaTable.background = {} end
+lib.MediaTable.background["Blizzard Dialog Background"] = [[Interface\DialogFrame\UI-DialogBox-Background]]
+lib.MediaTable.background["Blizzard Low Health"] = [[Interface\FullScreenTextures\LowHealth]]
+lib.MediaTable.background["Blizzard Out of Control"] = [[Interface\FullScreenTextures\OutOfControl]]
+lib.MediaTable.background["Blizzard Parchment"] = [[Interface\AchievementFrame\UI-Achievement-Parchment-Horizontal]]
+lib.MediaTable.background["Blizzard Parchment 2"] = [[Interface\AchievementFrame\UI-Achievement-Parchment]]
+lib.MediaTable.background["Blizzard Tabard Background"] = [[Interface\TabardFrame\TabardFrameBackground]]
+lib.MediaTable.background["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Background]]
+lib.MediaTable.background["Solid"] = [[Interface\Buttons\WHITE8X8]]
+
+-- BORDER
+if not lib.MediaTable.border then lib.MediaTable.border = {} end
+lib.MediaTable.border["None"] = [[Interface\None]]
+lib.MediaTable.border["Blizzard Achievement Wood"] = [[Interface\AchievementFrame\UI-Achievement-WoodBorder]]
+lib.MediaTable.border["Blizzard Chat Bubble"] = [[Interface\Tooltips\ChatBubble-Backdrop]]
+lib.MediaTable.border["Blizzard Dialog"] = [[Interface\DialogFrame\UI-DialogBox-Border]]
+lib.MediaTable.border["Blizzard Dialog Gold"] = [[Interface\DialogFrame\UI-DialogBox-Gold-Border]]
+lib.MediaTable.border["Blizzard Party"] = [[Interface\CHARACTERFRAME\UI-Party-Border]]
+lib.MediaTable.border["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Border]]
+
+-- FONT
+if not lib.MediaTable.font then lib.MediaTable.font = {} end
+local SML_MT_font = lib.MediaTable.font
+if locale == "koKR" then
+ LOCALE_MASK = lib.LOCALE_BIT_koKR
+--
+ SML_MT_font["굵은 글꼴"] = [[Fonts\2002B.TTF]]
+ SML_MT_font["기본 글꼴"] = [[Fonts\2002.TTF]]
+ SML_MT_font["데미지 글꼴"] = [[Fonts\K_Damage.TTF]]
+ SML_MT_font["퀘스트 글꼴"] = [[Fonts\K_Pagetext.TTF]]
+--
+ lib.DefaultMedia["font"] = "기본 글꼴" -- someone from koKR please adjust if needed
+--
+elseif locale == "zhCN" then
+ LOCALE_MASK = lib.LOCALE_BIT_zhCN
+--
+ SML_MT_font["伤害数字"] = [[Fonts\ZYKai_C.ttf]]
+ SML_MT_font["默认"] = [[Fonts\ZYKai_T.ttf]]
+ SML_MT_font["聊天"] = [[Fonts\ZYHei.ttf]]
+--
+ lib.DefaultMedia["font"] = "默认" -- someone from zhCN please adjust if needed
+--
+elseif locale == "zhTW" then
+ LOCALE_MASK = lib.LOCALE_BIT_zhTW
+--
+ SML_MT_font["提示訊息"] = [[Fonts\bHEI00M.ttf]]
+ SML_MT_font["聊天"] = [[Fonts\bHEI01B.ttf]]
+ SML_MT_font["傷害數字"] = [[Fonts\bKAI00M.ttf]]
+ SML_MT_font["預設"] = [[Fonts\bLEI00D.ttf]]
+--
+ lib.DefaultMedia["font"] = "預設" -- someone from zhTW please adjust if needed
+
+elseif locale == "ruRU" then
+ LOCALE_MASK = lib.LOCALE_BIT_ruRU
+--
+ SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]]
+ SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT__.TTF]]
+ SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS.TTF]]
+ SML_MT_font["Nimrod MT"] = [[Fonts\NIM_____.ttf]]
+ SML_MT_font["Skurri"] = [[Fonts\SKURRI.TTF]]
+--
+ lib.DefaultMedia.font = "Friz Quadrata TT"
+--
+else
+ LOCALE_MASK = lib.LOCALE_BIT_western
+ locale_is_western = true
+--
+ SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]]
+ SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT__.TTF]]
+ SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS.TTF]]
+ SML_MT_font["Skurri"] = [[Fonts\SKURRI.TTF]]
+--
+ lib.DefaultMedia.font = "Friz Quadrata TT"
+--
+end
+
+-- STATUSBAR
+if not lib.MediaTable.statusbar then lib.MediaTable.statusbar = {} end
+lib.MediaTable.statusbar["Blizzard"] = [[Interface\TargetingFrame\UI-StatusBar]]
+lib.DefaultMedia.statusbar = "Blizzard"
+
+-- SOUND
+if not lib.MediaTable.sound then lib.MediaTable.sound = {} end
+lib.MediaTable.sound["None"] = [[Interface\Quiet.mp3]] -- Relies on the fact that PlaySound[File] doesn't error on non-existing input.
+lib.DefaultMedia.sound = "None"
+
+local function rebuildMediaList(mediatype)
+ local mtable = mediaTable[mediatype]
+ if not mtable then return end
+ if not mediaList[mediatype] then mediaList[mediatype] = {} end
+ local mlist = mediaList[mediatype]
+ -- list can only get larger, so simply overwrite it
+ local i = 0
+ for k in pairs(mtable) do
+ i = i + 1
+ mlist[i] = k
+ end
+ table_sort(mlist)
+end
+
+function lib:Register(mediatype, key, data, langmask)
+ if type(mediatype) ~= "string" then
+ error(MAJOR..":Register(mediatype, key, data, langmask) - mediatype must be string, got "..type(mediatype))
+ end
+ if type(key) ~= "string" then
+ error(MAJOR..":Register(mediatype, key, data, langmask) - key must be string, got "..type(key))
+ end
+ if mediatype == lib.MediaType.FONT and ((langmask and band(langmask, LOCALE_MASK) == 0) or not (langmask or locale_is_western)) then return false end
+ mediatype = mediatype:lower()
+ if not mediaTable[mediatype] then mediaTable[mediatype] = {} end
+ local mtable = mediaTable[mediatype]
+ if mtable[key] then return false end
+
+ mtable[key] = data
+ rebuildMediaList(mediatype)
+ self.callbacks:Fire("LibSharedMedia_Registered", mediatype, key)
+ return true
+end
+
+function lib:Fetch(mediatype, key, noDefault)
+ local mtt = mediaTable[mediatype]
+ local overridekey = overrideMedia[mediatype]
+ local result = mtt and ((overridekey and mtt[overridekey] or mtt[key]) or (not noDefault and defaultMedia[mediatype] and mtt[defaultMedia[mediatype]])) or nil
+
+ return result
+end
+
+function lib:IsValid(mediatype, key)
+ return mediaTable[mediatype] and (not key or mediaTable[mediatype][key]) and true or false
+end
+
+function lib:HashTable(mediatype)
+ return mediaTable[mediatype]
+end
+
+function lib:List(mediatype)
+ if not mediaTable[mediatype] then
+ return nil
+ end
+ if not mediaList[mediatype] then
+ rebuildMediaList(mediatype)
+ end
+ return mediaList[mediatype]
+end
+
+function lib:GetGlobal(mediatype)
+ return overrideMedia[mediatype]
+end
+
+function lib:SetGlobal(mediatype, key)
+ if not mediaTable[mediatype] then
+ return false
+ end
+ overrideMedia[mediatype] = (key and mediaTable[mediatype][key]) and key or nil
+ self.callbacks:Fire("LibSharedMedia_SetGlobal", mediatype, overrideMedia[mediatype])
+ return true
+end
+
+function lib:GetDefault(mediatype)
+ return defaultMedia[mediatype]
+end
+
+function lib:SetDefault(mediatype, key)
+ if mediaTable[mediatype] and mediaTable[mediatype][key] and not defaultMedia[mediatype] then
+ defaultMedia[mediatype] = key
+ return true
+ else
+ return false
+ end
+end
diff --git a/libs/LibStub.lua b/libs/LibStub.lua
index cfc97de..0a41ac0 100644
--- a/libs/LibStub.lua
+++ b/libs/LibStub.lua
@@ -1,30 +1,30 @@
--- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
--- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
-local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
-local LibStub = _G[LIBSTUB_MAJOR]
-
-if not LibStub or LibStub.minor < LIBSTUB_MINOR then
- LibStub = LibStub or {libs = {}, minors = {} }
- _G[LIBSTUB_MAJOR] = LibStub
- LibStub.minor = LIBSTUB_MINOR
-
- function LibStub:NewLibrary(major, minor)
- assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
- minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
-
- local oldminor = self.minors[major]
- if oldminor and oldminor >= minor then return nil end
- self.minors[major], self.libs[major] = minor, self.libs[major] or {}
- return self.libs[major], oldminor
- end
-
- function LibStub:GetLibrary(major, silent)
- if not self.libs[major] and not silent then
- error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
- end
- return self.libs[major], self.minors[major]
- end
-
- function LibStub:IterateLibraries() return pairs(self.libs) end
- setmetatable(LibStub, { __call = LibStub.GetLibrary })
-end
+-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
+-- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
+local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
+local LibStub = _G[LIBSTUB_MAJOR]
+
+if not LibStub or LibStub.minor < LIBSTUB_MINOR then
+ LibStub = LibStub or {libs = {}, minors = {} }
+ _G[LIBSTUB_MAJOR] = LibStub
+ LibStub.minor = LIBSTUB_MINOR
+
+ function LibStub:NewLibrary(major, minor)
+ assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
+ minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
+
+ local oldminor = self.minors[major]
+ if oldminor and oldminor >= minor then return nil end
+ self.minors[major], self.libs[major] = minor, self.libs[major] or {}
+ return self.libs[major], oldminor
+ end
+
+ function LibStub:GetLibrary(major, silent)
+ if not self.libs[major] and not silent then
+ error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
+ end
+ return self.libs[major], self.minors[major]
+ end
+
+ function LibStub:IterateLibraries() return pairs(self.libs) end
+ setmetatable(LibStub, { __call = LibStub.GetLibrary })
+end
diff --git a/libs/tekKonfig/tekKonfig.xml b/libs/tekKonfig/tekKonfig.xml
index 023bce7..dbbbb6b 100644
--- a/libs/tekKonfig/tekKonfig.xml
+++ b/libs/tekKonfig/tekKonfig.xml
@@ -1,8 +1,8 @@
-<Ui xmlns='http://blizzard.com/wow/ui/'>
- <Script file='tekKonfigCheckBox.lua'/>
- <Script file='tekKonfigDropdown.lua'/>
- <Script file='tekKonfigGroup.lua'/>
- <Script file='tekKonfigHeading.lua'/>
- <Script file='tekKonfigScroll.lua'/>
- <Script file='tekKonfigSlider.lua'/>
+<Ui xmlns='http://blizzard.com/wow/ui/'>
+ <Script file='tekKonfigCheckBox.lua'/>
+ <Script file='tekKonfigDropdown.lua'/>
+ <Script file='tekKonfigGroup.lua'/>
+ <Script file='tekKonfigHeading.lua'/>
+ <Script file='tekKonfigScroll.lua'/>
+ <Script file='tekKonfigSlider.lua'/>
</Ui>
\ No newline at end of file
diff --git a/pMinimap.lua b/pMinimap.lua
index 7bd8546..835664b 100644
--- a/pMinimap.lua
+++ b/pMinimap.lua
@@ -1,276 +1,276 @@
---[[
-
- Copyright (c) 2009, Adrian L Lange
- All rights reserved.
-
- You're allowed to use this addon, free of monetary charge,
- but you are not allowed to modify, alter, or redistribute
- this addon without express, written permission of the author.
-
---]]
-
-local addon = CreateFrame('Frame', 'pMinimap', Minimap)
-addon:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end)
-addon:RegisterEvent('ADDON_LOADED')
-
-local SharedMedia = LibStub('LibSharedMedia-3.0')
-local defaults = {
- font = 'Visitor TT1',
- fontsize = 13,
- fontflag = 'OUTLINE',
- zone = false,
- zonepoint = 'TOP',
- zoneoffset = 8,
- scale = 0.9,
- level = 2,
- strata = 'BACKGROUND',
- borderoffset = 1,
- bordercolors = {0, 0, 0, 1},
- mail = true,
- clock = true,
- durabilty = true,
- coordinates = false,
- coordinatesdecimals = 0,
-}
---[[
-function addon:Clock()
- if(not IsAddOnLoaded('Blizzard_TimeManager')) then
- LoadAddOn('Blizzard_TimeManager')
- end
-
- TimeManagerClockButton:GetRegions():Hide()
- TimeManagerClockButton:ClearAllPoints()
- TimeManagerClockButton:SetPoint(self.db.coordinates and 'BOTTOMLEFT' or 'BOTTOM', Minimap)
- TimeManagerClockButton:SetWidth(40)
- TimeManagerClockButton:SetHeight(14)
- TimeManagerClockButton:Show()
- TimeManagerClockButton:SetScript('OnClick', function(self, button)
- if(button == 'RightButton') then
- ToggleCalendar()
- else
- if(self.alarmFiring) then
- PlaySound('igMainMenuQuit')
- TimeManager_TurnOffAlarm()
- else
- ToggleTimeManager()
- end
- end
- end)
-
- TimeManagerClockTicker:SetPoint('CENTER', TimeManagerClockButton)
- TimeManagerClockTicker:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
- TimeManagerClockTicker:SetShadowOffset(0, 0)
-
- TimeManagerAlarmFiredTexture.Show = function() TimeManagerClockTicker:SetTextColor(1, 0, 0) end
- TimeManagerAlarmFiredTexture.Hide = function() TimeManagerClockTicker:SetTextColor(1, 1, 1) end
-
- self:RegisterEvent('CALENDAR_UPDATE_PENDING_INVITES')
- self.CALENDAR_UPDATE_PENDING_INVITES()
-end
---]]
-function addon:OnClick(button)
- if(button == 'RightButton') then
- ToggleBattlefieldMinimap()
- else
- ToggleFrame(WorldMapFrame)
- end
-end
-
-function addon:OnUpdate(elapsed)
- if(total <= 0) then
- local x, y = GetPlayerMapPosition('player')
- if(x ~= 0 and y ~= 0) then
- MinimapCoordinatesText:SetFormattedText('%.' .. addon.db.coordinatesdecimals .. 'f,%.' .. addon.db.coordinatesdecimals .. 'f', x * 100, y * 100)
- else
- MinimapCoordinatesText:SetText()
- end
-
- self.total = 0.25
- else
- self.total = self.total - elapsed
- end
-end
-
-function addon:Style()
- -- Mousewheel zoom
- MinimapZoomIn:Hide()
- MinimapZoomOut:Hide()
- Minimap:EnableMouseWheel()
- Minimap:SetScript('OnMouseWheel', function(self, direction)
- if(direction > 0) then
- MinimapZoomIn:Click()
- else
- MinimapZoomOut:Click()
- end
- end)
-
- -- Tracking icon
- MiniMapTracking:ClearAllPoints()
- MiniMapTracking:SetParent(Minimap)
- MiniMapTracking:SetPoint('TOPLEFT', -2, 2)
- MiniMapTrackingBackground:Hide()
- MiniMapTrackingButtonBorder:SetTexture(nil)
- MiniMapTrackingButton:SetHighlightTexture(nil)
- MiniMapTrackingIconOverlay:SetTexture(nil)
- MiniMapTrackingIcon:SetTexCoord(0.065, 0.935, 0.065, 0.935)
-
- -- Battlefield icon
- MiniMapBattlefieldFrame:ClearAllPoints()
- MiniMapBattlefieldFrame:SetParent(Minimap)
- MiniMapBattlefieldFrame:SetPoint('TOPRIGHT', -2, -2)
- MiniMapBattlefieldBorder:SetTexture(nil)
- BattlegroundShine:Hide()
-
- -- Mail text
- MiniMapMailFrame:ClearAllPoints()
- MiniMapMailFrame:SetParent(Minimap)
- MiniMapMailFrame:SetPoint('TOP', 0, -4)
- MiniMapMailFrame:SetHeight(8)
- MiniMapMailBorder:SetTexture(nil)
-
- MiniMapMailText = MiniMapMailFrame:CreateFontString(nil, 'OVERLAY')
- MiniMapMailText:SetPoint('BOTTOM', 0, 2)
- MiniMapMailText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
- MiniMapMailText:SetTextColor(1, 1, 1)
- MiniMapMailText:SetText('New Mail!')
-
- if(self.db.mail) then
- MiniMapMailIcon:Hide()
- else
- MiniMapMailText:Hide()
- end
-
- -- Coordinates
- MinimapCoordinates = CreateFrame('Button', nil, Minimap)
- MinimapCoordinates:SetPoint(self.db.clock and 'BOTTOMRIGHT' or 'BOTTOM')
- MinimapCoordinates:SetWidth(40)
- MinimapCoordinates:SetHeight(14)
- MinimapCoordinates:RegisterForClicks('AnyUp')
- MinimapCoordinates:SetScript('OnClick', self.OnClick)
- MinimapCoordinates:SetScript('OnUpdate', self.OnUpdate)
- MinimapCoordinates.total = 0.25
-
- MinimapCoordinatesText = MinimapCoordinates:CreateFontString(nil, 'OVERLAY')
- MinimapCoordinatesText:SetPoint('BOTTOMRIGHT', MinimapCoordinates)
- MinimapCoordinatesText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
- MinimapCoordinatesText:SetTextColor(1, 1, 1)
-
- if(not self.db.coordinates) then
- MinimapCoordinates:Hide()
- end
-
- -- Zone text
- MinimapZoneText:SetAllPoints(MinimapZoneTextButton)
- MinimapZoneText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
- MinimapZoneText:SetShadowOffset(0, 0)
-
- MinimapZoneTextButton:ClearAllPoints()
- MinimapZoneTextButton:SetParent(Minimap)
- MinimapZoneTextButton:SetPoint(self.db.zonepoint == 'BOTTOM' and 'TOP' or 'BOTTOM', Minimap, self.db.zonepoint, 0, self.db.zoneoffset)
- MinimapZoneTextButton:SetWidth(Minimap:GetWidth() * 1.5)
-
- if(not self.db.zone) then
- MinimapZoneTextButton:Hide()
- end
-
- -- Misc textures/icons/texts
- MinimapBorder:SetTexture(nil)
- MinimapBorderTop:Hide()
- MinimapToggleButton:Hide()
- MinimapNorthTag:SetAlpha(0)
- MiniMapMeetingStoneFrame:SetAlpha(0)
- MiniMapWorldMapButton:Hide()
- GameTimeFrame:Hide()
-
- -- Inject settings
- Minimap:SetScale(self.db.scale)
- Minimap:SetFrameLevel(self.db.level)
- Minimap:SetFrameStrata(self.db.strata)
- Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=])
- Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - self.db.borderoffset, bottom = - self.db.borderoffset, left = - self.db.borderoffset, right = - self.db.borderoffset}})
- Minimap:SetBackdropColor(unpack(self.db.bordercolors))
-
- Minimap:RegisterForDrag('LeftButton')
- Minimap:SetMovable(true)
- Minimap:SetScript('OnDragStop', function() if(self.unlocked) then Minimap:StopMovingOrSizing() end end)
- Minimap:SetScript('OnDragStart', function() if(self.unlocked) then Minimap:StartMoving() end end)
- MinimapCluster:EnableMouse(false)
-
- -- Modules
- if(self.db.durability) then
- DurabilityFrame:SetAlpha(0)
-
- self:RegisterEvent('UPDATE_INVENTORY_ALERTS')
- self.UPDATE_INVENTORY_ALERTS()
- end
-
- if(self.db.coordinates) then
- self:Coordinates()
- end
---[[
- if(self.db.clock) then
- self:Clock()
- else
- TimeManagerClockButton:Hide()
- end --]]
-end
-
-function addon.Command(str)
- if(str == 'reset') then
- addon.db = {}
- print('|cffff8080pMinimap:|r Settings reset. You should reload/relog to affect changes.')
- else
- InterfaceOptionsFrame_OpenToCategory(addon:GetName())
- end
-end
-
-function addon:ADDON_LOADED(event, name)
- if(name ~= self:GetName()) then return end
-
- SharedMedia:Register('font', 'Visitor TT1', [=[Interface\AddOns\pMinimap\media\font.ttf]=])
-
- SLASH_pMinimap1 = '/pmm'
- SLASH_pMinimap2 = '/pminimap'
- SlashCmdList[name] = self.Command
-
- self.db = setmetatable(pMinimapDB or {}, {__index = defaults})
- self:UnregisterEvent(event)
- self:RegisterEvent('ZONE_CHANGED_NEW_AREA')
--- self:RegisterEvent('PLAYER_LOGOUT')
-
- self:Style()
-end
-
---function addon:PLAYER_LOGOUT()
--- pMinimapDB = self.db
---end
-
-function addon:CALENDAR_UPDATE_PENDING_INVITES()
- if(CalendarGetNumPendingInvites() ~= 0) then
- TimeManagerClockTicker:SetTextColor(0, 1, 0)
- else
- TimeManagerClockTicker:SetTextColor(1, 1, 1)
- end
-end
-
-function addon:UPDATE_INVENTORY_ALERTS()
- local highstatus = 0
- for index = 1, #INVENTORY_ALERT_STATUS_SLOTS do
- local status = GetInventoryAlertStatus(INVENTORY_ALERT_STATUS_SLOTS[index])
- highstatus = status > highstatus and status
- end
-
- local color = INVENTORY_ALERT_COLORS[highstatus]
- if(color) then
- Minimap:SetBackdropColor(color.r, color.g, color.b)
- else
- Minimap:SetBackdropColor(unpack(self.db.bordercolors))
- end
-end
-
-function addon:ZONE_CHANGED_NEW_AREA()
- SetMapToCurrentZone()
-end
-
--- http://www.wowwiki.com/GetMinimapShape
-function GetMinimapShape() return 'SQUARE' end
+--[[
+
+ Copyright (c) 2009, Adrian L Lange
+ All rights reserved.
+
+ You're allowed to use this addon, free of monetary charge,
+ but you are not allowed to modify, alter, or redistribute
+ this addon without express, written permission of the author.
+
+--]]
+
+local addon = CreateFrame('Frame', 'pMinimap', Minimap)
+addon:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end)
+addon:RegisterEvent('ADDON_LOADED')
+
+local SharedMedia = LibStub('LibSharedMedia-3.0')
+local defaults = {
+ font = 'Visitor TT1',
+ fontsize = 13,
+ fontflag = 'OUTLINE',
+ zone = false,
+ zonepoint = 'TOP',
+ zoneoffset = 8,
+ scale = 0.9,
+ level = 2,
+ strata = 'BACKGROUND',
+ borderoffset = 1,
+ bordercolors = {0, 0, 0, 1},
+ mail = true,
+ clock = true,
+ durabilty = true,
+ coordinates = false,
+ coordinatesdecimals = 0,
+}
+--[[
+function addon:Clock()
+ if(not IsAddOnLoaded('Blizzard_TimeManager')) then
+ LoadAddOn('Blizzard_TimeManager')
+ end
+
+ TimeManagerClockButton:GetRegions():Hide()
+ TimeManagerClockButton:ClearAllPoints()
+ TimeManagerClockButton:SetPoint(self.db.coordinates and 'BOTTOMLEFT' or 'BOTTOM', Minimap)
+ TimeManagerClockButton:SetWidth(40)
+ TimeManagerClockButton:SetHeight(14)
+ TimeManagerClockButton:Show()
+ TimeManagerClockButton:SetScript('OnClick', function(self, button)
+ if(button == 'RightButton') then
+ ToggleCalendar()
+ else
+ if(self.alarmFiring) then
+ PlaySound('igMainMenuQuit')
+ TimeManager_TurnOffAlarm()
+ else
+ ToggleTimeManager()
+ end
+ end
+ end)
+
+ TimeManagerClockTicker:SetPoint('CENTER', TimeManagerClockButton)
+ TimeManagerClockTicker:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
+ TimeManagerClockTicker:SetShadowOffset(0, 0)
+
+ TimeManagerAlarmFiredTexture.Show = function() TimeManagerClockTicker:SetTextColor(1, 0, 0) end
+ TimeManagerAlarmFiredTexture.Hide = function() TimeManagerClockTicker:SetTextColor(1, 1, 1) end
+
+ self:RegisterEvent('CALENDAR_UPDATE_PENDING_INVITES')
+ self.CALENDAR_UPDATE_PENDING_INVITES()
+end
+--]]
+function addon:OnClick(button)
+ if(button == 'RightButton') then
+ ToggleBattlefieldMinimap()
+ else
+ ToggleFrame(WorldMapFrame)
+ end
+end
+
+function addon:OnUpdate(elapsed)
+ if(total <= 0) then
+ local x, y = GetPlayerMapPosition('player')
+ if(x ~= 0 and y ~= 0) then
+ MinimapCoordinatesText:SetFormattedText('%.' .. addon.db.coordinatesdecimals .. 'f,%.' .. addon.db.coordinatesdecimals .. 'f', x * 100, y * 100)
+ else
+ MinimapCoordinatesText:SetText()
+ end
+
+ self.total = 0.25
+ else
+ self.total = self.total - elapsed
+ end
+end
+
+function addon:Style()
+ -- Mousewheel zoom
+ MinimapZoomIn:Hide()
+ MinimapZoomOut:Hide()
+ Minimap:EnableMouseWheel()
+ Minimap:SetScript('OnMouseWheel', function(self, direction)
+ if(direction > 0) then
+ MinimapZoomIn:Click()
+ else
+ MinimapZoomOut:Click()
+ end
+ end)
+
+ -- Tracking icon
+ MiniMapTracking:ClearAllPoints()
+ MiniMapTracking:SetParent(Minimap)
+ MiniMapTracking:SetPoint('TOPLEFT', -2, 2)
+ MiniMapTrackingBackground:Hide()
+ MiniMapTrackingButtonBorder:SetTexture(nil)
+ MiniMapTrackingButton:SetHighlightTexture(nil)
+ MiniMapTrackingIconOverlay:SetTexture(nil)
+ MiniMapTrackingIcon:SetTexCoord(0.065, 0.935, 0.065, 0.935)
+
+ -- Battlefield icon
+ MiniMapBattlefieldFrame:ClearAllPoints()
+ MiniMapBattlefieldFrame:SetParent(Minimap)
+ MiniMapBattlefieldFrame:SetPoint('TOPRIGHT', -2, -2)
+ MiniMapBattlefieldBorder:SetTexture(nil)
+ BattlegroundShine:Hide()
+
+ -- Mail text
+ MiniMapMailFrame:ClearAllPoints()
+ MiniMapMailFrame:SetParent(Minimap)
+ MiniMapMailFrame:SetPoint('TOP', 0, -4)
+ MiniMapMailFrame:SetHeight(8)
+ MiniMapMailBorder:SetTexture(nil)
+
+ MiniMapMailText = MiniMapMailFrame:CreateFontString(nil, 'OVERLAY')
+ MiniMapMailText:SetPoint('BOTTOM', 0, 2)
+ MiniMapMailText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
+ MiniMapMailText:SetTextColor(1, 1, 1)
+ MiniMapMailText:SetText('New Mail!')
+
+ if(self.db.mail) then
+ MiniMapMailIcon:Hide()
+ else
+ MiniMapMailText:Hide()
+ end
+
+ -- Coordinates
+ MinimapCoordinates = CreateFrame('Button', nil, Minimap)
+ MinimapCoordinates:SetPoint(self.db.clock and 'BOTTOMRIGHT' or 'BOTTOM')
+ MinimapCoordinates:SetWidth(40)
+ MinimapCoordinates:SetHeight(14)
+ MinimapCoordinates:RegisterForClicks('AnyUp')
+ MinimapCoordinates:SetScript('OnClick', self.OnClick)
+ MinimapCoordinates:SetScript('OnUpdate', self.OnUpdate)
+ MinimapCoordinates.total = 0.25
+
+ MinimapCoordinatesText = MinimapCoordinates:CreateFontString(nil, 'OVERLAY')
+ MinimapCoordinatesText:SetPoint('BOTTOMRIGHT', MinimapCoordinates)
+ MinimapCoordinatesText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
+ MinimapCoordinatesText:SetTextColor(1, 1, 1)
+
+ if(not self.db.coordinates) then
+ MinimapCoordinates:Hide()
+ end
+
+ -- Zone text
+ MinimapZoneText:SetAllPoints(MinimapZoneTextButton)
+ MinimapZoneText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
+ MinimapZoneText:SetShadowOffset(0, 0)
+
+ MinimapZoneTextButton:ClearAllPoints()
+ MinimapZoneTextButton:SetParent(Minimap)
+ MinimapZoneTextButton:SetPoint(self.db.zonepoint == 'BOTTOM' and 'TOP' or 'BOTTOM', Minimap, self.db.zonepoint, 0, self.db.zoneoffset)
+ MinimapZoneTextButton:SetWidth(Minimap:GetWidth() * 1.5)
+
+ if(not self.db.zone) then
+ MinimapZoneTextButton:Hide()
+ end
+
+ -- Misc textures/icons/texts
+ MinimapBorder:SetTexture(nil)
+ MinimapBorderTop:Hide()
+ MinimapToggleButton:Hide()
+ MinimapNorthTag:SetAlpha(0)
+ MiniMapMeetingStoneFrame:SetAlpha(0)
+ MiniMapWorldMapButton:Hide()
+ GameTimeFrame:Hide()
+
+ -- Inject settings
+ Minimap:SetScale(self.db.scale)
+ Minimap:SetFrameLevel(self.db.level)
+ Minimap:SetFrameStrata(self.db.strata)
+ Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=])
+ Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - self.db.borderoffset, bottom = - self.db.borderoffset, left = - self.db.borderoffset, right = - self.db.borderoffset}})
+ Minimap:SetBackdropColor(unpack(self.db.bordercolors))
+
+ Minimap:RegisterForDrag('LeftButton')
+ Minimap:SetMovable(true)
+ Minimap:SetScript('OnDragStop', function() if(self.unlocked) then Minimap:StopMovingOrSizing() end end)
+ Minimap:SetScript('OnDragStart', function() if(self.unlocked) then Minimap:StartMoving() end end)
+ MinimapCluster:EnableMouse(false)
+
+ -- Modules
+ if(self.db.durability) then
+ DurabilityFrame:SetAlpha(0)
+
+ self:RegisterEvent('UPDATE_INVENTORY_ALERTS')
+ self.UPDATE_INVENTORY_ALERTS()
+ end
+
+ if(self.db.coordinates) then
+ self:Coordinates()
+ end
+--[[
+ if(self.db.clock) then
+ self:Clock()
+ else
+ TimeManagerClockButton:Hide()
+ end --]]
+end
+
+function addon.Command(str)
+ if(str == 'reset') then
+ pMinimapDB = defaults
+ print('|cffff8080pMinimap:|r Settings reset. You should reload/relog to affect changes.')
+ else
+ InterfaceOptionsFrame_OpenToCategory(addon:GetName())
+ end
+end
+
+function addon:ADDON_LOADED(event, name)
+ if(name ~= self:GetName()) then return end
+
+ SharedMedia:Register('font', 'Visitor TT1', [=[Interface\AddOns\pMinimap\media\font.ttf]=])
+
+ SLASH_pMinimap1 = '/pmm'
+ SLASH_pMinimap2 = '/pminimap'
+ SlashCmdList[name] = self.Command
+
+ self.db = setmetatable(pMinimapDB or {}, {__index = defaults})
+ self:UnregisterEvent(event)
+ self:RegisterEvent('ZONE_CHANGED_NEW_AREA')
+-- self:RegisterEvent('PLAYER_LOGOUT')
+
+ self:Style()
+end
+
+--function addon:PLAYER_LOGOUT()
+-- pMinimapDB = self.db
+--end
+
+function addon:CALENDAR_UPDATE_PENDING_INVITES()
+ if(CalendarGetNumPendingInvites() ~= 0) then
+ TimeManagerClockTicker:SetTextColor(0, 1, 0)
+ else
+ TimeManagerClockTicker:SetTextColor(1, 1, 1)
+ end
+end
+
+function addon:UPDATE_INVENTORY_ALERTS()
+ local highstatus = 0
+ for k in next, INVENTORY_ALERT_STATUS_SLOTS do
+ local status = GetInventoryAlertStatus(k)
+ highstatus = status > highstatus and status
+ end
+
+ local color = INVENTORY_ALERT_COLORS[highstatus]
+ if(color) then
+ Minimap:SetBackdropColor(color.r, color.g, color.b)
+ else
+ Minimap:SetBackdropColor(unpack(self.db.bordercolors))
+ end
+end
+
+function addon:ZONE_CHANGED_NEW_AREA()
+ SetMapToCurrentZone()
+end
+
+-- http://www.wowwiki.com/GetMinimapShape
+function GetMinimapShape() return 'SQUARE' end
diff --git a/pMinimap.toc b/pMinimap.toc
index ab8a4c3..8d9a5ad 100644
--- a/pMinimap.toc
+++ b/pMinimap.toc
@@ -1,17 +1,17 @@
-## Interface: 30100
-## Author: p3lim
-## Version: Alpha
-## Title: |cffff6000p|rMinimap
-## Notes: Yet another square minimap addon
-## SavedVariablesPerCharacter: pMinimapDB
-## OptionalDeps: LibSharedMedia-3.0, SharedMedia
-
-libs\LibStub.lua
-libs\CallbackHandler-1.0.lua
-libs\LibSharedMedia-3.0.lua
-
-pMinimap.lua
-
-libs\tekKonfig\tekKonfig.xml
-
+## Interface: 30100
+## Author: p3lim
+## Version: Alpha
+## Title: |cffff6000p|rMinimap
+## Notes: Yet another square minimap addon
+## SavedVariablesPerCharacter: pMinimapDB
+## OptionalDeps: LibSharedMedia-3.0, SharedMedia
+
+libs\LibStub.lua
+libs\CallbackHandler-1.0.lua
+libs\LibSharedMedia-3.0.lua
+
+pMinimap.lua
+
+libs\tekKonfig\tekKonfig.xml
+
pMinimap_Config.lua
\ No newline at end of file