You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

206 lines
6.8 KiB

3 years ago
if not WeakAuras.IsLibsOK() then return end
local Type, Version = "WeakAurasLoadedHeaderButton", 22
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
local L = WeakAuras.L
local function Hide_Tooltip()
GameTooltip:Hide();
end
local function Show_Tooltip(owner, line1, line2)
GameTooltip:SetOwner(owner, "ANCHOR_NONE");
GameTooltip:SetPoint("LEFT", owner, "RIGHT");
GameTooltip:ClearLines();
GameTooltip:AddLine(line1);
GameTooltip:AddLine(line2, 1, 1, 1, 1);
GameTooltip:Show();
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
self:SetWidth(1000);
self:SetHeight(20);
end,
["SetText"] = function(self, text)
self.frame:SetText(" "..text);
end,
["SetClick"] = function(self, func)
self.frame:SetScript("OnClick", func);
end,
["Disable"] = function(self)
self.frame:Disable();
end,
["Enable"] = function(self)
self.frame:Enable();
end,
["Pick"] = function(self)
self.frame:LockHighlight();
end,
["ClearPick"] = function(self)
self.frame:UnlockHighlight();
end,
["Expand"] = function(self, reloadTooltip)
self.expand:Enable();
self.expanded = true;
self.expand:SetNormalTexture("Interface\\BUTTONS\\UI-MinusButton-Up.blp");
self.expand:SetPushedTexture("Interface\\BUTTONS\\UI-MinusButton-Down.blp");
self.expand.title = L["Collapse"];
self.expand.desc = self.expand.collapsedesc;
self.expand:SetScript("OnClick", function() self:Collapse(true) end);
self.expand.func();
if(reloadTooltip) then
Hide_Tooltip();
Show_Tooltip(self.frame, self.expand.title, self.expand.desc);
end
end,
["Collapse"] = function(self, reloadTooltip)
self.expand:Enable();
self.expanded = false;
self.expand:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Up.blp");
self.expand:SetPushedTexture("Interface\\BUTTONS\\UI-PlusButton-Down.blp");
self.expand.title = L["Expand"];
self.expand.desc = self.expand.expanddesc;
self.expand:SetScript("OnClick", function() self:Expand(true) end);
self.expand.func();
if(reloadTooltip) then
Hide_Tooltip();
Show_Tooltip(self.frame, self.expand.title, self.expand.desc);
end
end,
["SetOnExpandCollapse"] = function(self, func)
self.expand.func = func;
end,
["GetExpanded"] = function(self)
return self.expanded;
end,
["DisableExpand"] = function(self)
self.expand:Disable();
self.expand.disabled = true;
self.expand.expanded = false;
self.expand:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Disabled.blp");
end,
["EnableExpand"] = function(self)
self.expand.disabled = false;
if(self:GetExpanded()) then
self:Expand();
else
self:Collapse();
end
end,
["SetViewClick"] = function(self, func)
self.view:SetScript("OnClick", func);
end,
["PriorityShow"] = function(self, priority)
if (not WeakAuras.IsOptionsOpen()) then
return;
end
if(priority >= self.view.visibility and self.view.visibility ~= priority) then
self.view.visibility = priority;
self:UpdateViewTexture()
end
end,
["PriorityHide"] = function(self, priority)
if (not WeakAuras.IsOptionsOpen()) then
return;
end
if(priority >= self.view.visibility and self.view.visibility ~= 0) then
self.view.visibility = 0;
self:UpdateViewTexture()
end
end,
["UpdateViewTexture"] = function(self)
local visibility = self.view.visibility
if(visibility == 2) then
self.view.texture:SetTexture("Interface\\LFGFrame\\BattlenetWorking0.blp");
elseif(visibility == 1) then
self.view.texture:SetTexture("Interface\\LFGFrame\\BattlenetWorking2.blp");
else
self.view.texture:SetTexture("Interface\\LFGFrame\\BattlenetWorking4.blp");
end
end,
["SetViewDescription"] = function(self, desc)
self.view.desc = desc;
end,
["SetExpandDescription"] = function(self, desc)
self.expand.expanddesc = desc;
end,
["SetCollapseDescription"] = function(self, desc)
self.expand.collapsedesc = desc;
self.expand.desc = desc;
end,
}
--[[-----------------------------------------------------------------------------
Constructor
-------------------------------------------------------------------------------]]
local function Constructor()
local name = Type..AceGUI:GetNextWidgetNum(Type)
local button = CreateFrame("Button", name, UIParent, "OptionsListButtonTemplate");
button:SetHeight(20);
button:SetWidth(1000);
button:SetDisabledFontObject("GameFontNormal");
local background = button:CreateTexture(nil, "BACKGROUND");
button.background = background;
background:SetTexture("Interface\\BUTTONS\\UI-Listbox-Highlight2.blp");
background:SetBlendMode("ADD");
background:SetVertexColor(0.5, 0.5, 0.5, 0.6);
background:SetAllPoints(button);
local expand = CreateFrame("Button", nil, button);
button.expand = expand;
expand.expanded = true;
expand.disabled = true;
expand.func = function() end;
expand:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Disabled.blp");
expand:Disable();
expand:SetWidth(16);
expand:SetHeight(16);
expand:SetPoint("RIGHT", button, "RIGHT");
expand:SetHighlightTexture("Interface\\BUTTONS\\UI-Panel-MinimizeButton-Highlight.blp");
expand.title = L["Disabled"];
expand.desc = L["Expansion is disabled because this group has no children"];
expand.expanddesc = "";
expand.collapsedesc = "";
expand:SetScript("OnEnter", function() Show_Tooltip(button, expand.title, expand.desc) end);
expand:SetScript("OnLeave", Hide_Tooltip);
local view = CreateFrame("Button", nil, button);
button.view = view;
view:SetWidth(16);
view:SetHeight(16);
view:SetPoint("RIGHT", button, "RIGHT", -16, 0);
local viewTexture = view:CreateTexture()
view.texture = viewTexture;
viewTexture:SetTexture("Interface\\LFGFrame\\BattlenetWorking1.blp");
viewTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9);
viewTexture:SetAllPoints(view);
view:SetNormalTexture(viewTexture);
view:SetHighlightTexture("Interface\\BUTTONS\\UI-Panel-MinimizeButton-Highlight.blp");
view.desc = "";
view:SetScript("OnEnter", function() Show_Tooltip(button, L["View"], view.desc) end);
view:SetScript("OnLeave", Hide_Tooltip);
view.visibility = 0;
local widget = {
frame = button,
expand = expand,
view = view,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end
return AceGUI:RegisterAsWidget(widget)
end
AceGUI:RegisterWidgetType(Type, Constructor, Version)