vanilla-wow-addons – Rev 1
?pathlinks?
local locals = KC_ITEMS_LOCALS.modules.linkview
local cross = locals.adv.cross
local frame = AceGUI:new()
local config = {
name = "KC_AdvSearchFrame",
type = ACEGUI_DIALOG,
title = locals.adv.title,
isSpecial = TRUE,
width = 375,
height = 260,
OnShow = "OnShow",
OnHide = "OnHide",
anchors = {
topleft = {relTo = "KC_LinkviewFrame", relPoint = "topright", xOffset = 0, yOffset = 0}
},
elements = {
SearchBox = {
type = ACEGUI_OPTIONSBOX,
title = "",
width = 251,
height = 50,
anchors = {
bottomleft = {relPoint = "bottomleft", xOffset = 12, yOffset = 16}
},
elements = {
SearchText = {
type = ACEGUI_INPUTBOX,
title = locals.gui.searchtxt,
width = 243,
height = 26,
anchors = {
left = {relPoint = "left", xOffset = 12, yOffset = -5}
},
disabled = FALSE,
OnEnterPressed = "AdvSearch"
},
ExtSearch = {
type = ACEGUI_CHECKBOX,
title = locals.adv.ext,
disabled = FALSE,
width = 18,
height = 18,
anchors = {
bottomleft = {relTo = "$parentSearchText", relPoint = "topleft", xOffset = 95, yOffset = -5}
},
OnClick = "TogExtSearch",
},
},
},
ConfigBox = {
type = ACEGUI_OPTIONSBOX,
title = locals.adv.options,
width = 351,
height = 150,
anchors = {
topleft = {xOffset = 12, yOffset = -37}
},
elements = {
Quality = {
type = ACEGUI_DROPDOWN,
title = locals.gui.quality,
width = 150,
height = 26,
anchors = {
topleft = {xOffset = 15, yOffset = -20}
},
fill = "FillQualities",
},
MinLevel = {
type = ACEGUI_DROPDOWN,
title = locals.gui.level,
width = 150,
height = 26,
anchors = {
topleft = {relTo = "$parentQuality", xOffset = 0, yOffset = -45}
},
fill = "FillLevels",
},
Location = {
type = ACEGUI_DROPDOWN,
title = locals.gui.slot,
width = 150,
height = 26,
anchors = {
topleft = {relTo = "$parentMinLevel", xOffset = 85, yOffset = -45}
},
fill = "FillSlots",
},
Class = {
type = ACEGUI_DROPDOWN,
title = locals.gui.class,
width = 150,
height = 26,
anchors = {
topleft = {relTo = "$parentQuality", relPoint = "topright", xOffset = 23, yOffset = 0}
},
fill = "FillClasess",
OnSelect = "OnClassSelect"
},
SubClass = {
type = ACEGUI_DROPDOWN,
title = locals.gui.type,
width = 150,
height = 26,
anchors = {
topleft = {relTo = "$parentClass", xOffset = 0, yOffset = -45}
},
fill = "FillSubClasses",
OnSelect = "OnSubClassSelect",
},
},
},
SearchButton = {
type = ACEGUI_BUTTON,
title = locals.gui.search,
width = 98,
height = 22,
anchors = {
bottomleft = {relTo = "$parentClose", relPoint = "topleft", xOffset = 0, yOffset = -1}
},
disabled = FALSE,
OnClick = "AdvSearch"
},
Reset = {
type = ACEGUI_BUTTON,
title = locals.adv.reset,
width = 78,
height = 20,
anchors = {
topright = {relPoint = "topright", xOffset = -10, yOffset = -18}
},
disabled = FALSE,
OnClick = "Reset"
},
}
}
frame:Initialize(KC_Linkview, config)
KC_Linkview.advsearch = frame
function frame:FillClasess()
return {
{val="Armor", tip="Only shows armor."},
{val="Container", tip="Only shows containers."},
{val="Key", tip="Only shows keys."},
{val="Miscellaneous", tip="Only shows miscellaneous items."},
{val="Projectile", tip="Only shows projectiles."},
{val="Quest", tip="Only shows quests."},
{val="Quiver", tip="Only shows quivers."},
{val="Reagent", tip="Only shows reagents."},
{val="Recipe", tip="Only shows recipes."},
{val="Trade Goods", tip="Only shows trade goods."},
{val="Weapon", tip="Only shows weapons."},
}
end
function frame:FillSubClasses()
return {
{val="-= Armor =-", tip="Header for the armor class"},
{val="Cloth", tip="Only shows cloth armor."},
{val="Leather", tip="Only shows leather armor."},
{val="Mail", tip="Only shows mail armor."},
{val="Plate", tip="Only shows plate armor."},
{val="Shields", tip="Only shows shields."},
{val="Miscellaneous", tip="Only shows miscellaneous armor."},
{val="-= Container =-", tip="Header for the container class"},
{val="Bag", tip="Only shows bags."},
{val="Soul Bag", tip="Only shows soul bags."},
{val="-= Projectile =-", tip="Header for the projectile class"},
{val="Arrow", tip="Only shows arrows."},
{val="Bullet", tip="Only shows bullets."},
{val="-= Quiver =-", tip="Header for the quiver class"},
{val="Quiver", tip="Only shows quivers."},
{val="Ammo Pouch", tip="Only shows ammo pouches."},
{val="-= Recipe =-", tip="Header for the recipe class"},
{val="Alchemy", tip="Only shows alchemy recipes."},
{val="Blacksmithing", tip="Only shows blacksmithign recipes."},
{val="Book", tip="Only shows books."},
{val="Cooking", tip="Only shows cooking recipes."},
{val="Enchanting", tip="Only shows enchanting recipes."},
{val="Engineering", tip="Only shows engineering recipes."},
{val="First Aid", tip="Only shows first aid recipes."},
{val="Fishing", tip="Only shows fishing recipes."},
{val="Leatherworking", tip="Only shows leatherworking recipes."},
{val="Tailoring", tip="Only shows tailoring recipes."},
{val="-= Trade Goods =-", tip="Header for the trade goods class"},
{val="Explosives", tip="Only shows explosives."},
{val="Devices", tip="Only shows devices."},
{val="Trade Goods", tip="Only shows general trade goods."},
{val="Parts", tip="Only shows paters."},
{val="-= Weapons =-", tip="Header for the weapons class"},
{val="Bows", tip="Only shows bows."},
{val="Crossbows", tip="Only shows crossbows."},
{val="Daggers", tip="Only shows daggers."},
{val="Fist Weapons", tip="Only shows fist weapons."},
{val="Fishing Pole", tip="Only shows fishing poles."},
{val="Guns", tip="Only shows guns."},
{val="One-Handed Axes", tip="Only shows one-handed axes."},
{val="One-Handed Maces", tip="Only shows one-handed maces."},
{val="One-Handed Swords", tip="Only shows one-handed swords."},
{val="Polearms", tip="Only shows polearms."},
{val="Staves", tip="Only shows staves."},
{val="Thrown", tip="Only shows thrown weapons."},
{val="Two-Handed Axes", tip="Only shows two-handed axes."},
{val="Two-Handed Maces", tip="Only shows two-handed maces."},
{val="Two-Handed Swords", tip="Only shows two-handed swords."},
{val="Wands", tip="Only shows wands."},
}
end
function frame:FillQualities()
local results = {}
for i = 0, 6 do
local color = ITEM_QUALITY_COLORS[i].hex..getglobal(format("ITEM_QUALITY%s_DESC", i))
results[i] = {val=color, tip=format("Only shows %s |rquality items.", strlower(color))}
end
return results
end
function frame:FillLevels()
local results = {}
for i = 0, 60 do
results[i] = {val=i, tip=format("Only shows items a level %s can wear.", i)}
end
return results
end
function frame:FillSlots()
local slots = {
[1] = "INVTYPE_SHOULDER",
[2] = "INVTYPE_TRINKET",
[3] = "INVTYPE_FINGER",
[4] = "INVTYPE_WEAPON",
[5] = "INVTYPE_CHEST",
[6] = "INVTYPE_WAIST",
[7] = "INVTYPE_NECK",
[8] = "INVTYPE_FEET",
[9] = "INVTYPE_2HWEAPON",
[10] = "INVTYPE_WRIST",
[11] = "INVTYPE_LEGS",
[12] = "INVTYPE_HEAD",
[13] = "INVTYPE_WEAPONMAINHAND",
[14] = "INVTYPE_CLOAK",
[15] = "INVTYPE_HOLDABLE",
[16] = "INVTYPE_HAND",
[17] = "INVTYPE_BODY",
[18] = "INVTYPE_RANGED",
[19] = "INVTYPE_BAG",
[20] = "INVTYPE_WEAPONOFFHAND",
[21] = "INVTYPE_TABARD",
}
local results = {}
for i,v in slots do
slots[i] = getglobal(v)
end
sort(slots)
for i,v in slots do
results[i] = {val=v, tip=format("Only shows items that go in the %s location.", strlower(v))}
end
return results
end
function frame:BuildAdvancedSearchTable(pattern)
local quality = self.ConfigBox.Quality:GetValue()
local class = self.ConfigBox.Class:GetValue()
local level = tonumber(self.ConfigBox.MinLevel:GetValue()) or 60
local type = self.ConfigBox.SubClass:GetValue()
local slot = self.ConfigBox.Location:GetValue()
local id, name, matches
self.app.gui.totalLinks = 0
self.app.gui.goodLinks = 0
self.app.gui.matchedLinks = 0
self.app.gui.searchTable = {}
if (self.app:GetOpt(self.app.optPath, "ExtSearch")) then
for id in KC_ItemsDB do
if (tonumber(id)) then
for i,v in self.app.common:GetCodes(id) do
local info = self.app.common:GetItemInfo(v)
local matches = true
name = info.cname
self.app.gui.totalLinks = self.app.gui.totalLinks + 1
self.app.gui.goodLinks = name and self.app.gui.goodLinks + 1 or self.app.gui.goodLinks
matches = not quality and true or (ITEM_QUALITY_COLORS[info.quality or -1].hex..getglobal(format("ITEM_QUALITY%s_DESC", info.quality or 6)) == quality)
matches = (not class and matches) and true or (class == info.class and matches)
matches = (not level and matches) and true or (level >= (info.minlevel or 60) and matches)
matches = (not type and matches) and true or (type == info.subclass and matches)
matches = (not slot and matches) and true or (slot == info.location and matches)
if (matches and name and strfind(strlower(name or ""), strlower(pattern or ""))) then
self.app.gui.searchTable[v] = name
self.app.gui.matchedLinks = self.app.gui.matchedLinks + 1
table.setn(self.app.gui.searchTable, self.app.gui.matchedLinks)
end
end
end
end
else
for id in KC_ItemsDB do
if (tonumber(id)) then
local info = self.app.common:GetItemInfo(tostring(id))
local matches = true
name = info.cname
self.app.gui.totalLinks = self.app.gui.totalLinks + 1
self.app.gui.goodLinks = name and self.app.gui.goodLinks + 1 or self.app.gui.goodLinks
matches = not quality and true or (ITEM_QUALITY_COLORS[info.quality or -1].hex..getglobal(format("ITEM_QUALITY%s_DESC", info.quality or 6)) == quality)
matches = (not class and matches) and true or (class == info.class and matches)
matches = (not level and matches) and true or (level >= (info.minlevel or 60) and matches)
matches = (not type and matches) and true or (type == info.subclass and matches)
matches = (not slot and matches) and true or (slot == info.location and matches)
if (matches and name and strfind(strlower(name or ""), strlower(pattern or ""))) then
self.app.gui.searchTable[id] = name
self.app.gui.matchedLinks = self.app.gui.matchedLinks + 1
table.setn(self.app.gui.searchTable, self.app.gui.matchedLinks)
end
end
end
end
self.app.gui:Build()
end
function frame:AdvSearch()
local pattern = self.SearchBox.SearchText:GetValue()
pattern = pattern and ace.trim(pattern) or nil
self:BuildAdvancedSearchTable(pattern)
self.app.gui:BuildSortedTable()
self.app.gui.Items:ClearList()
self.app.gui.Items:Update()
end
function frame:OnHide()
self.app.gui.SearchBox.SearchText:Enable()
self.app.gui.SearchBox.SearchButton:Enable()
self:Reset()
end
function frame:OnClassSelect()
local class = self.ConfigBox.Class:GetValue()
local type = self.ConfigBox.SubClass:GetValue()
if (type and not strfind(cross[class] or "", type)) then
self.ConfigBox.SubClass:SetValue()
end
end
function frame:OnSubClassSelect()
local x, y = self.app.common:Split(self.ConfigBox.SubClass:GetValue(), " ")
local type = y or x
if (strfind(type, "-=")) then
local _,_,x = string.find(type, "-= (%w+) =-")
self.ConfigBox.Class:SetValue(x)
self.ConfigBox.SubClass:SetValue()
return
end
for i,v in cross do
if (strfind(v, type)) then
self.ConfigBox.Class:SetValue(i)
return
end
end
end
function frame:TogExtSearch()
self.app:TogOpt(self.app.optPath, "ExtSearch")
end
function frame:OnShow()
self.SearchBox.ExtSearch:SetValue(self.app:GetOpt(self.app.optPath, "ExtSearch"))
end
function frame:Reset()
local quality = self.ConfigBox.Quality:SetValue()
local class = self.ConfigBox.Class:SetValue()
local level = self.ConfigBox.MinLevel:SetValue()
local type = self.ConfigBox.SubClass:SetValue()
local slot = self.ConfigBox.Location:SetValue()
end
Generated by GNU Enscript 1.6.5.90.