vanilla-wow-addons – Rev 1
?pathlinks?
--[[--------------------------------------------------------------------------------
ItemSync Favorites Framework
Author: Derkyle
Website: http://www.manaflux.com
-----------------------------------------------------------------------------------]]
local DD_NameCount = 1;
---------------------------------------------------
-- ISync:FavFrame_Binding()
---------------------------------------------------
function ISync:FavFrame_Binding(sOpt)
if(ISYNC_LOADYES == 1) then
if ( sOpt and sOpt == 1) then
ISync_FavFrame:Hide();
return nil;
end
if ( ISync_FavFrame:IsVisible() ) then ISync_FavFrame:Hide(); else ISync_FavFrame:Show(); end
end
end
---------------------------------------------------
-- ISync:Fav_DD_SetSelectedID()
---------------------------------------------------
function ISync:Fav_DD_SetSelectedID(frame, id, names)
UIDropDownMenu_SetSelectedID(frame, id);
if( not frame ) then
frame = this;
end
UIDropDownMenu_SetText(names, ISync_FavFrame_DropDown);
end
---------------------------------------------------
-- ISync:Fav_DD_Initialize()
---------------------------------------------------
function ISync:Fav_DD_Initialize()
local info;
local sCount = 1;
for sKey, sVar in ISyncFav do
info = { };
info.text = sKey;
info.func = ISync.Fav_DD_OnClick;
UIDropDownMenu_AddButton(info);
if( string.lower(sKey) == string.lower(UnitName("player")) ) then DD_NameCount = sCount; end
sCount = sCount + 1;
end
end
---------------------------------------------------
-- ISync:Fav_DD_Load()
---------------------------------------------------
function ISync:Fav_DD_Load()
UIDropDownMenu_Initialize(ISync_FavFrame_DropDown, ISync.Fav_DD_Initialize);
ISync:Fav_DD_SetSelectedID(ISync_FavFrame_DropDown, DD_NameCount, UnitName("player"));
UIDropDownMenu_JustifyText("LEFT", ISync_FavFrame_DropDown)
end
---------------------------------------------------
-- ISync:Fav_DD_OnClick()
---------------------------------------------------
function ISync:Fav_DD_OnClick()
local oldID = UIDropDownMenu_GetSelectedID(ISync_FavFrame_DropDown);
UIDropDownMenu_SetSelectedID(ISync_FavFrame_DropDown, this:GetID());
if( oldID ~= this:GetID() ) then
FauxScrollFrame_SetOffset(ISync_FavFrame_ListScrollFrame, 0);
getglobal("ISync_FavFrame_ListScrollFrameScrollBar"):SetValue(0);
ISync:Fav_Refresh();
end
end
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------
-- ISync:Fav_OnEvent()
---------------------------------------------------
function ISync:Fav_OnEvent()
if( event == "VARIABLES_LOADED" ) then
ISync:Fav_DD_Load();
end
end
---------------------------------------------------
-- ISync:Fav_Refresh()
---------------------------------------------------
function ISync:Fav_Refresh()
if(ISYNC_LOADYES == 0) then return nil; end --don't run if disabled
FauxScrollFrame_SetOffset(ISync_FavFrame_ListScrollFrame, 0);
getglobal("ISync_FavFrame_ListScrollFrameScrollBar"):SetValue(0);
ISync:Fav_BuildIndex();
ISync:Fav_UpdateScrollFrame();
end
--------------------------------------------------
-- ISync:Fav_BuildIndex()
---------------------------------------------------
function ISync:Fav_BuildIndex()
if(ISYNC_LOADYES == 0) then return nil; end --don't run if disabled
------------------------------------------------------
local sUser = UIDropDownMenu_GetText(ISync_FavFrame_DropDown);
if(not sUser) then return nil; end
if(not ISyncFav or not ISyncFav[sUser]) then return nil; end
local iNew, xPL1, xPL2;
ISync_Fav_SortIndex = { };
iNew = 1;
--do the loop
for sKey, sVar in ISyncFav[sUser] do
xPL1 = string.gsub(sKey, "^(%d+):(%d+)$", "%1");
xPL2 = string.gsub(sKey, "^(%d+):(%d+)$", "%2");
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..xPL1..":0:"..xPL2..":0");
if(name_X) then
ISync_Fav_SortIndex[iNew] = { };
ISync_Fav_SortIndex[iNew].name = name_X;
ISync_Fav_SortIndex[iNew].id = sKey;
ISync_Fav_SortIndex[iNew].quality = quality_X;
else
ISync_Fav_SortIndex[iNew] = { };
ISync_Fav_SortIndex[iNew].name = ISYNC_SHOWINVALID..": ["..sKey.."]";
ISync_Fav_SortIndex[iNew].id = sKey;
ISync_Fav_SortIndex[iNew].quality = -99;
end
iNew = iNew + 1;
end--for index, value in ISyncDB[ISync_RealmNum] do
table.sort(ISync_Fav_SortIndex, ISync_SortByName); --use the sortbyname from the main gui
ISync_Fav_SortIndex.onePastEnd = iNew;
end
---------------------------------------------------
-- ISync:Fav_UpdateScrollFrame()
---------------------------------------------------
function ISync:Fav_UpdateScrollFrame()
local ISYNC_HEIGHT = 16;
local ISYNC_SHOWN = 23;
local LAST_SHOWN = 1;
if(ISYNC_LOADYES == 0) then return nil; end --don't run if disabled
if( not ISync_Fav_SortIndex or not ISync_Fav_SortIndex.onePastEnd) then
ISync:Fav_BuildIndex();
end
--double check
if(not ISync_Fav_SortIndex.onePastEnd) then return nil; end
--Since patch 1.4 the 5th arguement must be nill or an error will occur
FauxScrollFrame_Update(ISync_FavFrame_ListScrollFrame, ISync_Fav_SortIndex.onePastEnd - 1, ISYNC_SHOWN, ISYNC_HEIGHT, nil);
--do loop until all slots are filled, or we are out of information
for iItem = 1, ISYNC_SHOWN, 1 do
local itemIndex = iItem + FauxScrollFrame_GetOffset(ISync_FavFrame_ListScrollFrame);
local FavItemObj = getglobal("ISync_FavItem"..iItem);
local FavItemObj_Button = getglobal("ISync_FavRemItem"..iItem);
if(FavItemObj) then
--check if were still within bounds
if( itemIndex < ISync_Fav_SortIndex.onePastEnd) then
if(ISync_Fav_SortIndex[itemIndex].quality ~= -99) then
FavItemObj:SetText(ISync_Fav_SortIndex[itemIndex].name);
local grabColor = ITEM_QUALITY_COLORS[tonumber(ISync_Fav_SortIndex[itemIndex].quality)];
if( grabColor) then
FavItemObj:SetTextColor(grabColor.r, grabColor.g, grabColor.b);
FavItemObj.r = grabColor.r;
FavItemObj.g = grabColor.g;
FavItemObj.b = grabColor.b;
else
FavItemObj.r = 0;
FavItemObj.g = 0;
FavItemObj.b = 0;
end
else
FavItemObj:SetText("|c00FC5252"..ISync_Fav_SortIndex[itemIndex].name.."|r");
end
FavItemObj.storeID = ISync_Fav_SortIndex[itemIndex].id;
FavItemObj_Button.storeID = ISync_Fav_SortIndex[itemIndex].id;
FavItemObj_Button.name = ISync_Fav_SortIndex[itemIndex].name;
FavItemObj_Button.quality = ISync_Fav_SortIndex[itemIndex].quality;
FavItemObj:Show();
FavItemObj_Button:Show();
else
FavItemObj.storeID = nil;
FavItemObj_Button.storeID = nil;
FavItemObj_Button.name = nil;
FavItemObj_Button.quality = nil;
FavItemObj:SetText("");
FavItemObj:Hide();
FavItemObj_Button:Hide();
end--if( itemIndex < ISync_Fav_SortIndex.onePastEnd ) then
end--if(FavItemObj) then
end--for iItem = 1, ISYNC_SHOWN, 1 do
end
---------------------------------------------------
-- ISync:Fav_ButtonEnter()
---------------------------------------------------
function ISync:Fav_ButtonEnter()
if(not this.storeID) then return nil; end
local xPL1, xPL2;
xPL1 = string.gsub(this.storeID, "^(%d+):(%d+)$", "%1");
xPL2 = string.gsub(this.storeID, "^(%d+):(%d+)$", "%2");
if(not xPL1 or not xPL2) then return nil; end
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X, invType_X, icon_X = GetItemInfo("item:"..xPL1..":0:"..xPL2..":0");
if(name_X) then
ISync_FavFrame.TooltipButton = this:GetID();
GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
GameTooltip:SetHyperlink(link_X);
ISync:Do_Parse(UIParent, ISyncTooltip, tonumber(xPL1), "item:"..xPL1..":0:"..xPL2..":0");
ISync:SendtoMods(GameTooltip, name_X, "item:"..xPL1..":0:"..xPL2..":0", 1, quality_X);
else
ISync_FavFrame.TooltipButton = this:GetID();
GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
GameTooltip:AddLine(" ", 0, 0, 0);
GameTooltip:AddLine("|c00FF0000"..ISYNC_ITEMISINVALID_TOOLTIP1.."|r", 0, 0, 0);
GameTooltip:AddLine("|c00A2D96F"..ISYNC_ITEMISINVALID_TOOLTIP2.."|r", 0, 0, 0);
GameTooltip:AddLine("|c00FF0000"..ISYNC_ITEMISINVALID_TOOLTIP3.."|r", 0, 0, 0);
GameTooltip:AddLine(" ", 0, 0, 0);
GameTooltip:AddLine("|c0000FF00"..ISYNC_BT_ITEMID..":|r |c00BDFCC9"..xPL1.."|r", 0, 0, 0);
GameTooltip:SetHyperlink("item:"..xPL1..":0:"..xPL2..":0");
GameTooltip:Show();
end
end
---------------------------------------------------
-- ISync:Fav_ButtonClick()
---------------------------------------------------
function ISync:Fav_ButtonClick(sButton)
if(not this.storeID) then return nil; end
local xPL1, xPL2;
xPL1 = string.gsub(this.storeID, "^(%d+):(%d+)$", "%1");
xPL2 = string.gsub(this.storeID, "^(%d+):(%d+)$", "%2");
if(not xPL1 or not xPL2) then return nil; end
--special thanks to Axu for the code :) Support for AxuItemMenus
if (AxuItemMenus_EvocationTest and this.storeID and AxuItemMenus_EvocationTest(sButton, "isync_fav")) then
AxuItemMenus_FillFromLink("item:"..xPL1..":0:"..xPL2..":0");
AxuItemMenus_OpenMenu();
elseif (sButton == "LeftButton") then
if( ChatFrameEditBox:IsVisible()) then
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X, invType_X, icon_X = GetItemInfo("item:"..xPL1..":0:"..xPL2..":0");
if(name_X and link_X and quality_X) then
ChatFrameEditBox:Insert("|c"..ISync:ReturnHexColor(quality_X).."|H"..link_X.."|h["..name_X.."]|h|r");
else
ChatFrameEditBox:Insert("["..this:GetText().."]");
end
elseif( IsShiftKeyDown() and ChatFrameEditBox:IsVisible() and this.storeID) then
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X, invType_X, icon_X = GetItemInfo("item:"..xPL1..":0:"..xPL2..":0");
if(name_X and link_X and quality_X) then
ChatFrameEditBox:Insert("|c"..ISync:ReturnHexColor(quality_X).."|H"..link_X.."|h["..name_X.."]|h|r");
else
ChatFrameEditBox:Insert("["..this:GetText().."]");
end
elseif( IsControlKeyDown() and this.storeID) then
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X, invType_X, icon_X = GetItemInfo("item:"..xPL1..":0:"..xPL2..":0");
if(name_X and link_X and quality_X) then DressUpItemLink(link_X); end
end--end checks
end
end
---------------------------------------------------
-- ISync:FavRem_Click()
---------------------------------------------------
function ISync:FavRem_Click(sFrame)
if(not sFrame.storeID) then return nil; end
local sUser = UIDropDownMenu_GetText(ISync_FavFrame_DropDown);
if(not sUser) then return nil; end
if(not ISyncFav or not ISyncFav[sUser]) then return nil; end
ISyncFav[sUser][sFrame.storeID] = nil; --delete it and refresh
if(sFrame.quality ~= -99) then
ISync:Print("|c00A2D96FItemSync:|r "..ISYNC_REMFAV.." <<>> |r|c"..ISync:ReturnHexColor(sFrame.quality)..sFrame.name.."|r");
else
ISync:Print("|c00A2D96FItemSync:|r "..ISYNC_REMFAV.." <<>> |r|c00FC5252"..sFrame.name.."|r");
end
ISync:Fav_Refresh();
end
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------
-- ISync:FavPurge_Chk()
---------------------------------------------------
function ISync:FavPurge_Chk()
local sUser = UIDropDownMenu_GetText(ISync_FavFrame_DropDown);
if(not sUser) then return nil; end
if(not ISyncFav or not ISyncFav[sUser]) then return nil; end
StaticPopupDialogs["ISYNC_PURGEFAVITEM_CONFIRM"].text = TEXT(ISYNC_FAV_PURGECHK.."\n\n|c00FFFFFF"..sUser.."|r");
StaticPopup_Show("ISYNC_PURGEFAVITEM_CONFIRM");
end
---------------------------------------------------
-- ISync:Fav_Purge()
---------------------------------------------------
function ISync:Fav_Purge()
local sUser = UIDropDownMenu_GetText(ISync_FavFrame_DropDown);
if(not sUser) then return nil; end
if(not ISyncFav or not ISyncFav[sUser]) then return nil; end
ISyncFav[sUser] = nil; --delete it
ISyncFav[sUser] = { }; --recreate
ISync:Fav_Refresh();
end
Generated by GNU Enscript 1.6.5.90.