nicer layout for settings

This commit is contained in:
Manuel Simon Hirsig
2016-07-24 20:14:57 +02:00
parent 31133eaafc
commit 675b7f06be
13 changed files with 174 additions and 159 deletions
+2 -2
View File
@@ -46,12 +46,12 @@ function public.scan_auctions()
end,
on_complete = function()
m.status_bar:update_status(100, 100)
m.status_bar:set_text('Done Scanning')
m.status_bar:set_text('Scan complete')
m.update_listing()
end,
on_abort = function()
m.status_bar:update_status(100, 100)
m.status_bar:set_text('Done Scanning')
m.status_bar:set_text('Scan aborted')
end,
}
end
+2 -2
View File
@@ -46,12 +46,12 @@ function public.scan_bids()
end,
on_complete = function()
m.status_bar:update_status(100, 100)
m.status_bar:set_text('Done Scanning')
m.status_bar:set_text('Scan complete')
m.update_listing()
end,
on_abort = function()
m.status_bar:update_status(100, 100)
m.status_bar:set_text('Done Scanning')
m.status_bar:set_text('Scan aborted')
end,
}
end
+2 -2
View File
@@ -505,13 +505,13 @@ function private.refresh_entries()
m.existing_auctions[item_key] = nil
m.update_historical_value_button()
m.status_bar:update_status(100, 100)
m.status_bar:set_text('Done Scanning')
m.status_bar:set_text('Scan aborted')
end,
on_complete = function()
m.existing_auctions[item_key] = m.existing_auctions[item_key] or {}
m.refresh = true
m.status_bar:update_status(100, 100)
m.status_bar:set_text('Done Scanning')
m.status_bar:set_text('Scan complete')
end,
}
end
+1 -1
View File
@@ -82,7 +82,7 @@ Aux.post_tab.FRAMES(function(m, public, private)
elseif arg1 == 'RightButton' then
Aux.tab_group:set_tab(1)
Aux.search_tab.set_filter(strlower(Aux.info.item(this.item_record.item_id).name)..'/exact')
Aux.search_tab.disable_sniping()
Aux.search_tab.real_time_checkbox:SetChecked(nil)
Aux.search_tab.execute()
end
end,
+66 -50
View File
@@ -2,10 +2,10 @@ local m, public, private = Aux.tab(1, 'search_tab')
aux_favorite_searches = {}
aux_recent_searches = {}
aux_auto_buy_filter = ''
private.search_scan_id = 0
private.snipe_auto = nil
private.snipe = nil
private.auto_buy_validator = nil
private.popup_info = {
rename = {}
@@ -49,7 +49,7 @@ StaticPopupDialogs['AUX_SEARCH_TABLE_FULL'] = {
hideOnEscape = 1,
}
StaticPopupDialogs['AUX_SEARCH_AUTO_BUY'] = {
text = 'Do you want to activate automatic buyout?',
text = 'Are you sure you want to activate automatic buyout?',
button1 = 'Yes',
button2 = 'No',
OnAccept = function()
@@ -59,11 +59,28 @@ StaticPopupDialogs['AUX_SEARCH_AUTO_BUY'] = {
hideOnEscape = 1,
}
StaticPopupDialogs['AUX_SEARCH_AUTO_BUY_FILTER'] = {
text = 'Do you want to activate the automatic buyout filter?',
text = 'Are you sure you want to set this filter for automatic buyout?',
button1 = 'Yes',
button2 = 'No',
OnAccept = function()
m.auto_buy_filter_checkbox:SetChecked(1)
local queries = Aux.scan_util.parse_filter_string(m.auto_buy_filter_editbox:GetText())
if queries then
if getn(queries) > 1 then
Aux.log('Error: The auto buy filter supports only one query')
return
end
if Aux.util.size(queries[1].blizzard_query) > 0 then
Aux.log('Error: The real time mode does not support blizzard filters')
return
end
aux_auto_buy_filter = m.auto_buy_filter_editbox:GetText()
m.auto_buy_validator = queries[1].validator
m.auto_buy_filter_checkbox:SetChecked(1)
m.auto_buy_filter_editbox:ClearFocus()
end
end,
timeout = 0,
hideOnEscape = 1,
@@ -83,7 +100,6 @@ end
function public.LOAD()
m.create_frames(m, public, private)
m:disable_sniping()
m.update_search()
m.update_tab(m.SAVED)
end
@@ -94,6 +110,7 @@ function public.OPEN()
end
function public.CLOSE()
m.close_settings()
m.results_listing:SetSelectedRecord()
m.frame:Hide()
end
@@ -166,6 +183,12 @@ function private.add_filter(filter_string, replace)
m.search_box:SetText((old_filter_string or '')..filter_string)
end
function private.close_settings()
if m.settings_button.open then
m.settings_button:Click()
end
end
function private.clear_form()
m.name_input:SetText('')
m.exact_checkbox:SetChecked(nil)
@@ -176,8 +199,6 @@ function private.clear_form()
UIDropDownMenu_ClearAll(m.subclass_dropdown)
UIDropDownMenu_ClearAll(m.slot_dropdown)
UIDropDownMenu_ClearAll(m.quality_dropdown)
m.first_page_editbox:SetText('')
m.last_page_editbox:SetText('')
end
function private.get_form_filter()
@@ -225,20 +246,13 @@ function private.get_form_filter()
add(strlower(getglobal('ITEM_QUALITY'..quality..'_DESC')))
end
local first_page, last_page = tonumber(m.first_page_editbox:GetText()), tonumber(m.last_page_editbox:GetText())
first_page = first_page and max(1, first_page)
last_page = last_page and max(1, last_page)
if first_page or last_page then
add((first_page or '') .. ':' .. (last_page or ''))
end
return filter_term
end
function private.discard_continuation()
Aux.scan.abort(m.search_scan_id)
m.current_search().continuation = nil
m.update_resume()
m.update_continuation()
end
function private:enable_stop()
@@ -252,19 +266,7 @@ function private:enable_start()
m.stop_button:Hide()
end
function public.enable_sniping()
Aux.scan.abort(m.search_scan_id)
m.snipe = true
m.settings_button:LockHighlight()
end
function public.disable_sniping()
Aux.scan.abort(m.search_scan_id)
m.snipe = false
m.settings_button:UnlockHighlight()
end
function private.start_sniping(query, search, continuation)
function private.start_real_time_scan(query, search, continuation)
local ignore_page
if not search then
@@ -279,9 +281,10 @@ function private.start_sniping(query, search, continuation)
m.search_scan_id = Aux.scan.start{
type = 'list',
queries = {query},
auto_buy_validator = m.auto_buy_validator,
on_scan_start = function()
m.status_bar:update_status(99.99, 99.99)
m.status_bar:set_text('Sniping ...')
m.status_bar:set_text('Scanning last page ...')
end,
on_page_loaded = function(_, _, last_page)
next_page = last_page
@@ -289,10 +292,11 @@ function private.start_sniping(query, search, continuation)
ignore_page = false
end
end,
on_auction = function(auction_record)
on_auction = function(auction_record, ctrl)
if not ignore_page then
if m.settings_button.auto then
PlaceAuctionBid('list', auction_record.index, auction_record.buyout_price)
if m.auto_buy_checkbox:GetChecked() then
ctrl.suspend()
Aux.place_bid('list', auction_record.index, auction_record.buyout_price, ctrl.resume)
else
tinsert(new_records, auction_record)
end
@@ -320,16 +324,16 @@ function private.start_sniping(query, search, continuation)
query.blizzard_query.first_page = next_page
query.blizzard_query.last_page = next_page
m.start_sniping(query, search)
m.start_real_time_scan(query, search)
end,
on_abort = function()
m.status_bar:update_status(100, 100)
m.status_bar:set_text('Done Sniping')
m.status_bar:set_text('Scan paused')
search.continuation = next_page or not ignore_page and query.blizzard_query.first_page or true
if m.current_search() == search then
m.update_resume()
m.update_continuation()
end
m:enable_start()
@@ -357,6 +361,7 @@ function private.start_search(queries, continuation)
m.search_scan_id = Aux.scan.start{
type = 'list',
queries = queries,
auto_buy_validator = m.auto_buy_validator,
on_scan_start = function()
m.status_bar:update_status(0,0)
if continuation then
@@ -380,8 +385,11 @@ function private.start_search(queries, continuation)
current_query = current_query and current_query + 1 or start_query
current_page = current_page and 0 or start_page - 1
end,
on_auction = function(auction_record)
if getn(search.records) < 1000 then
on_auction = function(auction_record, ctrl)
if m.auto_buy_checkbox:GetChecked() then
ctrl.suspend()
Aux.place_bid('list', auction_record.index, auction_record.buyout_price, ctrl.resume)
elseif getn(search.records) < 1000 then
tinsert(search.records, auction_record)
if getn(search.records) == 1000 then
StaticPopup_Show('AUX_SEARCH_TABLE_FULL')
@@ -390,7 +398,7 @@ function private.start_search(queries, continuation)
end,
on_complete = function()
m.status_bar:update_status(100, 100)
m.status_bar:set_text('Done Scanning')
m.status_bar:set_text('Scan complete')
if m.current_search() == search and m.frame.results:IsVisible() and getn(search.records) == 0 then
m.update_tab(m.SAVED)
@@ -400,7 +408,7 @@ function private.start_search(queries, continuation)
end,
on_abort = function()
m.status_bar:update_status(100, 100)
m.status_bar:set_text('Done Scanning')
m.status_bar:set_text('Scan paused')
if current_query then
search.continuation = {current_query, current_page + 1}
@@ -408,7 +416,7 @@ function private.start_search(queries, continuation)
search.continuation = {start_query, start_page}
end
if m.current_search() == search then
m.update_resume()
m.update_continuation()
end
m.enable_start()
@@ -425,7 +433,7 @@ function public.execute(resume)
local queries = Aux.scan_util.parse_filter_string(filter_string)
if not queries then
return
elseif m.snipe then
elseif m.real_time_checkbox:GetChecked() then
if getn(queries) > 1 then
Aux.log('Invalid filter: The sniping mode does not support multiple queries')
return
@@ -442,7 +450,7 @@ function public.execute(resume)
if resume then
m.results_listing:SetSelectedRecord()
else
if m.current_search().snipe ~= m.snipe then
if m.current_search().real_time ~= m.real_time_checkbox:GetChecked() then
m.results_listing:Reset()
end
m.current_search().records = {}
@@ -454,12 +462,20 @@ function public.execute(resume)
m.discard_continuation()
m:enable_stop()
m.close_settings()
m.update_tab(m.RESULTS)
if m.snipe then
m.current_search().snipe = true
m.start_sniping(queries[1], nil, continuation)
m.current_search().real_time = m.real_time_checkbox:GetChecked()
if m.real_time_checkbox:GetChecked() then
m.start_real_time_scan(queries[1], nil, continuation)
else
m.current_search().snipe = false
for _, query in queries do
if tonumber(m.first_page_input:GetText()) then
query.blizzard_query.first_page = Aux.round(max(0, m.first_page_input:GetNumber() - 1))
end
if tonumber(m.last_page_input:GetText()) then
query.blizzard_query.last_page = Aux.round(max(0, m.last_page_input:GetNumber() - 1))
end
end
m.start_search(queries, continuation)
end
end
@@ -557,8 +573,8 @@ do
end
end
function private.update_resume()
if m.current_search().continuation and m.current_search().snipe == m.snipe then
function private.update_continuation()
if m.current_search().continuation and m.current_search().real_time == m.real_time_checkbox:GetChecked() then
m.resume_button:Show()
m.search_box:SetPoint('RIGHT', m.resume_button, 'LEFT', -4, 0)
else
@@ -596,7 +612,7 @@ do
m.next_button:Show()
m.search_box:SetPoint('LEFT', m.next_button, 'RIGHT', 4, 0)
end
m.update_resume()
m.update_continuation()
end
function private.new_search(filter_string, prettified)
+54 -62
View File
@@ -30,31 +30,29 @@ Aux.search_tab.FRAMES(function(m, public, private)
local t1 = btn:CreateTexture()
t1:SetTexture(unpack(Aux.gui.config.text_color.enabled))
t1:SetWidth(20)
t1:SetHeight(3)
t1:SetPoint('CENTER', 0, 7)
t1:SetHeight(2.5)
t1:SetPoint('CENTER', 0, 6.7)
local t2 = btn:CreateTexture()
t2:SetTexture(unpack(Aux.gui.config.text_color.enabled))
t2:SetWidth(20)
t2:SetHeight(3)
t2:SetHeight(2.5)
t2:SetPoint('CENTER', 0, 0)
local t3 = btn:CreateTexture()
t3:SetTexture(unpack(Aux.gui.config.text_color.enabled))
t3:SetWidth(20)
t3:SetHeight(3)
t3:SetPoint('CENTER', 0, -7)
-- btn:SetText('_\n_\n_')
-- btn:RegisterForClicks('LeftButtonUp', 'RightButtonUp')
t3:SetHeight(2.5)
t3:SetPoint('CENTER', 0, -6.7)
btn:SetScript('OnClick', function()
this.open = not this.open
if this.open then
m.settings:Show()
m.controls:Hide()
else
m.settings:Hide()
m.controls:Show()
else
Aux.scan.abort(m.search_scan_id)
m.settings:Show()
m.controls:Hide()
end
this.open = not this.open
end)
btn.open = false
private.settings_button = btn
end
do
@@ -75,66 +73,62 @@ Aux.search_tab.FRAMES(function(m, public, private)
do
local editbox = Aux.gui.editbox(m.settings)
editbox:SetBackdropColor(unpack(Aux.gui.config.frame_color))
editbox:SetPoint('LEFT', 55, 0)
editbox:SetPoint('LEFT', 49, 0)
editbox:SetWidth(30)
editbox:SetNumeric(true)
editbox:SetMaxLetters(nil)
editbox:SetScript('OnTabPressed', function()
if IsShiftKeyDown() then
m.max_level_input:SetFocus()
else
m.last_page_editbox:SetFocus()
end
m.last_page_input:SetFocus()
end)
editbox:SetScript('OnEnterPressed', function()
this:ClearFocus()
m.execute()
end)
local label = Aux.gui.label(editbox, 15)
label:SetPoint('RIGHT', editbox, 'LEFT', -10, 0)
label:SetPoint('RIGHT', editbox, 'LEFT', -5, 0)
label:SetText('Pages')
private.first_page_editbox = editbox
private.first_page_input = editbox
end
do
local editbox = Aux.gui.editbox(m.settings)
editbox:SetBackdropColor(unpack(Aux.gui.config.frame_color))
editbox:SetPoint('LEFT', m.first_page_editbox, 'RIGHT', 10, 0)
editbox:SetPoint('LEFT', m.first_page_input, 'RIGHT', 10, 0)
editbox:SetWidth(30)
editbox:SetNumeric(true)
editbox:SetMaxLetters(nil)
editbox:SetScript('OnTabPressed', function()
if IsShiftKeyDown() then
m.first_page_editbox:SetFocus()
else
m.name_input:SetFocus()
end
m.first_page_input:SetFocus()
end)
editbox:SetScript('OnEnterPressed', function()
this:ClearFocus()
m.execute()
end)
local label = Aux.gui.label(editbox, 15)
label:SetPoint('RIGHT', editbox, 'LEFT', -4, 0)
label:SetPoint('RIGHT', editbox, 'LEFT', -3.5, 0)
label:SetText('-')
private.last_page_editbox = editbox
private.last_page_input = editbox
end
do
local checkbox = CreateFrame('CheckButton', nil, m.settings, 'UICheckButtonTemplate')
checkbox:SetWidth(22)
checkbox:SetHeight(22)
checkbox:SetPoint('LEFT', 190, 0)
checkbox:SetPoint('LEFT', 194, 0)
checkbox:SetScript('OnClick', function()
if m.snipe then
m.disable_sniping()
m.update_continuation()
if this:GetChecked() then
m.first_page_input:EnableMouse(nil)
m.last_page_input:EnableMouse(nil)
m.first_page_input:ClearFocus()
m.last_page_input:ClearFocus()
else
m.enable_sniping()
m.first_page_input:EnableMouse(true)
m.last_page_input:EnableMouse(true)
end
m.update_resume()
end)
local label = Aux.gui.label(checkbox, 15)
label:SetPoint('RIGHT', checkbox, 'LEFT', -7, 0)
label:SetText('Sniping')
private.snipe_checkbox = checkbox
label:SetPoint('RIGHT', checkbox, 'LEFT', -2, 0)
label:SetText('Real Time')
public.real_time_checkbox = checkbox
end
do
local checkbox = CreateFrame('CheckButton', nil, m.settings, 'UICheckButtonTemplate')
@@ -148,7 +142,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
end
end)
local label = Aux.gui.label(checkbox, 15)
label:SetPoint('RIGHT', checkbox, 'LEFT', -7, 0)
label:SetPoint('RIGHT', checkbox, 'LEFT', -2, 0)
label:SetText('Auto Buy')
private.auto_buy_checkbox = checkbox
end
@@ -156,17 +150,17 @@ Aux.search_tab.FRAMES(function(m, public, private)
local checkbox = CreateFrame('CheckButton', nil, m.settings, 'UICheckButtonTemplate')
checkbox:SetWidth(22)
checkbox:SetHeight(22)
checkbox:SetPoint('LEFT', 405, 0)
checkbox:SetPoint('LEFT', 400, 0)
checkbox:SetScript('OnClick', function()
if this:GetChecked() then
this:SetChecked(nil)
if Aux.scan_util.parse_filter_string(m.auto_buy_filter_editbox:GetText()) then
StaticPopup_Show('AUX_SEARCH_AUTO_BUY_FILTER')
end
StaticPopup_Show('AUX_SEARCH_AUTO_BUY_FILTER')
else
m.auto_buy_validator = nil
end
end)
local label = Aux.gui.label(checkbox, 15)
label:SetPoint('RIGHT', checkbox, 'LEFT', -7, 0)
label:SetPoint('RIGHT', checkbox, 'LEFT', -2, 0)
label:SetText('Auto Buy Filter')
private.auto_buy_filter_checkbox = checkbox
end
@@ -176,8 +170,8 @@ Aux.search_tab.FRAMES(function(m, public, private)
editbox:SetMaxLetters(nil)
editbox:EnableMouse(1)
editbox.complete = Aux.completion.complete_filter
editbox:SetPoint('LEFT', 430, 0)
editbox:SetWidth(290)
editbox:SetPoint('RIGHT', -9, 0)
editbox:SetWidth(293)
editbox:SetHeight(25)
editbox:SetScript('OnChar', function()
this:complete()
@@ -188,8 +182,11 @@ Aux.search_tab.FRAMES(function(m, public, private)
editbox:SetScript('OnEnterPressed', function()
this:HighlightText(0, 0)
this:ClearFocus()
m.execute()
end)
editbox:SetScript('OnTextChanged', function()
m.auto_buy_filter_checkbox:SetChecked(nil)
end)
editbox:SetText(aux_auto_buy_filter)
private.auto_buy_filter_editbox = editbox
end
do
@@ -212,7 +209,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
end
do
local btn = Aux.gui.button(m.controls, 22)
btn:SetPoint('TOPRIGHT', -5, -7)
btn:SetPoint('RIGHT', -5, 0)
btn:SetWidth(70)
btn:SetHeight(25)
btn:SetText('Start')
@@ -227,7 +224,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
end
do
local btn = Aux.gui.button(m.controls, 22)
btn:SetPoint('TOPRIGHT', -5, -7)
btn:SetPoint('RIGHT', -5, 0)
btn:SetWidth(70)
btn:SetHeight(25)
btn:SetText('Stop')
@@ -270,7 +267,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
local item_info = Aux.cursor_item() and Aux.info.item(Aux.cursor_item().item_id)
if item_info then
m.set_filter(strlower(item_info.name)..'/exact')
m.disable_sniping()
m.real_time_checkbox:SetChecked(nil)
m.execute()
end
ClearCursor()
@@ -398,7 +395,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
do
local editbox = Aux.gui.editbox(m.frame.filter)
editbox.complete_item = Aux.completion.complete(function() return aux_auctionable_items end)
editbox:SetPoint('TOPLEFT', 14, -20)
editbox:SetPoint('TOPLEFT', 14, -26)
editbox:SetWidth(260)
editbox:SetScript('OnChar', function()
if m.exact_checkbox:GetChecked() then
@@ -407,7 +404,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
end)
editbox:SetScript('OnTabPressed', function()
if IsShiftKeyDown() then
m.last_page_editbox:SetFocus()
m.max_level_input:SetFocus()
else
m.min_level_input:SetFocus()
end
@@ -433,7 +430,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
end
do
local editbox = Aux.gui.editbox(m.frame.filter)
editbox:SetPoint('TOPLEFT', m.name_input, 'BOTTOMLEFT', 0, -22)
editbox:SetPoint('TOPLEFT', m.name_input, 'BOTTOMLEFT', 0, -28)
editbox:SetWidth(125)
editbox:SetNumeric(true)
editbox:SetMaxLetters(2)
@@ -463,7 +460,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
if IsShiftKeyDown() then
m.min_level_input:SetFocus()
else
m.first_page_editbox:SetFocus()
m.name_input:SetFocus()
end
end)
editbox:SetScript('OnEnterPressed', function()
@@ -471,7 +468,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
m.execute()
end)
local label = Aux.gui.label(editbox, 13)
label:SetPoint('RIGHT', editbox, 'LEFT', -4, 0)
label:SetPoint('RIGHT', editbox, 'LEFT', -3.5, 0)
label:SetText('-')
private.max_level_input = editbox
end
@@ -487,7 +484,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
end
do
local dropdown = Aux.gui.dropdown(m.frame.filter)
dropdown:SetPoint('TOPLEFT', m.min_level_input, 'BOTTOMLEFT', 0, -18)
dropdown:SetPoint('TOPLEFT', m.min_level_input, 'BOTTOMLEFT', 0, -26)
dropdown:SetWidth(300)
dropdown:SetHeight(10)
local label = Aux.gui.label(dropdown, 13)
@@ -501,7 +498,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
end
do
local dropdown = Aux.gui.dropdown(m.frame.filter)
dropdown:SetPoint('TOPLEFT', m.class_dropdown, 'BOTTOMLEFT', 0, -18)
dropdown:SetPoint('TOPLEFT', m.class_dropdown, 'BOTTOMLEFT', 0, -22)
dropdown:SetWidth(300)
dropdown:SetHeight(10)
local label = Aux.gui.label(dropdown, 13)
@@ -515,7 +512,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
end
do
local dropdown = Aux.gui.dropdown(m.frame.filter)
dropdown:SetPoint('TOPLEFT', m.subclass_dropdown, 'BOTTOMLEFT', 0, -18)
dropdown:SetPoint('TOPLEFT', m.subclass_dropdown, 'BOTTOMLEFT', 0, -22)
dropdown:SetWidth(300)
dropdown:SetHeight(10)
local label = Aux.gui.label(dropdown, 13)
@@ -529,7 +526,7 @@ Aux.search_tab.FRAMES(function(m, public, private)
end
do
local dropdown = Aux.gui.dropdown(m.frame.filter)
dropdown:SetPoint('TOPLEFT', m.slot_dropdown, 'BOTTOMLEFT', 0, -18)
dropdown:SetPoint('TOPLEFT', m.slot_dropdown, 'BOTTOMLEFT', 0, -22)
dropdown:SetWidth(300)
dropdown:SetHeight(10)
local label = Aux.gui.label(dropdown, 13)
@@ -542,11 +539,6 @@ Aux.search_tab.FRAMES(function(m, public, private)
private.quality_dropdown = dropdown
end
Aux.gui.vertical_line(m.frame.filter, 332)
do
local label = Aux.gui.label(m.usable_checkbox, 13)
label:SetPoint('BOTTOMLEFT', m.usable_checkbox, 'TOPLEFT', 1, -3)
label:SetText('Usable')
end
local function add_modifier(...)
local current_filter_string = m.search_box:GetText()
for i=1,arg.n do