if not PriceTracker then return end local PriceTracker = PriceTracker local PriceTrackerMenu = {} PriceTracker.menu = PriceTrackerMenu PriceTrackerMenu.algorithmTable = { "Weighted Average", "Median", "Most Frequently Used" } PriceTrackerMenu.keyTable = { "None", "Shift", "Control", "Alt", "Command" } function PriceTrackerMenu:InitAddonMenu(addOnName) local LAM = LibStub:GetLibrary("LibAddonMenu-1.0") local addOnMenu = LAM:CreateControlPanel("PriceTrackerMenu", PriceTracker.colors.title .. addOnName) -- Ensure compatibility if PriceTracker.settings.showMinMax == nil then PriceTracker.settings.showMinMax = true end if PriceTracker.settings.showSeen == nil then PriceTracker.settings.showSeen = true end -- Create the settings menu LAM:AddHeader(addOnMenu, addOnName .. "Header", "Options") LAM:AddDropdown(addOnMenu, addOnName .. "Algorithm", "Select Price Algorithm", "", self.algorithmTable, function() return PriceTracker.settings.algorithm or self.algorithmTable[1] end, function(algorithm) PriceTracker.settings.algorithm = algorithm end) LAM:AddDescription(addOnMenu, addOnName .. "WeightedAverageDescription", "The average price of all items, with stack sizes taken into account. For example, a stack of 10 items will be counted 10 times when calculating the average price.", PriceTracker.colors.instructional .. "Weighted Average" .. PriceTracker.colors.default) LAM:AddDescription(addOnMenu, addOnName .. "MedianDescription", "The price value for which half of the items cost more and half cost less.", PriceTracker.colors.instructional .. "Median" .. PriceTracker.colors.default) LAM:AddDescription(addOnMenu, addOnName .. "ModeDescription", "The most common price value.", PriceTracker.colors.instructional .. "Most Frequently Used (also known as Mode)" .. PriceTracker.colors.default) LAM:AddCheckbox(addOnMenu, addOnName .. "MinMax", "Show Min / Max Prices", "Show minimum and maximum sell values", function() return PriceTracker.settings.showMinMax end, function(check) PriceTracker.settings.showMinMax = check end) LAM:AddCheckbox(addOnMenu, addOnName .. "Seen", "Show 'Seen'", "Show how many times an item was seen in the guild stores", function() return PriceTracker.settings.showSeen end, function(check) PriceTracker.settings.showSeen = check end) LAM:AddDropdown(addOnMenu, addOnName .. "KeyPress", "Show only if key is pressed", "Show pricing on tooltip only if one of the following keys is pressed. This is useful if you have too many addons modifying your tooltips.", self.keyTable, function() return PriceTracker.settings.keyPress or self.keyTable[1] end, function(key) PriceTracker.settings.keyPress = key end) LAM:AddDropdown(addOnMenu, addOnName .. "LimitToGuild", "Limit results to a specific guild", "Check pricing data from all guild, or a specific one", self:GetGuildList(), function() return self:GetGuildList()[PriceTracker.settings.limitToGuild or 1] end, function(...) self:setLimitToGuild(...) end) end function PriceTrackerMenu:IsKeyPressed() return PriceTracker.settings.keyPress == self.keyTable[1] or (PriceTracker.settings.keyPress == self.keyTable[2] and IsShiftKeyDown()) or (PriceTracker.settings.keyPress == self.keyTable[3] and IsControlKeyDown()) or (PriceTracker.settings.keyPress == self.keyTable[4] and IsAltKeyDown()) or (PriceTracker.settings.keyPress == self.keyTable[5] and IsCommandKeyDown()) end function PriceTrackerMenu:GetGuildList() local guildList = {} guildList[1] = "All Guilds" for i = 1, GetNumGuilds() do guildList[i + 1] = GetGuildName(GetGuildId(i)) end return guildList end function PriceTrackerMenu:setLimitToGuild(guildName) local guildList = self:GetGuildList() for i = 1, #guildList do if guildList[i] == guildName then PriceTracker.settings.limitToGuild = i return end end -- Guild not found. Default to 'All Guilds' PriceTracker.settings.limitToGuild = 1 end