--[[-------------------------------------------------------------------------------- ItemSync Main GUI Framework Author: Derkyle Website: http://www.manaflux.com -----------------------------------------------------------------------------------]] ISYNC_SHOWINVALID_CHK = 0; ISYNC_SHOWSEARCH_CHK = 0; local ItemSync_Tabs = { { ISYNC_BT_SEARCH, ISYNC_BT_SEARCH, "Interface\\Icons\\INV_Misc_QuestionMark" }, { ISYNC_BT_OPTIONS, ISYNC_BT_OPTIONS, "Interface\\Icons\\Trade_Engineering" }, { ISYNC_BT_FILTERS, ISYNC_BT_FILTERS, "Interface\\Icons\\Spell_Nature_WispSplode" }, { ISYNC_BT_FAVORITES, ISYNC_BT_FAVORITES, "Interface\\Icons\\INV_ValentinesCard01" }, { ISYNC_BT_ITEMID, ISYNC_BT_ITEMID, "Interface\\Icons\\Ability_Spy" }, { ISYNC_BT_BAGVIEW, ISYNC_BT_BAGVIEW, "Interface\\Icons\\INV_Misc_Bag_18" }, }; --------------------------------------------------- -- ISync:MainFrame_OnLoad() --------------------------------------------------- function ISync:MainFrame_OnLoad() --setup the tabs for i = 1, 6, 1 do getglobal("ISync_Tab" .. i).tipinfo = ItemSync_Tabs[i][2]; getglobal("ISync_Tab" .. i):SetNormalTexture(ItemSync_Tabs[i][3]); end end -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------- -- ISync:ItemDisplay_Update() --------------------------------------------------- function ISync:ItemDisplay_Update() if(ISync:SetVar({"OPT","ITEMCOUNTDISPLAY"}, 1, "COMPARE")) then if(not ISync_ID_Frame:IsVisible()) then ISync_ID_Frame:Show(); end ISync_ID_Frame_Text:SetText(""); --empty current text ISync_ID_Frame_Text:SetText("|c0000FF00Items:|r |c00BDFCC9"..ISync:SetVar({"OPT","ITEMCOUNT_VALID"}, 0).."|r"); else ISync_ID_Frame:Hide(); end end -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------- -- ISync:MainFrame_Binding() --------------------------------------------------- function ISync:MainFrame_Binding() if(ISYNC_LOADYES == 1) then if ( ISync_MainFrame:IsVisible() ) then ISync_MainFrame:Hide(); else ISync_MainFrame:Show(); end end end --------------------------------------------------- -- ISync:Main_DD_SetSelectedID() --------------------------------------------------- function ISync:Main_DD_SetSelectedID(frame, id, names) UIDropDownMenu_SetSelectedID(frame, id); if( not frame ) then frame = this; end UIDropDownMenu_SetText(names[id].name, frame); end --------------------------------------------------- -- ISync:Main_DD_Initialize() --------------------------------------------------- function ISync:Main_DD_Initialize() local info; for i = 1, getn(ISYNC_DD_SORT), 1 do info = { }; info.text = ISYNC_DD_SORT[i].name; info.func = ISync.Main_DD_OnClick; UIDropDownMenu_AddButton(info); end end --------------------------------------------------- -- ISync:Main_DD_Load() --------------------------------------------------- function ISync:Main_DD_Load() UIDropDownMenu_Initialize(ISync_MainFrame_DropDown, ISync.Main_DD_Initialize); ISync:Main_DD_SetSelectedID(ISync_MainFrame_DropDown, 1, ISYNC_DD_SORT); UIDropDownMenu_SetWidth(80); UIDropDownMenu_SetButtonWidth(24); UIDropDownMenu_JustifyText("LEFT", ISync_MainFrame_DropDown) end --------------------------------------------------- -- ISync:Main_DD_OnClick() --------------------------------------------------- function ISync:Main_DD_OnClick() local oldID = UIDropDownMenu_GetSelectedID(ISync_MainFrame_DropDown); UIDropDownMenu_SetSelectedID(ISync_MainFrame_DropDown, this:GetID()); if( oldID ~= this:GetID() ) then ISync:SetVar({"OPT","RARITY_DD"}, ISYNC_DD_SORT[UIDropDownMenu_GetSelectedID(ISync_MainFrame_DropDown)].sortType, "TRUE"); --TRUE=force FauxScrollFrame_SetOffset(ISync_MainFrame_ListScrollFrame, 0); getglobal("ISync_MainFrame_ListScrollFrameScrollBar"):SetValue(0); ISync:ListSort(); ISync:UpdateScrollFrame(); end end -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------- -- ISync:TabClick() --------------------------------------------------- function ISync:TabClick() this:SetChecked(0); if(this:GetID() == 1) then ISync_OptionsFrame:Hide(); ISync_FiltersFrame:Hide(); if ( ISync_SearchFrame:IsVisible() ) then ISync_SearchFrame:Hide(); else ISync_SearchFrame:Show(); end elseif(this:GetID() == 2) then ISync_FiltersFrame:Hide(); ISync_SearchFrame:Hide(); if ( ISync_OptionsFrame:IsVisible() ) then ISync_OptionsFrame:Hide(); else ISync_OptionsFrame:Show(); end elseif(this:GetID() == 3) then ISync_OptionsFrame:Hide(); ISync_SearchFrame:Hide(); if ( ISync_FiltersFrame:IsVisible() ) then ISync_FiltersFrame:Hide(); else ISync_FiltersFrame:Show(); end elseif(this:GetID() == 4) then if ( ISync_FavFrame:IsVisible() ) then ISync_FavFrame:Hide(); else ISync_FavFrame:Show(); end elseif(this:GetID() == 5) then ISync:ItemIDSearch_Binding(); elseif(this:GetID() == 6) then ISync:BV_Binding(); end end -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------- -- ISync:Main_Refresh() --------------------------------------------------- function ISync:Main_Refresh() if(ISYNC_LOADYES == 0) then return nil; end --don't run if disabled FauxScrollFrame_SetOffset(ISync_MainFrame_ListScrollFrame, 0); getglobal("ISync_MainFrame_ListScrollFrameScrollBar"):SetValue(0); ISync:BuildIndex(); ISync:UpdateScrollFrame(); end -------------------------------------------------- -- ISync:BuildIndex() --------------------------------------------------- function ISync:BuildIndex() if(ISYNC_LOADYES == 0) then return nil; end --don't run if disabled --if we had a refresh check then set it back to zero if(ISync:SetVar({"REQUIRED","REFRESH"}, 1, "COMPARE")) then ISync:SetVar({"REQUIRED","REFRESH"}, 0, "TRUE"); end ISync_MainFrameUpdate:Hide(); ------------------------------------------------------ local iNew, iValid, iLost, index, value, sParseLink; iValid = 0; --reset iLost = 0; --reset --start the display procedure if(ISYNC_SHOWSEARCH_CHK == 1) then ISync_SortIndex = { }; ISync_SortIndex_Name = { }; iNew = 1; if(not ISyncDB) then return nil; end if(not ISyncDB[ISYNC_REALM_NUM]) then return nil; end --do the loop for index, value in ISyncDB[ISYNC_REALM_NUM] do sParseLink = ISync:FetchDB(index, "subitem"); if(not sParseLink) then --check local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:0:0"); --do we have a valid item? if(name_X and quality_X and ISync:SF_MatchSearch(index, name_X, quality_X)) then --check to see if we've already added the name if(not ISync_SortIndex_Name[name_X]) then ISync_SortIndex[iNew] = { }; ISync_SortIndex[iNew].name = name_X; ISync_SortIndex[iNew].quality = quality_X; ISync_SortIndex[iNew].id = index..":0:0:0"; ISync_SortIndex[iNew].idcore = index; ISync_SortIndex_Name[name_X] = 1; iNew = iNew + 1; iValid = iValid + 1; else ISync_SortIndex[iNew] = { }; ISync_SortIndex[iNew].name = name_X..iNew; --add it but with a fake number at end ISync_SortIndex[iNew].realname = name_X; --same name item ISync_SortIndex[iNew].quality = quality_X; ISync_SortIndex[iNew].idcore = index; ISync_SortIndex[iNew].id = index..":0:0:0"; ISync_SortIndex_Name[name_X..iNew] = 1; iNew = iNew + 1; iValid = iValid + 1; end--if(not ISync_SortIndex_Name[name_X]) then end--if(name_X and quality_X and ISync:SF_MatchSearch(index, name_X, quality_X)) then else ----------------------------------- --ADD SUBITEMS AS WELL if(sParseLink and type(sParseLink) == "table") then for qindex, qvalue in sParseLink do --check local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:"..qvalue..":0"); --do we have a valid item? match with primary quality as well if(name_X and quality_X and ISync:SF_MatchSearch(index, name_X, quality_X)) then ISync_SortIndex[iNew] = { }; ISync_SortIndex[iNew].name = name_X; ISync_SortIndex[iNew].quality = quality_X; ISync_SortIndex[iNew].id = index..":0:"..qvalue..":0"; ISync_SortIndex[iNew].idcore = index; ISync_SortIndex[iNew].subid = qvalue; iNew = iNew + 1; iValid = iValid + 1; end end--for qindex, qvalue in sParseLink do end--if(type(sParseLink) == "table") then ----------------------------------- end--if(not sParseLink) then end--for index, value in ISyncDB[ISync_RealmNum] do elseif(ISYNC_SHOWINVALID_CHK == 1) then ISync_SortIndex = { }; ISync_SortIndex_Name = { }; iNew = 1; if(not ISyncDB) then return nil; end if(not ISyncDB[ISYNC_REALM_NUM]) then return nil; end --do the loop for index, value in ISyncDB[ISYNC_REALM_NUM] do sParseLink = ISync:FetchDB(index, "subitem"); if(not sParseLink) then --this item has no subitems, cause it's subitem value = 0 local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:0:0"); if(not name_X) then ISync_SortIndex[iNew] = { }; if(ISyncDB_Names[index]) then ISync_SortIndex[iNew].name = ISyncDB_Names[index]; else ISync_SortIndex[iNew].name = index..":0".." "..ISYNC_SHOWSUBITEM2; --add it but with a fake number at end end ISync_SortIndex[iNew].quality = 0; ISync_SortIndex[iNew].idcore = index; ISync_SortIndex[iNew].id = index..":0:0:0"; iNew = iNew + 1; iLost = iLost + 1; end else --it has subitems --make sure it's a table if(type(sParseLink) == "table") then for qindex, qvalue in sParseLink do --check local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:"..qvalue..":0"); --do we have a valid item? if(not name_X) then ISync_SortIndex[iNew] = { }; if(ISyncDB_Names[index]) then ISync_SortIndex[iNew].name = ISyncDB_Names[index].." "..ISYNC_SHOWSUBITEM; else ISync_SortIndex[iNew].name = index..":"..qvalue.." "..ISYNC_SHOWSUBITEM2; --add it but with a fake number at end end ISync_SortIndex[iNew].quality = 0; ISync_SortIndex[iNew].id = index..":0:"..qvalue..":0"; ISync_SortIndex[iNew].idcore = index; ISync_SortIndex[iNew].subid = qvalue; iNew = iNew + 1; iLost = iLost + 1 end end--for qindex, qvalue in sParseLink do end--if(type(sParseLink) == "table") then end--if(not sParseLink) then end--for index, value in ISyncDB[ISync_RealmNum] do else--do a regular display ISync_SortIndex = { }; ISync_SortIndex_Name = { }; iNew = 1; if(not ISyncDB) then return nil; end if(not ISyncDB[ISYNC_REALM_NUM]) then return nil; end --do the loop for index, value in ISyncDB[ISYNC_REALM_NUM] do sParseLink = ISync:FetchDB(index, "subitem"); if(not sParseLink) then --this item has no subitems, cause it's subitem value = 0 --check local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:0:0"); --do we have a valid item? if(name_X and quality_X) then --fix the quality if it needs changing, only for primary items if(not ISync:FetchDB(index, "quality", quality_X)) then ISync:SetDB(index, "quality", quality_X); end --check to see if we've already added the name if(not ISync_SortIndex_Name[name_X]) then ISync_SortIndex[iNew] = { }; ISync_SortIndex[iNew].name = name_X; ISync_SortIndex[iNew].quality = quality_X; ISync_SortIndex[iNew].id = index..":0:0:0"; ISync_SortIndex[iNew].idcore = index; ISync_SortIndex_Name[name_X] = 1; --check for stored names if(not ISyncDB_Names[index]) then ISyncDB_Names[index] = name_X; end if(name_X and ISyncDB_Names[index] and ISyncDB_Names[index] ~= name_X) then ISyncDB_Names[index] = name_X; end iNew = iNew + 1; iValid = iValid + 1; else ISync_SortIndex[iNew] = { }; ISync_SortIndex[iNew].name = name_X..iNew; --add it but with a fake number at end ISync_SortIndex[iNew].realname = name_X; --same name item ISync_SortIndex[iNew].quality = quality_X; ISync_SortIndex[iNew].idcore = index; ISync_SortIndex[iNew].id = index..":0:0:0"; ISync_SortIndex_Name[name_X..iNew] = 1; if(not ISyncDB_Names[index]) then ISyncDB_Names[index] = name_X; end if(name_X and ISyncDB_Names[index] and ISyncDB_Names[index] ~= name_X) then ISyncDB_Names[index] = name_X; end iNew = iNew + 1; iValid = iValid + 1; end--if(not ISync_SortIndex_Name[name_X]) then else iLost = iLost + 1; end--if(name_X and quality_X) then else --it has subitems --make sure it's a table if(type(sParseLink) == "table") then for qindex, qvalue in sParseLink do --check local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:"..qvalue..":0"); --do we have a valid item? if(name_X and quality_X) then ISync_SortIndex[iNew] = { }; ISync_SortIndex[iNew].name = name_X; ISync_SortIndex[iNew].quality = quality_X; ISync_SortIndex[iNew].id = index..":0:"..qvalue..":0"; ISync_SortIndex[iNew].idcore = index; ISync_SortIndex[iNew].subid = qvalue; iNew = iNew + 1; iValid = iValid + 1; else iLost = iLost + 1; end end--for qindex, qvalue in sParseLink do end--if(type(sParseLink) == "table") then end--if(not sParseLink) then end--for index, value in ISyncDB[ISync_RealmNum] do --valid, invalid nums ISync:SetVar({"OPT","ITEMCOUNT_VALID"}, iValid, "TRUE"); ISync:SetVar({"OPT","ITEMCOUNT_INVALID"}, iLost, "TRUE"); end--end build array ISync_SortIndex_Name = nil; ISync:ListSort(); ISync_SortIndex.onePastEnd = iNew; ISync_SortIndex.total = (iValid+iLost); ISync_SortIndex.valid = iValid; ISync_SortIndex.invalid = iLost; ISync:ItemDisplay_Update(); end --------------------------------------------------- -- ISync:ListSort() --------------------------------------------------- function ISync:ListSort() if( ISYNC_DD_SORT[UIDropDownMenu_GetSelectedID(ISync_MainFrame_DropDown)].sortType ) then local sortType = ISYNC_DD_SORT[UIDropDownMenu_GetSelectedID(ISync_MainFrame_DropDown)].sortType; if( ISync:SetVar({"OPT","RARITY_DD"}, "name") == "name" ) then ISync:Main_DD_SetSelectedID(ISync_MainFrame_DropDown, 1, ISYNC_DD_SORT); table.sort(ISync_SortIndex, ISync_SortByName); elseif( ISync:SetVar({"OPT","RARITY_DD"}, "name") == "rarity" ) then ISync:Main_DD_SetSelectedID(ISync_MainFrame_DropDown, 2, ISYNC_DD_SORT); table.sort(ISync_SortIndex, ISync_SortColor); end end end --------------------------------------------------- -- ISync_SortByName() --------------------------------------------------- function ISync_SortByName(elem1, elem2) return elem1.name < elem2.name; end --------------------------------------------------- -- ISync_SortColor() --------------------------------------------------- function ISync_SortColor(elem1, elem2) local color1, color2; --get the corresponding quality color1 = elem1.quality; color2 = elem2.quality; color1 = tonumber(color1); color2 = tonumber(color2); if(color1 and color2) then --this sorts the name if the colors match --that way the rarity are also alphabatized within the same rarity if( color1 == color2 ) then return elem1.name < elem2.name; end --return the color if it doesn't match return color2 < color1; else return nil; end end --------------------------------------------------- -- ISync:UpdateScrollFrame() --------------------------------------------------- function ISync: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_SortIndex or not ISync_SortIndex.onePastEnd) then ISync:BuildIndex(); end --double check if(not ISync_SortIndex.onePastEnd) then return nil; end --valid count and invalid count if(ISYNC_SHOWINVALID_CHK == 1) then ISync_MainFrameInfo:SetText("|c0000FF00"..ISYNC_SHOWVALID..":|r |c00BDFCC90|r\n|c00FF0000"..ISYNC_SHOWINVALID..":|r |c00BDFCC9"..ISync_SortIndex.invalid.."|r"); else ISync_MainFrameInfo:SetText("|c0000FF00"..ISYNC_SHOWVALID..":|r |c00BDFCC9"..ISync_SortIndex.valid.."|r\n|c00FF0000"..ISYNC_SHOWINVALID..":|r |c00BDFCC9"..ISync_SortIndex.invalid.."|r"); end --Since patch 1.4 the 5th arguement must be nill or an error will occur FauxScrollFrame_Update(ISync_MainFrame_ListScrollFrame, ISync_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_MainFrame_ListScrollFrame); local IMItemObj = getglobal("ISyncItem"..iItem); local IMItemObj_Text = getglobal("ISyncItem"..iItem.."Text"); local IMItemObj_Indexed = getglobal("ISyncItem"..iItem.."SubItem"); local IMItemObj_GB = getglobal("ISync_ItemIDGB_Button"..iItem); local IMItemObj_GB_Blip = getglobal("ISync_ItemIDGB_Button"..iItem.."_BlipTexture"); if(IMItemObj) then --check if were still within bounds if( itemIndex < ISync_SortIndex.onePastEnd and ISync_SortIndex[itemIndex]) then --if not subitem then process normally if(not ISync_SortIndex[itemIndex].realname) then IMItemObj_Text:SetPoint( "LEFT", 19, 1 ); IMItemObj_Indexed:Hide(); if(ISYNC_SHOWINVALID_CHK == 0) then IMItemObj:SetText(ISync_SortIndex[itemIndex].name); else IMItemObj:SetText("|c00FC5252"..ISync_SortIndex[itemIndex].name.."|r"); end IMItemObj.storeID = ISync_SortIndex[itemIndex].id; --store the itemid IMItemObj.storeCore = ISync_SortIndex[itemIndex].idcore; --its a subitem else IMItemObj_Text:SetPoint( "LEFT", 29, 1 ); IMItemObj_Indexed:Show(); if(ISYNC_SHOWINVALID_CHK == 0) then IMItemObj:SetText(ISync_SortIndex[itemIndex].realname); else IMItemObj:SetText("|c00FC5252"..ISync_SortIndex[itemIndex].realname.."|r"); end IMItemObj.storeID = ISync_SortIndex[itemIndex].id; --store the itemid IMItemObj.storeCore = ISync_SortIndex[itemIndex].idcore; end --store the subitem for items to allow for deletion if(ISync_SortIndex[itemIndex].subid) then IMItemObj.storeSubID = ISync_SortIndex[itemIndex].subid; else IMItemObj.storeSubID = nil; end IMItemObj.itemIndex = itemIndex; --store the itemindex for deletion --color accordingly (only when not invalid view) if(ISYNC_SHOWINVALID_CHK == 0) then local grabColor = ITEM_QUALITY_COLORS[tonumber(ISync_SortIndex[itemIndex].quality)]; if( grabColor) then IMItemObj:SetTextColor(grabColor.r, grabColor.g, grabColor.b); IMItemObj.r = grabColor.r; IMItemObj.g = grabColor.g; IMItemObj.b = grabColor.b; else IMItemObj.r = 0; IMItemObj.g = 0; IMItemObj.b = 0; end end --check user inputted (only when not invalid view) if(ISYNC_SHOWINVALID_CHK == 0) then if(ISync:FetchDB(ISync_SortIndex[itemIndex].idcore, "idchk", 1)) then IMItemObj_GB_Blip:SetTexture("Interface\\AddOns\\ItemSync\\images\\ISync_ItemID_ItemPic"); ISYNC_ITEMID_GREENBUTTON_WARNING2 = ISYNC_ITEMID_GREENBUTTON_WARNING; IMItemObj_GB:Show(); IMItemObj_GB.Obj = nil; else IMItemObj_GB:Hide(); end else IMItemObj_GB_Blip:SetTexture("Interface\\AddOns\\ItemSync\\images\\ISync_Invalid_ItemPic"); ISYNC_ITEMID_GREENBUTTON_WARNING2 = "|c00FF0000"..ISYNC_ITEMISINVALID_TOOLTIP1.."|r"; IMItemObj_GB:Show(); IMItemObj_GB.Obj = IMItemObj; end --show it IMItemObj:Show(); --we deleted an item elseif( itemIndex < ISync_SortIndex.onePastEnd and not ISync_SortIndex[itemIndex]) then IMItemObj.storeID = nil; IMItemObj.storeCore = nil; IMItemObj.storeSubID = nil; IMItemObj.itemIndex = nil; IMItemObj:SetText("|c00FC5252"..ISYNC_DELETE_ITEMMSG.."|r"); IMItemObj:Show(); IMItemObj_Indexed:Hide(); IMItemObj_GB:Hide(); else IMItemObj.storeID = nil; IMItemObj.storeCore = nil; IMItemObj.storeSubID = nil; IMItemObj.itemIndex = nil; IMItemObj:SetText(""); IMItemObj:Hide(); IMItemObj_Indexed:Hide(); IMItemObj_GB:Hide(); end--if( itemIndex < ISync_SortIndex.onePastEnd ) then end--if(IMItemObj) then end--for iItem = 1, ISYNC_SHOWN, 1 do end -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------- -- ISync:ButtonEnter() --------------------------------------------------- function ISync:ButtonEnter() if(not this.storeID) 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:"..this.storeID); if(name_X) then ISync_MainFrame.TooltipButton = this:GetID(); GameTooltip:SetOwner(this, "ANCHOR_RIGHT"); GameTooltip:SetHyperlink(link_X); ISync:Do_Parse(UIParent, ISyncTooltip, this.storeCore, "item:"..this.storeID); ISync:SendtoMods(GameTooltip, name_X, "item:"..this.storeID, 1, quality_X); else ISync_MainFrame.TooltipButton = this:GetID(); GameTooltip:SetOwner(this, "ANCHOR_RIGHT"); GameTooltip:SetHyperlink("item:"..this.storeID); --something went wrong so lets show a message if(not GameTooltip:IsVisible()) then ISync_MainFrame.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"..this.storeID.."|r", 0, 0, 0); GameTooltip:AddLine(ISYNC_ITEMISINVALID_TOOLTIP4); GameTooltip:Show(); elseif(GameTooltip:IsVisible()) then 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"..this.storeID.."|r", 0, 0, 0); GameTooltip:AddLine(ISYNC_ITEMISINVALID_TOOLTIP4); GameTooltip:Show(); end end end --------------------------------------------------- -- ISync:ButtonClick() --------------------------------------------------- function ISync:ButtonClick(sButton) if(not this.storeID) then return nil; end if(ISYNC_SHOWINVALID_CHK > 0) then ISync_ItemIDFrameEdit:SetText(this.storeID); ISync_ItemIDFrame:Show(); return nil; end --special thanks to Axu for the code :) Support for AxuItemMenus if (AxuItemMenus_EvocationTest and this.storeID and AxuItemMenus_EvocationTest(sButton, "isync")) then AxuItemMenus_FillFromLink("item:"..this.storeID); AxuItemMenus_OpenMenu(); elseif (sButton == "LeftButton") then if( ChatFrameEditBox:IsVisible() and this.storeID) then local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..this.storeID); 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"); 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 = GetItemInfo("item:"..this.storeID); 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"); end elseif( IsControlKeyDown() and this.storeID) then local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..this.storeID); if(name_X and link_X and quality_X) then DressUpItemLink(link_X); end end--end checks elseif (sButton == "RightButton") then if(IsAltKeyDown() and this.storeCore and this.storeID and this.itemIndex and ISync:FetchDB(this.storeCore, "chk")) then local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..this.storeID); if(name_X and link_X and quality_X) then local newText = string.format(ISYNC_DELETE_MSGRETAKE, "|c"..ISync:ReturnHexColor(quality_X)..name_X.."|r"); if(newText) then ISync_MainFrame.DEL_ItemIndex = this.itemIndex; ISync_MainFrame.DEL_CoreID = this.storeCore; if(this.storeSubID) then ISync_MainFrame.DEL_SubID = this.storeSubID; end StaticPopupDialogs["ISYNC_DELETEITEM_CONFIRM"].text = TEXT(newText); StaticPopup_Show("ISYNC_DELETEITEM_CONFIRM"); end end--if(name_X and link_X and quality_X) then --add to favorites elseif(IsShiftKeyDown() and IsControlKeyDown() and this.storeCore and this.storeID and this.itemIndex) then if(not ISyncFav or not ISyncFav[UnitName("player")]) then return nil; end local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..this.storeID); if(name_X and link_X and quality_X) then if(this.storeSubID) then ISyncFav[UnitName("player")][this.storeCore..":"..this.storeSubID] = 1; else ISyncFav[UnitName("player")][this.storeCore..":0"] = 1; end ISync:Print("|c00A2D96FItemSync:|r "..ISYNC_ADDEDTOFAV.." <<>> |r|c"..ISync:ReturnHexColor(quality_X)..this:GetText().."|r"); ISync:Fav_Refresh(); end end-- if(IsAltKeyDown() and this.storeCore and this.storeID and ISync:FetchDB(this.storeCore, "chk")) then end end --------------------------------------------------- -- ISync:BlipClick() --------------------------------------------------- function ISync:BlipClick(sButton) if(ISYNC_SHOWINVALID_CHK > 0) then local getObj = getglobal((this:GetParent()):GetName()); if(not getObj) then return nil; end getObj = getObj.Obj; if(not getObj) then return nil; end local newText = string.format(ISYNC_DELETE_MSGRETAKE, "|c00FC5252"..getObj:GetText().."|r"); if(newText) then ISync_MainFrame.DEL_ItemIndex = getObj.itemIndex; ISync_MainFrame.DEL_CoreID = getObj.storeCore; if(getObj.storeSubID) then ISync_MainFrame.DEL_SubID = getObj.storeSubID; end StaticPopupDialogs["ISYNC_DELETEITEM_CONFIRM"].text = TEXT(newText); StaticPopup_Show("ISYNC_DELETEITEM_CONFIRM"); end end end --------------------------------------------------- -- ISync:DeleteItem() --------------------------------------------------- function ISync:DeleteItem() --first check to see if we have something if(not ISync_MainFrame.DEL_ItemIndex) then return nil; end --it's a sub item if(ISync_MainFrame.DEL_SubID) then ISync:SetDB(ISync_MainFrame.DEL_CoreID, "subitem", ISync_MainFrame.DEL_SubID, "TRUE"); ISync_SortIndex[ISync_MainFrame.DEL_ItemIndex] = nil; --delete to show as deleted if(ISYNC_SHOWINVALID_CHK > 0) then ISync_SortIndex.invalid = ISync_SortIndex.invalid - 1; --decrease else ISync_SortIndex.valid = ISync_SortIndex.valid - 1; --decrease end ISync:UpdateScrollFrame(); --refresh it else ISyncDB[ISYNC_REALM_NUM][ISync_MainFrame.DEL_CoreID] = nil; ISync_SortIndex[ISync_MainFrame.DEL_ItemIndex] = nil; --delete to show as deleted if(ISYNC_SHOWINVALID_CHK > 0) then ISync_SortIndex.invalid = ISync_SortIndex.invalid - 1; --decrease else ISync_SortIndex.valid = ISync_SortIndex.valid - 1; --decrease end ISync:UpdateScrollFrame(); --refresh it end end --------------------------------------------------- -- ISync:SendtoMods() --------------------------------------------------- function ISync:SendtoMods(sTooltip, sName, sLink, sQty, sQuality) if(not sTooltip or not sName or not sQty) then return nil; end if(sTooltip.SendtoMods) then return nil; end --AuctionMatrix/AuctionSync if(AuctionMatrix_AddTooltipMoney and ISync:SetVar({"MOD","AMAS"}, 1, "COMPARE")) then AuctionMatrix_AddTooltipMoney(sName, sTooltip, sQty); end if(AuctionSync_AddTooltip and ISync:SetVar({"MOD","AMAS"}, 1, "COMPARE")) then AuctionSync_AddTooltip(sTooltip, sName, sLink, sQuality, sQty, nil); end --Auctioneer if(ENHTOOLTIP_VERSION and not EnhTooltip and ISync:SetVar({"MOD","AUCTIONEER"}, 1, "COMPARE")) then local Dlink = "|c"..ISync:ReturnHexColor(sQuality).. "|H"..sLink.."|h["..sName.."]|h|r"; if (TT_Clear and TT_TooltipCall and TT_Show) then TT_Clear(); TT_TooltipCall(sTooltip, sName, Dlink, sQuality, sQty, 0); TT_Show(sTooltip); end elseif(ENHTOOLTIP_VERSION and EnhTooltip and ISync:SetVar({"MOD","AUCTIONEER"}, 1, "COMPARE")) then if(EnhancedTooltip:IsVisible()) then return nil; end local Dlink = "|c"..ISync:ReturnHexColor(sQuality).. "|H"..sLink.."|h["..sName.."]|h|r"; EnhTooltip.ClearTooltip(); EnhTooltip.TooltipCall(sTooltip, sName, Dlink, sQuality, sQty, 0); EnhTooltip.ShowTooltip(sTooltip); end --ReagentInfo if(ReagentInfo_AddTooltipInfo and ISync:SetVar({"MOD","REAGENTINFO"}, 1, "COMPARE")) then ReagentInfo_AddTooltipInfo(sTooltip, sName); end sTooltip.SendtoMods = nil; end -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------