From 89715aa3368a66a2be66d1a9cd648fad6ba6bd2e Mon Sep 17 00:00:00 2001 From: Xinhuan Date: Sat, 11 Oct 2008 00:03:53 +0800 Subject: [PATCH] Add optional LibFuBarPlugin-3.0 support (if detected). --- Localization/enUS.lua | 13 +++++ Omen.lua | 130 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 125 insertions(+), 18 deletions(-) diff --git a/Localization/enUS.lua b/Localization/enUS.lua index a20b5c5..06aad5a 100644 --- a/Localization/enUS.lua +++ b/Localization/enUS.lua @@ -120,6 +120,19 @@ L["Center Omen"] = true L["Configure"] = true L["Open the configuration dialog"] = true +-- For Fubar +L["Click|r to toggle the Omen window"] = true +L["Right-click|r to open the options menu"] = true +L["FuBar Options"] = true +L["Attach to minimap"] = true +L["Hide minimap/FuBar icon"] = true +L["Show icon"] = true +L["Show text"] = true +L["Position"] = true +L["Left"] = true +L["Center"] = true +L["Right"] = true + -- FAQ L["Help File"] = true L["A collection of help pages"] = true diff --git a/Omen.lua b/Omen.lua index a4127f1..03039b2 100644 --- a/Omen.lua +++ b/Omen.lua @@ -118,6 +118,10 @@ local defaults = { ["WARLOCK"] = true, ["WARRIOR"] = true }, + FuBar = { + HideMinimapButton = true, + AttachMinimap = false, + }, }, } local guidNameLookup = {} -- Format: guidNameLookup[guid] = "Unit Name" @@ -300,6 +304,34 @@ function Omen:PLAYER_LOGIN() end, }) end + + -- Optional launcher support for LFBP-3.0 if present, this code is placed here so + -- that it runs after all other addons have loaded since we don't embed LFBP-3.0 + -- Yes, this is one big hack since LFBP-3.0 is a Rock library, and we embed it + -- via Ace3. OnEmbedInitialize() needs to be called manually. + if LibStub:GetLibrary("LibFuBarPlugin-3.0", true) then + local LFBP = LibStub:GetLibrary("LibFuBarPlugin-3.0") + LibStub("AceAddon-3.0"):EmbedLibrary(self, "LibFuBarPlugin-3.0") + self:SetFuBarOption("tooltipType", "GameTooltip") + self:SetFuBarOption("hasNoColor", true) + self:SetFuBarOption("cannotDetachTooltip", true) + self:SetFuBarOption("hideWithoutStandby", true) + self:SetFuBarOption("iconPath", [[Interface\AddOns\Omen\icon]]) + self:SetFuBarOption("hasIcon", true) + self:SetFuBarOption("defaultPosition", "RIGHT") + self:SetFuBarOption("tooltipHiddenWhenEmpty", true) + LFBP:OnEmbedInitialize(self) + function Omen:OnUpdateFuBarTooltip() + GameTooltip:AddLine("|cffffff00" .. L["Click|r to toggle the Omen window"]) + GameTooltip:AddLine("|cffffff00" .. L["Right-click|r to open the options menu"]) + end + function Omen:OnFuBarClick(button) + self:Toggle() + end + self.OpenMenu = self.ShowConfig + self.optionsFrames["FuBar"] = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", L["FuBar Options"], "Omen", "FuBar") + self:UpdateFuBarSettings() + end end function Omen:OnEnable() @@ -341,6 +373,7 @@ function Omen:OnProfileChanged(event, database, newProfileKey) self:UpdateBarLabelSettings() self:UpdateVisible() self:UpdateBars() + self:UpdateFuBarSettings() end function Omen:SetAnchors(useDB) @@ -409,12 +442,7 @@ function Omen:UpdateVisible() self:Toggle(show) end -local bgFrame = { - tile = true, - tileSize = 32, - edgeSize = 8, - insets = {left = 2, right = 2, top = 2, bottom = 2} -} +local bgFrame = {insets = {}} function Omen:UpdateBackdrop() bgFrame.bgFile = LSM:Fetch("background", db.Background.Texture) bgFrame.edgeFile = LSM:Fetch("border", db.Background.BorderTexture) @@ -465,6 +493,16 @@ function Omen:UpdateTitleBar() end end +function Omen:UpdateFuBarSettings() + if LibStub:GetLibrary("LibFuBarPlugin-3.0", true) then + if self:IsFuBarMinimapAttached() ~= db.FuBar.AttachMinimap then + self:ToggleFuBarMinimapAttached() + end + if db.FuBar.HideMinimapButton then self:Hide() else self:Show() end + end +end + + ----------------------------------------------------------------------------- -- Omen bar stuff @@ -900,13 +938,8 @@ local outlines = { ["THICKOUTLINE"] = L["Thick Outline"], } -local function GetLSMIndex(t, value) - for k, v in pairs(LSM:List(t)) do - if v == value then - return k - end - end - return nil +local function GetFuBarMinimapAttachedStatus(info) + return Omen:IsFuBarMinimapAttached() or db.FuBar.HideMinimapButton end local options = { @@ -1341,6 +1374,68 @@ local options = { }, }, }, + FuBar = { + type = "group", + name = L["FuBar Options"], + desc = L["FuBar Options"], + hidden = function() return Omen.IsFuBarMinimapAttached == nil end, + args = { + attachMinimap = { + type = "toggle", + order = 1, + name = L["Attach to minimap"], + desc = L["Attach to minimap"], + get = function(info) return Omen:IsFuBarMinimapAttached() end, + set = function(info, v) + Omen:ToggleFuBarMinimapAttached() + db.FuBar.AttachMinimap = Omen:IsFuBarMinimapAttached() + end, + }, + hideIcon = { + type = "toggle", + order = 2, + name = L["Hide minimap/FuBar icon"], + desc = L["Hide minimap/FuBar icon"], + get = function(info) return db.FuBar.HideMinimapButton end, + set = function(info, v) + db.FuBar.HideMinimapButton = v + if v then Omen:Hide() else Omen:Show() end + end, + }, + showIcon = { + type = "toggle", + order = 3, + name = L["Show icon"], + desc = L["Show icon"], + get = function(info) return Omen:IsFuBarIconShown() end, + set = function(info, v) Omen:ToggleFuBarIconShown() end, + disabled = GetFuBarMinimapAttachedStatus, + }, + showText = { + type = "toggle", + order = 4, + name = L["Show text"], + desc = L["Show text"], + get = function(info) return Omen:IsFuBarTextShown() end, + set = function(info, v) Omen:ToggleFuBarTextShown() end, + disabled = GetFuBarMinimapAttachedStatus, + }, + position = { + type = "select", + order = 5, + name = L["Position"], + desc = L["Position"], + values = {LEFT = L["Left"], CENTER = L["Center"], RIGHT = L["Right"]}, + get = function() return Omen:GetPanel() and Omen:GetPanel():GetPluginSide(Omen) end, + set = function(info, val) + if Omen:GetPanel() and Omen:GetPanel().SetPluginSide then + Omen:GetPanel():SetPluginSide(Omen, val) + end + end, + disabled = GetFuBarMinimapAttachedStatus, + } + } + }, Help = { type = "group", name = L["Help File"], @@ -1434,13 +1529,12 @@ function Omen:SetupOptions() LibStub("AceConfigRegistry-3.0"):RegisterOptionsTable("Omen", options) LibStub("AceConfig-3.0"):RegisterOptionsTable("OmenSlashCommand", optionsSlash, "omen") self.optionsFrames.Omen = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", nil, nil, "general") - + self.optionsFrames.Help = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", L["Help File"], "Omen", "Help") + self.optionsFrames.ShowWhen = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", L["Show When..."], "Omen", "ShowWhen") + self.optionsFrames.Bars = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", L["Bar Settings"], "Omen", "Bars") + self.optionsFrames.TitleBar = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", L["Title Bar Settings"], "Omen", "TitleBar") self:RegisterModuleOptions("Profiles", LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db), L["Profiles"]) self:RegisterModuleOptions("OmenSlashCommand", optionsSlash, L["Slash Command"]) - self.optionsFrames["Help"] = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", L["Help File"], "Omen", "Help") - self.optionsFrames["ShowWhen"] = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", L["Show When..."], "Omen", "ShowWhen") - self.optionsFrames["Bars"] = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", L["Bar Settings"], "Omen", "Bars") - self.optionsFrames["TitleBar"] = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", L["Title Bar Settings"], "Omen", "TitleBar") end function Omen:RegisterModuleOptions(name, optionTbl, displayName)