diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..3b39aba
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+Aux-Addon
\ No newline at end of file
diff --git a/.idea/Aux-Addon.iml b/.idea/Aux-Addon.iml
new file mode 100644
index 0000000..ef582b1
--- /dev/null
+++ b/.idea/Aux-Addon.iml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..217af47
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000..e7bedf3
--- /dev/null
+++ b/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..e206d70
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..fa5ca66
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+ 1.7
+
+
+
+
+
+
+
+
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..d063129
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml
new file mode 100644
index 0000000..922003b
--- /dev/null
+++ b/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..275077f
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..756c29d
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,500 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ localhost
+ 5050
+
+
+
+
+
+
+
+
+
+ 1445044678361
+ 1445044678361
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Aux-Addon.toc b/Aux-Addon.toc
index b45ea05..43d5482 100644
--- a/Aux-Addon.toc
+++ b/Aux-Addon.toc
@@ -7,9 +7,6 @@ core.xml
control.xml
util.lua
-sell.xml
-buy.xml
-
scan.lua
stack.lua
post.lua
@@ -17,6 +14,9 @@ list.lua
info.xml
completion.xml
+sell.xml
+buy.xml
+
options.xml
about.xml
diff --git a/buy.lua b/buy.lua
index 1fcd411..5268b35 100644
--- a/buy.lua
+++ b/buy.lua
@@ -1,6 +1,6 @@
Aux.buy = {}
-local process_auction, set_message, report, tooltip_match, show_dialog, find_auction
+local process_auction, set_message, report, show_dialog, find_auction, hide_sheet, show_sheet, alpha_setter
local entries
local selectedEntries = {}
local search_query
@@ -8,6 +8,498 @@ local tooltip_patterns = {}
local current_page
local refresh
+local function alpha_setter(cell, datum)
+ cell:SetAlpha(datum.gone and 0.4 or 1)
+end
+
+Aux.buy.modes = {
+ {
+ name = 'Buy',
+ on_cell_click = function (sheet, row_index, column_index)
+ local entry_index = row_index + FauxScrollFrame_GetOffset(sheet.scroll_frame)
+ AuxBuyEntry_OnClick(entry_index)
+ end,
+
+ on_cell_enter = function (sheet, row_index, column_index)
+ sheet.rows[row_index].highlight:SetAlpha(.5)
+ end,
+
+ on_cell_leave = function (sheet, row_index, column_index)
+ sheet.rows[row_index].highlight:SetAlpha(0)
+ end,
+ columns = {
+ {
+ title = '#',
+ width = 23,
+ comparator = function(row1, row2) return Aux.util.compare(row1.stack_size, row2.stack_size, Aux.util.LT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(datum.stack_size)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Auction Item',
+ width = 157,
+ comparator = function(row1, row2) return Aux.util.compare(row1.tooltip[1][1].text, row2.tooltip[1][1].text, Aux.util.GT) end,
+ cell_initializer = function(cell)
+ local icon = CreateFrame('Button', nil, cell)
+ local icon_texture = icon:CreateTexture(nil, 'BORDER')
+ icon_texture:SetAllPoints(icon)
+ icon.icon_texture = icon_texture
+ local normal_texture = icon:CreateTexture(nil)
+ normal_texture:SetPoint('CENTER', 0, 0)
+ normal_texture:SetWidth(22)
+ normal_texture:SetHeight(22)
+ normal_texture:SetTexture('Interface\\Buttons\\UI-Quickslot2')
+ icon:SetNormalTexture(normal_texture)
+ icon:SetPoint('LEFT', cell)
+ icon:SetWidth(12)
+ icon:SetHeight(12)
+ icon:SetNormalTexture('Interface\\Buttons\\UI-Quickslot2')
+ icon:SetPushedTexture('Interface\\Buttons\\UI-Quickslot-Depress')
+ icon:SetHighlightTexture('Interface\\Buttons\\ButtonHilight-Square')
+ icon:SetScript('OnEnter', function() Aux.info.set_game_tooltip(this, cell.tooltip, 'ANCHOR_RIGHT', cell.EnhTooltip_info) end)
+ icon:SetScript('OnLeave', function() GameTooltip:Hide() end)
+ local text = cell:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmall')
+ text:SetPoint("LEFT", icon, "RIGHT", 1, 0)
+ text:SetPoint('TOPRIGHT', cell)
+ text:SetPoint('BOTTOMRIGHT', cell)
+ text:SetJustifyV('TOP')
+ text:SetJustifyH('LEFT')
+ text:SetTextColor(0.8, 0.8, 0.8)
+ cell.text = text
+ cell.icon = icon
+ end,
+ cell_setter = function(cell, datum)
+ cell.tooltip = datum.tooltip
+ cell.EnhTooltip_info = datum.EnhTooltip_info
+ cell.icon.icon_texture:SetTexture(datum.texture)
+ if not datum.usable then
+ cell.icon.icon_texture:SetVertexColor(1.0, 0.1, 0.1)
+ else
+ cell.icon.icon_texture:SetVertexColor(1.0, 1.0, 1.0)
+ end
+ cell.text:SetText('['..datum.tooltip[1][1].text..']')
+ local color = ITEM_QUALITY_COLORS[datum.quality]
+ cell.text:SetTextColor(color.r, color.g, color.b)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Lvl',
+ width = 23,
+ comparator = function(row1, row2) return Aux.util.compare(row1.level, row2.level, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ local level = max(1, datum.level)
+ local text
+ if level > UnitLevel('player') then
+ text = RED_FONT_COLOR_CODE..level..FONT_COLOR_CODE_CLOSE
+ else
+ text = level
+ end
+ cell.text:SetText(text)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Left',
+ width = 30,
+ comparator = function(row1, row2) return Aux.util.compare(row1.duration, row2.duration, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('CENTER'),
+ cell_setter = function(cell, datum)
+ local text
+ if datum.duration == 1 then
+ text = '30m'
+ elseif datum.duration == 2 then
+ text = '2h'
+ elseif datum.duration == 3 then
+ text = '8h'
+ elseif datum.duration == 4 then
+ text = '24h'
+ end
+ cell.text:SetText(text)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Owner',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.owner, row2.owner, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('LEFT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(datum.owner)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Bid/ea',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.bid_per_unit, row2.bid_per_unit, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.bid_per_unit))
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Buy/ea',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price_per_unit, row2.buyout_price_per_unit, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.buyout_price_per_unit))
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Bid',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.bid, row2.bid, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.bid))
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Buy',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price, row2.buyout_price, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.buyout_price))
+ alpha_setter(cell, datum)
+ end,
+ },
+ },
+ },
+ {
+ name = 'Bid',
+ on_cell_click = function (sheet, row_index, column_index)
+ local entry_index = row_index + FauxScrollFrame_GetOffset(sheet.scroll_frame)
+ AuxBuyEntry_OnClick(entry_index)
+ end,
+
+ on_cell_enter = function (sheet, row_index, column_index)
+ sheet.rows[row_index].highlight:SetAlpha(.5)
+ end,
+
+ on_cell_leave = function (sheet, row_index, column_index)
+ sheet.rows[row_index].highlight:SetAlpha(0)
+ end,
+ columns = {
+ {
+ title = '#',
+ width = 23,
+ comparator = function(row1, row2) return Aux.util.compare(row1.stack_size, row2.stack_size, Aux.util.LT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(datum.stack_size)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Auction Item',
+ width = 157,
+ comparator = function(row1, row2) return Aux.util.compare(row1.tooltip[1][1].text, row2.tooltip[1][1].text, Aux.util.GT) end,
+ cell_initializer = function(cell)
+ local icon = CreateFrame('Button', nil, cell)
+ local icon_texture = icon:CreateTexture(nil, 'BORDER')
+ icon_texture:SetAllPoints(icon)
+ icon.icon_texture = icon_texture
+ local normal_texture = icon:CreateTexture(nil)
+ normal_texture:SetPoint('CENTER', 0, 0)
+ normal_texture:SetWidth(22)
+ normal_texture:SetHeight(22)
+ normal_texture:SetTexture('Interface\\Buttons\\UI-Quickslot2')
+ icon:SetNormalTexture(normal_texture)
+ icon:SetPoint('LEFT', cell)
+ icon:SetWidth(12)
+ icon:SetHeight(12)
+ icon:SetNormalTexture('Interface\\Buttons\\UI-Quickslot2')
+ icon:SetPushedTexture('Interface\\Buttons\\UI-Quickslot-Depress')
+ icon:SetHighlightTexture('Interface\\Buttons\\ButtonHilight-Square')
+ icon:SetScript('OnEnter', function() Aux.info.set_game_tooltip(this, cell.tooltip, 'ANCHOR_RIGHT', cell.EnhTooltip_info) end)
+ icon:SetScript('OnLeave', function() GameTooltip:Hide() end)
+ local text = cell:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmall')
+ text:SetPoint("LEFT", icon, "RIGHT", 1, 0)
+ text:SetPoint('TOPRIGHT', cell)
+ text:SetPoint('BOTTOMRIGHT', cell)
+ text:SetJustifyV('TOP')
+ text:SetJustifyH('LEFT')
+ text:SetTextColor(0.8, 0.8, 0.8)
+ cell.text = text
+ cell.icon = icon
+ end,
+ cell_setter = function(cell, datum)
+ cell.tooltip = datum.tooltip
+ cell.EnhTooltip_info = datum.EnhTooltip_info
+ cell.icon.icon_texture:SetTexture(datum.texture)
+ if not datum.usable then
+ cell.icon.icon_texture:SetVertexColor(1.0, 0.1, 0.1)
+ else
+ cell.icon.icon_texture:SetVertexColor(1.0, 1.0, 1.0)
+ end
+ cell.text:SetText('['..datum.tooltip[1][1].text..']')
+ local color = ITEM_QUALITY_COLORS[datum.quality]
+ cell.text:SetTextColor(color.r, color.g, color.b)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Lvl',
+ width = 23,
+ comparator = function(row1, row2) return Aux.util.compare(row1.level, row2.level, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ local level = max(1, datum.level)
+ local text
+ if level > UnitLevel('player') then
+ text = RED_FONT_COLOR_CODE..level..FONT_COLOR_CODE_CLOSE
+ else
+ text = level
+ end
+ cell.text:SetText(text)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Left',
+ width = 30,
+ comparator = function(row1, row2) return Aux.util.compare(row1.duration, row2.duration, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('CENTER'),
+ cell_setter = function(cell, datum)
+ local text
+ if datum.duration == 1 then
+ text = '30m'
+ elseif datum.duration == 2 then
+ text = '2h'
+ elseif datum.duration == 3 then
+ text = '8h'
+ elseif datum.duration == 4 then
+ text = '24h'
+ end
+ cell.text:SetText(text)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Owner',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.owner, row2.owner, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('LEFT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(datum.owner)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Bid/ea',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.bid_per_unit, row2.bid_per_unit, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.bid_per_unit))
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Buy/ea',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price_per_unit, row2.buyout_price_per_unit, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.buyout_price_per_unit))
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Bid',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.bid, row2.bid, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.bid))
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Buy',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price, row2.buyout_price, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.buyout_price))
+ alpha_setter(cell, datum)
+ end,
+ },
+ },
+ },
+ {
+ name = 'Full',
+ on_cell_click = function (sheet, row_index, column_index)
+ local entry_index = row_index + FauxScrollFrame_GetOffset(sheet.scroll_frame)
+ AuxBuyEntry_OnClick(entry_index)
+ end,
+
+ on_cell_enter = function (sheet, row_index, column_index)
+ sheet.rows[row_index].highlight:SetAlpha(.5)
+ end,
+
+ on_cell_leave = function (sheet, row_index, column_index)
+ sheet.rows[row_index].highlight:SetAlpha(0)
+ end,
+ columns = {
+ {
+ title = '#',
+ width = 23,
+ comparator = function(row1, row2) return Aux.util.compare(row1.stack_size, row2.stack_size, Aux.util.LT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(datum.stack_size)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Auction Item',
+ width = 157,
+ comparator = function(row1, row2) return Aux.util.compare(row1.tooltip[1][1].text, row2.tooltip[1][1].text, Aux.util.GT) end,
+ cell_initializer = function(cell)
+ local icon = CreateFrame('Button', nil, cell)
+ local icon_texture = icon:CreateTexture(nil, 'BORDER')
+ icon_texture:SetAllPoints(icon)
+ icon.icon_texture = icon_texture
+ local normal_texture = icon:CreateTexture(nil)
+ normal_texture:SetPoint('CENTER', 0, 0)
+ normal_texture:SetWidth(22)
+ normal_texture:SetHeight(22)
+ normal_texture:SetTexture('Interface\\Buttons\\UI-Quickslot2')
+ icon:SetNormalTexture(normal_texture)
+ icon:SetPoint('LEFT', cell)
+ icon:SetWidth(12)
+ icon:SetHeight(12)
+ icon:SetNormalTexture('Interface\\Buttons\\UI-Quickslot2')
+ icon:SetPushedTexture('Interface\\Buttons\\UI-Quickslot-Depress')
+ icon:SetHighlightTexture('Interface\\Buttons\\ButtonHilight-Square')
+ icon:SetScript('OnEnter', function() Aux.info.set_game_tooltip(this, cell.tooltip, 'ANCHOR_RIGHT', cell.EnhTooltip_info) end)
+ icon:SetScript('OnLeave', function() GameTooltip:Hide() end)
+ local text = cell:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmall')
+ text:SetPoint("LEFT", icon, "RIGHT", 1, 0)
+ text:SetPoint('TOPRIGHT', cell)
+ text:SetPoint('BOTTOMRIGHT', cell)
+ text:SetJustifyV('TOP')
+ text:SetJustifyH('LEFT')
+ text:SetTextColor(0.8, 0.8, 0.8)
+ cell.text = text
+ cell.icon = icon
+ end,
+ cell_setter = function(cell, datum)
+ cell.tooltip = datum.tooltip
+ cell.EnhTooltip_info = datum.EnhTooltip_info
+ cell.icon.icon_texture:SetTexture(datum.texture)
+ if not datum.usable then
+ cell.icon.icon_texture:SetVertexColor(1.0, 0.1, 0.1)
+ else
+ cell.icon.icon_texture:SetVertexColor(1.0, 1.0, 1.0)
+ end
+ cell.text:SetText('['..datum.tooltip[1][1].text..']')
+ local color = ITEM_QUALITY_COLORS[datum.quality]
+ cell.text:SetTextColor(color.r, color.g, color.b)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Lvl',
+ width = 23,
+ comparator = function(row1, row2) return Aux.util.compare(row1.level, row2.level, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ local level = max(1, datum.level)
+ local text
+ if level > UnitLevel('player') then
+ text = RED_FONT_COLOR_CODE..level..FONT_COLOR_CODE_CLOSE
+ else
+ text = level
+ end
+ cell.text:SetText(text)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Left',
+ width = 30,
+ comparator = function(row1, row2) return Aux.util.compare(row1.duration, row2.duration, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('CENTER'),
+ cell_setter = function(cell, datum)
+ local text
+ if datum.duration == 1 then
+ text = '30m'
+ elseif datum.duration == 2 then
+ text = '2h'
+ elseif datum.duration == 3 then
+ text = '8h'
+ elseif datum.duration == 4 then
+ text = '24h'
+ end
+ cell.text:SetText(text)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Owner',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.owner, row2.owner, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('LEFT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(datum.owner)
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Bid/ea',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.bid_per_unit, row2.bid_per_unit, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.bid_per_unit))
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Buy/ea',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price_per_unit, row2.buyout_price_per_unit, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.buyout_price_per_unit))
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Bid',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.bid, row2.bid, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.bid))
+ alpha_setter(cell, datum)
+ end,
+ },
+ {
+ title = 'Buy',
+ width = 70,
+ comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price, row2.buyout_price, Aux.util.GT) end,
+ cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
+ cell_setter = function(cell, datum)
+ cell.text:SetText(Aux.util.money_string(datum.buyout_price))
+ alpha_setter(cell, datum)
+ end,
+ },
+ },
+ },
+}
function Aux.buy.exit()
Aux.buy.dialog_cancel()
@@ -28,7 +520,7 @@ end
function Aux.buy.dialog_cancel()
Aux.scan.abort()
AuxBuyConfirmation:Hide()
- AuxBuyList:Show()
+ show_sheet()
AuxBuySearchButton:Enable()
end
@@ -38,7 +530,15 @@ function Aux.buy.StopButton_onclick()
Aux.scan.abort()
end
------------------------------------------
+function show_sheet()
+ -- TODO
+ AuxBuyFullList:Show()
+end
+
+function hide_sheet()
+ -- TODO
+ AuxBuyFullList:Hide()
+end
function Aux.buy.SearchButton_onclick()
@@ -68,7 +568,7 @@ function Aux.buy.SearchButton_onclick()
usable = AuxBuyUsableCheckButton:GetChecked()
}
- set_message('Scanning auctions ...')
+ set_message('Starting scan')
Aux.scan.start{
query = search_query,
page = 0,
@@ -79,12 +579,12 @@ function Aux.buy.SearchButton_onclick()
current_page = page
end,
on_start_page = function(page, total_pages)
- set_message('Scanning auctions: page ' .. page + 1 .. (total_pages > 0 and ' out of ' .. total_pages or '') .. ' ...')
+ set_message('Scanning page ' .. page + 1 .. (total_pages > 0 and ' out of ' .. total_pages or ''))
end,
on_read_auction = function(i)
local auction_item = Aux.info.auction_item(i)
if auction_item then
- if (auction_item.name == search_query.name or search_query.name == '' or not AuxBuyExactCheckButton:GetChecked()) and tooltip_match(tooltip_patterns, auction_item.tooltip) then
+ if (auction_item.name == search_query.name or search_query.name == '' or not AuxBuyExactCheckButton:GetChecked()) and Aux.info.tooltip_match(tooltip_patterns, auction_item.tooltip) then
process_auction(auction_item, current_page)
end
end
@@ -123,8 +623,7 @@ end
-----------------------------------------
function set_message(msg)
- AuxBuyMessage:SetText(msg)
- AuxBuyMessage:Show()
+ Aux.log(msg)
end
-----------------------------------------
@@ -156,7 +655,7 @@ function show_dialog(buyout_mode, entry, amount)
AuxBuyConfirmationBuyoutPrice:Hide()
AuxBuyConfirmationBid:Show()
end
- AuxBuyList:Hide()
+ hide_sheet()
AuxBuyConfirmation:Show()
end
@@ -245,7 +744,7 @@ function find_auction(entry, buyout_mode, express_mode)
Aux.scan.abort()
AuxBuySearchButton:Enable()
AuxBuyConfirmation:Hide()
- AuxBuyList:Show()
+ show_sheet()
end
AuxBuyConfirmationActionButton:Enable()
end
@@ -335,19 +834,7 @@ end
-----------------------------------------
function Aux_Buy_ScrollbarUpdate()
- Aux.list.populate(AuxBuySheet, entries or {})
-end
-
------------------------------------------
-
-function tooltip_match(patterns, tooltip)
- return Aux.util.all(patterns, function(pattern)
- return Aux.util.any(tooltip, function(line)
- local left_match = line[1].text and strfind(strupper(line[1].text), strupper(pattern), 1, true)
- local right_match = line[2].text and strfind(strupper(line[2].text), strupper(pattern), 1, true)
- return left_match or right_match
- end)
- end)
+ Aux.list.populate(AuxBuyFullList.sheet, entries or {})
end
-----------------------------------------
@@ -467,3 +954,14 @@ end
function Aux.buy.toggle_tooltip_dropdown()
ToggleDropDownMenu(1, nil, AuxBuyTooltipDropDown, AuxBuyTooltipInputBox, -12, 4)
end
+
+function AuxBuyModeDropDown_Initialize()
+
+ for i, mode in ipairs(Aux.buy.modes) do
+ UIDropDownMenu_AddButton{
+ text = mode.name,
+ value = i,
+ func = AuxBuyQualityDropDown_OnClick,
+ }
+ end
+end
diff --git a/buy.xml b/buy.xml
index 178ed9f..3a86630 100644
--- a/buy.xml
+++ b/buy.xml
@@ -66,12 +66,30 @@
-
+
+
+
+
+
+ this.sheet = Aux.sheet.create(this, Aux.buy.modes[1].columns, Aux.util.map(Aux.buy.modes[1].columns, function(column) return { column = column, sort_ascending = true } end), Aux.buy.modes[1].on_cell_click, Aux.buy.modes[1].on_cell_enter, Aux.buy.modes[1].on_cell_leave)
+
+
+
+
+
+
+
+
+ this.sheet = Aux.sheet.create(this, Aux.buy.modes[2].columns, Aux.util.map(Aux.buy.modes[2].columns, function(column) return { column = column, sort_ascending = true } end), Aux.buy.modes[2].on_cell_click, Aux.buy.modes[2].on_cell_enter, Aux.buy.modes[2].on_cell_leave)
+
+
+
+
- AuxBuySheet = Aux.sheet.initialize(this)
+ this.sheet = Aux.sheet.create(this, Aux.buy.modes[3].columns, Aux.util.map(Aux.buy.modes[3].columns, function(column) return { column = column, sort_ascending = true } end), Aux.buy.modes[3].on_cell_click, Aux.buy.modes[3].on_cell_enter, Aux.buy.modes[3].on_cell_leave)
@@ -80,9 +98,28 @@
+
+
+
+
+ UIDropDownMenu_Initialize(this, AuxBuyModeDropDown_Initialize)
+
+
+ UIDropDownMenu_Initialize(this, AuxBuyModeDropDown_Initialize)
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -121,7 +158,7 @@
-
+
@@ -152,7 +189,7 @@
-
+
UIDropDownMenu_Initialize(this, AuxBuyQualityDropDown_Initialize)
@@ -173,7 +210,7 @@
-
+
@@ -189,7 +226,7 @@
- this:ClearFocus();
+ this:ClearFocus()
@@ -200,13 +237,13 @@
- this:ClearFocus();
+ this:ClearFocus()
-
+
@@ -314,7 +351,7 @@
- HideUIPanel(this:GetParent():GetParent());
+ HideUIPanel(this:GetParent():GetParent())
@@ -337,7 +374,8 @@
-
+
+
diff --git a/core.lua b/core.lua
index 3d76f99..3a95d41 100644
--- a/core.lua
+++ b/core.lua
@@ -54,6 +54,10 @@ function Aux_OnAddonLoaded()
Aux_SetupHookFunctions()
Aux.tabs.sell.hiddenElements = {
+ AuctionsDurationText,
+ AuctionsShortAuctionButton,
+ AuctionsMediumAuctionButton,
+ AuctionsLongAuctionButton,
AuctionsCreateAuctionButton,
AuctionsItemButton,
AuctionsTitle,
@@ -90,7 +94,53 @@ function Aux_OnAddonLoaded()
end
end
------------------------------------------
+function Aux.log_frame_load()
+ this.flashTimer = 0
+end
+
+function Aux.log_frame_update(elapsedSec)
+ if not this:IsVisible() then
+ return
+ end
+
+ local flash = getglobal(this:GetName().."BottomButtonFlash")
+
+ if not flash then
+ return
+ end
+
+ if this:AtBottom() then
+ if flash:IsVisible() then
+ flash:Hide()
+ end
+ return
+ end
+
+ local flashTimer = this.flashTimer + elapsedSec
+ if flashTimer < CHAT_BUTTON_FLASH_TIME then
+ this.flashTimer = flashTimer
+ return
+ end
+
+ while flashTimer >= CHAT_BUTTON_FLASH_TIME do
+ flashTimer = flashTimer - CHAT_BUTTON_FLASH_TIME
+ end
+ this.flashTimer = flashTimer
+
+ if flash:IsVisible() then
+ flash:Hide()
+ else
+ flash:Show()
+ end
+end
+
+function Aux.log(msg)
+ local info = ChatTypeInfo["SYSTEM"]
+ AuxLogFrame:AddMessage(msg, 1, 1, 0)
+ if not AuxLogFrame:IsVisible() and DEFAULT_CHAT_FRAME then
+ DEFAULT_CHAT_FRAME:AddMessage(msg, 1, 1, 0)
+ end
+end
function Aux_SetupHookFunctions()
@@ -189,8 +239,6 @@ function Aux_OnAuctionHouseClosed()
end
------------------------------------------
-
function Aux_AuctionFrameTab_OnClick(index)
if not index then
@@ -241,16 +289,6 @@ function Aux_AuctionFrameTab_OnClick(index)
end
end
------------------------------------------
-
-function Aux.log(msg)
- if DEFAULT_CHAT_FRAME then
- DEFAULT_CHAT_FRAME:AddMessage(msg, 1, 1, 0)
- end
-end
-
------------------------------------------
-
function Aux_AddPanels()
local sellFrame = CreateFrame("Frame", "AuxSellPanel", AuctionFrame, "AuxSellTemplate")
@@ -262,8 +300,11 @@ function Aux_AddPanels()
local buyFrame = CreateFrame("Frame", "AuxBuyPanel", AuctionFrame, "AuxBuyTemplate")
buyFrame:SetParent("AuctionFrame")
buyFrame:SetPoint("TOPLEFT", "AuctionFrame", "TOPLEFT")
+ AuxLogFrame:SetParent(buyFrame)
+ AuxLogFrame:SetPoint('TOP', buyFrame, 100, -38)
relevel(buyFrame)
buyFrame:Hide()
+ -- AuxLogFrame:SetFrameLevel(buyFrame:GetFrameLevel() + 1)
local optionsFrame = CreateFrame("Frame", "AuxOptionsButtonPanel", AuctionFrame, "AuxOptionsButtonTemplate")
optionsFrame:SetParent("AuctionFrame")
diff --git a/core.xml b/core.xml
index 6d1787e..2f9bc4e 100644
--- a/core.xml
+++ b/core.xml
@@ -3,8 +3,8 @@
-
-
+
+
this:RegisterEvent("VARIABLES_LOADED")
this:RegisterEvent("ADDON_LOADED")
this:RegisterEvent("AUCTION_HOUSE_SHOW")
@@ -13,6 +13,185 @@
Aux_OnEvent()
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Aux.log_frame_load()
+
+
+ Aux.log_frame_update(arg1)
+
+
+ ChatFrame_OnHyperlinkShow(arg1)
+
+
+ ChatFrame_OnHyperlinkHide()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if ( this.tooltipText ) then
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
+ end
+ if ( this.tooltipRequirement ) then
+ GameTooltip:AddLine(this.tooltipRequirement, "", 1.0, 1.0, 1.0);
+ GameTooltip:Show();
+ end
+
+
+ GameTooltip:Hide();
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/info.lua b/info.lua
index fa7234a..754768f 100644
--- a/info.lua
+++ b/info.lua
@@ -38,7 +38,7 @@ function Aux.info.auction_sell_item()
usable = usable,
vendor_price = vendor_price,
vendor_price_per_unit = vendor_price_per_unit,
- max_stack = max_stack,
+ max_stack = max_stack, -- TODO not working??
total_count = total_count,
base_deposit = base_deposit,
}
@@ -99,6 +99,16 @@ function Aux.info.set_game_tooltip(owner, tooltip, anchor, EnhTooltip_info)
end
end
+function Aux.info.tooltip_match(patterns, tooltip)
+ return Aux.util.all(patterns, function(pattern)
+ return Aux.util.any(tooltip, function(line)
+ local left_match = line[1].text and strfind(strupper(line[1].text), strupper(pattern), 1, true)
+ local right_match = line[2].text and strfind(strupper(line[2].text), strupper(pattern), 1, true)
+ return left_match or right_match
+ end)
+ end)
+end
+
function Aux.info.tooltip(setter)
for i = 1, 30 do
getglobal('AuxInfoTooltipTextLeft'..i):SetText()
diff --git a/list.lua b/list.lua
index 9e56c17..793d0c5 100644
--- a/list.lua
+++ b/list.lua
@@ -2,8 +2,6 @@ Aux.sheet = {}
Aux.list = {}
-local NAME, LEVEL, OWNER, BID, BID_UNIT, BUYOUT, BUYOUT_UNIT, QUANTITY, TIME_LEFT = 1, 2, 3, 4, 5, 6, 7, 8, 9
-
MoneyTypeInfo["AUX_LIST"] = {
UpdateFunc = function()
return this.staticMoney
@@ -13,17 +11,12 @@ MoneyTypeInfo["AUX_LIST"] = {
showSmallerCoins = 1,
}
-function Aux.list.on_load()
- Aux.sheet.initialize(this, physical_columns, logical_columns)
-end
-
function Aux.sheet.render(sheet)
- for i, physical_column in ipairs(sheet.physical_columns) do
+ for i, column in ipairs(sheet.columns) do
local sort_info = sheet.sort_order[1]
- local logical_column = physical_column.logical_column
-
- if sort_info.logical_column == logical_column then
+
+ if sort_info.column == column then
if sort_info.sort_ascending then
sheet.labels[i].sort_texture:SetTexCoord(0,0.55,0.2,0.9)
sheet.labels[i].sort_texture:SetVertexColor(0.2,1,0)
@@ -43,7 +36,7 @@ function Aux.sheet.render(sheet)
sheet.scroll_frame:Show()
local offset = FauxScrollFrame_GetOffset(sheet.scroll_frame)
--local vSize = self.panel.vSize
- local hSize = getn(sheet.physical_columns)
+ local hSize = getn(sheet.columns)
local rows = sheet.rows
local data = sheet.data
@@ -51,10 +44,10 @@ function Aux.sheet.render(sheet)
for i, row in ipairs(rows) do
local direction, rowR, rowG, rowB, rowA1, rowA2 = "Horizontal", 1, 1, 1, 0, 0 --row level coloring used for gradients
local datum = data[i + offset]
- for j, physical_column in sheet.physical_columns do
+ for j, column in sheet.columns do
local cell = row[j]
if datum then
- physical_column.logical_column.cell_setter(cell, datum)
+ column.cell_setter(cell, datum)
cell:Show()
else
cell:Hide()
@@ -64,7 +57,7 @@ function Aux.sheet.render(sheet)
end
end
-function Aux.sheet.create(frame, physical_columns, sort_order, on_cell_click, on_cell_enter, on_cell_leave)
+function Aux.sheet.create(frame, columns, sort_order, on_cell_click, on_cell_enter, on_cell_leave)
local sheet
local name = (frame:GetName() or '')..'ScrollSheet'
@@ -89,18 +82,18 @@ function Aux.sheet.create(frame, physical_columns, sort_order, on_cell_click, on
local total_width = 0
local labels = {}
- for i = 1,getn(physical_columns) do
+ for i = 1,getn(columns) do
local button = CreateFrame('Button', nil, content)
if i == 1 then
button:SetPoint('TOPLEFT', content, 'TOPLEFT', 5, 0)
total_width = total_width + 5
else
- button:SetPoint('TOPLEFT', labels[i-1].button, 'TOPRIGHT', 3, 0)
+ button:SetPoint('TOPLEFT', content, 'TOPLEFT', total_width + 3, 0)
total_width = total_width + 3
end
local label = content:CreateFontString(nil, 'OVERLAY', 'GameFontHighlight')
- label:SetText(physical_columns[i].logical_column.title)
- local column_width = physical_columns[i].width or 30
+ label:SetText(columns[i].title)
+ local column_width = columns[i].width or 30
total_width = total_width + column_width
button:SetWidth(column_width)
@@ -152,7 +145,7 @@ function Aux.sheet.create(frame, physical_columns, sort_order, on_cell_click, on
local total_height = 16
while total_height + 14 < max_height do
local row = {}
- for i = 1,getn(physical_columns) do
+ for i = 1,getn(columns) do
local cell = CreateFrame('Button', nil, content)
cell:SetPoint('TOPLEFT', labels[i], 'BOTTOMLEFT', 0, -((row_index-1) * 14))
cell:SetPoint('TOPRIGHT', labels[i], 'BOTTOMRIGHT', 0, -((row_index-1) * 14))
@@ -164,21 +157,21 @@ function Aux.sheet.create(frame, physical_columns, sort_order, on_cell_click, on
cell:SetScript("OnClick", function() if sheet.on_cell_click then sheet.on_cell_click(sheet, row_index, column_index) end end)
cell:SetScript("OnEnter", function() if sheet.on_cell_enter then sheet.on_cell_enter(sheet, row_index, column_index) end end)
cell:SetScript("OnLeave", function() if sheet.on_cell_leave then sheet.on_cell_leave(sheet, row_index, column_index) end end)
-
- physical_columns[i].logical_column.cell_initializer(cell)
+
+ columns[i].cell_initializer(cell)
row[i] = cell
end
local color_texture = content:CreateTexture()
color_texture:SetPoint('TOPLEFT', row[1], 'TOPLEFT', 0, 0)
- color_texture:SetPoint('BOTTOMRIGHT', row[getn(physical_columns)], 'BOTTOMRIGHT', 0, 1)
+ color_texture:SetPoint('BOTTOMRIGHT', row[getn(columns)], 'BOTTOMRIGHT', 0, 1)
color_texture:SetTexture(1, 1, 1)
row.color_texture = color_texture
local highlight = content:CreateTexture()
highlight:SetPoint('TOPLEFT', row[1], 'TOPLEFT', 0, 0)
- highlight:SetPoint('BOTTOMRIGHT', row[getn(physical_columns)], 'BOTTOMRIGHT', 0, 1)
+ highlight:SetPoint('BOTTOMRIGHT', row[getn(columns)], 'BOTTOMRIGHT', 0, 1)
highlight:SetAlpha(0)
highlight:SetTexture(0.8, 0.6, 0)
row.highlight = highlight
@@ -196,7 +189,7 @@ function Aux.sheet.create(frame, physical_columns, sort_order, on_cell_click, on
scroll_frame = scroll_frame,
labels = labels,
rows = rows,
- physical_columns = physical_columns,
+ columns = columns,
data = {},
sort_order = sort_order,
on_cell_click = on_cell_click,
@@ -211,9 +204,9 @@ end
function Aux.list.row_comparator(sheet)
return function(row1, row2)
for _, sort_info in ipairs(sheet.sort_order) do
- local logical_column = sort_info.logical_column
- if logical_column.comparator then
- local ordering = logical_column.comparator(row1, row2)
+ local column = sort_info.column
+ if column.comparator then
+ local ordering = column.comparator(row1, row2)
if ordering ~= Aux.util.EQ then
return sort_info.sort_ascending and ordering or Aux.util.invert_order(ordering)
end
@@ -234,224 +227,17 @@ function Aux.sheet.default_cell_initializer(alignment)
end
end
-local function alpha_setter(cell, datum)
- cell:SetAlpha(datum.gone and 0.4 or 1)
-end
-
function Aux.sheet.initialize(frame)
- local logical_columns = {
- {
- title = 'Auction Item',
- texture = function(row) return row.texture end,
- comparator = function(row1, row2) return Aux.util.compare(row1.tooltip[1][1].text, row2.tooltip[1][1].text, Aux.util.GT) end,
- cell_initializer = function(cell)
- local icon = CreateFrame('Button', nil, cell)
- local icon_texture = icon:CreateTexture(nil, 'BORDER')
- icon_texture:SetAllPoints(icon)
- icon.icon_texture = icon_texture
- local normal_texture = icon:CreateTexture(nil)
- normal_texture:SetPoint('CENTER', 0, 0)
- normal_texture:SetWidth(22)
- normal_texture:SetHeight(22)
- normal_texture:SetTexture('Interface\\Buttons\\UI-Quickslot2')
- icon:SetNormalTexture(normal_texture)
- icon:SetPoint('LEFT', cell)
- icon:SetWidth(12)
- icon:SetHeight(12)
- icon:SetNormalTexture('Interface\\Buttons\\UI-Quickslot2')
- icon:SetPushedTexture('Interface\\Buttons\\UI-Quickslot-Depress')
- icon:SetHighlightTexture('Interface\\Buttons\\ButtonHilight-Square')
- icon:SetScript('OnEnter', function() Aux.info.set_game_tooltip(this, cell.tooltip, 'ANCHOR_RIGHT', cell.EnhTooltip_info) end)
- icon:SetScript('OnLeave', function() GameTooltip:Hide() end)
- local text = cell:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmall')
- text:SetPoint("LEFT", icon, "RIGHT", 1, 0)
- text:SetPoint('TOPRIGHT', cell)
- text:SetPoint('BOTTOMRIGHT', cell)
- text:SetJustifyV('TOP')
- text:SetJustifyH('LEFT')
- text:SetTextColor(0.8, 0.8, 0.8)
- cell.text = text
- cell.icon = icon
- end,
- cell_setter = function(cell, datum)
- cell.tooltip = datum.tooltip
- cell.EnhTooltip_info = datum.EnhTooltip_info
- cell.icon.icon_texture:SetTexture(datum.texture)
- if not datum.usable then
- cell.icon.icon_texture:SetVertexColor(1.0, 0.1, 0.1)
- else
- cell.icon.icon_texture:SetVertexColor(1.0, 1.0, 1.0)
- end
- cell.text:SetText('['..datum.tooltip[1][1].text..']')
- local color = ITEM_QUALITY_COLORS[datum.quality]
- cell.text:SetTextColor(color.r, color.g, color.b)
- alpha_setter(cell, datum)
- end,
- },
- {
- title = 'Lvl',
- comparator = function(row1, row2) return Aux.util.compare(row1.level, row2.level, Aux.util.GT) end,
- cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
- cell_setter = function(cell, datum)
- local level = max(1, datum.level)
- local text
- if level > UnitLevel('player') then
- text = RED_FONT_COLOR_CODE..level..FONT_COLOR_CODE_CLOSE
- else
- text = level
- end
- cell.text:SetText(text)
- alpha_setter(cell, datum)
- end,
- },
- {
- title = 'Owner',
- comparator = function(row1, row2) return Aux.util.compare(row1.owner, row2.owner, Aux.util.GT) end,
- cell_initializer = Aux.sheet.default_cell_initializer('LEFT'),
- cell_setter = function(cell, datum)
- cell.text:SetText(datum.owner)
- alpha_setter(cell, datum)
- end,
- },
- {
- title = 'Bid',
- comparator = function(row1, row2) return Aux.util.compare(row1.bid, row2.bid, Aux.util.GT) end,
- cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
- cell_setter = function(cell, datum)
- cell.text:SetText(Aux.util.money_string(datum.bid))
- alpha_setter(cell, datum)
- end,
- },
- {
- title = 'Bid/ea',
- comparator = function(row1, row2) return Aux.util.compare(row1.bid_per_unit, row2.bid_per_unit, Aux.util.GT) end,
- cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
- cell_setter = function(cell, datum)
- cell.text:SetText(Aux.util.money_string(datum.bid_per_unit))
- alpha_setter(cell, datum)
- end,
- },
- {
- title = 'Buy',
- comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price, row2.buyout_price, Aux.util.GT) end,
- cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
- cell_setter = function(cell, datum)
- cell.text:SetText(Aux.util.money_string(datum.buyout_price))
- alpha_setter(cell, datum)
- end,
- },
- {
- title = 'Buy/ea',
- comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price_per_unit, row2.buyout_price_per_unit, Aux.util.GT) end,
- cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
- cell_setter = function(cell, datum)
- cell.text:SetText(Aux.util.money_string(datum.buyout_price_per_unit))
- alpha_setter(cell, datum)
- end,
- },
- {
- title = '#',
- comparator = function(row1, row2) return Aux.util.compare(row1.stack_size, row2.stack_size, Aux.util.LT) end,
- cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
- cell_setter = function(cell, datum)
- cell.text:SetText(datum.stack_size)
- alpha_setter(cell, datum)
- end,
- },
- {
- title = 'Left',
- comparator = function(row1, row2) return Aux.util.compare(row1.duration, row2.duration, Aux.util.GT) end,
- cell_initializer = Aux.sheet.default_cell_initializer('CENTER'),
- cell_setter = function(cell, datum)
- local text
- if datum.duration == 1 then
- text = '30m'
- elseif datum.duration == 2 then
- text = '2h'
- elseif datum.duration == 3 then
- text = '8h'
- elseif datum.duration == 4 then
- text = '24h'
- end
- cell.text:SetText(text)
- alpha_setter(cell, datum)
- end,
- },
- }
-
- local physical_columns = {
- {
- logical_columns = { logical_columns[QUANTITY] },
- logical_column = logical_columns[QUANTITY],
- width = 23
- },
- {
- logical_columns = { logical_columns[NAME] },
- logical_column = logical_columns[NAME],
- width = 157
- },
- {
- logical_columns = { logical_columns[LEVEL] },
- logical_column = logical_columns[LEVEL],
- width = 23
- },
- {
- logical_columns = { logical_columns[TIME_LEFT] },
- logical_column = logical_columns[TIME_LEFT],
- width = 30
- },
- {
- logical_columns = { logical_columns[OWNER] },
- logical_column = logical_columns[OWNER],
- width = 70
- },
- {
- logical_columns = { logical_columns[BID_UNIT], logical_columns[BUYOUT_UNIT] },
- logical_column = logical_columns[BID_UNIT],
- width = 70
- },
- {
- logical_columns = { logical_columns[BID_UNIT], logical_columns[BUYOUT_UNIT] },
- logical_column = logical_columns[BUYOUT_UNIT],
- width = 70
- },
- {
- logical_columns = { logical_columns[BID], logical_columns[BUYOUT] },
- logical_column = logical_columns[BID],
- width = 70
- },
- {
- logical_columns = { logical_columns[BID], logical_columns[BUYOUT] },
- logical_column = logical_columns[BUYOUT],
- width = 70
- },
- }
-
local sort_order = {}
- for i, logical_column in logical_columns do
+ for i, column in columns do
if i ~= BUYOUT_UNIT and i ~= NAME then
- tinsert(sort_order, { logical_column = logical_column, sort_ascending = true })
+ tinsert(sort_order, { column = column, sort_ascending = true })
end
end
- tinsert(sort_order, 1, { logical_column = logical_columns[BUYOUT_UNIT], sort_ascending = true })
- tinsert(sort_order, 1, { logical_column = logical_columns[NAME], sort_ascending = true })
-
-
- function on_cell_click(sheet, row_index, column_index)
- local entry_index = row_index + FauxScrollFrame_GetOffset(sheet.scroll_frame)
- AuxBuyEntry_OnClick(entry_index)
- end
-
- function on_cell_enter(sheet, row_index, column_index)
- sheet.rows[row_index].highlight:SetAlpha(.5)
- end
-
- function on_cell_leave(sheet, row_index, column_index)
- sheet.rows[row_index].highlight:SetAlpha(0)
- end
-
- return Aux.sheet.create(frame, physical_columns, sort_order, on_cell_click, on_cell_enter, on_cell_leave)
+ tinsert(sort_order, 1, { column = columns[BUYOUT_UNIT], sort_ascending = true })
+ tinsert(sort_order, 1, { column = columns[NAME], sort_ascending = true })
+
end
function Aux.list.populate(sheet, data)
@@ -464,16 +250,15 @@ function Aux.list.populate(sheet, data)
Aux.sheet.render(sheet)
end
-function Aux.list.sort(sheet, physical_column_index)
+function Aux.list.sort(sheet, column_index)
- local physical_column = sheet.physical_columns[physical_column_index]
- local logical_column = physical_column.logical_column
+ local column = sheet.columns[column_index]
- if sheet.sort_order[1].logical_column == logical_column then
+ if sheet.sort_order[1].column == column then
sheet.sort_order[1].sort_ascending = not sheet.sort_order[1].sort_ascending
else
for index, sort_info in ipairs(sheet.sort_order) do
- if sort_info.logical_column == logical_column then
+ if sort_info.column == column then
local temp = sort_info
table.remove(sheet.sort_order, index)
table.insert(sheet.sort_order, 1, temp)
@@ -486,44 +271,4 @@ function Aux.list.sort(sheet, physical_column_index)
Aux.util.merge_sort(sheet.data, Aux.list.row_comparator(sheet))
Aux.sheet.render(sheet)
-end
-
-function Aux.list.dropdown_on_load()
- getglobal(this:GetName().."Text"):Hide()
- this.initialize = Aux.list.dropdown_initialize
- UIDropDownMenu_SetSelectedID(this, 1)
-end
-
-function Aux.list.dropdown_initialize()
- local dropdown = this:GetParent()
- local frame = dropdown:GetParent()
-
- if frame.physical_columns then
- local physical_column_index = dropdown:GetID()
- local physical_column = frame.physical_columns[physical_column_index]
- for _, logical_column in pairs(physical_column.logical_columns) do
- UIDropDownMenu_AddButton({
- text = logical_column.title,
- owner = dropdown,
- func = Aux.list.dropdown_item_onclick,
- })
- end
- end
-end
-
-function Aux.list.dropdown_item_onclick()
- local logical_column_index = this:GetID()
- local physical_column_index = this.owner:GetID()
- local dropdown = this.owner
- local frame = dropdown:GetParent()
- if frame.physical_columns[physical_column_index].logical_column ~= frame.logical_columns[logical_column_index] then
-
- frame.physical_columns[physical_column_index].logical_column = frame.physical_columns[physical_column_index].logical_columns[logical_column_index]
- getglobal(frame:GetName().."Column"..physical_column_index.."SortText"):SetText(frame.physical_columns[physical_column_index].logical_column.title)
-
- Aux.util.merge_sort(frame.data, Aux.list.row_comparator(frame))
-
- UIDropDownMenu_SetSelectedID(dropdown, logical_column_index)
- Aux.list.scroll_frame_update(getglobal(frame:GetName().."ScrollFrame"))
- end
end
\ No newline at end of file
diff --git a/sell.lua b/sell.lua
index 1eaf515..f2e9491 100644
--- a/sell.lua
+++ b/sell.lua
@@ -10,11 +10,16 @@ local current_auction
-----------------------------------------
-local record_auction, undercut, item_class_index, item_subclass_index, set_message, report, select_entry, update_recommendation, refresh_entries
+local record_auction, undercut, item_class_index, item_subclass_index, set_message, report, select_entry, update_recommendation, refresh_entries, availability
-----------------------------------------
function Aux.sell.on_open()
+ AuxSellStackSizeSlider:SetValueStep(1)
+ AuxSellStackSizeSliderText:SetText('Stack Size')
+
+ AuxSellStackCountSlider:SetValueStep(1)
+ AuxSellStackCountSliderText:SetText('Stack Count')
end
-----------------------------------------
@@ -64,7 +69,7 @@ end
function Aux.sell.post_auctions()
if current_auction and PanelTemplates_GetSelectedTab(AuctionFrame) == Aux.tabs.sell.index then
- local name, stack_size, buyout_price, stack_count = current_auction.name, current_auction.stackSize, MoneyInputFrame_GetCopper(BuyoutPrice), current_auction.stackCount
+ local name, stack_size, buyout_price, stack_count = current_auction.name, AuxSellStackSize:GetNumber(), MoneyInputFrame_GetCopper(BuyoutPrice), AuxSellStackCount:GetNumber()
local duration
if AuctionFrameAuctions.duration == 120 then
duration = 2
@@ -137,9 +142,9 @@ function select_entry()
auxSellEntries[current_auction.name].selected = absoluteBest
- if bestPrice[current_auction.stackSize] then
- auxSellEntries[current_auction.name].selected = bestPrice[current_auction.stackSize]
- bestPriceOurStackSize = bestPrice[current_auction.stackSize]
+ if bestPrice[AuxSellStackSize:GetNumber()] then
+ auxSellEntries[current_auction.name].selected = bestPrice[AuxSellStackSize:GetNumber()]
+ bestPriceOurStackSize = bestPrice[AuxSellStackSize:GetNumber()]
end
end
end
@@ -158,27 +163,29 @@ function update_recommendation()
MoneyInputFrame_SetCopper(BuyoutPrice, 0)
MoneyInputFrame_SetCopper(StartPrice, 0)
-
- Aux_Sell_SetStackSize(0)
- Aux_Sell_SetStackCount(0)
+
+ AuxSellStackSizeSlider:SetMinMaxValues(0,0)
+ AuxSellStackSize:SetNumber(0)
+ AuxSellStackCountSlider:SetMinMaxValues(0,0)
+ AuxSellStackCount:SetNumber(0)
set_message("Drag an item to the Auction Item area\n\nto see recommended pricing information")
- else
+ else
+ AuxSellStackSize:SetNumber(AuxSellStackSizeSlider:GetValue())
+ AuxSellStackCount:SetNumber(AuxSellStackCountSlider:GetValue())
+
AuxSellItem:SetNormalTexture(current_auction.texture)
AuxSellItemName:SetText(current_auction.name)
- if current_auction.stackSize > 1 then
- AuxSellItemCount:SetText(current_auction.stackSize)
+ if AuxSellStackSize:GetNumber() > 1 then
+ AuxSellItemCount:SetText(AuxSellStackSize:GetNumber())
AuxSellItemCount:Show()
else
AuxSellItemCount:Hide()
end
- AuxSellRefreshButton:Enable()
+ AuxSellRefreshButton:Enable()
- Aux_Sell_SetStackSize(current_auction.stackSize)
- Aux_Sell_SetStackCount(current_auction.stackCount)
-
- MoneyFrame_Update("AuctionsDepositMoneyFrame", current_auction.base_deposit * current_auction.stackCount * (current_auction.has_charges and 1 or current_auction.stackSize) * AuctionFrameAuctions.duration / 120)
+ MoneyFrame_Update("AuctionsDepositMoneyFrame", current_auction.base_deposit * AuxSellStackCount:GetNumber() * (current_auction.has_charges and 1 or AuxSellStackSize:GetNumber()) * AuctionFrameAuctions.duration / 120)
if auxSellEntries[current_auction.name] and auxSellEntries[current_auction.name].selected then
if not auxSellEntries[current_auction.name].created or GetTime() - auxSellEntries[current_auction.name].created > 1800 then
@@ -186,7 +193,7 @@ function update_recommendation()
AuxRecommendStaleText:Show()
end
- local newBuyoutPrice = auxSellEntries[current_auction.name].selected.itemPrice * current_auction.stackSize
+ local newBuyoutPrice = auxSellEntries[current_auction.name].selected.itemPrice * AuxSellStackSize:GetNumber()
if auxSellEntries[current_auction.name].selected.numYours == 0 then
newBuyoutPrice = undercut(newBuyoutPrice)
@@ -198,18 +205,18 @@ function update_recommendation()
Aux_ShowElems(Aux.tabs.sell.recommendationElements)
AuxRecommendText:SetText("Recommended Buyout Price")
- AuxRecommendPerStackText:SetText("for a stack of "..current_auction.stackSize)
+ AuxRecommendPerStackText:SetText("for a stack of "..AuxSellStackSize:GetNumber())
AuxRecommendItemTex:SetNormalTexture(current_auction.texture)
- if current_auction.stackSize > 1 then
- AuxRecommendItemTexCount:SetText(current_auction.stackSize)
+ if AuxSellStackSize:GetNumber() > 1 then
+ AuxRecommendItemTexCount:SetText(AuxSellStackSize:GetNumber())
AuxRecommendItemTexCount:Show()
else
AuxRecommendItemTexCount:Hide()
end
- MoneyFrame_Update("AuxRecommendPerItemPrice", Aux_Round(current_auction.stackSize > 0 and newBuyoutPrice / current_auction.stackSize or 0))
+ MoneyFrame_Update("AuxRecommendPerItemPrice", Aux_Round(AuxSellStackSize:GetNumber() > 0 and newBuyoutPrice / AuxSellStackSize:GetNumber() or 0))
MoneyFrame_Update("AuxRecommendPerStackPrice", Aux_Round(newBuyoutPrice))
MoneyInputFrame_SetCopper(BuyoutPrice, Aux_Round(newBuyoutPrice))
@@ -233,39 +240,11 @@ function update_recommendation()
Aux.sell.scrollbar_update()
end
------------------------------------------
-
-function Aux_Sell_GetStackSize()
- return AuxSellStackSize:GetNumber()
-end
-
------------------------------------------
-
-function Aux_Sell_SetStackSize(stackSize)
- return AuxSellStackSize:SetNumber(stackSize)
-end
-
------------------------------------------
-
-function Aux_Sell_GetStackCount()
- return AuxSellStackCount:GetNumber()
-end
-
------------------------------------------
-
-function Aux_Sell_SetStackCount(stackCount)
- return AuxSellStackCount:SetNumber(stackCount)
-end
-
------------------------------------------
-
-function Aux_Sell_QuantityUpdate()
- if current_auction then
- current_auction.stackSize = Aux_Sell_GetStackSize()
- current_auction.stackCount = Aux_Sell_GetStackCount()
- end
-
- select_entry()
+function Aux.sell.quantity_update()
+ if current_auction then
+ AuxSellStackCountSlider:SetMinMaxValues(1, current_auction.has_charges and current_auction.availability[current_auction.charges] or floor(current_auction.availability[0] / AuxSellStackSize:GetNumber()))
+ end
+ select_entry()
update_recommendation()
end
@@ -288,7 +267,7 @@ function Aux.sell.set_auction(bag, slot)
ClearCursor()
PickupContainerItem(bag,slot)
ClickAuctionSellItemButton()
- local auction_sell_item = Aux.info.auction_sell_item() -- TODO
+ local auction_sell_item = Aux.info.auction_sell_item()
ClearCursor()
ClickAuctionSellItemButton()
ClearCursor()
@@ -300,13 +279,17 @@ function Aux.sell.set_auction(bag, slot)
current_auction = {
name = container_item.name,
texture = container_item.texture,
- stackSize = container_item.charges or container_item.count,
- stackCount = 1,
class = container_item.type,
subclass = container_item.subtype,
base_deposit = auction_sell_item.base_deposit,
has_charges = container_item.charges ~= nil,
- }
+ availability = availability(container_item.name)
+ }
+
+ AuxSellStackSizeSlider:SetMinMaxValues(current_auction.charges or 1, current_auction.charges or current_auction.availability[0])
+ AuxSellStackSizeSlider:SetValue(container_item.charges or container_item.count)
+ AuxSellStackCountSlider:SetValue(1)
+ Aux.sell.quantity_update()
if not auxSellEntries[current_auction.name] then
refresh_entries()
@@ -320,7 +303,21 @@ function Aux.sell.set_auction(bag, slot)
end
end
------------------------------------------
+function availability(name)
+ local availability = {}
+ for bag = 0, 4 do
+ if GetBagName(bag) then
+ for slot = 1, GetContainerNumSlots(bag) do
+ local item_info = Aux.info.container_item(bag, slot)
+ if item_info and item_info.name == name then
+ local charges_class = item_info.charges or 0
+ availability[charges_class] = (availability[charges_class] or 0) + item_info.count
+ end
+ end
+ end
+ end
+ return availability
+end
function refresh_entries()
if current_auction then
@@ -418,7 +415,7 @@ function Aux.sell.scrollbar_update()
lineEntry_time:SetText("Very Long")
end
- if entry.stackSize == current_auction.stackSize then
+ if entry.stackSize == AuxSellStackSize:GetNumber() then
lineEntry_stacks:SetTextColor(0.2, 0.9, 0.2)
else
lineEntry_stacks:SetTextColor(1.0, 1.0, 1.0)
diff --git a/sell.xml b/sell.xml
index ba789d2..7a02093 100644
--- a/sell.xml
+++ b/sell.xml
@@ -355,55 +355,94 @@
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getglobal(this:GetName().."Text"):SetText("2h");
+
+
+
+
+
+
+
+
+
+
+
+
+ getglobal(this:GetName().."Text"):SetText("8h");
+
+
+
+
+
+
+
+
+
+
+
+
+ getglobal(this:GetName().."Text"):SetText("24h");
+
+
+
+
+
+
+
+ Aux.sell.quantity_update()
+
+
+
+
+
+
+
+ Aux.sell.quantity_update()
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
- Aux_Sell_QuantityUpdate()
+ AuxSellStackSizeSlider:SetValue(this:GetNumber())
+ Aux.sell.quantity_update()