-- Advanced Trade Skill Window v0.4.0 -- copyright 2006 by Rene Schneider (Slarti on EU-Blackhand) -- custom sorting options script file atsw_customsorting={}; atsw_customheaders={}; atsw_uncategorized={}; atsw_opencategory=0; function ATSWCS_OnLoad() if(atsw_customsorting[UnitName("player")]==nil) then atsw_customsorting[UnitName("player")]={}; end if(atsw_customsorting[UnitName("player")][atsw_selectedskill]==nil) then atsw_customsorting[UnitName("player")][atsw_selectedskill]={}; end if(atsw_customheaders[UnitName("player")]==nil) then atsw_customheaders[UnitName("player")]={}; end if(atsw_customheaders[UnitName("player")][atsw_selectedskill]==nil) then atsw_customheaders[UnitName("player")][atsw_selectedskill]={}; end FauxScrollFrame_SetOffset(ATSWCSUListScrollFrame, 0); FauxScrollFrame_SetOffset(ATSWCSSListScrollFrame, 0); ATSWCS_UpdateUncategorizedList(); ATSWCS_UpdateSkillList(); end function ATSWCS_OnHide() end function ATSWCSFrame_OnEvent() end function ATSWCS_HideWindow() HideUIPanel(ATSWCSFrame); end function ATSWCS_Update() ATSWCS_UpdateSkillList(); end function ATSWCS_UpdateSkillList() if(atsw_customsorting[UnitName("player")]==nil) then atsw_customsorting[UnitName("player")]={}; end if(atsw_customsorting[UnitName("player")][atsw_selectedskill]==nil) then atsw_customsorting[UnitName("player")][atsw_selectedskill]={}; end if(atsw_customheaders[UnitName("player")]==nil) then atsw_customheaders[UnitName("player")]={}; end if(atsw_customheaders[UnitName("player")][atsw_selectedskill]==nil) then atsw_customheaders[UnitName("player")][atsw_selectedskill]={}; end local totalcount=table.getn(atsw_uncategorized); local offset=FauxScrollFrame_GetOffset(ATSWCSUListScrollFrame); for i=1,23,1 do local skillbutton=getglobal("ATSWCSSkill"..i); if(atsw_uncategorized[offset+i]) then skillbutton:SetText(atsw_uncategorized[offset+i].name); skillbutton:Show(); skillbutton.skillname=atsw_uncategorized[offset+i].name; local color=ATSWTypeColor[atsw_uncategorized[offset+i].type]; if(color) then skillbutton:SetTextColor(color.r, color.g, color.b); end else skillbutton:Hide(); end end offset=FauxScrollFrame_GetOffset(ATSWCSSListScrollFrame); local header=1; local skill=0; local i=1-offset; repeat local skillbutton=nil; local skillframe=nil; if(i>=1 and i<=17) then skillbutton=getglobal("ATSWCSCSkill"..i.."SkillButton"); skillframe=getglobal("ATSWCSCSkill"..i); end if(atsw_customheaders[UnitName("player")][atsw_selectedskill][header] and skill==0) then if(i>=1 and i<=17) then skillbutton:SetText(atsw_customheaders[UnitName("player")][atsw_selectedskill][header].name); skillbutton:SetTextColor(ATSWTypeColor.header.r, ATSWTypeColor.header.g, ATSWTypeColor.header.b); skillframe.skillname=atsw_customheaders[UnitName("player")][atsw_selectedskill][header].name; skillbutton:GetParent().btype="header"; end if(header==atsw_opencategory) then if(i>=1 and i<=17) then skillbutton:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up"); end skill=1; else if(i>=1 and i<=17) then skillbutton:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up"); end header=header+1; end if(i>=1 and i<=17) then getglobal("ATSWCSCSkill"..i.."SkillButtonHighlight"):SetTexture("Interface\\Buttons\\UI-PlusButton-Hilight"); skillbutton:UnlockHighlight(); skillframe:Show(); skillbutton:Show(); getglobal("ATSWCSCSkill"..i.."MoveUp"):Show(); getglobal("ATSWCSCSkill"..i.."MoveDown"):Show(); getglobal("ATSWCSCSkill"..i.."Delete"):Show(); end elseif(atsw_opencategory==header) then if(atsw_customsorting[UnitName("player")][atsw_selectedskill] and atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][header].name]) then if(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][header].name][skill]) then if(i>=1 and i<=17) then skillbutton:SetText(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][header].name][skill].name); skillframe.skillname=atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][header].name][skill].name; skillbutton:SetTextColor(ATSWTypeColor[atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][header].name][skill].type].r, ATSWTypeColor[atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][header].name][skill].type].g, ATSWTypeColor[atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][header].name][skill].type].b); skillframe:Show(); skillbutton:Show(); skillbutton:SetNormalTexture(""); getglobal("ATSWCSCSkill"..i.."MoveUp"):Show(); getglobal("ATSWCSCSkill"..i.."MoveDown"):Show(); getglobal("ATSWCSCSkill"..i.."Delete"):Show(); getglobal("ATSWCSCSkill"..i.."SkillButtonHighlight"):SetTexture(""); skillbutton:GetParent().btype="recipe"; end skill=skill+1; else if(skill==1) then if(i>=1 and i<=17) then skillbutton:SetText(ATSWCS_NOTHINGINCATEGORY); skillframe.skillname=ATSWCS_NOTHINGINCATEGORY; skillbutton:SetTextColor(0.6, 0.6, 0.6); skillframe:Show(); skillbutton:Show(); skillbutton:SetNormalTexture(""); getglobal("ATSWCSCSkill"..i.."SkillButtonHighlight"):SetTexture(""); getglobal("ATSWCSCSkill"..i.."MoveUp"):Hide(); getglobal("ATSWCSCSkill"..i.."MoveDown"):Hide(); getglobal("ATSWCSCSkill"..i.."Delete"):Hide(); end else i=i-1; end skill=0; header=header+1; end else if(skill==1) then if(i>=1 and i<=17) then skillbutton:SetText(ATSWCS_NOTHINGINCATEGORY); skillframe.skillname=ATSWCS_NOTHINGINCATEGORY; skillbutton:SetTextColor(0.6, 0.6, 0.6); skillframe:Show(); skillbutton:Show(); skillbutton:SetNormalTexture(""); getglobal("ATSWCSCSkill"..i.."SkillButtonHighlight"):SetTexture(""); getglobal("ATSWCSCSkill"..i.."MoveUp"):Hide(); getglobal("ATSWCSCSkill"..i.."MoveDown"):Hide(); getglobal("ATSWCSCSkill"..i.."Delete"):Hide(); end else i=i-1; end skill=0; header=header+1; end else if(i>=1 and i<=17) then skillbutton:Show(); skillframe:Hide(); skillframe.skillname=nil; end end i=i+1; until(i>17); local totalcount2=0; if(atsw_customheaders[UnitName("player")][atsw_selectedskill]) then totalcount2=totalcount2+table.getn(atsw_customheaders[UnitName("player")][atsw_selectedskill]); if(atsw_opencategory~=0) then if(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][atsw_opencategory].name]) then totalcount2=totalcount2+table.getn(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][atsw_opencategory].name]); else totalcount2=totalcount2+1; end end end FauxScrollFrame_Update(ATSWCSUListScrollFrame, totalcount, 23, 16); FauxScrollFrame_Update(ATSWCSSListScrollFrame, totalcount2, 17, 16); ATSW_CreateSkillListing(); ATSWFrame_Update(); end function ATSWCS_UpdateUncategorizedList() atsw_uncategorized={}; for i=1,table.getn(atsw_tradeskilllist),1 do if(ATSWCS_CheckIfCategorized(atsw_tradeskilllist[i].name)==false) then table.insert(atsw_uncategorized,{name=atsw_tradeskilllist[i].name, type=atsw_tradeskilllist[i].type}); end end table.sort(atsw_uncategorized,ATSWCS_SortUncategorizedList); end function ATSWCS_SortUncategorizedList(i,j) return string.lower(i.name) < string.lower(j.name); end function ATSWCS_CheckIfCategorized(skillName) if(atsw_customsorting[UnitName("player")]) then if(atsw_customsorting[UnitName("player")][atsw_selectedskill]) then for i=1,table.getn(atsw_customheaders[UnitName("player")][atsw_selectedskill]),1 do if(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name]) then for k=1,table.getn(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name]),1 do if(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name][k].name==skillName) then return true; end end end end end end return false; end function ATSWCS_AddCategory(categoryName) for i=1,table.getn(atsw_customheaders[UnitName("player")][atsw_selectedskill]),1 do if(atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name==categoryName) then return; end end table.insert(atsw_customheaders[UnitName("player")][atsw_selectedskill],{name=categoryName, expanded=false}); ATSWCS_UpdateSkillList(); end function ATSWCS_MoveUp(skillName) for i=1,table.getn(atsw_customheaders[UnitName("player")][atsw_selectedskill]),1 do if(atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name==skillName) then if(i>1) then local buffer=atsw_customheaders[UnitName("player")][atsw_selectedskill][i-1]; atsw_customheaders[UnitName("player")][atsw_selectedskill][i-1]=atsw_customheaders[UnitName("player")][atsw_selectedskill][i]; atsw_customheaders[UnitName("player")][atsw_selectedskill][i]=buffer; break; end end end if(atsw_customsorting[UnitName("player")]) then if(atsw_customsorting[UnitName("player")][atsw_selectedskill]) then for i=1,table.getn(atsw_customheaders[UnitName("player")][atsw_selectedskill]),1 do if(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name]) then for k=1,table.getn(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name]),1 do if(atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name][k].name==skillName) then if(k>1) then local buffer=atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name][k-1]; atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name][k-1]=atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name][k] atsw_customsorting[UnitName("player")][atsw_selectedskill][atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name][k]=buffer; break; end end end end end end end ATSWCS_UpdateSkillList(); end function ATSWCS_MoveDown(skillName) for i=1,table.getn(atsw_customheaders[UnitName("player")][atsw_selectedskill]),1 do if(atsw_customheaders[UnitName("player")][atsw_selectedskill][i].name==skillName) then if(i