forked from Mirroar/TopFit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplugin.lua
More file actions
85 lines (76 loc) · 3.47 KB
/
plugin.lua
File metadata and controls
85 lines (76 loc) · 3.47 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
function TopFit:RegisterPlugin(pluginName, icon, tooltipText)
-- create / register plugin-tab
local pluginInfo = {
name = pluginName,
tooltipText = tooltipText,
icon = icon,
}
tinsert(TopFit.plugins, pluginInfo)
pluginInfo.id = #(TopFit.plugins)
-- return frame for plugin UI
pluginInfo.frame = CreateFrame("Frame", "TopFit_ProgressFrame_PluginFrame_"..(pluginInfo.id), nil)
if pluginInfo.id > 1 then
pluginInfo.frame:Hide()
end
TopFit:UpdatePlugins()
return pluginInfo.frame, pluginInfo.id
end
local function CreateSideTab(tabTexture, tabName, parent)
local button = CreateFrame("CheckButton", tabName, parent, "SpellBookSkillLineTabTemplate")
button:SetNormalTexture(tabTexture or "Interface\\Icons\\INV_Misc_QuestionMark")
button:Hide()
return button
end
function TopFit:UpdatePlugins()
if TopFit.characterFrameUIcreated then
for pluginID, pluginInfo in ipairs(TopFit.plugins) do
-- update parents and anchors for plugin frames
pluginInfo.frame:SetParent(TopFitStatScrollFrame)
pluginInfo.frame:SetAllPoints()
-- create tabs if necessary
if not pluginInfo.tabButton then
pluginInfo.tabButton = CreateSideTab(pluginInfo.icon, "TopFitPluginButton"..pluginID, TopFitStatScrollFrame)
pluginInfo.tabButton:SetID(pluginID)
if (pluginID == 1) then
pluginInfo.tabButton:SetPoint("TOPLEFT", CharacterFrame, "TOPRIGHT", 0, -54)
pluginInfo.tabButton:SetChecked(true)
else
pluginInfo.tabButton:SetPoint("TOPLEFT", TopFit.plugins[pluginID - 1].tabButton, "BOTTOMLEFT", 0, -16)
end
pluginInfo.tabButton:Show()
-- set event handlers
pluginInfo.tabButton:SetScript("OnClick", function(self)
local id = self:GetID()
for i = 1, #(TopFit.plugins) do
if i == id then
--TopFit.plugins[i].frame:Show()
TopFit.plugins[i].frame:SetWidth(TopFitStatScrollFrame:GetWidth())
TopFit.plugins[i].frame:SetHeight(TopFitStatScrollFrame:GetHeight())
TopFitStatScrollFrame:SetScrollChild(TopFit.plugins[i].frame)
TopFit.plugins[i].frame:Show()
TopFit.eventHandler:Fire("OnShow", id)
else
TopFit.plugins[i].tabButton:SetChecked(false)
TopFit.plugins[i].frame:Hide()
end
end
end)
end
pluginInfo.tabButton.tipText = pluginInfo.name .. (pluginInfo.tooltipText and "\n"..HIGHLIGHT_FONT_COLOR_CODE..pluginInfo.tooltipText..FONT_COLOR_CODE_CLOSE or "")
pluginInfo.tabButton:SetScript("OnEnter", TopFit.ShowTooltip)
pluginInfo.tabButton:SetScript("OnLeave", TopFit.HideTooltip)
end
end
end
--[[function TopFit:SelectPluginTab(self)
local id = self:GetID()
for i = 1, #(TopFit.plugins) do
if i == id then
TopFit.plugins[i].frame:Show()
TopFit.eventHandler:Fire("OnShow", id)
else
TopFit.plugins[i].tabButton:SetChecked(false)
TopFit.plugins[i].frame:Hide()
end
end
end]]