Mercurial > wow > reaction
view modules/ReAction_HideBlizzard/ReAction_HideBlizzard.lua @ 77:da8ba8783924
- added revision updater to each code file
- Changed button/bar class mechanic to metatable-based
- Changed buttons to live within a sub-frame, to play nicely between show-empty-buttons and hidestates
- bar frame is now available only via accessor
- Changed some semantics with AddButton/PlaceButton
- Cleaned up action buttons options, fixed hide-when-empty option
- moved show-action-ID-label as a button method
- converted drag overlay from nested-frame to :Raise()
- fixed ReAction:SetConfigMode() to not call event when mode doesn't change
- Fixed ordering for dynamic state tab (always last)
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Mon, 23 Jun 2008 22:27:50 +0000 |
parents | 44649a10378d |
children | 42ec2938d65a |
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: 103 $") -- 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