vanilla-wow-addons – Rev 1
?pathlinks?
--[[
BagnonDBUI
Functions for the dropdown menu for showing cached data
No alterations if this code should be needed to make it work with other databases
Essentially the dropdown is used to switch between the inventory of other characters
Why not use a normal dropdown? It takes a lot of memory
--]]
local minWidth = 120;
--switch to view a different character's data
function BagnonDBUI_ChangePlayer(frame, player)
frame.player = player;
--update the frame's title
getglobal(frame:GetName() .. "Title"):SetText(string.format(frame.title, player));
--update the frame's contents
BagnonFrame_Generate(frame);
--update the frame's bags, if they exist and are shown
local bagFrame = getglobal(frame:GetName() .. "Bags");
if bagFrame and bagFrame:IsShown() then
for i = 1, 10 do
BagnonBag_UpdateTexture(frame, i);
end
end
--update banknon's purchase button
if frame == Banknon then
Banknon_UpdatePurchaseButtonVis();
end
end
--[[ Character List ]]--
--create a player button, which is used to switch between characters
local function CreatePlayerButton(id, parent)
local button = CreateFrame("CheckButton", parent:GetName() .. id, parent, "BagnonDBUINameBox");
if id == 1 then
button:SetPoint("TOPLEFT", parent, "TOPLEFT", 6, -4);
else
button:SetPoint("TOP", getglobal(parent:GetName() .. (id - 1) ), "BOTTOM", 0, 6);
end
return button;
end
function BagnonDBUI_ShowCharacterList(parentFrame)
BagnonDBUICharacterList.frame = parentFrame;
local width = 0;
--update button info
local index = 0;
for player in BagnonDB.GetPlayers() do
index = index + 1;
local button = getglobal("BagnonDBUICharacterList" .. index) or CreatePlayerButton(index, BagnonDBUICharacterList);
button:SetText(player);
if button:GetTextWidth() + 40 > width then
width = button:GetTextWidth() + 40;
end
if parentFrame.player == player then
button:SetChecked(true);
button:Show();
else
button:SetChecked(false);
end
end
local i = index + 1;
while getglobal("BagnonDBUICharacterList" .. i) do
getglobal("BagnonDBUICharacterList" .. i):Hide();
i = i + 1;
end
--resize and position the frame
BagnonDBUICharacterList:SetHeight(12 + index * 19);
BagnonDBUICharacterList:SetWidth(width);
BagnonDBUICharacterList:ClearAllPoints();
BagnonDBUICharacterList:SetPoint("TOPLEFT", parentFrame:GetName() .. "DropDown", "BOTTOMLEFT", 0, 4);
BagnonDBUICharacterList:Show();
end
--[[ Function Hooks and Overrides ]]--
--hide any menus attached to the frame, if they're visible and we're hiding the frame
local oBagnonFrame_OnHide = BagnonFrame_OnHide;
BagnonFrame_OnHide = function()
oBagnonFrame_OnHide()
if BagnonDBUICharacterList.frame == this then
BagnonDBUICharacterList:Hide()
end
end
Generated by GNU Enscript 1.6.5.90.