view modules/ReAction_HideBlizzard/ReAction_HideBlizzard.lua @ 90:7cabc8ac6c16

Updates for wow 3.0 - TOC update - updated changed APIs/frame names - rewrote state code per new SecureHandlers API - cleaned up Bar, ActionButton code - removed AceLibrary/Dewdrop, menu from bar right-click - fixed various small bugs Updated WowAce external locations Updated README.html
author Flick <flickerstreak@gmail.com>
date Wed, 15 Oct 2008 16:29:41 +0000
parents 42ec2938d65a
children 168cae4aa8bd
line wrap: on
line source
--[[
  ReAction 'Hide Blizzard' module

  Hides Blizzard action bars. This hides the extra action bars, stance bar, pet bar, and 
  main menu bar, which in turn hides the experience bar, bag bar, micro menu bar, and lag meter.

--]]

-- local imports
local ReAction = ReAction
local L = ReAction.L

ReAction:UpdateRevision("$Revision$")

-- module declaration
local moduleID = "HideBlizzard"
local module = ReAction:NewModule( moduleID )


-- module methods
function module:OnInitialize()
  self.db = ReAction.db:RegisterNamespace( moduleID,
    { 
      profile = {
        hide = false
      }
    }
  )
  self.db.RegisterCallback(self,"OnProfileChanged")
  self.db.RegisterCallback(self,"OnProfileReset","OnProfileChanged")

  self.hiddenFrame = CreateFrame("Frame")
  self.hiddenFrame:Hide()

  ReAction:RegisterOptions(self, {
      hideBlizzard = {
        type = "toggle",
        handler = self,
        name = L["Hide Blizzard Action Bars"],
        desc = L["Hide the default main bar and extra action bars"],
        get  = "IsHidden",
        set  = function(info,value) self:SetHidden(value) end,
        disabled = InCombatLockdown
      },
    }, true) -- global

end

function module:OnEnable()
  if self.db.profile.hide then
    self:HideAll(true)
  end

  -- reroute blizzard action bar config to ReAction config window
  InterfaceOptionsActionBarsPanel:HookScript("OnShow", 
    function() 
      if module:IsEnabled() and module:IsHidden() then
        ReAction:ShowConfig()
      end
    end )
end

function module:OnDisable()
  self:ShowAll(true)
end

function module:OnProfileChanged()
  if self.db.profile.hide then
    module:HideAll(true)
  else
    module:ShowAll(true)
  end
end

local frames = {
  MainMenuBar,
  MultiBarLeft,
  MultiBarRight,
  MultiBarBottomLeft,
  MultiBarBottomRight,
  -- possess bar frame needs to be pulled out separately: stash its children away
  PossessBarLeft,
  PossessBarRight,
  PossessButton1,
  PossessButton2
}

local hidden = { }

function module:HideAll( force )
  if not(self.db.profile.hide) or force then
    self.db.profile.hide = true
    for _, f in pairs(frames) do
      hidden[f] = hidden[f] or { parent = f:GetParent(), wasShown = f:IsShown() }
      f:SetParent(self.hiddenFrame)
      f:Hide()
    end
  end
  PossessBarFrame:SetParent(UIParent)
  PossessBarFrame:EnableMouse(false)
end

function module:ShowAll( force )
  PossessBarFrame:EnableMouse(true)
  PossessBarFrame:SetParent(MainMenuBar)
  if self.db.profile.hide or force then
    self.db.profile.hide = false

    for _, f in pairs(frames) do
      local h = hidden[f]
      if h then
        f:SetParent(h.parent)
        if h.wasShown then
          f:Show()
        end
      end
    end
  end
end

function module:IsHidden()
  return self.db.profile.hide
end

function module:SetHidden(h)
  if h then
    self:HideAll()
  else
    self:ShowAll()
  end
end