Files
coa-atlasloot/AtlasLoot/DefaultFrame/AtlasLootAdvancedSearchCreate.lua
T
Andrew6810 db2a2cc2ff init
2022-10-21 06:29:32 -07:00

282 lines
13 KiB
Lua

local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local MAX_ARGUMENTS = 6;
local framename = "AtlasLootDefaultFrame_AdvancedSearchPanel";
--Create Main Search Panel
local searchpanel = CreateFrame("FRAME", framename, AtlasLootDefaultFrame, nil);
searchpanel:SetPoint("TOPLEFT", AtlasLootDefaultFrame_LootBackground, "TOPLEFT", 2, -2);
searchpanel:SetSize(510, 510);
searchpanel.closebtn = CreateFrame("Button", framename.."_CloseButton", searchpanel, "UIPanelCloseButton");
searchpanel.closebtn:SetPoint("TOPRIGHT", searchpanel, "TOPRIGHT", -10, -10);
searchpanel:Hide();
searchpanel.closebtn:SetScript("OnClick", function() AtlasLoot_AdvancedSearchClose(); end);
searchpanel.closebtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
--Create search/name box
local searchbox = CreateFrame("EditBox", framename.."_SearchBox", searchpanel, "InputBoxTemplate");
searchbox:SetSize(265, 35);
searchbox:SetPoint("TOPLEFT", searchpanel, "TOPLEFT", 30, -55);
searchbox:SetMaxLetters(100);
searchbox:SetAutoFocus(false);
searchbox:SetTextInsets(0, 8, 0, 0);
searchbox.title = searchbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
searchbox.title:SetText("Name: ");
searchbox.title:SetPoint("TOPLEFT", searchbox, "TOPLEFT", -3, 8);
searchbox:SetScript("OnEnterPressed", function(self)
AtlasLoot:AdvancedSearch(AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:GetText());
self:ClearFocus();
end);
searchbox:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
local searchbox_string = searchbox:CreateFontString(framename.."_SearchBoxString", "ARTWORK", "GameFontNormal");
--Create quality button
local qualitybtn = CreateFrame("Button", framename.."_QualityButton", searchpanel, "OptionsButtonTemplate");
qualitybtn:SetSize(130, 20);
qualitybtn:SetPoint("LEFT", searchbox, "RIGHT", 15, 0);
qualitybtn.title = qualitybtn:CreateFontString(nil, "ARTWORK", "GameFontNormal");
qualitybtn.title:SetText("Quality: ");
qualitybtn.title:SetPoint("TOPLEFT", qualitybtn, "TOPLEFT", 3, 15);
qualitybtn:SetScript("OnClick", function(self)
if AtlasLoot_QualityMenu:IsOpen() then
AtlasLoot_QualityMenu:Close();
else
AtlasLoot_QualityMenu:Open(self);
end
end);
qualitybtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
--Create equip type button
local equipbtn = CreateFrame("Button", framename.."_EquipButton", searchpanel, "OptionsButtonTemplate");
equipbtn:SetSize(130, 20);
equipbtn:SetPoint("TOPLEFT", searchbox, "BOTTOMLEFT", -8, -25);
equipbtn.title = equipbtn:CreateFontString(nil, "ARTWORK", "GameFontNormal");
equipbtn.title:SetText("Item Type: ");
equipbtn.title:SetPoint("TOPLEFT", equipbtn, "TOPLEFT", 3, 15);
--Create equip sub type button
equipbtn.subbtn = CreateFrame("Button", framename.."_EquipSubButton", equipbtn, "OptionsButtonTemplate");
equipbtn.subbtn:SetSize(130, 20);
equipbtn.subbtn:SetPoint("LEFT", equipbtn, "RIGHT", 15, 0);
equipbtn.subbtn.title = equipbtn.subbtn:CreateFontString(nil, "ARTWORK", "GameFontNormal");
equipbtn.subbtn.title:SetText("Item Subtype: ");
equipbtn.subbtn.title:SetPoint("TOPLEFT", equipbtn.subbtn, "TOPLEFT", 3, 15);
equipbtn:SetScript("OnClick", function(self)
if AtlasLoot_EquipMenu:IsOpen() then
AtlasLoot_EquipMenu:Close();
else
AtlasLoot_EquipMenu:Open(self);
end
end);
equipbtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
equipbtn.subbtn:SetScript("OnClick", function(self)
if AtlasLoot_EquipSubMenu:IsOpen() then
AtlasLoot_EquipSubMenu:Close();
else
AtlasLoot_EquipSubMenu:Open(self);
end
end);
equipbtn.subbtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
local levelminbox = CreateFrame("EditBox", framename.."_LevelMin", searchpanel, "InputBoxTemplate");
levelminbox:SetSize(47, 35);
levelminbox:SetPoint("TOPLEFT", searchbox, "BOTTOMLEFT", 0, -70);
local lmnb = levelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
levelminbox:SetMaxLetters(3);
levelminbox:SetAutoFocus(false);
levelminbox:SetTextInsets(0, 8, 0, 0);
levelminbox.title = levelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
levelminbox.title:SetText("Required Level: ");
levelminbox.title:SetPoint("TOPLEFT", levelminbox, "TOPLEFT", -3, 8);
local levelmaxbox = CreateFrame("EditBox", framename.."_LevelMax", searchpanel, "InputBoxTemplate");
levelmaxbox:SetSize(47, 35);
levelmaxbox:SetPoint("LEFT", levelminbox, "RIGHT", 25, 0);
local lmxb = levelmaxbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
levelmaxbox:SetMaxLetters(3);
levelmaxbox:SetAutoFocus(false);
levelmaxbox:SetTextInsets(0, 8, 0, 0);
local ilevelminbox = CreateFrame("EditBox", framename.."_iLevelMin", searchpanel, "InputBoxTemplate");
ilevelminbox:SetSize(47, 35);
ilevelminbox:SetPoint("LEFT", levelmaxbox, "RIGHT", 25, 0);
local ilmnb = ilevelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
ilevelminbox:SetMaxLetters(3);
ilevelminbox:SetAutoFocus(false);
ilevelminbox:SetTextInsets(0, 8, 0, 0);
ilevelminbox.title = ilevelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
ilevelminbox.title:SetText("Item Level: ");
ilevelminbox.title:SetPoint("TOPLEFT", ilevelminbox, "TOPLEFT", -3, 8);
local ilevelmaxbox = CreateFrame("EditBox", framename.."_iLevelMax", searchpanel, "InputBoxTemplate");
ilevelmaxbox:SetSize(47, 35);
ilevelmaxbox:SetPoint("LEFT", ilevelminbox, "RIGHT", 25, 0);
local ilmxb = ilevelmaxbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
ilevelmaxbox:SetMaxLetters(3);
ilevelmaxbox:SetAutoFocus(false);
ilevelmaxbox:SetTextInsets(0, 8, 0, 0);
local useleveltick = CreateFrame("CheckButton", framename.."_LevelToggle", searchpanel, "ChatConfigCheckButtonTemplate");
useleveltick:SetSize(20, 20);
useleveltick:SetPoint("TOPRIGHT", levelmaxbox, "BOTTOMRIGHT", 0, 5);
useleveltick.title = useleveltick:CreateFontString(nil, "ARTWORK", "GameFontNormal");
useleveltick.title:SetText("Use Current Lv: ");
useleveltick.title:SetPoint("TOPLEFT", levelminbox, "BOTTOMLEFT", 0, 5);
useleveltick:SetScript("OnClick", function(self, button)
if(self:GetChecked()) then levelmaxbox:Hide(); levelminbox:Hide();
else levelmaxbox:Show(); levelminbox:Show();
end
end)
local argpanel = CreateFrame("Frame", framename.."_ArgumentContainer", searchpanel);
argpanel:SetSize(450, 340);
argpanel:SetPoint("TOPLEFT", levelminbox, "BOTTOMLEFT", 0, -40);
argpanel.title = argpanel:CreateFontString(nil, "ARTWORK", "GameFontNormal");
argpanel.title:SetText("Additional Filters: ");
argpanel.title:SetPoint("TOPLEFT", argpanel, "TOPLEFT", 0, 0);
local addArg = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainerAddArgBtn", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate");
addArg:SetPoint("TOP", useleveltick, "BOTTOM", 5, -20);
addArg:SetSize(20, 20);
addArg:SetText("+");
addArg:SetScript("OnClick", function(self, button)
AtlasLoot_AddArgumentContainer();
end)
local remArg = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainerRemArgBtn", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate")
remArg:SetPoint("LEFT", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainerAddArgBtn, "RIGHT", 10, 0);
remArg:SetSize(20, 20);
remArg:SetText("-");
remArg:SetScript("OnClick", function(self, button)
AtlasLoot_RemoveArgumentContainer();
end)
remArg:Disable();
for n = 1, MAX_ARGUMENTS do
local btn = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n), AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate");
btn:SetPoint("TOPLEFT", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "TOPLEFT", 0, -((n - 1) * 35)-20);
btn:SetSize(130, 20);
btn:SetScript("OnClick", function(self, button)
if AtlasLoot_ArgumentMenus[n]:IsOpen() then
AtlasLoot_ArgumentMenus[n]:Close();
else
AtlasLoot_ArgumentMenus[n]:Open(self);
end
end)
btn:Hide();
btn:SetText("Select Option");
local sub = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n) .. "Sub", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate");
sub:SetPoint("LEFT", btn, "RIGHT", 15, 0);
sub:SetSize(130, 20);
sub:SetScript("OnClick", function(self, button)
if AtlasLoot_ArgumentSubMenus[n]:IsOpen() then
AtlasLoot_ArgumentSubMenus[n]:Close();
else
AtlasLoot_ArgumentSubMenus[n]:Open(self);
end
end)
sub:Hide();
sub:Disable();
local txt = CreateFrame("EditBox", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n) .. "Value", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "InputBoxTemplate")
txt:SetPoint("LEFT", sub, "RIGHT", 15, 0);
txt:SetSize(65, 35);
txt:SetAutoFocus(false);
txt:SetTextInsets(0, 8, 0, 0);
txt:SetScript("OnEnterPressed", function(self)
self:ClearFocus();
end)
txt:Hide();
end
--Search Button
local searchbtn = CreateFrame("Button", framename.."_SearchButton", searchpanel, "UIPanelButtonTemplate2");
searchbtn:SetSize(70,32);
searchbtn:SetPoint("BOTTOMLEFT", searchpanel, "BOTTOMLEFT", 20, 20);
searchbtn:SetScript("OnShow", function(self)
self:SetText(AL["Search"]);
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
end);
searchbtn:SetScript("OnClick", function()
AtlasLoot:AdvancedSearch(AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:GetText());
AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:ClearFocus();
end);
local clearbtn = CreateFrame("Button", framename.."_ClearButton", searchpanel, "UIPanelButtonTemplate2");
clearbtn:SetSize(70,32);
clearbtn:SetPoint("LEFT", searchbtn, "RIGHT", 20, 0);
clearbtn:SetScript("OnShow", function(self)
self:SetText(AL["Clear"]);
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
end);
clearbtn:SetScript("OnClick", function()
AtlasLoot_AdvancedSearchReset();
AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:SetText("");
AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:ClearFocus();
end);
AtlasLoot_AdvancedSearchSetup();
--[[
function StreamingIcon_UpdateIcon(status, tooltip)
if(status > 0) then
AtlasLoot_SearchProgressSpinner:SetVertexColor(0,1,0);
AtlasLoot_SearchProgressFrameBackground:SetVertexColor(0,1,0);
AtlasLoot_SearchProgress.tooltip = tooltip;
AtlasLoot_SearchProgress.Loop:Play();
AtlasLoot_SearchProgress:Show();
else
AtlasLoot_SearchProgress.Loop:Stop();
AtlasLoot_SearchProgress:Hide();
end
end
local streamIcon = CreateFrame("Frame", "AtlasLoot_SearchProgress", AtlasLootDefaultFrame_LootBackground);
streamIcon:SetPoint("TOPRIGHT", AtlasLootDefaultFrame_LootBackground, "TOPRIGHT");
streamIcon:SetSize(48, 48);
streamIcon.tooltip = "Searching...";
streamIcon:EnableMouse(true);
streamIcon.icon = streamIcon:CreateTexture("$parentSpinner", "BACKGROUND");
streamIcon.icon:SetTexture("Interface\\Addons\\AtlasLoot\\Images\\streamcircle");
streamIcon.icon:SetVertexColor(0,1,0);
streamIcon.icon:SetAllPoints();
streamIcon.spark = streamIcon:CreateTexture("OVERLAY");
streamIcon.spark:SetTexture("Interface\\Addons\\AtlasLoot\\Images\\streamspark");
streamIcon.spark:SetAllPoints();
streamIcon.frame = CreateFrame("Frame", "$parentFrame", AtlasLoot_SearchProgress);
streamIcon.frame:SetAllPoints();
streamIcon.frame.bg = streamIcon.frame:CreateTexture("$parentBackground", "BACKGROUND");
streamIcon.frame.bg:SetTexture("Interface\\Addons\\AtlasLoot\\Images\\streambackground");
streamIcon.frame.bg:SetVertexColor(0,1,0);
streamIcon.frame.bg:SetAllPoints();
streamIcon.frame.alpha = streamIcon.frame:CreateTexture("$parentAlpha", "ARTWORK");
streamIcon.frame.alpha:SetTexture("Interface\\Addons\\AtlasLoot\\Images\\streamframe");
streamIcon.frame.alpha:SetAllPoints();
streamIcon.Loop = streamIcon:CreateAnimationGroup("$parentLoopAnim");
streamIcon.Loop:SetLooping("REPEAT");
local rotAnim = streamIcon.Loop:CreateAnimation("ROTATION");
rotAnim:SetOrder(1);
rotAnim:SetDuration(8);
rotAnim:SetDegrees(-360);
streamIcon:SetScript("OnEnter",
function(self)
if(self.tooltip ~= nil) then
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetText(self.tooltip, nil, nil, nil, nil, true);
end
end);
streamIcon:SetScript("OnLeave", GameTooltip_Hide);
streamIcon:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
streamIcon:SetPoint("TOPRIGHT", AtlasLootDefaultFrame_LootBackground, "TOPRIGHT");
streamIcon:Hide();]]