From 2ddd755e2118ace7b7377d5e534d1bc0778ed314 Mon Sep 17 00:00:00 2001 From: Adrian L Lange Date: Thu, 6 Aug 2009 05:42:19 +0200 Subject: [PATCH] Redo directories and update .toc file - This diff is a mess for sure --- libs/CallbackHandler-1.0.lua | 239 +++++++++++++++++++++++++++ libs/LibSharedMedia-3.0.lua | 230 ++++++++++++++++++++++++++ libs/LibStub.lua | 30 ++++ media/font.ttf | Bin 0 -> 27552 bytes pMinimap.lua | 306 +++++++++++++++++++++++++++++++++++ pMinimap.toc | 15 ++ pMinimap/font.ttf | Bin 27552 -> 0 bytes pMinimap/pMinimap.lua | 306 ----------------------------------- pMinimap/pMinimap.toc | 13 -- pMinimap_Config.lua | 1 + pMinimap_Config/pMinimap_Config.lua | 1 - pMinimap_Config/pMinimap_Config.toc | 13 -- 12 files changed, 821 insertions(+), 333 deletions(-) create mode 100644 libs/CallbackHandler-1.0.lua create mode 100644 libs/LibSharedMedia-3.0.lua create mode 100644 libs/LibStub.lua create mode 100644 media/font.ttf create mode 100644 pMinimap.lua create mode 100644 pMinimap.toc delete mode 100644 pMinimap/font.ttf delete mode 100644 pMinimap/pMinimap.lua delete mode 100644 pMinimap/pMinimap.toc create mode 100644 pMinimap_Config.lua delete mode 100644 pMinimap_Config/pMinimap_Config.lua delete mode 100644 pMinimap_Config/pMinimap_Config.toc diff --git a/libs/CallbackHandler-1.0.lua b/libs/CallbackHandler-1.0.lua new file mode 100644 index 0000000..ca21919 --- /dev/null +++ b/libs/CallbackHandler-1.0.lua @@ -0,0 +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. + diff --git a/libs/LibSharedMedia-3.0.lua b/libs/LibSharedMedia-3.0.lua new file mode 100644 index 0000000..ef062a0 --- /dev/null +++ b/libs/LibSharedMedia-3.0.lua @@ -0,0 +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 diff --git a/libs/LibStub.lua b/libs/LibStub.lua new file mode 100644 index 0000000..cfc97de --- /dev/null +++ b/libs/LibStub.lua @@ -0,0 +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 diff --git a/media/font.ttf b/media/font.ttf new file mode 100644 index 0000000000000000000000000000000000000000..04ce123d4bbfbe14c4e60982181804b847a96025 GIT binary patch literal 27552 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 Ps8Xvx0u{mUV6OhZx}kpw literal 0 HcmV?d00001 diff --git a/pMinimap.lua b/pMinimap.lua new file mode 100644 index 0000000..f359a98 --- /dev/null +++ b/pMinimap.lua @@ -0,0 +1,306 @@ +--[[ + + 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. + +--]] + +pMinimap = CreateFrame('Frame', 'pMinimap', UIParent) +pMinimap:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end) +pMinimap:RegisterEvent('ADDON_LOADED') + +local LSM = LibStub('LibSharedMedia-3.0') + +local onUpdate, onClickClock, onClickCoord, onMouseWheel +local defaults = { + coords = false, + coordsDecimals = 0, + clock = true, + dura = true, + mail = true, + subzone = false, + unlocked = false, + scale = 0.9, + offset = 1, + level = 2, + strata = 'BACKGROUND', + smfont = 'Visitor TT1', + fontsize = 13, + fontflag = 'OUTLINE', + colors = {0, 0, 0, 1}, + zone = false, + zonePoint = 'TOP', + zoneOffset = 8, +} + +do + local total = 0.25 + function onUpdate(self, elapsed) + if(total) then + total = total - elapsed + if(total <= 0) then + total = 0.25 + + local x, y = GetPlayerMapPosition('player') + if(x ~= 0 and y ~= 0) then + self.Text:SetFormattedText('%.'..pMinimapDB.coordsDecimals..'f,%.'..pMinimapDB.coordsDecimals..'f', x * 100, y * 100) + else + self.Text:SetText() + end + end + end + end + + function onClickClock(self, button) + if(button == 'RightButton') then + ToggleCalendar() + else + if(self.alarmFiring) then + PlaySound('igMainMenuQuit') + TimeManager_TurnOffAlarm() + else + ToggleTimeManager() + end + end + end + + function onClickCoord(self, button) + if(button == 'RightButton') then + ToggleBattlefieldMinimap() + else + ToggleFrame(WorldMapFrame) + end + end + + function onMouseWheel(self, dir) + if(dir > 0) then + MinimapZoomIn:Click() + else + MinimapZoomOut:Click() + end + end +end + + +local function slashHandler(str) + if(str == 'reset') then + pMinimapDB = {} + print('|cffff8080pMinimap:|r Savedvariables is now reset. You should reload/relog to affect changes.') + elseif(str == 'refresh') then + Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=]) + print('|cffff8080pMinimap:|r Minimap mask is now refreshed.') + else + if(not IsAddOnLoaded('pMinimap_Config')) then + LoadAddOn('pMinimap_Config') + end + InterfaceOptionsFrame_OpenToCategory('pMinimap') + end +end + +local function optionsPanel(self) + if(not IsAddOnLoaded('pMinimap_Config')) then + LoadAddOn('pMinimap_Config') + end + self:SetScript('OnShow', nil) + + InterfaceOptionsDisplayPanelShowClock:Disable() + InterfaceOptionsDisplayPanelShowClock:Hide() +end + +local function Initialize(self) + Minimap:EnableMouseWheel() + Minimap:SetScript('OnMouseWheel', onMouseWheel) + MinimapZoomIn:Hide() + MinimapZoomOut:Hide() + + MiniMapTrackingBackground:Hide() + MiniMapTrackingButton:SetHighlightTexture('') + MiniMapTrackingButtonBorder:SetTexture('') + MiniMapTrackingIcon:SetTexCoord(0.065, 0.935, 0.065, 0.935) + MiniMapTrackingIconOverlay:SetTexture('') + MiniMapTracking:SetParent(Minimap) + MiniMapTracking:ClearAllPoints() + MiniMapTracking:SetPoint('TOPLEFT', -2, 2) + + BattlegroundShine:Hide() + MiniMapBattlefieldBorder:SetTexture('') + MiniMapBattlefieldFrame:SetParent(Minimap) + MiniMapBattlefieldFrame:ClearAllPoints() + MiniMapBattlefieldFrame:SetPoint('TOPRIGHT', -2, -2) + + MiniMapMailBorder:SetTexture('') + MiniMapMailFrame:SetParent(Minimap) + MiniMapMailFrame:ClearAllPoints() + MiniMapMailFrame:SetPoint('TOP', 0, -4) + MiniMapMailFrame:SetHeight(8) + + MiniMapMailText = MiniMapMailFrame:CreateFontString(nil, 'OVERLAY') + MiniMapMailText:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) + MiniMapMailText:SetPoint('BOTTOM', 0, 2) + MiniMapMailText:SetText('New Mail!') + MiniMapMailText:SetTextColor(1, 1, 1) + + MinimapZoneTextButton:SetParent(Minimap) + MinimapZoneTextButton:ClearAllPoints() + MinimapZoneTextButton:SetPoint(self.db.zonePoint == 'BOTTOM' and 'TOP' or 'BOTTOM', Minimap, self.db.zonePoint, 0, self.db.zoneOffset) + MinimapZoneTextButton:SetWidth(Minimap:GetWidth() * 1.5) + + MinimapZoneText:ClearAllPoints() + MinimapZoneText:SetAllPoints(MinimapZoneTextButton) + MinimapZoneText:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) + MinimapZoneText:SetShadowOffset(0, 0) + + MinimapBorder:SetTexture('') + MinimapBorderTop:Hide() + MinimapToggleButton:Hide() + + GameTimeFrame:Hide() + MiniMapWorldMapButton:Hide() + MiniMapMeetingStoneFrame:SetAlpha(0) + MiniMapVoiceChatFrame:Hide() + MiniMapVoiceChatFrame.Show = MiniMapVoiceChatFrame.Hide + MinimapNorthTag:SetAlpha(0) + + 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.offset, left = - self.db.offset, bottom = - self.db.offset, right = - self.db.offset}}) + Minimap:SetBackdropColor(unpack(self.db.colors)) + + MinimapCluster:EnableMouse(false) + Minimap:SetMovable(true) + Minimap:RegisterForDrag('LeftButton') + Minimap:SetScript('OnDragStop', function() if(pMinimapDB.unlocked) then Minimap:StopMovingOrSizing() end end) + Minimap:SetScript('OnDragStart', function() if(pMinimapDB.unlocked) then Minimap:StartMoving() end end) + + if(not self.db.zone) then + MinimapZoneTextButton:Hide() + end + + if(self.db.dura) then + DurabilityFrame:SetAlpha(0) + + self:RegisterEvent('UPDATE_INVENTORY_ALERTS') + self.UPDATE_INVENTORY_ALERTS() + end + + if(self.db.coords) then + self:CreateCoords() + end + + if(self.db.clock) then + self:CreateClock() + else + TimeManagerClockButton:Hide() + end + + if(self.db.mail) then + MiniMapMailIcon:Hide() + else + MiniMapMailText:Hide() + end +end + + +function pMinimap:CreateClock() + TimeManager_LoadUI() + + TimeManagerClockButton:SetWidth(40) + TimeManagerClockButton:SetHeight(14) + TimeManagerClockButton:ClearAllPoints() + TimeManagerClockButton:SetPoint(self.db.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) + TimeManagerClockButton:GetRegions():Hide() + TimeManagerClockButton:Show() + TimeManagerClockButton:SetScript('OnClick', onClickClock) + + TimeManagerClockTicker:SetPoint('CENTER', TimeManagerClockButton) + TimeManagerClockTicker:SetFont(LSM:Fetch('font', self.db.smfont), 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() + + self.RunClock = true +end + +function pMinimap:CreateCoords() + self.Coord = CreateFrame('Button', nil, Minimap) + self.Coord:SetPoint(self.db.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) + self.Coord:SetWidth(40) + self.Coord:SetHeight(14) + self.Coord:RegisterForClicks('AnyUp') + + self.Coord.Text = self.Coord:CreateFontString(nil, 'OVERLAY') + self.Coord.Text:SetPoint('BOTTOMRIGHT', self.Coord) + self.Coord.Text:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) + self.Coord.Text:SetTextColor(1, 1, 1) + + self.Coord:SetScript('OnClick', onClickCoord) + self.Coord:SetScript('OnUpdate', onUpdate) + + self:RegisterEvent('ZONE_CHANGED_NEW_AREA') +end + + +function pMinimap:ADDON_LOADED(event, addon) + if(addon ~= 'pMinimap') then return end + + CreateFrame('Frame', nil, InterfaceOptionsFrame):SetScript('OnShow', optionsPanel) + LSM:Register('font', 'Visitor TT1', [=[Interface\AddOns\pMinimap\font.ttf]=]) + + SLASH_PMINIMAP1 = '/pmm' + SLASH_PMINIMAP2 = '/pminimap' + SlashCmdList.PMINIMAP = slashHandler + + pMinimapDB = setmetatable(pMinimapDB or {}, {__index = defaults}) + pMinimapDB.unlocked = false + + self.db = pMinimapDB + self:UnregisterEvent(event) + + InterfaceOptionsDisplayPanelShowClock.setFunc('1') + InterfaceOptionsDisplayPanelShowClock.setFunc = function() end + + Initialize(self) +end + +function pMinimap:CALENDAR_UPDATE_PENDING_INVITES() + if(CalendarGetNumPendingInvites() ~= 0) then + TimeManagerClockTicker:SetTextColor(0, 1, 0) + else + TimeManagerClockTicker:SetTextColor(1, 1, 1) + end +end + +function pMinimap:ZONE_CHANGED_NEW_AREA() + SetMapToCurrentZone() +end + +function pMinimap:UPDATE_INVENTORY_ALERTS() + local highstatus = 0 + for i in next, INVENTORY_ALERT_STATUS_SLOTS do + local status = GetInventoryAlertStatus(i) + if(status > highstatus) then + highstatus = status + end + end + + local color = INVENTORY_ALERT_COLORS[highstatus] + if(color) then + Minimap:SetBackdropColor(color.r, color.g, color.b) + else + Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) + end +end + + +-- http://www.wowwiki.com/GetMinimapShape +function GetMinimapShape() return 'SQUARE' end \ No newline at end of file diff --git a/pMinimap.toc b/pMinimap.toc new file mode 100644 index 0000000..637a070 --- /dev/null +++ b/pMinimap.toc @@ -0,0 +1,15 @@ +## 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 + +pMinimap_Config.lua \ No newline at end of file diff --git a/pMinimap/font.ttf b/pMinimap/font.ttf deleted file mode 100644 index 04ce123d4bbfbe14c4e60982181804b847a96025..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27552 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 Ps8Xvx0u{mUV6OhZx}kpw diff --git a/pMinimap/pMinimap.lua b/pMinimap/pMinimap.lua deleted file mode 100644 index f359a98..0000000 --- a/pMinimap/pMinimap.lua +++ /dev/null @@ -1,306 +0,0 @@ ---[[ - - 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. - ---]] - -pMinimap = CreateFrame('Frame', 'pMinimap', UIParent) -pMinimap:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end) -pMinimap:RegisterEvent('ADDON_LOADED') - -local LSM = LibStub('LibSharedMedia-3.0') - -local onUpdate, onClickClock, onClickCoord, onMouseWheel -local defaults = { - coords = false, - coordsDecimals = 0, - clock = true, - dura = true, - mail = true, - subzone = false, - unlocked = false, - scale = 0.9, - offset = 1, - level = 2, - strata = 'BACKGROUND', - smfont = 'Visitor TT1', - fontsize = 13, - fontflag = 'OUTLINE', - colors = {0, 0, 0, 1}, - zone = false, - zonePoint = 'TOP', - zoneOffset = 8, -} - -do - local total = 0.25 - function onUpdate(self, elapsed) - if(total) then - total = total - elapsed - if(total <= 0) then - total = 0.25 - - local x, y = GetPlayerMapPosition('player') - if(x ~= 0 and y ~= 0) then - self.Text:SetFormattedText('%.'..pMinimapDB.coordsDecimals..'f,%.'..pMinimapDB.coordsDecimals..'f', x * 100, y * 100) - else - self.Text:SetText() - end - end - end - end - - function onClickClock(self, button) - if(button == 'RightButton') then - ToggleCalendar() - else - if(self.alarmFiring) then - PlaySound('igMainMenuQuit') - TimeManager_TurnOffAlarm() - else - ToggleTimeManager() - end - end - end - - function onClickCoord(self, button) - if(button == 'RightButton') then - ToggleBattlefieldMinimap() - else - ToggleFrame(WorldMapFrame) - end - end - - function onMouseWheel(self, dir) - if(dir > 0) then - MinimapZoomIn:Click() - else - MinimapZoomOut:Click() - end - end -end - - -local function slashHandler(str) - if(str == 'reset') then - pMinimapDB = {} - print('|cffff8080pMinimap:|r Savedvariables is now reset. You should reload/relog to affect changes.') - elseif(str == 'refresh') then - Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=]) - print('|cffff8080pMinimap:|r Minimap mask is now refreshed.') - else - if(not IsAddOnLoaded('pMinimap_Config')) then - LoadAddOn('pMinimap_Config') - end - InterfaceOptionsFrame_OpenToCategory('pMinimap') - end -end - -local function optionsPanel(self) - if(not IsAddOnLoaded('pMinimap_Config')) then - LoadAddOn('pMinimap_Config') - end - self:SetScript('OnShow', nil) - - InterfaceOptionsDisplayPanelShowClock:Disable() - InterfaceOptionsDisplayPanelShowClock:Hide() -end - -local function Initialize(self) - Minimap:EnableMouseWheel() - Minimap:SetScript('OnMouseWheel', onMouseWheel) - MinimapZoomIn:Hide() - MinimapZoomOut:Hide() - - MiniMapTrackingBackground:Hide() - MiniMapTrackingButton:SetHighlightTexture('') - MiniMapTrackingButtonBorder:SetTexture('') - MiniMapTrackingIcon:SetTexCoord(0.065, 0.935, 0.065, 0.935) - MiniMapTrackingIconOverlay:SetTexture('') - MiniMapTracking:SetParent(Minimap) - MiniMapTracking:ClearAllPoints() - MiniMapTracking:SetPoint('TOPLEFT', -2, 2) - - BattlegroundShine:Hide() - MiniMapBattlefieldBorder:SetTexture('') - MiniMapBattlefieldFrame:SetParent(Minimap) - MiniMapBattlefieldFrame:ClearAllPoints() - MiniMapBattlefieldFrame:SetPoint('TOPRIGHT', -2, -2) - - MiniMapMailBorder:SetTexture('') - MiniMapMailFrame:SetParent(Minimap) - MiniMapMailFrame:ClearAllPoints() - MiniMapMailFrame:SetPoint('TOP', 0, -4) - MiniMapMailFrame:SetHeight(8) - - MiniMapMailText = MiniMapMailFrame:CreateFontString(nil, 'OVERLAY') - MiniMapMailText:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) - MiniMapMailText:SetPoint('BOTTOM', 0, 2) - MiniMapMailText:SetText('New Mail!') - MiniMapMailText:SetTextColor(1, 1, 1) - - MinimapZoneTextButton:SetParent(Minimap) - MinimapZoneTextButton:ClearAllPoints() - MinimapZoneTextButton:SetPoint(self.db.zonePoint == 'BOTTOM' and 'TOP' or 'BOTTOM', Minimap, self.db.zonePoint, 0, self.db.zoneOffset) - MinimapZoneTextButton:SetWidth(Minimap:GetWidth() * 1.5) - - MinimapZoneText:ClearAllPoints() - MinimapZoneText:SetAllPoints(MinimapZoneTextButton) - MinimapZoneText:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) - MinimapZoneText:SetShadowOffset(0, 0) - - MinimapBorder:SetTexture('') - MinimapBorderTop:Hide() - MinimapToggleButton:Hide() - - GameTimeFrame:Hide() - MiniMapWorldMapButton:Hide() - MiniMapMeetingStoneFrame:SetAlpha(0) - MiniMapVoiceChatFrame:Hide() - MiniMapVoiceChatFrame.Show = MiniMapVoiceChatFrame.Hide - MinimapNorthTag:SetAlpha(0) - - 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.offset, left = - self.db.offset, bottom = - self.db.offset, right = - self.db.offset}}) - Minimap:SetBackdropColor(unpack(self.db.colors)) - - MinimapCluster:EnableMouse(false) - Minimap:SetMovable(true) - Minimap:RegisterForDrag('LeftButton') - Minimap:SetScript('OnDragStop', function() if(pMinimapDB.unlocked) then Minimap:StopMovingOrSizing() end end) - Minimap:SetScript('OnDragStart', function() if(pMinimapDB.unlocked) then Minimap:StartMoving() end end) - - if(not self.db.zone) then - MinimapZoneTextButton:Hide() - end - - if(self.db.dura) then - DurabilityFrame:SetAlpha(0) - - self:RegisterEvent('UPDATE_INVENTORY_ALERTS') - self.UPDATE_INVENTORY_ALERTS() - end - - if(self.db.coords) then - self:CreateCoords() - end - - if(self.db.clock) then - self:CreateClock() - else - TimeManagerClockButton:Hide() - end - - if(self.db.mail) then - MiniMapMailIcon:Hide() - else - MiniMapMailText:Hide() - end -end - - -function pMinimap:CreateClock() - TimeManager_LoadUI() - - TimeManagerClockButton:SetWidth(40) - TimeManagerClockButton:SetHeight(14) - TimeManagerClockButton:ClearAllPoints() - TimeManagerClockButton:SetPoint(self.db.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) - TimeManagerClockButton:GetRegions():Hide() - TimeManagerClockButton:Show() - TimeManagerClockButton:SetScript('OnClick', onClickClock) - - TimeManagerClockTicker:SetPoint('CENTER', TimeManagerClockButton) - TimeManagerClockTicker:SetFont(LSM:Fetch('font', self.db.smfont), 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() - - self.RunClock = true -end - -function pMinimap:CreateCoords() - self.Coord = CreateFrame('Button', nil, Minimap) - self.Coord:SetPoint(self.db.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) - self.Coord:SetWidth(40) - self.Coord:SetHeight(14) - self.Coord:RegisterForClicks('AnyUp') - - self.Coord.Text = self.Coord:CreateFontString(nil, 'OVERLAY') - self.Coord.Text:SetPoint('BOTTOMRIGHT', self.Coord) - self.Coord.Text:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) - self.Coord.Text:SetTextColor(1, 1, 1) - - self.Coord:SetScript('OnClick', onClickCoord) - self.Coord:SetScript('OnUpdate', onUpdate) - - self:RegisterEvent('ZONE_CHANGED_NEW_AREA') -end - - -function pMinimap:ADDON_LOADED(event, addon) - if(addon ~= 'pMinimap') then return end - - CreateFrame('Frame', nil, InterfaceOptionsFrame):SetScript('OnShow', optionsPanel) - LSM:Register('font', 'Visitor TT1', [=[Interface\AddOns\pMinimap\font.ttf]=]) - - SLASH_PMINIMAP1 = '/pmm' - SLASH_PMINIMAP2 = '/pminimap' - SlashCmdList.PMINIMAP = slashHandler - - pMinimapDB = setmetatable(pMinimapDB or {}, {__index = defaults}) - pMinimapDB.unlocked = false - - self.db = pMinimapDB - self:UnregisterEvent(event) - - InterfaceOptionsDisplayPanelShowClock.setFunc('1') - InterfaceOptionsDisplayPanelShowClock.setFunc = function() end - - Initialize(self) -end - -function pMinimap:CALENDAR_UPDATE_PENDING_INVITES() - if(CalendarGetNumPendingInvites() ~= 0) then - TimeManagerClockTicker:SetTextColor(0, 1, 0) - else - TimeManagerClockTicker:SetTextColor(1, 1, 1) - end -end - -function pMinimap:ZONE_CHANGED_NEW_AREA() - SetMapToCurrentZone() -end - -function pMinimap:UPDATE_INVENTORY_ALERTS() - local highstatus = 0 - for i in next, INVENTORY_ALERT_STATUS_SLOTS do - local status = GetInventoryAlertStatus(i) - if(status > highstatus) then - highstatus = status - end - end - - local color = INVENTORY_ALERT_COLORS[highstatus] - if(color) then - Minimap:SetBackdropColor(color.r, color.g, color.b) - else - Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) - end -end - - --- http://www.wowwiki.com/GetMinimapShape -function GetMinimapShape() return 'SQUARE' end \ No newline at end of file diff --git a/pMinimap/pMinimap.toc b/pMinimap/pMinimap.toc deleted file mode 100644 index 043d3ae..0000000 --- a/pMinimap/pMinimap.toc +++ /dev/null @@ -1,13 +0,0 @@ -## Interface: 30100 -## Author: p3lim -## Version: 30100.wowi:revision -## Title: |cffff6000p|rMinimap -## Notes: Yet another square minimap addon -## SavedVariablesPerCharacter: pMinimapDB -## OptionalDeps: Ace3, LibSharedMedia-3.0, SharedMedia - -libs\LibStub\LibStub.lua -libs\CallbackHandler-1.0\CallbackHandler-1.0.xml -libs\LibSharedMedia-3.0\Lib.xml - -pMinimap.lua \ No newline at end of file diff --git a/pMinimap_Config.lua b/pMinimap_Config.lua new file mode 100644 index 0000000..afe9d2a --- /dev/null +++ b/pMinimap_Config.lua @@ -0,0 +1 @@ +--[[ 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 LSM = LibStub('LibSharedMedia-3.0') local list = LSM:List('font') local function AddToFontStrings() MiniMapMailText:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) MinimapZoneText:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) if(pMinimapDB.clock) then TimeManagerClockTicker:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) end if(pMinimapDB.coords) then pMinimap.Coord.Text:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) end end LibStub('AceConfigDialog-3.0'):AddToBlizOptions('pMinimap', 'pMinimap') LibStub('AceConfig-3.0'):RegisterOptionsTable('pMinimap', { name = 'pMinimap Options', type = 'group', args = { mapheader = { name = 'Minimap options', type = 'header', order = 0, }, scale = { type = 'range', order = 1, name = 'Minimap Scale', min = 0.50, max = 2.50, step = 0.01, get = function() return pMinimapDB.scale end, set = function(_, value) pMinimapDB.scale = value Minimap:SetScale(value) end, }, lock = { type = 'toggle', order = 2, name = 'Unlocked', get = function() return pMinimapDB.unlocked end, set = function() pMinimapDB.unlocked = not pMinimapDB.unlocked if(pMinimapDB.unlocked) then Minimap:SetBackdropColor(0, 1, 0, 0.5) else Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end end }, level = { type = 'range', order = 3, name = 'Frame level', min = 1, max = 15, step = 1, get = function() return pMinimapDB.level end, set = function(_, value) pMinimapDB.level = value Minimap:SetFrameLevel(value) end }, strata = { type = 'select', order = 4, name = 'Frame Strata', values = {['DIALOG'] = 'DIALOG', ['HIGH'] = 'HIGH', ['MEDIUM'] = 'MEDIUM', ['LOW'] = 'LOW', ['BACKGROUND'] = 'BACKGROUND'}, get = function() return pMinimapDB.strata end, set = function(_, strata) pMinimapDB.strata = strata Minimap:SetFrameStrata(strata) end }, mischeader = { name = 'Misc modules', type = 'header', order = 5, }, clock = { type = 'toggle', order = 6, name = 'Clock', get = function() return pMinimapDB.clock end, set = function() pMinimapDB.clock = not pMinimapDB.clock if(pMinimapDB.clock) then if(not pMinimap.RunClock) then pMinimap:CreateClock() else TimeManagerClockButton:Show() TimeManagerClockButton:ClearAllPoints() TimeManagerClockButton:SetPoint(pMinimapDB.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) end pMinimap.CALENDAR_UPDATE_PENDING_INVITES() else TimeManagerClockButton:Hide() end if(pMinimapDB.coords) then pMinimap.Coord:ClearAllPoints() pMinimap.Coord:SetPoint(pMinimapDB.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) end end }, coords = { type = 'toggle', order = 7, name = 'Coords', get = function() return pMinimapDB.coords end, set = function() pMinimapDB.coords = not pMinimapDB.coords if(pMinimapDB.coords) then if(not pMinimap.Coord) then pMinimap:CreateCoords() else pMinimap.Coord:Show() pMinimap.Coord:ClearAllPoints() pMinimap.Coord:SetPoint(pMinimapDB.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) end else pMinimap.Coord:Hide() end if(pMinimapDB.clock) then TimeManagerClockButton:ClearAllPoints() TimeManagerClockButton:SetPoint(pMinimapDB.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) end end }, mail = { type = 'toggle', order = 8, name = 'Mail', get = function() return pMinimapDB.mail end, set = function() pMinimapDB.mail = not pMinimapDB.mail if(pMinimapDB.mail) then MiniMapMailIcon:Hide() MiniMapMailText:Show() else MiniMapMailIcon:Show() MiniMapMailText:Hide() end end }, dura = { type = 'toggle', order = 9, name = 'Durability', get = function() return pMinimapDB.dura end, set = function() pMinimapDB.dura = not pMinimapDB.dura if(pMinimapDB.dura) then DurabilityFrame:SetAlpha(0) pMinimap:RegisterEvent('UPDATE_INVENTORY_ALERTS') pMinimap.UPDATE_INVENTORY_ALERTS() else DurabilityFrame:SetAlpha(1) pMinimap:UnregisterEvent('UPDATE_INVENTORY_ALERTS') Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end end }, bgheader = { name = 'Backdrop options', type = 'header', order = 10, }, bgthick = { type = 'range', order = 11, name = 'Backdrop Thickness', min = 0, max = 10, step = 0.5, get = function() return pMinimapDB.offset end, set = function(_, value) pMinimapDB.offset = value Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - value, left = - value, bottom = - value, right = - value}}) Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end }, bgcolor = { type = 'color', order = 12, name = 'Backdrop Color', hasAlpha = true, get = function() return unpack(pMinimapDB.colors) end, set = function(_, r, g, b, a) pMinimapDB.colors = {r, g, b, a} Minimap:SetBackdropColor(r, g, b, a) end }, zoneheader = { name = 'Zone options', type = 'header', order = 13, }, zoneoffset = { type = 'range', order = 14, name = 'ZoneText offset', min = -25, max = 25, step = 0.5, get = function() return pMinimapDB.zoneOffset end, set = function(_, value) pMinimapDB.zoneOffset = value MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint(pMinimapDB.zonePoint == 'TOP' and 'BOTTOM' or 'TOP', Minimap, pMinimapDB.zonePoint, 0, value) end }, zone = { type = 'toggle', order = 15, name = 'ZoneText', get = function() return pMinimapDB.zone end, set = function() pMinimapDB.zone = not pMinimapDB.zone if(pMinimapDB.zone) then MinimapZoneTextButton:Show() else MinimapZoneTextButton:Hide() end end }, zonepoint = { type = 'select', order = 16, name = 'ZoneText point', values = {['TOP'] = 'TOP', ['BOTTOM'] = 'BOTTOM'}, get = function() return pMinimapDB.zonePoint end, set = function(_, point) pMinimapDB.zonePoint = point if(point == 'TOP') then MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint('BOTTOM', Minimap, point, 0, pMinimapDB.zoneOffset) else MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint('TOP', Minimap, point, 0, pMinimapDB.zoneOffset) end end }, fontheader = { name = 'Font options', type = 'header', order = 17, }, font = { type = 'select', order = 18, name = 'Font', values = list, get = function() for k, v in next, list do if(v == pMinimapDB.smfont) then return k end end end, set = function(_, font) pMinimapDB.smfont = list[font] AddToFontStrings() end }, fontflag = { type = 'select', order = 19, name = 'Font flag', values = {['OUTLINE'] = 'OUTLINE', ['THICKOUTLINE'] = 'THICKOUTLINE', ['MONOCHROME'] = 'MONOCHROME', ['NONE'] = 'NONE'}, get = function() return pMinimapDB.fontflag end, set = function(_, flag) pMinimapDB.fontflag = flag AddToFontStrings() end }, fontsize = { type = 'range', order = 20, name = 'Font Size', min = 5, max = 18, step = 1, get = function() return pMinimapDB.fontsize end, set = function(_, value) pMinimapDB.fontsize = value AddToFontStrings() end }, misc2header = { name = 'Misc options', type = 'header', order = 21, }, coordDecimal = { type = 'range', order = 22, name = 'Coords decimals', min = 0, max = 3, step = 1, get = function() return pMinimapDB.coordsDecimals end, set = function(_, value) pMinimapDB.coordsDecimals = value end }, } }) \ No newline at end of file diff --git a/pMinimap_Config/pMinimap_Config.lua b/pMinimap_Config/pMinimap_Config.lua deleted file mode 100644 index afe9d2a..0000000 --- a/pMinimap_Config/pMinimap_Config.lua +++ /dev/null @@ -1 +0,0 @@ ---[[ 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 LSM = LibStub('LibSharedMedia-3.0') local list = LSM:List('font') local function AddToFontStrings() MiniMapMailText:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) MinimapZoneText:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) if(pMinimapDB.clock) then TimeManagerClockTicker:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) end if(pMinimapDB.coords) then pMinimap.Coord.Text:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) end end LibStub('AceConfigDialog-3.0'):AddToBlizOptions('pMinimap', 'pMinimap') LibStub('AceConfig-3.0'):RegisterOptionsTable('pMinimap', { name = 'pMinimap Options', type = 'group', args = { mapheader = { name = 'Minimap options', type = 'header', order = 0, }, scale = { type = 'range', order = 1, name = 'Minimap Scale', min = 0.50, max = 2.50, step = 0.01, get = function() return pMinimapDB.scale end, set = function(_, value) pMinimapDB.scale = value Minimap:SetScale(value) end, }, lock = { type = 'toggle', order = 2, name = 'Unlocked', get = function() return pMinimapDB.unlocked end, set = function() pMinimapDB.unlocked = not pMinimapDB.unlocked if(pMinimapDB.unlocked) then Minimap:SetBackdropColor(0, 1, 0, 0.5) else Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end end }, level = { type = 'range', order = 3, name = 'Frame level', min = 1, max = 15, step = 1, get = function() return pMinimapDB.level end, set = function(_, value) pMinimapDB.level = value Minimap:SetFrameLevel(value) end }, strata = { type = 'select', order = 4, name = 'Frame Strata', values = {['DIALOG'] = 'DIALOG', ['HIGH'] = 'HIGH', ['MEDIUM'] = 'MEDIUM', ['LOW'] = 'LOW', ['BACKGROUND'] = 'BACKGROUND'}, get = function() return pMinimapDB.strata end, set = function(_, strata) pMinimapDB.strata = strata Minimap:SetFrameStrata(strata) end }, mischeader = { name = 'Misc modules', type = 'header', order = 5, }, clock = { type = 'toggle', order = 6, name = 'Clock', get = function() return pMinimapDB.clock end, set = function() pMinimapDB.clock = not pMinimapDB.clock if(pMinimapDB.clock) then if(not pMinimap.RunClock) then pMinimap:CreateClock() else TimeManagerClockButton:Show() TimeManagerClockButton:ClearAllPoints() TimeManagerClockButton:SetPoint(pMinimapDB.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) end pMinimap.CALENDAR_UPDATE_PENDING_INVITES() else TimeManagerClockButton:Hide() end if(pMinimapDB.coords) then pMinimap.Coord:ClearAllPoints() pMinimap.Coord:SetPoint(pMinimapDB.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) end end }, coords = { type = 'toggle', order = 7, name = 'Coords', get = function() return pMinimapDB.coords end, set = function() pMinimapDB.coords = not pMinimapDB.coords if(pMinimapDB.coords) then if(not pMinimap.Coord) then pMinimap:CreateCoords() else pMinimap.Coord:Show() pMinimap.Coord:ClearAllPoints() pMinimap.Coord:SetPoint(pMinimapDB.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) end else pMinimap.Coord:Hide() end if(pMinimapDB.clock) then TimeManagerClockButton:ClearAllPoints() TimeManagerClockButton:SetPoint(pMinimapDB.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) end end }, mail = { type = 'toggle', order = 8, name = 'Mail', get = function() return pMinimapDB.mail end, set = function() pMinimapDB.mail = not pMinimapDB.mail if(pMinimapDB.mail) then MiniMapMailIcon:Hide() MiniMapMailText:Show() else MiniMapMailIcon:Show() MiniMapMailText:Hide() end end }, dura = { type = 'toggle', order = 9, name = 'Durability', get = function() return pMinimapDB.dura end, set = function() pMinimapDB.dura = not pMinimapDB.dura if(pMinimapDB.dura) then DurabilityFrame:SetAlpha(0) pMinimap:RegisterEvent('UPDATE_INVENTORY_ALERTS') pMinimap.UPDATE_INVENTORY_ALERTS() else DurabilityFrame:SetAlpha(1) pMinimap:UnregisterEvent('UPDATE_INVENTORY_ALERTS') Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end end }, bgheader = { name = 'Backdrop options', type = 'header', order = 10, }, bgthick = { type = 'range', order = 11, name = 'Backdrop Thickness', min = 0, max = 10, step = 0.5, get = function() return pMinimapDB.offset end, set = function(_, value) pMinimapDB.offset = value Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - value, left = - value, bottom = - value, right = - value}}) Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end }, bgcolor = { type = 'color', order = 12, name = 'Backdrop Color', hasAlpha = true, get = function() return unpack(pMinimapDB.colors) end, set = function(_, r, g, b, a) pMinimapDB.colors = {r, g, b, a} Minimap:SetBackdropColor(r, g, b, a) end }, zoneheader = { name = 'Zone options', type = 'header', order = 13, }, zoneoffset = { type = 'range', order = 14, name = 'ZoneText offset', min = -25, max = 25, step = 0.5, get = function() return pMinimapDB.zoneOffset end, set = function(_, value) pMinimapDB.zoneOffset = value MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint(pMinimapDB.zonePoint == 'TOP' and 'BOTTOM' or 'TOP', Minimap, pMinimapDB.zonePoint, 0, value) end }, zone = { type = 'toggle', order = 15, name = 'ZoneText', get = function() return pMinimapDB.zone end, set = function() pMinimapDB.zone = not pMinimapDB.zone if(pMinimapDB.zone) then MinimapZoneTextButton:Show() else MinimapZoneTextButton:Hide() end end }, zonepoint = { type = 'select', order = 16, name = 'ZoneText point', values = {['TOP'] = 'TOP', ['BOTTOM'] = 'BOTTOM'}, get = function() return pMinimapDB.zonePoint end, set = function(_, point) pMinimapDB.zonePoint = point if(point == 'TOP') then MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint('BOTTOM', Minimap, point, 0, pMinimapDB.zoneOffset) else MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint('TOP', Minimap, point, 0, pMinimapDB.zoneOffset) end end }, fontheader = { name = 'Font options', type = 'header', order = 17, }, font = { type = 'select', order = 18, name = 'Font', values = list, get = function() for k, v in next, list do if(v == pMinimapDB.smfont) then return k end end end, set = function(_, font) pMinimapDB.smfont = list[font] AddToFontStrings() end }, fontflag = { type = 'select', order = 19, name = 'Font flag', values = {['OUTLINE'] = 'OUTLINE', ['THICKOUTLINE'] = 'THICKOUTLINE', ['MONOCHROME'] = 'MONOCHROME', ['NONE'] = 'NONE'}, get = function() return pMinimapDB.fontflag end, set = function(_, flag) pMinimapDB.fontflag = flag AddToFontStrings() end }, fontsize = { type = 'range', order = 20, name = 'Font Size', min = 5, max = 18, step = 1, get = function() return pMinimapDB.fontsize end, set = function(_, value) pMinimapDB.fontsize = value AddToFontStrings() end }, misc2header = { name = 'Misc options', type = 'header', order = 21, }, coordDecimal = { type = 'range', order = 22, name = 'Coords decimals', min = 0, max = 3, step = 1, get = function() return pMinimapDB.coordsDecimals end, set = function(_, value) pMinimapDB.coordsDecimals = value end }, } }) \ No newline at end of file diff --git a/pMinimap_Config/pMinimap_Config.toc b/pMinimap_Config/pMinimap_Config.toc deleted file mode 100644 index 4b9c8d6..0000000 --- a/pMinimap_Config/pMinimap_Config.toc +++ /dev/null @@ -1,13 +0,0 @@ -## Interface: 30100 -## Author: p3lim -## Version: 30100.wowi:revision -## Title: |cffff6000p|rMinimap_Config -## Notes: Options module for pMinimap -## RequiredDeps: pMinimap -## LoadOnDemand: 1 - -libs\LibStub\LibStub.lua -libs\AceGUI-3.0\AceGUI-3.0.xml -libs\AceConfig-3.0\AceConfig-3.0.xml - -pMinimap_Config.lua \ No newline at end of file -- 1.7.9.5