vanilla-wow-addons – Rev 1
?pathlinks?
--## BY: Arina, 60 Warrior on Deathwing EU English.
--## Use With Caution! ;)
CS_ADDONORGANIZER_ADDONS_DISPLAYED = 22;
CS_ADDONORGANIZER_ADDONSLINE_HEIGHT = 16;
CS_AddOnOrganizer_Profiles = {};
CS_ADDONORGANIZER_VERSIONNUMBER = "1.1011";
BINDING_HEADER_CS_ADDONORGANIZER_SEP = "CS AddOnOrganizer";
BINDING_NAME_CS_ADDONORGANIZER_CONFIG = "Show / Hide";
local id;
local CS_AddOnOrganizer_AddOnList = {};
function CS_AddOnOrganizer_OnLoad()
this:RegisterEvent("PLAYER_LOGIN");
this:RegisterEvent("PLAYER_LOGOUT");
tinsert(UISpecialFrames,"CS_AddOnOrganizer_List");
SLASH_CS_ADDONORGANIZER1 = "/aoo";
SlashCmdList["CS_ADDONORGANIZER"] = function(msg)
CS_AddOnOrganizer_ListShowHide();
end
end
function CS_AddOnOrganizer_OnEvent(event)
if(event == "PLAYER_LOGIN")then
DEFAULT_CHAT_FRAME:AddMessage("|CFFFFFFFFCS_AddOnOrganizer|r |CFF00FF00Loaded|r");
--CS_AddOnOrganizer_Profiles = {[1] = {"Default (Only CS_AddOnOrganizer)","CS_AddOnOrganizer",},};
end
end
function CS_AddOnOrganizer_ListShowHide()
if (CS_AddOnOrganizer_List:IsVisible()) then
HideUIPanel(CS_AddOnOrganizer_List_Profiles);
HideUIPanel(CS_AddOnOrganizer_List);
else
CS_AddOnOrganizer_List_Title:SetText ("CS_AddOnOrganizer v."..CS_ADDONORGANIZER_VERSIONNUMBER);
ShowUIPanel(CS_AddOnOrganizer_List);
CS_AddOnOrganizer_GetList();
CS_AddOnOrganizer_List_Update();
end
end
function CS_AddOnOrganizer_GetList()
local i;
for i=1, GetNumAddOns(), 1 do
local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(i);
CS_AddOnOrganizer_AddOnList[i] = enabled;
end
end
function CS_AddOnOrganizer_List_Update()
local numaddons = GetNumAddOns();
local i;
CS_AddOnOrganizer_List_AddOnCount:SetText("AddOns: |CFFFFFFFF"..numaddons.."|r");
CS_AddOnOrganizer_List_CountMiddle:SetWidth(CS_AddOnOrganizer_List_AddOnCount:GetWidth());
FauxScrollFrame_Update(CS_AddOnOrganizer_List_Scroll, numaddons, CS_ADDONORGANIZER_ADDONS_DISPLAYED, CS_ADDONORGANIZER_ADDONSLINE_HEIGHT, nil, nil, nil, CS_AddOnOrganizer_List_HighlightFrame, 293, 316 )
for i=1, CS_ADDONORGANIZER_ADDONS_DISPLAYED, 1 do
local addonIndex = i + FauxScrollFrame_GetOffset(CS_AddOnOrganizer_List_Scroll);
if ( addonIndex <= numaddons ) then
local addonLogTitle = getglobal("CS_AddOnOrganizer_List_Title"..i);
local addonTitleTag = getglobal("CS_AddOnOrganizer_List_Title"..i.."Tag");
local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(addonIndex);
addonLogTitle:SetText(title);
addonLogTitle:SetNormalTexture("");
local color = {r=0.7,g=0.7,b=0.7};
if(enabled and loadable)then
color = {r=1.0,g=1.0,b=0.5};
elseif(enabled and not loadable)then
color = {r=1.0,g=0.0,b=0.0};
end
if(CS_AddOnOrganizer_AddOnList[addonIndex] == 1) then
addonTitleTag:SetText("Enabled");
if(enabled)then
addonTitleTag:SetTextColor(1.0,0.7,0.0);
else
addonTitleTag:SetTextColor(0.0,1.0,0.0);
end
else
addonTitleTag:SetText("Disabled");
if(not enabled)then
addonTitleTag:SetTextColor(1.0,0.7,0.0);
else
addonTitleTag:SetTextColor(1.0,0.0,0.0);
end
end
addonLogTitle:SetTextColor(color.r, color.g, color.b);
addonLogTitle.r = color.r;
addonLogTitle.g = color.g;
addonLogTitle.b = color.b;
addonLogTitle:Show();
end
end
end
function CS_AddOnOrganizer_TitleButton_OnClick()
local AddOnID = this:GetID() + FauxScrollFrame_GetOffset(CS_AddOnOrganizer_List_Scroll);
local buttonID = this:GetID();
local addonTitleTag = getglobal("CS_AddOnOrganizer_List_Title"..buttonID.."Tag");
local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(AddOnID);
if(CS_AddOnOrganizer_AddOnList[AddOnID] == 1) then
addonTitleTag:SetText("Disabled");
if(not enabled)then
addonTitleTag:SetTextColor(1.0,0.7,0.0);
else
addonTitleTag:SetTextColor(1.0,0.0,0.0);
end
CS_AddOnOrganizer_AddOnList[AddOnID] = 0;
else
addonTitleTag:SetText("Enabled");
if(enabled)then
addonTitleTag:SetTextColor(1.0,0.7,0.0);
else
addonTitleTag:SetTextColor(0.0,1.0,0.0);
end
CS_AddOnOrganizer_AddOnList[AddOnID] = 1;
end
end
function CS_AddOnOrganizer_TitleButton_OnEnter()
local buttonID = this:GetID() + FauxScrollFrame_GetOffset(CS_AddOnOrganizer_List_Scroll);
local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(buttonID);
local dependencies = GetAddOnDependencies(buttonID);
local loadondemand = IsAddOnLoadOnDemand(buttonID);
--DEFAULT_CHAT_FRAME:AddMessage(buttonID);
if (title == nil) then
title = "No Title";
end
if (dependencies == nil) then
dependencies = "No Dependencies";
end
if(notes == nil) then
notes = "No Notes";
end
if(loadondemand) then
loadondemand = "|CFF00FF00True|r";
else
loadondemand = "|CFFFF0000False|r";
end
if(loadable ~= nil)then
GameTooltip_AddNewbieTip(name, 1.0, 1.0, 1.0, title.."\n"..notes.."\n|CFFFFFFFFAddon is Loadable:|r|CFF00FF00True|r\n".."|CFFFFFFFFLoadOnDemand:|r "..loadondemand.."\n|CFFFFFFFFDependencies:|r "..dependencies, 1);
elseif(reason == "DISABLED") then
GameTooltip_AddNewbieTip(name, 1.0, 1.0, 1.0, title.."\n"..notes.."\n|CFFFFFFFFAddon is Loadable:|r |CFFFF0000False|r\n|CFFFFFFFFReason:|r |CFFFF0000"..reason.."|r\n|CFFFFFFFFYou might still enable this addon.|r\n".."|CFFFFFFFFLoadOnDemand:|r "..loadondemand.."\n|CFFFFFFFFDependencies:|r "..dependencies, 1);
else
GameTooltip_AddNewbieTip(name, 1.0, 1.0, 1.0, title.."\n"..notes.."\n|CFFFFFFFFAddon is Loadable:|r|CFFFF0000 False|r\n|CFFFFFFFFReason:|r |CFFFF0000"..reason.."|r\n".."|CFFFFFFFFLoadOnDemand:|r "..loadondemand.."\n|CFFFFFFFFDependencies:|r "..dependencies, 1);
end
end
function CS_AddOnOrganizer_AcceptButton_OnClick()
local i;
local numaddons = GetNumAddOns();
local IsChanges = 0;
local SaveIndex = 1;
for i=1, numaddons, 1 do
local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(i);
if(CS_AddOnOrganizer_AddOnList[i] ~= enabled) then
if (CS_AddOnOrganizer_AddOnList[i] == 1) then
EnableAddOn(i);
else
DisableAddOn(i);
end
IsChanges = 1;
end
end
CS_AddOnOrganizer_ListShowHide();
if(IsChanges == 1)then
ReloadUI();
end
end
function CS_AddOnOrganizer_ReloadUIButton()
ReloadUI();
end
function CS_AddOnOrganizer_EnableAll()
local i;
local numaddons = GetNumAddOns();
for i=1, numaddons, 1 do
CS_AddOnOrganizer_AddOnList[i] = 1;
if( i <= CS_ADDONORGANIZER_ADDONS_DISPLAYED)then
local addonTitleTag = getglobal("CS_AddOnOrganizer_List_Title"..i.."Tag");
local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(i);
addonTitleTag:SetText("Enabled");
if(enabled)then
addonTitleTag:SetTextColor(1.0,0.7,0.0);
else
addonTitleTag:SetTextColor(0.0,1.0,0.0);
end
end
end
end
function CS_AddOnOrganizer_DisableAll()
local i;
local numaddons = GetNumAddOns();
for i=1, numaddons, 1 do
CS_AddOnOrganizer_AddOnList[i] = 0;
if( i <= CS_ADDONORGANIZER_ADDONS_DISPLAYED)then
local addonTitleTag = getglobal("CS_AddOnOrganizer_List_Title"..i.."Tag");
local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(i);
addonTitleTag:SetText("Disabled");
if(not enabled)then
addonTitleTag:SetTextColor(1.0,0.7,0.0);
else
addonTitleTag:SetTextColor(1.0,0.0,0.0);
end
end
end
end
function CS_AddOnOrganizer_ProfilesShowHide()
if (CS_AddOnOrganizer_List_Profiles:IsVisible()) then
HideUIPanel(CS_AddOnOrganizer_List_Profiles);
else
ShowUIPanel(CS_AddOnOrganizer_List_Profiles);
end
end
function CS_AddOnOrganizer_Profiles_ProfilesDropDown_OnLoad()
UIDropDownMenu_SetWidth(220);
UIDropDownMenu_Initialize(this,CS_AddOnOrganizer_InitializeDropDown);
--DEFAULT_CHAT_FRAME:AddMessage(table.getn(CS_AddOnOrganizer_Profiles));
end
function CS_AddOnOrganizer_InitializeDropDown()
local info;
for i=1,table.getn(CS_AddOnOrganizer_Profiles) do
info = {};
info.text = CS_AddOnOrganizer_Profiles[i][1];
info.func = CS_AddOnOrganizer_LoadProfile;
UIDropDownMenu_AddButton(info);
end
end
function CS_AddOnOrganizer_LoadProfile()
UIDropDownMenu_SetSelectedID(ProfilesDropDown, this:GetID());
CS_AddOnOrganizer_DisableAll();
local i;
local numaddons = GetNumAddOns();
id = this:GetID();
for j=2,table.getn(CS_AddOnOrganizer_Profiles[this:GetID()]) do
local loadname = CS_AddOnOrganizer_Profiles[this:GetID()][j];
for i=1, numaddons, 1 do
local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(i);
local addonTitleTag = getglobal("CS_AddOnOrganizer_List_Title"..i.."Tag");
if (name == loadname) then
CS_AddOnOrganizer_AddOnList[i] = 1;
end
end
end
CS_AddOnOrganizer_List_Update();
SaveProfileEditBox:SetText(CS_AddOnOrganizer_Profiles[this:GetID()][1]);
end
function CS_AddOnOrganizer_SaveProfile()
local i,j;
local ProfileText = SaveProfileEditBox:GetText();
local newKey;
local found = false;
if(not(ProfileText == "")) then
newKey = table.getn(CS_AddOnOrganizer_Profiles) + 1;
for i=1, table.getn(CS_AddOnOrganizer_Profiles) do
if (CS_AddOnOrganizer_Profiles[i][1] == ProfileText) then
newKey = i;
found = true;
end
end
if(not(found))then
CS_AddOnOrganizer_Profiles[newKey] = {[1] = SaveProfileEditBox:GetText()};
DEFAULT_CHAT_FRAME:AddMessage("|CFF00FF00CS_AddOnOrganizer|r - |CFFFFFFFF"..SaveProfileEditBox:GetText().."|r has been |CFF00FF00ADDED|r to profiles list!");
else
DEFAULT_CHAT_FRAME:AddMessage("|CFF00FF00CS_AddOnOrganizer|r - |CFFFFFFFF"..SaveProfileEditBox:GetText().."|r has been |CFF00FF00MODIFIED|r in the profiles list!");
end
local numaddons = GetNumAddOns();
j=2;
for i=1, numaddons, 1 do
if(CS_AddOnOrganizer_AddOnList[i] == 1) then
CS_AddOnOrganizer_Profiles[newKey][j] = GetAddOnInfo(i);
j = j+1;
end
end
else
DEFAULT_CHAT_FRAME:AddMessage("|CFF00FF00CS_AddOnOrganizer|r - |CFFFF0000You have to write a name for the profile!|r");
end
end
function CS_AddOnOrganizer_DeleteProfile()
if (not(id == nil)) then
DEFAULT_CHAT_FRAME:AddMessage("|CFF00FF00CS_AddOnOrganizer|r - |CFFFF0000DELETED ID#"..id.."!|r");
table.remove(CS_AddOnOrganizer_Profiles,id);
if(table.getn(CS_AddOnOrganizer_Profiles) == 0) then
CS_AddOnOrganizer_Profiles = {};
id=nil;
end
end
end