Mercurial > wow > reaction
comparison modules/HideBlizzard.lua @ 120:320a93c5f72c
Added option to hide the Blizzard vehicle bar
Refactored HideBlizzard module
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Fri, 06 Feb 2009 23:01:50 +0000 |
parents | 410d036c43b2 |
children | 61d89f0918ca |
comparison
equal
deleted
inserted
replaced
119:79a44f66683f | 120:320a93c5f72c |
---|---|
32 | 32 |
33 self.hiddenFrame = CreateFrame("Frame") | 33 self.hiddenFrame = CreateFrame("Frame") |
34 self.hiddenFrame:Hide() | 34 self.hiddenFrame:Hide() |
35 | 35 |
36 ReAction:RegisterOptions(self, { | 36 ReAction:RegisterOptions(self, { |
37 hideBlizzard = { | 37 hide = { |
38 type = "toggle", | |
39 handler = self, | |
40 name = L["Hide Blizzard Action Bars"], | 38 name = L["Hide Blizzard Action Bars"], |
41 desc = L["Hide the default main bar and extra action bars"], | 39 desc = L["Hide the default main bar and extra action bars"], |
40 type = "toggle", | |
41 order = 10, | |
42 width = "double", | |
43 handler = self, | |
42 get = "IsHidden", | 44 get = "IsHidden", |
43 set = function(info,value) self:SetHidden(value) end, | 45 set = "SetHidden", |
44 disabled = InCombatLockdown | 46 disabled = "OptionDisabled", |
47 }, | |
48 hideVehicle = { | |
49 name = L["Hide Blizzard Vehicle Bar"], | |
50 desc = L["Hide the default vechicle action bar"], | |
51 type = "toggle", | |
52 order = 11, | |
53 width = "double", | |
54 handler = self, | |
55 get = "IsHidden", | |
56 set = "SetHidden", | |
57 disabled = "OptionDisabled", | |
45 }, | 58 }, |
46 }, true) -- global | 59 }, true) -- global |
47 | 60 |
48 end | 61 end |
49 | 62 |
50 function module:OnEnable() | 63 function module:OnEnable() |
51 if self.db.profile.hide then | 64 self:UpdateFrames() |
52 self:HideAll(true) | |
53 end | |
54 | |
55 -- reroute blizzard action bar config to ReAction config window | |
56 InterfaceOptionsActionBarsPanel:HookScript("OnShow", | |
57 function() | |
58 if module:IsEnabled() and module:IsHidden() then | |
59 ReAction:ShowConfig() | |
60 end | |
61 end ) | |
62 end | 65 end |
63 | 66 |
64 function module:OnDisable() | 67 function module:OnDisable() |
65 self:ShowAll(true) | 68 self:UpdateFrames(true) |
66 end | 69 end |
67 | 70 |
68 function module:OnProfileChanged() | 71 function module:OnProfileChanged() |
69 if self.db.profile.hide then | 72 self:UpdateFrames() |
70 module:HideAll(true) | |
71 else | |
72 module:ShowAll(true) | |
73 end | |
74 end | 73 end |
75 | 74 |
76 local frames = { | 75 local frames = { |
77 MainMenuBar, | 76 [ MainMenuBar ] = { }, |
78 MultiBarLeft, | 77 [ MultiBarLeft ] = { }, |
79 MultiBarRight, | 78 [ MultiBarRight ] = { }, |
80 MultiBarBottomLeft, | 79 [ MultiBarBottomLeft ] = { }, |
81 MultiBarBottomRight, | 80 [ MultiBarBottomRight ] = { }, |
82 -- possess bar frame needs to be pulled out separately: stash its children away | 81 [ VehicleMenuBar ] = { field = "hideVehicle" }, |
83 PossessBarLeft, | |
84 PossessBarRight, | |
85 PossessButton1, | |
86 PossessButton2 | |
87 } | 82 } |
88 | 83 |
89 local hidden = { } | 84 function module:UpdateFrames( show ) |
85 show = show or not self.db.profile.hide | |
86 for frame, info in pairs(frames) do | |
87 local show = show -- make a local copy for this frame | |
88 if info.field then | |
89 show = show or not self.db.profile[info.field] | |
90 end | |
90 | 91 |
91 function module:HideAll( force ) | 92 if show then |
92 if not(self.db.profile.hide) or force then | 93 if info.parent then |
93 self.db.profile.hide = true | 94 frame:SetParent(info.parent) |
94 for _, f in pairs(frames) do | |
95 hidden[f] = hidden[f] or { parent = f:GetParent(), wasShown = f:IsShown() } | |
96 f:SetParent(self.hiddenFrame) | |
97 f:Hide() | |
98 end | |
99 end | |
100 PossessBarFrame:SetParent(UIParent) | |
101 PossessBarFrame:EnableMouse(false) | |
102 end | |
103 | |
104 function module:ShowAll( force ) | |
105 PossessBarFrame:EnableMouse(true) | |
106 PossessBarFrame:SetParent(MainMenuBar) | |
107 if self.db.profile.hide or force then | |
108 self.db.profile.hide = false | |
109 | |
110 for _, f in pairs(frames) do | |
111 local h = hidden[f] | |
112 if h then | |
113 f:SetParent(h.parent) | |
114 if h.wasShown then | |
115 f:Show() | |
116 end | |
117 end | 95 end |
96 if frame:IsShown() then | |
97 frame:Show() -- refresh | |
98 end | |
99 else | |
100 if not info.parent then | |
101 info.parent = frame:GetParent() | |
102 end | |
103 frame:SetParent(self.hiddenFrame) | |
118 end | 104 end |
119 end | 105 end |
120 end | 106 end |
121 | 107 |
122 function module:IsHidden() | 108 function module:IsHidden(info) |
123 return self.db.profile.hide | 109 return self.db.profile.hide and self.db.profile[info[#info]] |
124 end | 110 end |
125 | 111 |
126 function module:SetHidden(h) | 112 function module:SetHidden(info,value) |
127 if h then | 113 self.db.profile[info[#info]] = value |
128 self:HideAll() | 114 self:UpdateFrames() |
129 else | |
130 self:ShowAll() | |
131 end | |
132 end | 115 end |
133 | 116 |
117 function module:OptionDisabled(info) | |
118 local disabled = InCombatLockdown() | |
119 if not disabled and info[#info] ~= "hide" then | |
120 disabled = not self.db.profile.hide | |
121 end | |
122 return disabled | |
123 end | |
124 | |
125 | |
126 -- reroute blizzard action bar config to ReAction config window | |
127 InterfaceOptionsActionBarsPanel:HookScript("OnShow", | |
128 function() | |
129 if module:IsEnabled() and module:IsHidden() then | |
130 ReAction:ShowConfig() | |
131 end | |
132 end ) |