-
-
Notifications
You must be signed in to change notification settings - Fork 42
Expand file tree
/
Copy pathExtraActionBar.lua
More file actions
137 lines (109 loc) · 3.73 KB
/
ExtraActionBar.lua
File metadata and controls
137 lines (109 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
--[[
Copyright (c) 2009-2017, Hendrik "Nevcairiel" Leppkes < h.leppkes at gmail dot com >
All rights reserved.
]]
local _, Bartender4 = ...
local L = LibStub("AceLocale-3.0"):GetLocale("Bartender4")
if not ExtraAbilityContainer and not ExtraActionBarFrame then return end
-- register module
local ExtraActionBarMod = Bartender4:NewModule("ExtraActionBar", "AceHook-3.0")
-- fetch upvalues
local Bar = Bartender4.Bar.prototype
local setmetatable = setmetatable
-- create prototype information
local ExtraActionBar = setmetatable({}, {__index = Bar})
local defaults = { profile = Bartender4.Util:Merge({
enabled = true,
hideArtwork = false,
visibility = {
vehicleui = false,
overridebar = false,
},
}, Bartender4.Bar.defaults) }
function ExtraActionBarMod:OnInitialize()
self.db = Bartender4.db:RegisterNamespace("ExtraActionBar", defaults)
self:SetEnabledState(self.db.profile.enabled)
end
local SetPointFromBT = nil
function ExtraActionBarMod:OnEnable()
if not self.bar then
self.bar = setmetatable(Bartender4.Bar:Create("ExtraActionBar", self.db.profile, L["Extra Action Bar"], 2), {__index = ExtraActionBar})
self.bar.content = ExtraAbilityContainer or ExtraActionBarFrame
-- remove EditMode hooks
self.bar.content.ClearAllPoints = nil
self.bar.content.SetPoint = nil
self.bar.content.SetScale = nil
self.bar.content:SetToplevel(false)
self.bar.content:SetParent(self.bar)
if ExtraAbilityContainer then
self.bar.content:SetScript("OnShow", nil)
self.bar.content:SetScript("OnHide", nil)
-- can't fully take it of EditMode, but can override it
hooksecurefunc(ExtraAbilityContainer, "SetPoint", function() if not SetPointFromBT then self.bar:PerformLayout() end end)
end
end
self.bar:Enable()
self:ToggleOptions()
self:ApplyConfig()
if _G["ExtraActionBar_Update"] and ZoneAbilityFrame then
self:SecureHook("ExtraActionBar_Update")
self:SecureHook(ZoneAbilityFrame, "UpdateDisplayedZoneAbilities")
end
if ExtraAbilityContainer and ExtraAbilityContainer.ApplySystemAnchor then
self:SecureHook(ExtraAbilityContainer, "ApplySystemAnchor")
self:SecureHook(ExtraAbilityContainer, "HighlightSystem")
end
if UIParentBottomManagedFrameContainer and ExtraAbilityContainer then
UIParentBottomManagedFrameContainer.showingFrames[ExtraAbilityContainer] = nil
end
end
function ExtraActionBarMod:ApplyConfig()
self.bar:ApplyConfig(self.db.profile)
self:UpdateArtwork()
end
function ExtraActionBarMod:UpdateArtwork()
self:ExtraActionBar_Update()
self:UpdateDisplayedZoneAbilities()
end
function ExtraActionBarMod:ExtraActionBar_Update()
if HasExtraActionBar() then
ExtraActionBarFrame.button.style:SetShown(not self.db.profile.hideArtwork)
end
end
function ExtraActionBarMod:UpdateDisplayedZoneAbilities()
if ZoneAbilityFrame then
ZoneAbilityFrame.Style:SetShown(not self.db.profile.hideArtwork)
end
end
function ExtraActionBarMod:HighlightSystem()
ExtraAbilityContainer.Selection:Hide()
EditModeMagnetismManager:UnregisterFrame(ExtraAbilityContainer)
end
function ExtraActionBarMod:ApplySystemAnchor()
if UIParentBottomManagedFrameContainer then
UIParentBottomManagedFrameContainer.showingFrames[ExtraAbilityContainer] = nil
end
self.bar:PerformLayout()
end
if ExtraAbilityContainer then
ExtraActionBar.width = 128
ExtraActionBar.height = 128
end
function ExtraActionBar:ApplyConfig(config)
Bar.ApplyConfig(self, config)
if not self.config.position.x then
self:ClearSetPoint("BOTTOM", 0, 160)
self:SavePosition()
end
self:PerformLayout()
end
function ExtraActionBar:PerformLayout()
if InCombatLockdown() then return end
SetPointFromBT = true
self:SetSize(128, 128)
local bar = self.content
bar:SetParent(self)
bar:ClearAllPoints()
bar:SetPoint("CENTER", self, "TOPLEFT", 64, -64)
SetPointFromBT = nil
end