vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
TITAN_BAG_ID = "Bag";
TITAN_BAG_THRESHOLD_TABLE = {
        Values = { 0.5, 0.75 },
        Colors = { GREEN_FONT_COLOR, NORMAL_FONT_COLOR, RED_FONT_COLOR },
}

function TitanPanelBagButton_OnLoad()
        this.registry = {
                id = TITAN_BAG_ID,
                builtIn = 1,
                version = TITAN_VERSION,
                menuText = TITAN_BAG_MENU_TEXT,
                buttonTextFunction = "TitanPanelBagButton_GetButtonText", 
                tooltipTitle = TITAN_BAG_TOOLTIP, 
                tooltipTextFunction = "TitanPanelBagButton_GetTooltipText", 
                icon = TITAN_ARTWORK_PATH.."TitanBag",  
                iconWidth = 16,
                savedVariables = {
                        ShowUsedSlots = 1,
                        CountAmmoPouchSlots = TITAN_NIL,
                        CountShardBagSlots = TITAN_NIL,
                        CountProfBagSlots = TITAN_NIL,
                        ShowIcon = 1,
                        ShowLabelText = 1,
                        ShowColoredText = 1,
                }
        };      

        this:RegisterEvent("PLAYER_LEAVING_WORLD");
        this:RegisterEvent("PLAYER_ENTERING_WORLD");
end

function TitanPanelBagButton_OnEvent()
        if (event == "PLAYER_LEAVING_WORLD") then
                this:UnregisterEvent("BAG_UPDATE");
                this:UnregisterEvent("ITEM_LOCK_CHANGED");
                this:UnregisterEvent("UNIT_MODEL_CHANGED");
        end

        if (event == "PLAYER_ENTERING_WORLD") then
                this:RegisterEvent("BAG_UPDATE");
                this:RegisterEvent("ITEM_LOCK_CHANGED");
                this:RegisterEvent("UNIT_MODEL_CHANGED");
        end

        TitanPanelButton_UpdateButton(TITAN_BAG_ID);            
end

function TitanPanelBagButton_OnClick(button)
        if (button == "LeftButton") then
                OpenAllBags();
        end
end

function TitanPanelBagButton_GetButtonText(id)
        local button, id = TitanUtils_GetButton(id, true);
        local totalSlots, usedSlosts, availableSlots;
        local useme;
        
        totalSlots = 0;
        usedSlots = 0;
        for bag = 0, 4 do
                if TitanGetVar(TITAN_BAG_ID, "CountAmmoPouchSlots") and TitanBag_IsAmmoPouch(GetBagName(bag)) then
                        useme = 1;
                elseif TitanGetVar(TITAN_BAG_ID, "CountShardBagSlots") and TitanBag_IsShardBag(GetBagName(bag)) then
                        useme = 1;
                elseif TitanGetVar(TITAN_BAG_ID, "CountProfBagSlots") and TitanBag_IsProfBag(GetBagName(bag)) then
                        useme = 1;
                elseif not TitanBag_IsAmmoPouch(GetBagName(bag)) and not TitanBag_IsShardBag(GetBagName(bag)) and not TitanBag_IsProfBag(GetBagName(bag)) then
                        useme = 1;
                else
                        useme = 0;
                end

                if useme == 1 then
                        local size = GetContainerNumSlots(bag);
                        if (size and size > 0) then
                                totalSlots = totalSlots + size;
                                for slot = 1, size do
                                        if (GetContainerItemInfo(bag, slot)) then
                                                usedSlots = usedSlots + 1;
                                        end
                                end
                        end
                end
        end
        availableSlots = totalSlots - usedSlots;

        local bagText, bagRichText, color;
        if (TitanGetVar(TITAN_BAG_ID, "ShowUsedSlots")) then
                bagText = format(TITAN_BAG_FORMAT, usedSlots, totalSlots);
        else
                bagText = format(TITAN_BAG_FORMAT, availableSlots, totalSlots);
        end
        
        if ( TitanGetVar(TITAN_BAG_ID, "ShowColoredText") ) then        
                color = TitanUtils_GetThresholdColor(TITAN_BAG_THRESHOLD_TABLE, usedSlots / totalSlots);
                bagRichText = TitanUtils_GetColoredText(bagText, color);
        else
                bagRichText = TitanUtils_GetHighlightText(bagText);
        end

        return TITAN_BAG_BUTTON_LABEL, bagRichText;
end

function TitanPanelBagButton_GetTooltipText()
        return TitanUtils_GetGreenText(TITAN_BAG_TOOLTIP_HINTS);
end

function TitanPanelRightClickMenu_PrepareBagMenu()
        TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_BAG_ID].menuText);
        
        local info = {};
        info.text = TITAN_BAG_MENU_SHOW_USED_SLOTS;
        info.func = TitanPanelBagButton_ShowUsedSlots;
        info.checked = TitanGetVar(TITAN_BAG_ID, "ShowUsedSlots");
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TITAN_BAG_MENU_SHOW_AVAILABLE_SLOTS;
        info.func = TitanPanelBagButton_ShowAvailableSlots;
        info.checked = TitanUtils_Toggle(TitanGetVar(TITAN_BAG_ID, "ShowUsedSlots"));
        UIDropDownMenu_AddButton(info);

        TitanPanelRightClickMenu_AddSpacer();   
        
        info = {};
        info.text = TITAN_BAG_MENU_IGNORE_AMMO_POUCH_SLOTS;
        info.func = TitanPanelBagButton_ToggleIgnoreAmmoPouchSlots;
        info.checked = TitanUtils_Toggle(TitanGetVar(TITAN_BAG_ID, "CountAmmoPouchSlots"));
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TITAN_BAG_MENU_IGNORE_SHARD_BAGS_SLOTS;
        info.func = TitanPanelBagButton_ToggleIgnoreShardBagSlots;
        info.checked = TitanUtils_Toggle(TitanGetVar(TITAN_BAG_ID, "CountShardBagSlots"));
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TITAN_BAG_MENU_IGNORE_PROF_BAGS_SLOTS;
        info.func = TitanPanelBagButton_ToggleIgnoreProfBagSlots;
        info.checked = TitanUtils_Toggle(TitanGetVar(TITAN_BAG_ID, "CountProfBagSlots"));
        UIDropDownMenu_AddButton(info);

        TitanPanelRightClickMenu_AddSpacer();   
        TitanPanelRightClickMenu_AddToggleIcon(TITAN_BAG_ID);
        TitanPanelRightClickMenu_AddToggleLabelText(TITAN_BAG_ID);
        TitanPanelRightClickMenu_AddToggleColoredText(TITAN_BAG_ID);
        
        TitanPanelRightClickMenu_AddSpacer();   
        TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_BAG_ID, TITAN_PANEL_MENU_FUNC_HIDE);
end

function TitanPanelBagButton_ShowUsedSlots()
        TitanSetVar(TITAN_BAG_ID, "ShowUsedSlots", 1);
        TitanPanelButton_UpdateButton(TITAN_BAG_ID);
end

function TitanPanelBagButton_ShowAvailableSlots()
        TitanSetVar(TITAN_BAG_ID, "ShowUsedSlots", nil);
        TitanPanelButton_UpdateButton(TITAN_BAG_ID);
end

function TitanPanelBagButton_ToggleIgnoreAmmoPouchSlots()
        TitanToggleVar(TITAN_BAG_ID, "CountAmmoPouchSlots");
        TitanPanelButton_UpdateButton(TITAN_BAG_ID);
end

function TitanPanelBagButton_ToggleIgnoreShardBagSlots()
        TitanToggleVar(TITAN_BAG_ID, "CountShardBagSlots");
        TitanPanelButton_UpdateButton(TITAN_BAG_ID);
end

function TitanPanelBagButton_ToggleIgnoreProfdBagSlots()
        TitanToggleVar(TITAN_BAG_ID, "CountProfBagSlots");
        TitanPanelButton_UpdateButton(TITAN_BAG_ID);
end

function TitanBag_IsAmmoPouch(name)     
        if (name) then
                for index, value in TITAN_BAG_AMMO_POUCH_NAMES do
                        if (string.find(name, value)) then
                                return true;
                        end
                end
        end
        return false;
end

function TitanBag_IsShardBag(name)      
        if (name) then
                for index, value in TITAN_BAG_SHARD_BAG_NAMES do
                        if (string.find(name, value)) then
                                return true;
                        end
                end
        end
        return false;
end

function TitanBag_IsProfBag(name)       
        if (name) then
                for index, value in TITAN_BAG_PROF_BAG_NAMES do
                        if (string.find(name, value)) then
                                return true;
                        end
                end
        end
        return false;
end

Generated by GNU Enscript 1.6.5.90.