From 62f0e5c670434329f8d06286dc498f9fde522afc Mon Sep 17 00:00:00 2001 From: Manuel Simon Hirsig Date: Sun, 20 Nov 2016 15:25:32 +0100 Subject: [PATCH] auto buy refactoring/bugfix --- core/scan.lua | 4 +-- tabs/search/frame.lua | 60 +++++++++++++---------------------------- tabs/search/saved.lua | 62 +++++++++++++++---------------------------- 3 files changed, 42 insertions(+), 84 deletions(-) diff --git a/core/scan.lua b/core/scan.lua index 6d9decd..2affea0 100644 --- a/core/scan.lua +++ b/core/scan.lua @@ -146,8 +146,8 @@ function scan_page(i) if (state.params.auto_buy_validator or nop)(auction_info) then local send_signal, signal_received = signal() - when(signal_received, scan_page, i + 1) - place_bid(auction_info.query_type, auction_info.index, auction_info.buyout_price, send_signal) + when(signal_received, scan_page, i) + return place_bid(auction_info.query_type, auction_info.index, auction_info.buyout_price, send_signal) elseif not query.validator or query.validator(auction_info) then do (state.params.on_auction or nop)(auction_info) end end diff --git a/tabs/search/frame.lua b/tabs/search/frame.lua index 86dc1d6..d2a1064 100644 --- a/tabs/search/frame.lua +++ b/tabs/search/frame.lua @@ -24,16 +24,13 @@ frame.saved = CreateFrame('Frame', nil, frame) frame.saved:SetAllPoints(AuxFrame.content) frame.saved.favorite = gui.panel(frame.saved) -frame.saved.favorite:SetWidth(252) -frame.saved.favorite:SetPoint('TOP', 0, 0) -frame.saved.favorite:SetPoint('BOTTOM', 0, 0) - -frame.saved.autobuy = gui.panel(frame.saved) -frame.saved.autobuy:SetPoint('TOPRIGHT', frame.saved.favorite, 'TOPLEFT', -2.5, 0) -frame.saved.autobuy:SetPoint('BOTTOMLEFT', 0, 0) +frame.saved.favorite:SetWidth(395) +frame.saved.favorite:SetPoint('TOPLEFT', 0, 0) +frame.saved.favorite:SetPoint('BOTTOMLEFT', 0, 0) frame.saved.recent = gui.panel(frame.saved) -frame.saved.recent:SetPoint('TOPLEFT', frame.saved.favorite, 'TOPRIGHT', 2.5, 0) +frame.saved.recent:SetWidth(362.5) +frame.saved.recent:SetPoint('TOPRIGHT', 0, 0) frame.saved.recent:SetPoint('BOTTOMRIGHT', 0, 0) do local btn = gui.button(frame, 25) @@ -239,20 +236,12 @@ do end) end do - local btn1 = gui.button(frame.saved) - btn1:SetPoint('TOPLEFT', status_bar_frame, 'TOPRIGHT', 5, 0) - btn1:SetText('Favorite') - btn1:SetScript('OnClick', function() + local btn = gui.button(frame.saved) + btn:SetPoint('TOPLEFT', status_bar_frame, 'TOPRIGHT', 5, 0) + btn:SetText('Favorite') + btn:SetScript('OnClick', function() add_favorite(search_box:GetText()) end) - - local btn2 = gui.button(frame.saved) - btn2:SetPoint('LEFT', btn1, 'RIGHT', 5, 0) - btn2:SetText('Auto Buy') - btn2:SetScript('OnClick', function() - add_auto_buy(search_box:GetText()) - update_search_listings() - end) end do local btn1 = gui.button(frame.filter) @@ -515,14 +504,13 @@ do scroll_child:SetWidth(1) scroll_child:SetHeight(1) scroll_child:SetScript('OnHyperlinkClick', data_link_click) --- scroll_child:SetHyperlinkFormat("format") TODO scroll_child.measure = scroll_child:CreateFontString() filter_display = scroll_child end status_bars = T tables = T -for _ = 1, 5 do +for _ = 1, 5 do local status_bar = gui.status_bar(frame) status_bar:SetAllPoints(status_bar_frame) status_bar:Hide() @@ -546,26 +534,16 @@ for _ = 1, 5 do tinsert(tables, table) end -auto_buy_listing = listing.CreateScrollingTable(frame.saved.autobuy) -auto_buy_listing:SetColInfo{{name='Auto Buy Filters', width=1}} -auto_buy_listing:EnableSorting(false) -auto_buy_listing:DisableSelection(true) -auto_buy_listing:SetHandler('OnClick', handlers.OnClick) -auto_buy_listing:SetHandler('OnEnter', handlers.OnEnter) -auto_buy_listing:SetHandler('OnLeave', handlers.OnLeave) +favorite_searches_listing = listing.CreateScrollingTable(frame.saved.favorite) +favorite_searches_listing:SetColInfo{{width=.05, align='CENTER'}, {name='Favorite Searches', width=.95}} recent_searches_listing = listing.CreateScrollingTable(frame.saved.recent) recent_searches_listing:SetColInfo{{name='Recent Searches', width=1}} -recent_searches_listing:EnableSorting(false) -recent_searches_listing:DisableSelection(true) -recent_searches_listing:SetHandler('OnClick', handlers.OnClick) -recent_searches_listing:SetHandler('OnEnter', handlers.OnEnter) -recent_searches_listing:SetHandler('OnLeave', handlers.OnLeave) -favorite_searches_listing = listing.CreateScrollingTable(frame.saved.favorite) -favorite_searches_listing:SetColInfo{{name='Favorite Searches', width=1}} -favorite_searches_listing:EnableSorting(false) -favorite_searches_listing:DisableSelection(true) -favorite_searches_listing:SetHandler('OnClick', handlers.OnClick) -favorite_searches_listing:SetHandler('OnEnter', handlers.OnEnter) -favorite_searches_listing:SetHandler('OnLeave', handlers.OnLeave) \ No newline at end of file +for listing in temp-S(favorite_searches_listing, recent_searches_listing) do + listing:EnableSorting(false) + listing:DisableSelection(true) + for k, v in handlers do + listing:SetHandler(k, v) + end +end \ No newline at end of file diff --git a/tabs/search/saved.lua b/tabs/search/saved.lua index 66ad95c..6204a0f 100644 --- a/tabs/search/saved.lua +++ b/tabs/search/saved.lua @@ -3,28 +3,16 @@ module 'aux.tabs.search' local filter_util = require 'aux.util.filter' local gui = require 'aux.gui' -_G.aux_auto_buy_filters = T _G.aux_favorite_searches = T _G.aux_recent_searches = T function update_search_listings() - local autobuy_filter_rows = T - for i, autobuy_filter in ipairs(aux_auto_buy_filters) do - local name = strsub(autobuy_filter.prettified, 1, 250) - tinsert(autobuy_filter_rows, O( - 'cols', A(O('value', name)), - 'search', autobuy_filter, - 'index', i - )) - end - auto_buy_listing:SetData(autobuy_filter_rows) - local favorite_search_rows = T - for i, favorite_search in ipairs(aux_favorite_searches) do - local name = strsub(favorite_search.prettified, 1, 250) + for i, search in ipairs(aux_favorite_searches) do + local name = strsub(search.prettified, 1, 250) tinsert(favorite_search_rows, O( - 'cols', A(O('value', name)), - 'search', favorite_search, + 'cols', A(O('value', search.auto_buy and color.red'A' or ''), O('value', name)), + 'search', search, 'index', i )) end @@ -67,23 +55,16 @@ handlers = { local u = update_search_listings if st == recent_searches_listing then gui.menu( - 'Favorite', function() tinsert(aux_favorite_searches, 1, data.search); u() end, - 'Auto Buy', function() add_auto_buy(data.search.filter_string); u() end + 'Favorite', function() tinsert(aux_favorite_searches, 1, data.search); u() end ) elseif st == favorite_searches_listing then + local auto_buy = data.search.auto_buy gui.menu( - 'Auto Buy', function() add_auto_buy(data.search.filter_string); u() end, + (auto_buy and 'Disable' or 'Enable') .. ' Auto Buy', function() if auto_buy then data.search.auto_buy = nil else enable_auto_buy(data.search) end u() end, 'Move Up', function() move_up(aux_favorite_searches, data.index); u() end, 'Move Down', function() move_down(aux_favorite_searches, data.index); u() end, 'Delete', function() tremove(aux_favorite_searches, data.index); u() end ) - elseif st == auto_buy_listing then - gui.menu( - 'Favorite', function() tinsert(aux_favorite_searches, 1, data.search); u() end, - 'Move Up', function() move_up(aux_auto_buy_filters, data.index); u() end, - 'Move Down', function() move_down(aux_auto_buy_filters, data.index); u() end, - 'Delete', function() tremove(aux_auto_buy_filters, data.index); u() end - ) end end end, @@ -101,12 +82,14 @@ handlers = { function get_auto_buy_validator() local validators = T - for _, filter in aux_auto_buy_filters do - local queries, error = filter_util.queries(filter.filter_string) - if queries then - tinsert(validators, queries[1].validator) - else - print('Invalid auto buy filter:', error) + for _, search in aux_favorite_searches do + if search.auto_buy then + local queries, error = filter_util.queries(search.filter_string) + if queries then + tinsert(validators, queries[1].validator) + else + print('Invalid auto buy filter:', error) + end end end return function(record) @@ -127,18 +110,15 @@ function add_favorite(filter_string) end end -function add_auto_buy(filter_string) - local queries, error = filter_util.queries(filter_string) +function enable_auto_buy(search) + local queries, error = filter_util.queries(search.filter_string) if queries then if getn(queries) > 1 then - print('Error: The automatic buyout filter does not support multi-queries') - elseif size(queries[1].blizzard_query) > 0 and not filter_util.parse_filter_string(filter_string).blizzard.exact then - print('Error: The automatic buyout filter does not support Blizzard filters') + print('Error: Auto Buy does not support multi-queries') + elseif size(queries[1].blizzard_query) > 0 and not filter_util.parse_filter_string(search.filter_string).blizzard.exact then + print('Error: Auto Buy does not support Blizzard filters') else - tinsert(aux_auto_buy_filters, 1, O( - 'filter_string', filter_string, - 'prettified', join(map(queries, function(query) return query.prettified end), ';') - )) + search.auto_buy = true end else print('Invalid filter:', error)