vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
local MIN_DROPDOWN_WIDTH = 120;

--create a player button, which is used to switch between characters
local function CreateButton(id, parent, clickAction)
        local button = CreateFrame("CheckButton", parent:GetName() .. id, parent, "BongosOptionsDropDownItem");
        if id == 1 then
                button:SetPoint("TOPLEFT", parent, "TOPLEFT", 4, -2);
        else
                button:SetPoint("TOP", parent:GetName() .. (id - 1), "BOTTOM", 0, 6);
        end
        button:SetScript("OnClick", function() clickAction(); end);
        return button;
end

local function BarListItem_OnClick()
        getglobal(this:GetParent():GetParent():GetName() .. "BarNameBox"):SetText(this:GetText());
        this:GetParent():Hide();
end

function BOptionsScript_ShowBarList(parent)
        local parentName = parent:GetName();
        local currentBar = getglobal(parent:GetParent():GetName() .. "BarNameBox"):GetText()
        currentBar = tonumber(currentBar) or currentBar;
        
        local index = 0;
        local barList = BongosCustomScripts;
        local maxWidth = MIN_DROPDOWN_WIDTH;
        if barList then
                for barID in barList do
                        index = index + 1;

                        local button = getglobal(parentName .. index) or CreateButton(index, parent, BarListItem_OnClick);
                        button:SetText(barID);
                        if 24 + button:GetTextWidth() > maxWidth then
                                maxWidth = 32 + button:GetTextWidth();
                        end
                        if barID == currentBar then
                                button:SetChecked(true);
                        else
                                button:SetChecked(false);
                        end
                        button:Show();
                end

                local i = index + 1;
                while getglobal(parentName .. i) do
                        getglobal(parentName .. i):Hide();
                        i = i + 1;
                end

                parent:SetWidth(maxWidth);
                parent:SetHeight(10 + 18 * index);
                parent:Show();
        end
end

local function BarListItem_OnClick()
        getglobal(this:GetParent():GetParent():GetName() .. "EventBox"):SetText(this:GetText());
        local currentBar = getglobal(this:GetParent():GetParent():GetName() .. "BarNameBox"):GetText();
        currentBar = tonumber(currentBar) or currentBar;
        
        local scriptData = BongosCustomScripts[currentBar][this:GetText()]
        if scriptData then      
                getglobal(this:GetParent():GetParent():GetName() .. "ActionBox"):SetText((scriptData.script or ""));
                getglobal(this:GetParent():GetParent():GetName() .. "RunNow"):SetChecked(scriptData.runNow);
        else
                getglobal(this:GetParent():GetParent():GetName() .. "ActionBox"):SetText("");
                getglobal(this:GetParent():GetParent():GetName() .. "RunNow"):SetChecked(false);
        end
        this:GetParent():Hide();
end

function BOptionsScript_ShowEventList(parent)
        local parentName = parent:GetName();
        local currentBar = getglobal(parent:GetParent():GetName() .. "BarNameBox"):GetText();
        local currentEvent = getglobal(parent:GetParent():GetName() .. "EventBox"):GetText();
        local index = 0;
        local maxWidth = MIN_DROPDOWN_WIDTH;
        
        if BongosCustomScripts then
                local eventList = BongosCustomScripts[tonumber(currentBar) or currentBar];
                if eventList then
                        for event in eventList do
                                index = index + 1;

                                local button = getglobal(parentName .. index) or CreateButton(index, parent, BarListItem_OnClick);
                                button:SetText(event);
                                if 24 + button:GetTextWidth() > maxWidth then
                                        maxWidth = 32 + button:GetTextWidth();
                                end
                        
                                if event == currentEvent then
                                        button:SetChecked(true);
                                else
                                        button:SetChecked(false);
                                end
                                button:Show();
                        end

                        local i = index + 1;
                        while getglobal(parentName .. i) do
                                getglobal(parentName .. i):Hide();
                                i = i + 1;
                        end

                        parent:SetWidth(maxWidth);
                        parent:SetHeight(10 + 18 * index);
                        parent:Show();
                end
        end
end

Generated by GNU Enscript 1.6.5.90.