Quantcast

List management clarified

ckaotik [01-24-10 - 18:39]
List management clarified
Filename
core.lua
deDE.lua
enUS.lua
options.lua
readme.txt
diff --git a/core.lua b/core.lua
index f3f8ef4..72874f6 100644
--- a/core.lua
+++ b/core.lua
@@ -21,15 +21,13 @@ BrokerGarbage.defaultGlobalSettings = {
 	-- lists
 	exclude = {},
 	include = {},
-	dropList = {},				-- TODO options
-	autoSellList = {},			-- TODO options
-	forceVendorPrice = {},		-- TODO options, only global
+	autoSellList = {},
+	forceVendorPrice = {},		-- only global

 	-- behavior
 	autoSellToVendor = true,
 	autoRepairAtVendor = true,
 	neverRepairGuildBank = false,
-	useTwoPartLists = true,		-- TODO options

 	-- default values
 	moneyLostByDeleting = 0,	-- total value
@@ -43,7 +41,7 @@ BrokerGarbage.defaultGlobalSettings = {
 	showAutoSellIcon = true,
 	showLost = true,
 	showEarned = true,
-	showWarnings = true,		-- TODO options
+	-- showWarnings = true,		-- TODO options
 	showSource = false,
 }

@@ -51,7 +49,6 @@ BrokerGarbage.defaultLocalSettings = {
 	-- lists
 	exclude = {},
 	include = {},
-	dropList = {},
 	autoSellList = {},

 	-- behavior
@@ -478,24 +475,31 @@ function BrokerGarbage:OnClick(itemTable, button)
 		BG_GlobalDB.moneyLostByDeleting = BG_GlobalDB.moneyLostByDeleting + itemTable.value
 		BG_LocalDB.moneyLostByDeleting = BG_GlobalDB.moneyLostByDeleting + itemTable.value

-		BrokerGarbage:ScanInventory()
-
 	elseif itemTable and IsControlKeyDown() then
 		-- add to exclude list
 		BrokerGarbage:Debug("CTRL-Click!")
 		BG_LocalDB.exclude[itemTable.itemID] = true
 		BrokerGarbage:Print(format(BrokerGarbage.locale.addedToSaveList, select(2,GetItemInfo(itemTable.itemID))))
-		BrokerGarbage:ScanInventory()
+
+		BrokerGarbage:ListOptionsUpdate("exclude")

 	elseif button == "RightButton" then
 		-- open config
 		InterfaceOptionsFrame_OpenToCategory(BrokerGarbage.options)
-		BrokerGarbage:ScanInventory()
+
+	elseif IsAltKeyDown() then
+		-- add to force vendor price list
+		BrokerGarbage:Debug("ALT-Click!")
+		BG_GlobalDB.forceVendorPrice[itemTable.itemID] = true
+		BrokerGarbage:Print(format(BrokerGarbage.locale.addedToPriceList, select(2,GetItemInfo(itemTable.itemID))))
+
+		BrokerGarbage:ListOptionsUpdate("forceprice")

 	else
 		-- do nothing
-		BrokerGarbage:ScanInventory()
 	end
+
+	BrokerGarbage:ScanInventory()
 end

 -- calculates the value of a stack/partial stack of an item
@@ -515,11 +519,6 @@ function BrokerGarbage:GetItemValue(itemLink, count)
 		return vendorPrice and vendorPrice*count or nil, "|cFFF5DEB3V" -- orange
 	end

-	-- drop list items have a value of 0 copper
-	if BG_GlobalDB.dropList[itemID] or BG_LocalDB.dropList[itemID] then
-		return 0
-	end
-
 	-- calculate auction value
 	if IsAddOnLoaded("Auctionator") then
 		auctionPrice = Atr_GetAuctionBuyout(itemLink)
@@ -577,6 +576,8 @@ function BrokerGarbage:GetItemValue(itemLink, count)
 		else
 			return temp * count or 0, source
 		end
+	else
+		return nil
 	end
 end

@@ -620,11 +621,13 @@ function BrokerGarbage:ScanInventory()
 					or BG_GlobalDB.autoSellList[itemID] or BG_LocalDB.autoSellList[itemID])
 					and not BG_GlobalDB.exclude[itemID] and not BG_LocalDB.exclude[itemID] then	-- save excluded items!!!

+					local force = false
 					local value, source = BrokerGarbage:GetItemValue(itemLink,count)
 					-- make included items appear in tooltip list as "forced"
 					if BG_GlobalDB.include[itemID] or BG_LocalDB.include[itemID] then
-						value = 0
-						source = "|cFF8C1717F"
+						if not value then value = 0 end
+						force = true
+						source = "|cFF8C1717I"	-- I as in "include"
 					end
 					if value then
 						local currentItem = {
@@ -635,6 +638,7 @@ function BrokerGarbage:ScanInventory()
 							count = count,
 							value = value,
 							source = source,
+							force = force,
 						}

 						if not cheapestItem or cheapestItem.value >= value then
@@ -665,21 +669,44 @@ end
 function BrokerGarbage:GetCheapest(number)
 	if not number then number = 1 end
 	local cheapestItems = {}
+
 	for i = 1, number do
-		local minPrice, minTable
 		for _, itemTable in pairs(BrokerGarbage.inventory) do
 			local skip = false

 			for _, usedTable in pairs(cheapestItems) do
 				if usedTable == itemTable then skip = true end
 			end
-			if not skip and (not minPrice or itemTable.value < minPrice) then
-				minPrice = itemTable.value
-				minTable = itemTable
+
+			if not skip and itemTable.force then
+				tinsert(cheapestItems, itemTable)
 			end
 		end
+	end
+
+	if #cheapestItems < number then
+		local minPrice, minTable

-		if minTable then tinsert(cheapestItems, minTable) end
+		for i = #cheapestItems +1, number do
+			for _, itemTable in pairs(BrokerGarbage.inventory) do
+				local skip = false
+
+				for _, usedTable in pairs(cheapestItems) do
+					if usedTable.itemID == itemTable.itemID then
+						skip = true
+					end
+				end
+
+				if not skip and (not minPrice or itemTable.value < minPrice) then
+					minPrice = itemTable.value
+					minTable = itemTable
+				end
+			end
+
+			if minTable then tinsert(cheapestItems, minTable) end
+			minPrice = nil
+			minTable = nil
+		end
 	end

 	return cheapestItems
@@ -733,7 +760,7 @@ end

 -- Wishlist
 -- ---------------------------------------------------------
--- make "autosell" list - e.g. mages selling dropped water/food [quickfix: use include list] - sell list (like include, only always sells)
+-- make "autosell" list - e.g. mages selling dropped water/food
 -- include types on character specific settings
 -- show lootable containers in your bag! make "open items" not as spammy
 -- increase/decrease loot treshold with mousewheel on LDB
diff --git a/deDE.lua b/deDE.lua
index 93bf6d6..e74cb9e 100644
--- a/deDE.lua
+++ b/deDE.lua
@@ -1,7 +1,7 @@
 -- German localisation file
 _, BrokerGarbage = ...

-if GetLocale() == "deDE" then
+if GetLocale() == "sdeDE" then

 BrokerGarbage.locale = {
 	label = "Kein Junk",
@@ -12,7 +12,9 @@ BrokerGarbage.locale = {
 	sell = "Müll verkauft für %s.",

 	addedToSaveList = "%s zur Ausnahmeliste hinzugefügt.",
-	addedToDestroyList = "%s zur Einschlussliste hinzugefügt.",
+	addedToPriceList = "Für %s wird nun nur der Händlerpreis genutzt.",
+	addedToIncludeList = "%s zur Einschlussliste hinzugefügt.",
+	addedToSellList = "%s wird bei Händlern automatisch verkauft.",
 	itemDeleted = "%s wurde gelöscht.",

 	openPlease = "Bitte öffne %s - es nimmt unnötig Platz weg.",
@@ -79,20 +81,40 @@ BrokerGarbage.locale = {
 	emptyIncludeListText = "Klicke um deine globale (!) Einschlussliste zu leeren.",

 	-- List Options Panel
-	LOTitle = "Listen-Optionen",
-	LOSubTitle = "Stelle hier deine Listen ein. Um Items hinzuzufügen, ziehe sie auf das jeweilige '+'. Um sie zu entfernen, wähle sie aus und klicke auf '-'.",
-
-	LOExcludeHeader = "Ausschlussliste - Items hier werden nie verkauft/gelöscht.",
-	LOExcludePlusTT = "Items hinzufügen, indem du sie hierher ziehst/hier ablegst",
-	LOExcludeMinusTT = "Wähle Items, die du entfernen willst. Dann klicke hier.",
-	LOExcludePromoteTT = "Klicke um alle markierten Items in die globale Ausnahmeliste zu übernehmen.",
-	LOExcludeEmptyTT = "Klicke, um die lokale Ausschlussliste völlig zu leeren.\nAchtung!",
-
-	LOIncludeHeader = "Einschlussliste - Items hier werden zum Löschen vorgeschlagen.",
-	LOIncludePlusTT = "Items hinzufügen, indem du sie hierher ziehst/hier ablegst",
-	LOIncludeMinusTT = "Wähle Items, die du entfernen willst. Dann klicke hier.",
-	LOIncludePromoteTT = "Klicke, um alle markierten Items in die globale Einschlussliste zu übernehmen.",
-	LOIncludeEmptyTT = "Klicke, um die lokale Einschlussliste völlig zu leeren.\nAchtung!",
+	LOPTitle = "Positiv-Listen",
+	LOPSubTitle = "Um Items hinzuzufügen, ziehe sie auf das jeweilige '+'. Um sie zu entfernen, wähle sie aus und klicke auf '-'.",
+
+		-- Exclude List
+	LOPExcludeHeader = "Ausschlussliste - Items hier werden nie verkauft/gelöscht.",
+	LOPExcludePlusTT = "Items hinzufügen, indem du sie hierher ziehst/hier ablegst",
+	LOPExcludeMinusTT = "Wähle Items, die du entfernen willst. Dann klicke hier.",
+	LOPExcludePromoteTT = "Klicke um alle markierten Items in die globale Ausnahmeliste zu übernehmen.",
+	LOPExcludeEmptyTT = "Klicke, um die lokale Ausschlussliste völlig zu leeren.\n|cffff0000Achtung!",
+
+		-- Force Vendor Price List
+	LOPForceHeader = "Händlerpreis-Liste - Für diese Items wird nur der Händlerpreis betrachtet.",
+	LOPForcePlusTT = "Items hinzufügen, indem du sie hierher ziehst/hier ablegst",
+	LOPForceMinusTT = "Wähle Items, die du entfernen willst. Dann klicke hier.",
+	LOPForcePromoteTT = "Die Händlerpreis-Liste ist bereits global.",
+	LOPForceEmptyTT = "Klicke, um die Händlerliste völlig zu leeren.\n|cffff0000Achtung!",
+
+	-- AutoSell Options Panel
+	LONTitle = "Negativ-Listen",
+	LONSubTitle = "Um Items hinzuzufügen, ziehe sie auf das jeweilige '+'. Um sie zu entfernen, wähle sie aus und klicke auf '-'.",
+
+		-- Include List
+	LONIncludeHeader = "Einschlussliste - Items hier werden mit als erstes im Tooltip gezeigt.",
+	LONIncludePlusTT = "Items hinzufügen, indem du sie hierher ziehst/hier ablegst",
+	LONIncludeMinusTT = "Wähle Items, die du entfernen willst. Dann klicke hier.",
+	LONIncludePromoteTT = "Klicke, um alle markierten Items in die globale Einschlussliste zu übernehmen.",
+	LONIncludeEmptyTT = "Klicke, um die lokale Einschlussliste völlig zu leeren.\n|cffff0000Achtung!",
+
+		-- Auto Sell List
+	LONAutoSellHeader = "Verkaufsliste - Items hier werden bei Händlern automatisch verkauft.",
+	LONAutoSellPlusTT = "Items hinzufügen, indem du sie hierher ziehst/hier ablegst",
+	LONAutoSellMinusTT = "Wähle Items, die du entfernen willst. Dann klicke hier.",
+	LONAutoSellPromoteTT = "Klicke, um alle markierten Items in die globale Verkaufsliste zu übernehmen.",
+	LONAutoSellEmptyTT = "Klicke, um die lokale Verkaufsliste völlig zu leeren.\n|cffff0000Achtung!",
 }

 end
\ No newline at end of file
diff --git a/enUS.lua b/enUS.lua
index dd51842..c9fa4b1 100644
--- a/enUS.lua
+++ b/enUS.lua
@@ -1,6 +1,8 @@
 -- enUS / enGB / default localization file
 _, BrokerGarbage = ...

+
+
 BrokerGarbage.locale = {
 	label = "Junk, be gone!",

@@ -10,7 +12,9 @@ BrokerGarbage.locale = {
 	sell = "Sold trash for %s.",

 	addedToSaveList = "%s has been added to the save list.",
-	addedToDestroyList = "%s has been added to the destroy list.",
+	addedToPriceList = "%s will only have its vendor price considered.",
+	addedToIncludeList = "%s has been added to the Include List.",
+	addedToSellList = "%s will be automatically sold when at a merchant.",
 	itemDeleted = "%s has been deleted.",

 	openPlease = "Please open your %s. It's in your bags, stealing your space!",
@@ -77,18 +81,39 @@ BrokerGarbage.locale = {
 	emptyIncludeListText = "Click to clear your include list.",

 	-- List Options Panel
-	LOTitle = "List Options",
-	LOSubTitle = "Set up your master lists here. To add Items, drag them over the corresponding '+' icon, to remove them select them and klick the '-'.",
-
-	LOExcludeHeader = "Exclude List - these items will never be sold/deleted.",
-	LOExcludePlusTT = "Add items to the Exclude List by dragging/placing them on me!",
-	LOExcludeMinusTT = "Select items you want to remove, then click here.",
-	LOExcludePromoteTT = "Selected items will be written onto your global Exclude List, as seen by every character.",
-	LOExcludeEmptyTT = "Click to fully empty your local Exclude List. Caution!",
-
-	LOIncludeHeader = "Include List - these items will be suggested to be deleted.",
-	LOIncludePlusTT = "Add items to your Include List by dragging/placing them on me!",
-	LOIncludeMinusTT = "Select items you want to remove, then click here.",
-	LOIncludePromoteTT = "Selected items will be written onto your global Include List, as seen by every character.",
-	LOIncludeEmptyTT = "Click to fully empty your local Include List. Caution!",
-}
\ No newline at end of file
+	LOPTitle = "Positive Lists",
+	LOPSubTitle = "To add Items to lists, drag them over the corresponding '+' icon, to remove them select them and click the '-'.",
+
+		-- Exclude List
+	LOPExcludeHeader = "Exclude List - these items will never be sold/deleted.",
+	LOPExcludePlusTT = "Add items to the Exclude List by dragging/placing them on me!",
+	LOPExcludeMinusTT = "Select items you want to remove, then click here.",
+	LOPExcludePromoteTT = "Selected items will be written onto your global Exclude List, as seen by every character.",
+	LOPExcludeEmptyTT = "Click to fully empty your local Exclude List.\n|cffff0000Caution!",
+
+		-- Force Vendor Price List
+	LOPForceHeader = "Vendor Price List - These items will only have their vendor price considered.",
+	LOPForcePlusTT = "Add items to the Vendor Price List by dragging/placing them on me!",
+	LOPForceMinusTT = "Select items you want to remove, then click here.",
+	LOPForcePromoteTT = "The Vendor Price List is already global and effects every character.",
+	LOPForceEmptyTT = "Click to fully empty your Vendor Price List.\n|cffff0000Caution!",
+
+	-- AutoSell Options Panel
+	LONTitle = "Negative Lists",
+	LONSubTitle = "To add Items to lists, drag them over the corresponding '+' icon, to remove them select them and click the '-'.",
+
+		-- Include List
+	LONIncludeHeader = "Include List - these items will shown first in the tooltip.",
+	LONIncludePlusTT = "Add items to your Include List by dragging/placing them on me!",
+	LONIncludeMinusTT = "Select items you want to remove, then click here.",
+	LONIncludePromoteTT = "Selected items will be written onto your global Include List, as seen by every character.",
+	LONIncludeEmptyTT = "Click to fully empty your local Include List.\n|cffff0000Caution!",
+
+		-- Auto Sell List
+	LONAutoSellHeader = "Sell List - These items will me automatically sold when at a vendor.",
+	LONAutoSellPlusTT = "Add items to your Sell List by dragging/placing them on me!",
+	LONAutoSellMinusTT = "Select items you want to remove, then click here.",
+	LONAutoSellPromoteTT = "Selected items will be written onto your global Sell List, as seen by every character.",
+	LONAutoSellEmptyTT = "Click to fully empty your local Sell List.\n|cffff0000Caution!",
+}
+
diff --git a/options.lua b/options.lua
index dec09af..48b7ff0 100644
--- a/options.lua
+++ b/options.lua
@@ -15,18 +15,32 @@ BrokerGarbage.options = CreateFrame("Frame", "BrokerGarbageOptionsFrame", Interf
 BrokerGarbage.options.name = addonName
 BrokerGarbage.options:Hide()

--- list options panel
-BrokerGarbage.listOptions = CreateFrame("Frame", "BrokerGarbageOptionsFrame", InterfaceOptionsFramePanelContainer)
-BrokerGarbage.listOptions.name = BrokerGarbage.locale.LOTitle
-BrokerGarbage.listOptions.parent = addonName
-BrokerGarbage.listOptions:Hide()
-BrokerGarbage.optionRows = {}
+-- list options
 BrokerGarbage.listButtons = {
-	include = {},
+	-- positive
 	exclude = {},
+	forceprice = {},
+	-- negative
+	autosell = {},
+	include = {},
 }

+-- list options: positive panel
+BrokerGarbage.listOptionsPositive = CreateFrame("Frame", "BrokerGarbageOptionsFrame", InterfaceOptionsFramePanelContainer)
+BrokerGarbage.listOptionsPositive.name = BrokerGarbage.locale.LOPTitle
+BrokerGarbage.listOptionsPositive.parent = addonName
+BrokerGarbage.listOptionsPositive:Hide()
+
+-- list options: negative panel
+BrokerGarbage.listOptionsNegative = CreateFrame("Frame", "BrokerGarbageOptionsFrame", InterfaceOptionsFramePanelContainer)
+BrokerGarbage.listOptionsNegative.name = BrokerGarbage.locale.LONTitle
+BrokerGarbage.listOptionsNegative.parent = addonName
+BrokerGarbage.listOptionsNegative:Hide()
+
 local function ShowOptions(frame)
+	-- ----------------------------------
+	-- Basic Options
+	-- ----------------------------------
 	local title, subtitle = LibStub("tekKonfig-Heading").new(BrokerGarbage.options, addonName, BrokerGarbage.locale.subTitle)

 	local autosell = LibStub("tekKonfig-Checkbox").new(BrokerGarbage.options, nil, BrokerGarbage.locale.autoSellTitle, "TOPLEFT", subtitle, "BOTTOMLEFT", -2, -4)
@@ -185,127 +199,238 @@ local function ShowOptions(frame)
 	local checksound = showsource:GetScript("OnClick")
 	showsource:SetScript("OnClick", function(showsource)
 		checksound(showsource)
-		BG_GlobalDB.showsource = not BG_GlobalDB.showsource
+		BG_GlobalDB.showSource = not BG_GlobalDB.showSource
 	end)

+	-- List Options
 	-- ----------------------------------
-	-- List Options panel
-
-	local title, subtitle = LibStub("tekKonfig-Heading").new(BrokerGarbage.listOptions, addonName .. " - " .. BrokerGarbage.locale.LOTitle , BrokerGarbage.locale.LOSubTitle)
-
-	-- list frame: excludes
 	local boxHeight = 150
 	local boxWidth = 330
-
-	local excludeListHeader = BrokerGarbage.listOptions:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
+
+	--local backdrop = {
+		--bgFile = "Interface\\ChatFrame\\ChatFrameBackground", insets = {left = 4, right = 4, top = 4, bottom = 4},
+		--edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16
+	--}
+	local backdrop = {bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
+		tile = false,
+		tileSize = 32,
+		insets = { left = 0, right = -22, top = 0, bottom = 0 }
+	}
+
+	local function ShowTooltip(self)
+		GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
+		if self.tiptext then
+			GameTooltip:SetText(self.tiptext, nil, nil, nil, nil, true)
+		elseif self.itemLink then
+			GameTooltip:SetHyperlink(self.itemLink)
+		end
+		GameTooltip:Show()
+	end
+	local function HideTooltip() GameTooltip:Hide() end
+
+	-- ----------------------------------
+	--	Positive Lists
+	-- ----------------------------------
+	local title2, subtitle2 = LibStub("tekKonfig-Heading").new(BrokerGarbage.listOptionsPositive, addonName .. " - " .. BrokerGarbage.locale.LOPTitle , BrokerGarbage.locale.LOPSubTitle)
+
+	-- list frame: exclude
+	local excludeListHeader = BrokerGarbage.listOptionsPositive:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
 	excludeListHeader:SetHeight(32)
-	excludeListHeader:SetPoint("TOPLEFT", subtitle, "BOTTOMLEFT", 0, 15)
-	excludeListHeader:SetText(BrokerGarbage.locale.LOExcludeHeader)
+	excludeListHeader:SetPoint("TOPLEFT", subtitle2, "BOTTOMLEFT", 0, 14)
+	excludeListHeader:SetText(BrokerGarbage.locale.LOPExcludeHeader)

-	local excludeBox = CreateFrame("ScrollFrame", "BG_ExcludeListBox", BrokerGarbage.listOptions, "UIPanelScrollFrameTemplate")
-	excludeBox:SetPoint("TOPLEFT", excludeListHeader, "BOTTOMLEFT", 0, 2)
+	local excludeBox = CreateFrame("ScrollFrame", "BG_ExcludeListBox", BrokerGarbage.listOptionsPositive, "UIPanelScrollFrameTemplate")
+	excludeBox:SetPoint("TOPLEFT", excludeListHeader, "BOTTOMLEFT", 0, 4)
 	excludeBox:SetHeight(boxHeight)
 	excludeBox:SetWidth(boxWidth)
-	local group = CreateFrame("Frame", nil, excludeBox)
-	excludeBox:SetScrollChild(group)
-	group:SetAllPoints()
-	group:SetHeight(boxHeight)
-	group:SetWidth(boxWidth)
+	local group_exclude = CreateFrame("Frame", nil, excludeBox)
+	excludeBox:SetScrollChild(group_exclude)
+	group_exclude:SetAllPoints()
+	group_exclude:SetHeight(boxHeight)
+	group_exclude:SetWidth(boxWidth)

-	local backdrop = {bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
-		tile = false,
-		tileSize = 32,
-		insets = { left = 0, right = -22, top = 0, bottom = 0 }}
 	excludeBox:SetBackdrop(backdrop)
 	excludeBox:SetBackdropBorderColor(0.4, 0.4, 0.4)
 	excludeBox:SetBackdropColor(0.1, 0.1, 0.1)

 	-- action buttons
-	local plus = CreateFrame("Button", nil, BrokerGarbage.listOptions)
+	local plus = CreateFrame("Button", nil, BrokerGarbage.listOptionsPositive)
 	plus:SetPoint("TOPLEFT", "BG_ExcludeListBoxScrollBar", "TOPRIGHT", 8, -3)
 	plus:SetWidth(25); plus:SetHeight(25)
 	plus:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
 	plus:SetNormalTexture("Interface\\Icons\\Spell_chargepositive")
-	plus.tiptext = BrokerGarbage.locale.LOExcludePlusTT
+	plus.tiptext = BrokerGarbage.locale.LOPExcludePlusTT

-	local minus = CreateFrame("Button", nil, BrokerGarbage.listOptions)
+	local minus = CreateFrame("Button", nil, BrokerGarbage.listOptionsPositive)
 	minus:SetPoint("TOP", plus, "BOTTOM", 0, -6)
 	minus:SetWidth(25);	minus:SetHeight(25)
 	minus:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
 	minus:SetNormalTexture("Interface\\Icons\\Spell_chargenegative")
-	minus.tiptext = BrokerGarbage.locale.LOExcludeMinusTT
+	minus.tiptext = BrokerGarbage.locale.LOPExcludeMinusTT

-	local promote = CreateFrame("Button", nil, BrokerGarbage.listOptions)
+	local promote = CreateFrame("Button", nil, BrokerGarbage.listOptionsPositive)
 	promote:SetPoint("TOP", minus, "BOTTOM", 0, -6)
 	promote:SetWidth(25) promote:SetHeight(25)
 	promote:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
 	promote:SetNormalTexture("Interface\\Icons\\achievement_bg_returnxflags_def_wsg")
-	promote.tiptext = BrokerGarbage.locale.LOExcludePromoteTT
+	promote.tiptext = BrokerGarbage.locale.LOPExcludePromoteTT

-	local emptyExcludeList = CreateFrame("Button", nil, BrokerGarbage.listOptions)
+	local emptyExcludeList = CreateFrame("Button", nil, BrokerGarbage.listOptionsPositive)
 	emptyExcludeList:SetPoint("TOP", promote, "BOTTOM", 0, -6)
 	emptyExcludeList:SetWidth(25); emptyExcludeList:SetHeight(25)
 	emptyExcludeList:SetNormalTexture("Interface\\Buttons\\Ui-grouploot-pass-up")
-	emptyExcludeList.tiptext = BrokerGarbage.locale.LOExcludeEmptyTT
-
-	-- list frame: includes
-	local includeListHeader = BrokerGarbage.listOptions:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
-	includeListHeader:SetHeight(32)
-	includeListHeader:SetPoint("TOPLEFT", excludeBox, "BOTTOMLEFT", 0, -8)
-	includeListHeader:SetText(BrokerGarbage.locale.LOIncludeHeader)
-
-	local includeBox = CreateFrame("ScrollFrame", "BG_IncludeListBox", BrokerGarbage.listOptions, "UIPanelScrollFrameTemplate")
-	includeBox:SetPoint("TOPLEFT", includeListHeader, "BOTTOMLEFT", 0, 2)
-	includeBox:SetHeight(boxHeight)
-	includeBox:SetWidth(boxWidth)
-	local group2 = CreateFrame("Frame", nil, excludeBox)
-	group2:SetAllPoints()
-	group2:SetHeight(boxHeight)
-	group2:SetWidth(boxWidth)
-	includeBox:SetScrollChild(group2)
-
-	includeBox:SetBackdrop(backdrop)
-	includeBox:SetBackdropBorderColor(0.4, 0.4, 0.4)
-	includeBox:SetBackdropColor(0.1, 0.1, 0.1)
+	emptyExcludeList.tiptext = BrokerGarbage.locale.LOPExcludeEmptyTT
+
+	-- list frame: force price
+	local forcepriceListHeader = BrokerGarbage.listOptionsPositive:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
+	forcepriceListHeader:SetHeight(32)
+	forcepriceListHeader:SetPoint("TOPLEFT", excludeBox, "BOTTOMLEFT", 0, -8)
+	forcepriceListHeader:SetText(BrokerGarbage.locale.LOPForceHeader)
+
+	local forcepriceBox = CreateFrame("ScrollFrame", "BG_ForcePriceListBox", BrokerGarbage.listOptionsPositive, "UIPanelScrollFrameTemplate")
+	forcepriceBox:SetPoint("TOPLEFT", forcepriceListHeader, "BOTTOMLEFT", 0, 4)
+	forcepriceBox:SetHeight(boxHeight)
+	forcepriceBox:SetWidth(boxWidth)
+	local group_forceprice = CreateFrame("Frame", nil, forcepriceBox)
+	group_forceprice:SetAllPoints()
+	group_forceprice:SetHeight(boxHeight)
+	group_forceprice:SetWidth(boxWidth)
+	forcepriceBox:SetScrollChild(group_forceprice)
+
+	forcepriceBox:SetBackdrop(backdrop)
+	forcepriceBox:SetBackdropBorderColor(0.4, 0.4, 0.4)
+	forcepriceBox:SetBackdropColor(0.1, 0.1, 0.1)

 	-- action buttons
-	local plus2 = CreateFrame("Button", nil, BrokerGarbage.listOptions)
-	plus2:SetPoint("TOPLEFT", "BG_IncludeListBoxScrollBar", "TOPRIGHT", 8, -3)
+	local plus2 = CreateFrame("Button", nil, BrokerGarbage.listOptionsPositive)
+	plus2:SetPoint("TOPLEFT", "BG_ForcePriceListBoxScrollBar", "TOPRIGHT", 8, -3)
 	plus2:SetWidth(25); plus2:SetHeight(25)
 	plus2:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
 	plus2:SetNormalTexture("Interface\\Icons\\Spell_chargepositive")
-	plus2.tiptext = BrokerGarbage.locale.LOIncludePlusTT
+	plus2.tiptext = BrokerGarbage.locale.LOPForcePlusTT

-	local minus2 = CreateFrame("Button", nil, BrokerGarbage.listOptions)
+	local minus2 = CreateFrame("Button", nil, BrokerGarbage.listOptionsPositive)
 	minus2:SetPoint("TOP", plus2, "BOTTOM", 0, -6)
 	minus2:SetWidth(25); minus2:SetHeight(25)
 	minus2:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
 	minus2:SetNormalTexture("Interface\\Icons\\Spell_chargenegative")
-	minus2.tiptext = BrokerGarbage.locale.LOIncludeMinusTT
+	minus2.tiptext = BrokerGarbage.locale.LOPForceMinusTT

-	local promote2 = CreateFrame("Button", nil, BrokerGarbage.listOptions)
+	local promote2 = CreateFrame("Button", nil, BrokerGarbage.listOptionsPositive)
 	promote2:SetPoint("TOP", minus2, "BOTTOM", 0, -6)
 	promote2:SetWidth(25); promote2:SetHeight(25)
 	promote2:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
 	promote2:SetNormalTexture("Interface\\Icons\\achievement_bg_returnxflags_def_wsg")
-	promote2.tiptext = BrokerGarbage.locale.LOIncludePromoteTT
+	promote2:Enable(false)		-- we only have a global force vendor price list
+	promote2:GetNormalTexture():SetDesaturated(true)
+	promote2.tiptext = BrokerGarbage.locale.LOPForcePromoteTT
+
+	local emptyForcePriceList = CreateFrame("Button", nil, BrokerGarbage.listOptionsPositive)
+	emptyForcePriceList:SetPoint("TOP", promote2, "BOTTOM", 0, -6)
+	emptyForcePriceList:SetWidth(25); emptyForcePriceList:SetHeight(25)
+	emptyForcePriceList:SetNormalTexture("Interface\\Buttons\\Ui-grouploot-pass-up")
+	emptyForcePriceList.tiptext = BrokerGarbage.locale.LOPForceEmptyTT
+
+	-- ----------------------------------
+	--	Negative Lists
+	-- ----------------------------------
+	local title3, subtitle3 = LibStub("tekKonfig-Heading").new(BrokerGarbage.listOptionsNegative, addonName .. " - " .. BrokerGarbage.locale.LONTitle , BrokerGarbage.locale.LONSubTitle)
+
+	-- list frame: include
+	local includeListHeader = BrokerGarbage.listOptionsNegative:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
+	includeListHeader:SetHeight(32)
+	includeListHeader:SetPoint("TOPLEFT", subtitle3, "BOTTOMLEFT", 0, 14)
+	includeListHeader:SetText(BrokerGarbage.locale.LONIncludeHeader)
+
+	local includeBox = CreateFrame("ScrollFrame", "BG_IncludeListBox", BrokerGarbage.listOptionsNegative, "UIPanelScrollFrameTemplate")
+	includeBox:SetPoint("TOPLEFT", excludeListHeader, "BOTTOMLEFT", 0, 4)
+	includeBox:SetHeight(boxHeight)
+	includeBox:SetWidth(boxWidth)
+	local group_include = CreateFrame("Frame", nil, includeBox)
+	includeBox:SetScrollChild(group_include)
+	group_include:SetAllPoints()
+	group_include:SetHeight(boxHeight)
+	group_include:SetWidth(boxWidth)
+
+	includeBox:SetBackdrop(backdrop)
+	includeBox:SetBackdropBorderColor(0.4, 0.4, 0.4)
+	includeBox:SetBackdropColor(0.1, 0.1, 0.1)
+
+	-- action buttons
+	local plus3 = CreateFrame("Button", nil, BrokerGarbage.listOptionsNegative)
+	plus3:SetPoint("TOPLEFT", "BG_ExcludeListBoxScrollBar", "TOPRIGHT", 8, -3)
+	plus3:SetWidth(25); plus3:SetHeight(25)
+	plus3:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
+	plus3:SetNormalTexture("Interface\\Icons\\Spell_chargepositive")
+	plus3.tiptext = BrokerGarbage.locale.LONIncludePlusTT

-	local emptyIncludeList = CreateFrame("Button", nil, BrokerGarbage.listOptions)
-	emptyIncludeList:SetPoint("TOP", promote2, "BOTTOM", 0, -6)
+	local minus3 = CreateFrame("Button", nil, BrokerGarbage.listOptionsNegative)
+	minus3:SetPoint("TOP", plus3, "BOTTOM", 0, -6)
+	minus3:SetWidth(25); minus3:SetHeight(25)
+	minus3:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
+	minus3:SetNormalTexture("Interface\\Icons\\Spell_chargenegative")
+	minus3.tiptext = BrokerGarbage.locale.LONIncludeMinusTT
+
+	local promote3 = CreateFrame("Button", nil, BrokerGarbage.listOptionsNegative)
+	promote3:SetPoint("TOP", minus3, "BOTTOM", 0, -6)
+	promote3:SetWidth(25) promote3:SetHeight(25)
+	promote3:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
+	promote3:SetNormalTexture("Interface\\Icons\\achievement_bg_returnxflags_def_wsg")
+	promote3.tiptext = BrokerGarbage.locale.LONIncludePromoteTT
+
+	local emptyIncludeList = CreateFrame("Button", nil, BrokerGarbage.listOptionsNegative)
+	emptyIncludeList:SetPoint("TOP", promote3, "BOTTOM", 0, -6)
 	emptyIncludeList:SetWidth(25); emptyIncludeList:SetHeight(25)
 	emptyIncludeList:SetNormalTexture("Interface\\Buttons\\Ui-grouploot-pass-up")
-	emptyIncludeList.tiptext = BrokerGarbage.locale.LOIncludeEmptyTT
-
-	local function ShowTooltip(self)
-		GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
-		if self.tiptext then
-			GameTooltip:SetText(self.tiptext, nil, nil, nil, nil, true)
-		elseif self.itemLink then
-			GameTooltip:SetHyperlink(self.itemLink)
-		end
-		GameTooltip:Show()
-	end
-	local function HideTooltip() GameTooltip:Hide() end
+	emptyIncludeList.tiptext = BrokerGarbage.locale.LONIncludeEmptyTT
+
+	-- list frame: auto sell
+	local autosellListHeader = BrokerGarbage.listOptionsNegative:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
+	autosellListHeader:SetHeight(32)
+	autosellListHeader:SetPoint("TOPLEFT", excludeBox, "BOTTOMLEFT", 0, -8)
+	autosellListHeader:SetText(BrokerGarbage.locale.LONAutoSellHeader)
+
+	local autosellBox = CreateFrame("ScrollFrame", "BG_AutosellListBox", BrokerGarbage.listOptionsNegative, "UIPanelScrollFrameTemplate")
+	autosellBox:SetPoint("TOPLEFT", autosellListHeader, "BOTTOMLEFT", 0, 4)
+	autosellBox:SetHeight(boxHeight)
+	autosellBox:SetWidth(boxWidth)
+	local group_autosell = CreateFrame("Frame", nil, autosellBox)
+	group_autosell:SetAllPoints()
+	group_autosell:SetHeight(boxHeight)
+	group_autosell:SetWidth(boxWidth)
+	autosellBox:SetScrollChild(group_autosell)
+
+	autosellBox:SetBackdrop(backdrop)
+	autosellBox:SetBackdropBorderColor(0.4, 0.4, 0.4)
+	autosellBox:SetBackdropColor(0.1, 0.1, 0.1)
+
+	-- action buttons
+	local plus4 = CreateFrame("Button", nil, BrokerGarbage.listOptionsNegative)
+	plus4:SetPoint("TOPLEFT", "BG_AutosellListBoxScrollBar", "TOPRIGHT", 8, -3)
+	plus4:SetWidth(25); plus4:SetHeight(25)
+	plus4:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
+	plus4:SetNormalTexture("Interface\\Icons\\Spell_chargepositive")
+	plus4.tiptext = BrokerGarbage.locale.LONAutoSellPlusTT
+
+	local minus4 = CreateFrame("Button", nil, BrokerGarbage.listOptionsNegative)
+	minus4:SetPoint("TOP", plus4, "BOTTOM", 0, -6)
+	minus4:SetWidth(25); minus4:SetHeight(25)
+	minus4:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
+	minus4:SetNormalTexture("Interface\\Icons\\Spell_chargenegative")
+	minus4.tiptext = BrokerGarbage.locale.LONAutoSellMinusTT
+
+	local promote4 = CreateFrame("Button", nil, BrokerGarbage.listOptionsNegative)
+	promote4:SetPoint("TOP", minus4, "BOTTOM", 0, -6)
+	promote4:SetWidth(25); promote4:SetHeight(25)
+	promote4:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Square")
+	promote4:SetNormalTexture("Interface\\Icons\\achievement_bg_returnxflags_def_wsg")
+	promote4.tiptext = BrokerGarbage.locale.LONAutoSellPromoteTT
+
+	local emptyAutoSellList = CreateFrame("Button", nil, BrokerGarbage.listOptionsNegative)
+	emptyAutoSellList:SetPoint("TOP", promote4, "BOTTOM", 0, -6)
+	emptyAutoSellList:SetWidth(25); emptyAutoSellList:SetHeight(25)
+	emptyAutoSellList:SetNormalTexture("Interface\\Buttons\\Ui-grouploot-pass-up")
+	emptyAutoSellList.tiptext = BrokerGarbage.locale.LONAutoSellEmptyTT


 	local function JoinTables(t1, t2)
@@ -326,24 +451,42 @@ local function ShowOptions(frame)
 	end

 	local numCols = 8
-	local function ListOptionsUpdate(listName)
+	function BrokerGarbage:ListOptionsUpdate(listName)
 		local globalList, localList, dataList, box, parent, buttonList
+		BrokerGarbage:Debug("List Name:", listName)
 		if listName == "include" then
 			globalList = BG_GlobalDB.include
 			localList = BG_LocalDB.include

 			box = includeBox
-			parent = group2
+			parent = group_include
 			buttonList = BrokerGarbage.listButtons.include
-		else
+
+		elseif listName == "exclude" then
 			globalList = BG_GlobalDB.exclude
 			localList = BG_LocalDB.exclude

 			box = excludeBox
-			parent = group
+			parent = group_exclude
 			buttonList = BrokerGarbage.listButtons.exclude
+
+		elseif listName == "autosell" then
+			globalList = BG_GlobalDB.autoSellList
+			localList = BG_LocalDB.autoSellList
+
+			box = autosellBox
+			parent = group_autosell
+			buttonList = BrokerGarbage.listButtons.autosell
+
+		elseif listName == "forceprice" then
+			globalList = BG_GlobalDB.forceVendorPrice
+
+			box = forcepriceBox
+			parent = group_forceprice
+			buttonList = BrokerGarbage.listButtons.forceprice
 		end
 		dataList = JoinTables(globalList, localList)
+		if not buttonList then buttonList = {} end

 		local index = 1
 		for itemID,_ in pairs(dataList) do
@@ -391,9 +534,8 @@ local function ShowOptions(frame)
 				end

 				buttonList[index] = iconbutton
-				ListOptionsUpdate(listName)
+				BrokerGarbage:ListOptionsUpdate(listName)
 			end
-
 			index = index + 1
 		end
 		-- hide unnessessary buttons
@@ -401,37 +543,55 @@ local function ShowOptions(frame)
 			buttonList[index]:Hide()
 			index = index + 1
 		end
-
-		box:UpdateScrollChildRect()
 	end

 	local function ItemDrop(self)
 		local type, itemID, link = GetCursorInfo()
 		if not type == "item" then return end

-		if self == group2 or self == includeBox or self == plus2 then
+		if self == group_exclude or self == excludeBox or self == plus then
+			BG_LocalDB.exclude[itemID] = true
+			BrokerGarbage:Print(format(BrokerGarbage.locale.addedToSaveList, link))
+			BrokerGarbage:ListOptionsUpdate("exclude")
+			ClearCursor()
+		elseif self == group_forceprice or self == forcepriceBox or self == plus2 then
+			BG_LocalDB.exclude[itemID] = true
+			BrokerGarbage:Print(format(BrokerGarbage.locale.addedToPriceList, link))
+			BrokerGarbage:ListOptionsUpdate("forceprice")
+			ClearCursor()
+		elseif self == group_include or self == includeBox or self == plus3 then
 			BG_LocalDB.include[itemID] = true
-			BrokerGarbage:Print(format(BrokerGarbage.locale.addedToDestroyList, link))
-			ListOptionsUpdate("include")
+			BrokerGarbage:Print(format(BrokerGarbage.locale.addedToIncludeList, link))
+			BrokerGarbage:ListOptionsUpdate("include")
 			ClearCursor()
-		elseif self == group or self == excludeBox or self == plus then
+		elseif self == group_autosell or self == autosellBox or self == plus4 then
 			BG_LocalDB.exclude[itemID] = true
-			BrokerGarbage:Print(format(BrokerGarbage.locale.addedToSaveList, link))
-			ListOptionsUpdate("exclude")
+			BrokerGarbage:Print(format(BrokerGarbage.locale.addedToSellList, link))
+			BrokerGarbage:ListOptionsUpdate("autosell")
 			ClearCursor()
 		end
 	end

 	local function OnClick(self, button)
+		-- empty action
 		if self == emptyExcludeList then
 			BG_LocalDB.exclude = {}
-			ListOptionsUpdate("exclude")
+			BrokerGarbage:ListOptionsUpdate("exclude")
+			BrokerGarbage:ScanInventory()
+		elseif self == emptyForcePriceList then
+			BG_LocalDB.forceVendorPrice = {}
+			BrokerGarbage:ListOptionsUpdate("forceprice")
 			BrokerGarbage:ScanInventory()
 		elseif self == emptyIncludeList then
 			BG_LocalDB.include = {}
-			ListOptionsUpdate("include")
+			BrokerGarbage:ListOptionsUpdate("include")
+			BrokerGarbage:ScanInventory()
+		elseif self == emptyAutoSellList then
+			BG_GlobalDB.autoSellList = {}
+			BrokerGarbage:ListOptionsUpdate("autosell")
 			BrokerGarbage:ScanInventory()

+		-- remove action
 		elseif self == minus then
 			for i, button in pairs(BrokerGarbage.listButtons.exclude) do
 				if button:GetChecked() then
@@ -439,102 +599,156 @@ local function ShowOptions(frame)
 					BG_GlobalDB.exclude[button.itemID] = nil
 				end
 			end
-			ListOptionsUpdate("exclude")
+			BrokerGarbage:ListOptionsUpdate("exclude")
 			BrokerGarbage:ScanInventory()
 		elseif self == minus2 then
+			for i, button in pairs(BrokerGarbage.listButtons.forceprice) do
+				if button:GetChecked() then
+					BG_GlobalDB.forceVendorPrice[button.itemID] = nil
+				end
+			end
+			BrokerGarbage:ListOptionsUpdate("forceprice")
+			BrokerGarbage:ScanInventory()
+		elseif self == minus3 then
 			for i, button in pairs(BrokerGarbage.listButtons.include) do
 				if button:GetChecked() then
 					BG_LocalDB.include[button.itemID] = nil
 					BG_GlobalDB.include[button.itemID] = nil
 				end
 			end
-			ListOptionsUpdate("include")
+			BrokerGarbage:ListOptionsUpdate("include")
 			BrokerGarbage:ScanInventory()
-
+		elseif self == minus4 then
+			for i, button in pairs(BrokerGarbage.listButtons.autosell) do
+				if button:GetChecked() then
+					BG_LocalDB.autoSellList[button.itemID] = nil
+					BG_GlobalDB.autoSellList[button.itemID] = nil
+				end
+			end
+			BrokerGarbage:ListOptionsUpdate("autosell")
+			BrokerGarbage:ScanInventory()
+
+		-- add action
 		elseif self == plus then
-			BrokerGarbage:Debug("Include1")
 			ItemDrop(self)
-			ListOptionsUpdate("exclude")
+			BrokerGarbage:ListOptionsUpdate("exclude")
 		elseif self == plus2 then
-			BrokerGarbage:Debug("Include2")
 			ItemDrop(self)
-			ListOptionsUpdate("include")
+			BrokerGarbage:ListOptionsUpdate("forceprice")
+		elseif self == plus3 then
+			ItemDrop(self)
+			BrokerGarbage:ListOptionsUpdate("include")
+		elseif self == plus4 then
+			ItemDrop(self)
+			BrokerGarbage:ListOptionsUpdate("autosell")

+		-- promote action
 		elseif self == promote then
-			BrokerGarbage:Debug("Promote")
 			for i, button in pairs(BrokerGarbage.listButtons.exclude) do
 				if button:GetChecked() then
 					BG_GlobalDB.exclude[button.itemID] = true
 				end
 			end
-
-			ListOptionsUpdate("exclude")
-		elseif self == promote2 then
-			BrokerGarbage:Debug("Promote2")
+			BrokerGarbage:ListOptionsUpdate("exclude")
+		elseif self == promote3 then
 			for i, button in pairs(BrokerGarbage.listButtons.include) do
 				if button:GetChecked() then
 					BG_GlobalDB.include[button.itemID] = true
 				end
 			end
-
-			ListOptionsUpdate("exclude")
+			BrokerGarbage:ListOptionsUpdate("include")
+		elseif self == promote3 then
+			for i, button in pairs(BrokerGarbage.listButtons.autosell) do
+				if button:GetChecked() then
+					BG_GlobalDB.autoSellList[button.itemID] = true
+				end
+			end
+			BrokerGarbage:ListOptionsUpdate("autosell")
 		end
-
-		--ListOptionsUpdate("include")
-		--ListOptionsUpdate("exclude")
 	end

 	emptyExcludeList:SetScript("OnClick", OnClick)
 	emptyExcludeList:SetScript("OnEnter", ShowTooltip)
 	emptyExcludeList:SetScript("OnLeave", HideTooltip)
-
+	emptyForcePriceList:SetScript("OnClick", OnClick)
+	emptyForcePriceList:SetScript("OnEnter", ShowTooltip)
+	emptyForcePriceList:SetScript("OnLeave", HideTooltip)
 	emptyIncludeList:SetScript("OnClick", OnClick)
 	emptyIncludeList:SetScript("OnEnter", ShowTooltip)
 	emptyIncludeList:SetScript("OnLeave", HideTooltip)
+	emptyAutoSellList:SetScript("OnClick", OnClick)
+	emptyAutoSellList:SetScript("OnEnter", ShowTooltip)
+	emptyAutoSellList:SetScript("OnLeave", HideTooltip)

 	minus:SetScript("OnClick", OnClick)
 	minus:SetScript("OnEnter", ShowTooltip)
 	minus:SetScript("OnLeave", HideTooltip)
-
 	minus2:SetScript("OnClick", OnClick)
 	minus2:SetScript("OnEnter", ShowTooltip)
 	minus2:SetScript("OnLeave", HideTooltip)
+	minus3:SetScript("OnClick", OnClick)
+	minus3:SetScript("OnEnter", ShowTooltip)
+	minus3:SetScript("OnLeave", HideTooltip)
+	minus4:SetScript("OnClick", OnClick)
+	minus4:SetScript("OnEnter", ShowTooltip)
+	minus4:SetScript("OnLeave", HideTooltip)

 	plus:SetScript("OnClick", OnClick)
 	plus:SetScript("OnEnter", ShowTooltip)
 	plus:SetScript("OnLeave", HideTooltip)
-
 	plus2:SetScript("OnClick", OnClick)
 	plus2:SetScript("OnEnter", ShowTooltip)
 	plus2:SetScript("OnLeave", HideTooltip)
+	plus3:SetScript("OnClick", OnClick)
+	plus3:SetScript("OnEnter", ShowTooltip)
+	plus3:SetScript("OnLeave", HideTooltip)
+	plus4:SetScript("OnClick", OnClick)
+	plus4:SetScript("OnEnter", ShowTooltip)
+	plus4:SetScript("OnLeave", HideTooltip)

 	promote:SetScript("OnClick", OnClick)
 	promote:SetScript("OnEnter", ShowTooltip)
 	promote:SetScript("OnLeave", HideTooltip)
-
 	promote2:SetScript("OnClick", OnClick)
 	promote2:SetScript("OnEnter", ShowTooltip)
 	promote2:SetScript("OnLeave", HideTooltip)
-
-	-- ----------------------------------
+	promote3:SetScript("OnClick", OnClick)
+	promote3:SetScript("OnEnter", ShowTooltip)
+	promote3:SetScript("OnLeave", HideTooltip)
+	promote4:SetScript("OnClick", OnClick)
+	promote4:SetScript("OnEnter", ShowTooltip)
+	promote4:SetScript("OnLeave", HideTooltip)
+
+	-- support for add-mechanism
 	plus:RegisterForDrag("LeftButton")
 	plus:SetScript("OnReceiveDrag", ItemDrop)
 	plus:SetScript("OnMouseDown", ItemDrop)
 	plus2:RegisterForDrag("LeftButton")
 	plus2:SetScript("OnReceiveDrag", ItemDrop)
 	plus2:SetScript("OnMouseDown", ItemDrop)
+	plus3:RegisterForDrag("LeftButton")
+	plus3:SetScript("OnReceiveDrag", ItemDrop)
+	plus3:SetScript("OnMouseDown", ItemDrop)
+	plus4:RegisterForDrag("LeftButton")
+	plus4:SetScript("OnReceiveDrag", ItemDrop)
+	plus4:SetScript("OnMouseDown", ItemDrop)

 	buttons = {}
-	ListOptionsUpdate("include")
-	ListOptionsUpdate("exclude")
+	BrokerGarbage:ListOptionsUpdate("include")
+	BrokerGarbage:ListOptionsUpdate("forceprice")
+	BrokerGarbage:ListOptionsUpdate("exclude")
+	BrokerGarbage:ListOptionsUpdate("autosell")
 	BrokerGarbage.options:SetScript("OnShow", nil)
-	BrokerGarbage.listOptions:SetScript("OnShow", ListOptionsUpdate)
+	BrokerGarbage.listOptionsPositive:SetScript("OnShow", BrokerGarbage.ListOptionsUpdate)
+	BrokerGarbage.listOptionsNegative:SetScript("OnShow", BrokerGarbage.ListOptionsUpdate)
 end

 -- show me!
 BrokerGarbage.options:SetScript("OnShow", ShowOptions)
-BrokerGarbage.listOptions:SetScript("OnShow", ShowOptions)
+BrokerGarbage.listOptionsPositive:SetScript("OnShow", ShowOptions)
+BrokerGarbage.listOptionsNegative:SetScript("OnShow", ShowOptions)

 InterfaceOptions_AddCategory(BrokerGarbage.options)
-InterfaceOptions_AddCategory(BrokerGarbage.listOptions)
+InterfaceOptions_AddCategory(BrokerGarbage.listOptionsPositive)
+InterfaceOptions_AddCategory(BrokerGarbage.listOptionsNegative)
 LibStub("tekKonfig-AboutPanel").new("Broker_Garbage", "Broker_Garbage")
\ No newline at end of file
diff --git a/readme.txt b/readme.txt
index ce1d85a..f3c26a7 100644
--- a/readme.txt
+++ b/readme.txt
@@ -10,6 +10,8 @@ Curse:        http://wow.curse.com/downloads/wow-addons/details/broker_garbage.a

 1. What it does
 -----------------
+Broker_Garbage is a LDB plugin that will show your least valuable items, their value and their amount in a tooltip. Then it enables you to drop them with just one click, making life for those tight-bagged people among us easier.
+As you probably don't want to drop everything just by it's vendor price, Broker_Garbage takes into account auction prices (you would need to have an auction price addon active) and different lists for managing exclusions and other "special" behaviour.

 2. First Start
 -----------------
@@ -51,12 +53,9 @@ Grayed out items on there are items that are on your global list, active for all
 Items on this list will never have their auction value used. This is useful for food, drinks and other things people tend to put on the AH at unbelievable prices.

 * Include List
-Items on this list will be dropped, no matter what Quality Treshold you might have set. Caution!
+Items on this list will be always be shown in the drop Tooltip, no matter what Quality Treshold you might have set. Caution!
 Grayed out items on there are items that are on your global list, active for all characters. Colorful ones are just for your current character.

-* Drop List
-If your inventory gets too full and you want to drop something, these items will show up in the tooltip with a forced value of 0 copper. Items above your Quality Treshold will NOT be dropped.
-
 * Auto-Sell List
 Items on this list will be sold whenever you talk to a vendor. Items of higher quality than your Quality Treshold WILL be sold.