flickerstreak@109: --[[ flickerstreak@109: ReAction 'Hide Blizzard' module flickerstreak@109: flickerstreak@109: Hides Blizzard action bars. This hides the extra action bars, stance bar, pet bar, and flickerstreak@109: main menu bar, which in turn hides the experience bar, bag bar, micro menu bar, and lag meter. flickerstreak@109: flickerstreak@109: --]] flickerstreak@109: flickerstreak@109: -- local imports flickerstreak@109: local ReAction = ReAction flickerstreak@109: local L = ReAction.L flickerstreak@109: flickerstreak@109: ReAction:UpdateRevision("$Revision$") flickerstreak@109: flickerstreak@109: -- module declaration flickerstreak@109: local moduleID = "HideBlizzard" flickerstreak@109: local module = ReAction:NewModule( moduleID ) flickerstreak@109: flickerstreak@109: flickerstreak@109: -- module methods flickerstreak@109: function module:OnInitialize() flickerstreak@109: self.db = ReAction.db:RegisterNamespace( moduleID, flickerstreak@109: { flickerstreak@109: profile = { flickerstreak@109: hide = false flickerstreak@109: } flickerstreak@109: } flickerstreak@109: ) flickerstreak@109: self.db.RegisterCallback(self,"OnProfileChanged") flickerstreak@109: self.db.RegisterCallback(self,"OnProfileCopied", "OnProfileChanged") flickerstreak@109: self.db.RegisterCallback(self,"OnProfileReset", "OnProfileChanged") flickerstreak@109: flickerstreak@109: self.hiddenFrame = CreateFrame("Frame") flickerstreak@109: self.hiddenFrame:Hide() flickerstreak@109: flickerstreak@109: ReAction:RegisterOptions(self, { flickerstreak@109: hideBlizzard = { flickerstreak@109: type = "toggle", flickerstreak@109: handler = self, flickerstreak@109: name = L["Hide Blizzard Action Bars"], flickerstreak@109: desc = L["Hide the default main bar and extra action bars"], flickerstreak@109: get = "IsHidden", flickerstreak@109: set = function(info,value) self:SetHidden(value) end, flickerstreak@109: disabled = InCombatLockdown flickerstreak@109: }, flickerstreak@109: }, true) -- global flickerstreak@109: flickerstreak@109: end flickerstreak@109: flickerstreak@109: function module:OnEnable() flickerstreak@109: if self.db.profile.hide then flickerstreak@109: self:HideAll(true) flickerstreak@109: end flickerstreak@109: flickerstreak@109: -- reroute blizzard action bar config to ReAction config window flickerstreak@109: InterfaceOptionsActionBarsPanel:HookScript("OnShow", flickerstreak@109: function() flickerstreak@109: if module:IsEnabled() and module:IsHidden() then flickerstreak@109: ReAction:ShowConfig() flickerstreak@109: end flickerstreak@109: end ) flickerstreak@109: end flickerstreak@109: flickerstreak@109: function module:OnDisable() flickerstreak@109: self:ShowAll(true) flickerstreak@109: end flickerstreak@109: flickerstreak@109: function module:OnProfileChanged() flickerstreak@109: if self.db.profile.hide then flickerstreak@109: module:HideAll(true) flickerstreak@109: else flickerstreak@109: module:ShowAll(true) flickerstreak@109: end flickerstreak@109: end flickerstreak@109: flickerstreak@109: local frames = { flickerstreak@109: MainMenuBar, flickerstreak@109: MultiBarLeft, flickerstreak@109: MultiBarRight, flickerstreak@109: MultiBarBottomLeft, flickerstreak@109: MultiBarBottomRight, flickerstreak@109: -- possess bar frame needs to be pulled out separately: stash its children away flickerstreak@109: PossessBarLeft, flickerstreak@109: PossessBarRight, flickerstreak@109: PossessButton1, flickerstreak@109: PossessButton2 flickerstreak@109: } flickerstreak@109: flickerstreak@109: local hidden = { } flickerstreak@109: flickerstreak@109: function module:HideAll( force ) flickerstreak@109: if not(self.db.profile.hide) or force then flickerstreak@109: self.db.profile.hide = true flickerstreak@109: for _, f in pairs(frames) do flickerstreak@109: hidden[f] = hidden[f] or { parent = f:GetParent(), wasShown = f:IsShown() } flickerstreak@109: f:SetParent(self.hiddenFrame) flickerstreak@109: f:Hide() flickerstreak@109: end flickerstreak@109: end flickerstreak@109: PossessBarFrame:SetParent(UIParent) flickerstreak@109: PossessBarFrame:EnableMouse(false) flickerstreak@109: end flickerstreak@109: flickerstreak@109: function module:ShowAll( force ) flickerstreak@109: PossessBarFrame:EnableMouse(true) flickerstreak@109: PossessBarFrame:SetParent(MainMenuBar) flickerstreak@109: if self.db.profile.hide or force then flickerstreak@109: self.db.profile.hide = false flickerstreak@109: flickerstreak@109: for _, f in pairs(frames) do flickerstreak@109: local h = hidden[f] flickerstreak@109: if h then flickerstreak@109: f:SetParent(h.parent) flickerstreak@109: if h.wasShown then flickerstreak@109: f:Show() flickerstreak@109: end flickerstreak@109: end flickerstreak@109: end flickerstreak@109: end flickerstreak@109: end flickerstreak@109: flickerstreak@109: function module:IsHidden() flickerstreak@109: return self.db.profile.hide flickerstreak@109: end flickerstreak@109: flickerstreak@109: function module:SetHidden(h) flickerstreak@109: if h then flickerstreak@109: self:HideAll() flickerstreak@109: else flickerstreak@109: self:ShowAll() flickerstreak@109: end flickerstreak@109: end flickerstreak@109: