vanilla-wow-addons – Rev 1
?pathlinks?
--[[
Guild Event Manager by Kiki of European Cho'gall (Alliance)
External module - By Kiki
]]
--------------- Local variables ---------------
local GEM_EXTERNAL_CBFunc = nil;
--------------- Internal functions ---------------
--------------- From XML functions ---------------
local function GEMExternal_CheckValues(tab)
if(tab.name == nil or tab.name == "")
then
GEM_ChatPrint(GEM_TEXT_EXTERNAL_ERR_GIVE_NAME);
getglobal("GEMExternalFrame_Name"):SetFocus();
return;
end
tab.name = string.upper(string.sub(tab.name,1,1)) .. string.sub(tab.name,2);
if(tab.level == nil)
then
GEM_ChatPrint(GEM_TEXT_EXTERNAL_ERR_GIVE_LEVEL);
getglobal("GEMExternalFrame_Level"):SetFocus();
return;
end
if(tab.guild == nil)
then
tab.guild = "";
end;
if(tab.comment == nil)
then
tab.comment = "";
end;
GEM_ChatDebug(GEM_DEBUG_GLOBAL,"Adding external "..tab.name.." guild="..tab.guild.." level="..tab.level.." class="..tab.class.." comment="..tab.comment.." forcesub="..tab.forcesub);
if(GEM_EXTERNAL_CBFunc)
then
GEM_EXTERNAL_CBFunc(tab);
end
GEMExternalFrame_Name:SetText("");
GEMExternalFrame_Guild:SetText("");
GEMExternalFrame_Level:SetText("");
GEMExternalFrame_Comment:SetText("");
GEMExternalFrame_Forcesub:SetChecked(0);
GEMExternalFrame:Hide();
end
function GEMExternalTarget_OnClick()
local tab = {};
if(not UnitExists("target") or not UnitIsFriend("player","target") or not UnitIsPlayer("target"))
then
GEM_ChatPrint(GEM_TEXT_EXTERNAL_ERR_INVALID);
return;
end
local _,clas = UnitClass("target");
tab.name = UnitName("target");
tab.guild = GetGuildInfo("target");
tab.level = UnitLevel("target");
tab.class = clas;
tab.comment = string.gsub(getglobal("GEMExternalFrame_Comment"):GetText(),"[%c]"," ");
local forcesub = getglobal("GEMExternalFrame_Forcesub"):GetChecked();
if(forcesub == nil) then forcesub = 0; end;
tab.forcesub = forcesub;
GEMExternal_CheckValues(tab);
end
function GEMExternalAdd_OnClick()
local tab = {}
tab.name = getglobal("GEMExternalFrame_Name"):GetText();
tab.guild = getglobal("GEMExternalFrame_Guild"):GetText();
local level = getglobal("GEMExternalFrame_Level"):GetText();
tab.class = getglobal("GEMExternalClassDropDown").class;
tab.comment = string.gsub(getglobal("GEMExternalFrame_Comment"):GetText(),"[%c]"," ");
tab.level = tonumber(level,10);
local forcesub = getglobal("GEMExternalFrame_Forcesub"):GetChecked();
if(forcesub == nil) then forcesub = 0; end;
tab.forcesub = forcesub;
GEMExternal_CheckValues(tab);
end
function GEMExternal_OnShow()
GEMExternalFrame_Name:SetFocus();
end
function GEMExternalClassDropDown_OnShow()
getglobal("GEMExternalClassDropDown").class = "WARRIOR";
UIDropDownMenu_Initialize(GEMExternalClassDropDown, GEMExternalClassDropDown_Init);
UIDropDownMenu_SetText(GEM_Classes["WARRIOR"], GEMExternalClassDropDown);
UIDropDownMenu_SetWidth(90, GEMExternalClassDropDown);
end
function GEMExternalClassDropDown_OnClick()
getglobal("GEMExternalClassDropDown").class = this.value;
UIDropDownMenu_SetText(GEM_Classes[this.value],GEMExternalClassDropDown);
end
function GEMExternalClassDropDown_Init()
for us,locale in GEM_Classes do
local info = { };
info.text = locale;
info.value = us;
info.func = GEMExternalClassDropDown_OnClick;
UIDropDownMenu_AddButton(info);
end
end
--------------- GUI Exported functions ---------------
--[[
function GEMExternal_Choose :
Opens the ExternalAdd frame
CBFunc : Function -- The CB function : void (*func)(infos) -- Called with the player (infos={name,guild,level,class})
title : String -- Title of the window
--
Returns false if ExternalAdd is already open, True otherwise
]]
function GEMExternal_Choose(CBFunc,title,buttons)
if(GEMExternalFrame:IsVisible())
then
return false;
end
GEM_EXTERNAL_CBFunc = CBFunc;
GEMExternalFrameTitle:SetText(title);
if(buttons[1])
then
GEMExternalFrame_CommentString:Show();
GEMExternalFrame_Comment:Show();
else
GEMExternalFrame_CommentString:Hide();
GEMExternalFrame_Comment:Hide();
end
if(buttons[2])
then
GEMExternalFrame_ForcesubString:Show();
GEMExternalFrame_Forcesub:Show();
else
GEMExternalFrame_ForcesubString:Hide();
GEMExternalFrame_Forcesub:Hide();
end
GEMExternalFrame:Show();
return true;
end
-- /script GEMExternal_Choose(nil,"test",{})