vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[
        visibility.lua
                Scripts for the Visibility panel of the Bongos Options menu
--]]

local list;

local function sortList(bar1, bar2)
        if tonumber(bar1.id) and tonumber(bar2.id) then
                return bar1.id < bar2.id;
        elseif not(tonumber(bar1.id) or tonumber(bar2.id)) then
                return bar1.id < bar2.id;
        elseif tonumber(bar1.id) then
                return false;
        end
        return true;
end

function BOptionsVisibility_OnMousewheel(scrollframe, direction)
        local scrollbar = getglobal(scrollframe:GetName() .. "ScrollBar");
        scrollbar:SetValue(scrollbar:GetValue() - direction * (scrollbar:GetHeight() / 2));
        BOptionsVisibilityScrollBar_Update()
end

function BOptionsVisibility_OnLoad()
        local name = this:GetName()
        
        local allButton = CreateFrame("CheckButton", name .. "All", this, "BOptionsShowButton");
        allButton:SetPoint("TOPLEFT", this, "TOPLEFT", 4, 4);
        allButton:SetText("all");
        allButton:SetScript("OnClick", function()
                if this:GetChecked() then
                        BBar.ForAll(BBar.Show, 1);
                else
                        BBar.ForAll(BBar.Hide, 1);
                end
                BOptionsVisibilityScrollBar_Update();
        end)
        allButton:SetChecked(true);
        
        if IsAddOnLoaded("Dominos_ActionBar") then
                local allActionBars = CreateFrame("CheckButton", name .. "AllActionBars", this, "BOptionsShowButton");
                allActionBars:SetPoint("LEFT", allButton, "RIGHT", 34, 0);
                allActionBars:SetText("actionbars");
                allActionBars:SetScript("OnClick", function()
                        if this:GetChecked() then
                                for i = 1, BActionBar.GetNumber() do
                                        BBar.Show(BBar.IDToBar(i), 1);
                                end
                        else
                                for i = 1, BActionBar.GetNumber() do
                                        BBar.Hide(BBar.IDToBar(i), 1);
                                end
                        end
                        BOptionsVisibilityScrollBar_Update();
                end)
                allActionBars:SetChecked(true)
        end
        
        local firstOfRow;       
        local name = this:GetName();
        for i = 1, 7 do
                local button = CreateFrame("CheckButton", name .. (i-1)*3 + 1, this, "BOptionsShowButton");
                if not firstOfRow then
                        button:SetPoint("TOPLEFT", allButton, "BOTTOMLEFT", 0, -8);
                else
                        button:SetPoint("TOPLEFT", firstOfRow, "BOTTOMLEFT");
                end
                firstOfRow = button;
                for j = 2, 3 do
                        local button = CreateFrame("CheckButton", name .. (i-1)*3 + j, this, "BOptionsShowButton");
                        button:SetPoint("LEFT", name .. (i-1)*3 + j-1, "RIGHT", 34, 0);
                end
        end
end

function BOptionsVisibility_OnShow()
        list = BBar.GetAll();   
        for i, bar in pairs(list) do
                if bar.alwaysShow then
                        table.remove(list, i)
                end
        end
        table.sort(list, sortList);
        
        BOptionsVisibilityScrollBar_Update();
end

function BOptionsVisibilityScrollBar_Update()
        local size = table.getn(list);
        local offset = BOptionsPanelVisibilityScrollFrame.offset;
        FauxScrollFrame_Update(BOptionsPanelVisibilityScrollFrame, size - 1, 21, 21);
        
        for index = 1, 21 do
                local rIndex = index + offset;
                local button = getglobal("BOptionsPanelVisibility".. index);
                
                if rIndex <= size then
                        button:SetText(list[rIndex].id);
                        button:SetChecked(list[rIndex].sets.vis);
                        button:Show();
                else
                        button:Hide();
                end
        end
end

Generated by GNU Enscript 1.6.5.90.