massive buy upgrade, sorting and bidding

This commit is contained in:
Manuel Simon Hirsig
2015-10-03 20:22:30 +02:00
parent 951498377c
commit d5e5449a01
7 changed files with 536 additions and 647 deletions
+76 -121
View File
@@ -1,6 +1,6 @@
Aux.buy = {} Aux.buy = {}
local process_auction, set_message, report, tooltip_match, show_buyout_dialog, show_bid_dialog local process_auction, set_message, report, tooltip_match, show_dialog
local entries local entries
local selectedEntries = {} local selectedEntries = {}
local search_query local search_query
@@ -10,15 +10,14 @@ local refresh
function Aux.buy.exit() function Aux.buy.exit()
Aux.buy.dialog_cancel()
Aux.buy.buyout_dialog_cancel()
current_page = nil current_page = nil
end end
----------------------------------------- -----------------------------------------
function Aux_AuctionFrameBids_Update() function Aux_AuctionFrameBid_Update()
Aux.orig.AuctionFrameBids_Update() Aux.orig.AuctionFrameBid_Update()
if PanelTemplates_GetSelectedTab(AuctionFrame) == Aux.tabs.buy.index and AuctionFrame:IsShown() then if PanelTemplates_GetSelectedTab(AuctionFrame) == Aux.tabs.buy.index and AuctionFrame:IsShown() then
Aux_HideElems(Aux.tabs.buy.hiddenElements) Aux_HideElems(Aux.tabs.buy.hiddenElements)
end end
@@ -26,9 +25,9 @@ end
----------------------------------------- -----------------------------------------
function Aux.buy.buyout_dialog_cancel() function Aux.buy.dialog_cancel()
Aux.scan.abort() Aux.scan.abort()
AuxBuyBuyoutDialog:Hide() AuxBuyDialog:Hide()
AuxBuySearchButton:Enable() AuxBuySearchButton:Enable()
end end
@@ -112,11 +111,12 @@ function set_message(msg)
end end
----------------------------------------- -----------------------------------------
function show_buyout_dialog(hyperlink, stack_size, buyout_price)
AuxBuyBuyoutDialogBuyButton:Disable() function show_dialog(buyout_mode, hyperlink, stack_size, amount)
AuxBuyBuyoutDialogHTML:SetFontObject('h1', GameFontWhite) AuxBuyDialogActionButton:Disable()
AuxBuyBuyoutDialogHTML:SetScript('OnHyperlinkClick', function() SetItemRef(arg1) end) AuxBuyDialogHTML:SetFontObject('h1', GameFontWhite)
AuxBuyBuyoutDialogHTML:SetText(string.format( AuxBuyDialogHTML:SetScript('OnHyperlinkClick', function() SetItemRef(arg1) end)
AuxBuyDialogHTML:SetText(string.format(
[[ [[
<html> <html>
<body> <body>
@@ -127,109 +127,108 @@ function show_buyout_dialog(hyperlink, stack_size, buyout_price)
hyperlink, hyperlink,
stack_size stack_size
)) ))
MoneyFrame_Update('AuxBuyBuyoutDialogBuyoutPrice', buyout_price) if buyout_mode then
AuxBuyBuyoutDialog:Show() MoneyFrame_Update('AuxBuyDialogBuyoutPrice', amount)
AuxBuyDialogBid:Hide()
AuxBuyDialogBuyoutPrice:Show()
else
MoneyInputFrame_SetCopper(AuxBuyDialogBid, amount)
AuxBuyDialogBuyoutPrice:Hide()
AuxBuyDialogBid:Show()
end
AuxBuyDialog:Show()
end end
function show_bid_dialog(hyperlink, stack_size, highest_bid, min_increment) -----------------------------------------
AuxBuyBidDialogBidButton:Disable()
AuxBuyBidDialogHTML:SetFontObject('h1', GameFontWhite)
AuxBuyBidDialogHTML:SetScript('OnHyperlinkClick', function() SetItemRef(arg1) end)
AuxBuyBidDialogHTML:SetText(string.format(
[[
<html>
<body>
<h1>%s x %i</h1>
</body>
</html>
]],
hyperlink,
stack_size
))
AuxBuyBidDialog:Show()
MoneyFrame_Update('AuxBuyBuyoutDialogBuyoutPrice', buyout_price)
MoneyInputFrame_SetCopper(AuxBuyBidDialogBid, highest_bid + min_increment)
end
function AuxBuyEntry_OnClick() function AuxBuyEntry_OnClick(i)
local express_mode = IsControlKeyDown() local express_mode = IsAltKeyDown()
local buyout_mode = arg1 == "LeftButton"
local entry = entries[i]
if IsControlKeyDown() then
DressUpItemLink(entry.hyperlink)
return
end
AuxBuySearchButton:Disable() AuxBuySearchButton:Disable()
local entry_index = this:GetID() local amount
local entry = entries[entry_index] if buyout_mode then
amount = entry.buyout_price
else
amount = entry.bid
end
if not express_mode then if not express_mode then
if arg1 == "LeftButton" then show_dialog(buyout_mode, entry.hyperlink, entry.stack_size, amount)
show_buyout_dialog(entry.hyperlink, entry.stack_size, entry.buyout_price)
elseif arg1 == "RightButton" then
show_bid_dialog(entry.hyperlink, entry.stack_size, entry.buyout_price)
end
end end
PlaySound("igMainMenuOptionCheckBoxOn") PlaySound("igMainMenuOptionCheckBoxOn")
local found local found
local order_key = Aux.auction_key(entry.tooltip, entry.stack_size, entry.buyout_price) local order_key = Aux.auction_key(entry.tooltip, entry.stack_size, entry.bid, entry.buyout_price)
Aux.scan.start{ Aux.scan.start{
query = search_query, query = search_query,
page = entry.page ~= current_page and entry.page, page = entry.page ~= current_page and entry.page,
on_start_page = function(k, page) on_start_page = function(ok, page)
current_page = page current_page = page
k() ok()
end, end,
on_read_auction = function(k, i) on_read_auction = function(ok, i)
local auction_item = Aux.info.auction_item(i) local auction_item = Aux.info.auction_item(i)
if not auction_item then if not auction_item then
k() ok()
return return
end end
local stack_size = auction_item.charges or auction_item.count local stack_size = auction_item.charges or auction_item.count
local bid = auction_item.current_bid > 0 and auction_item.current_bid or auction_item.min_bid + auction_item.min_increment
if not auction_item.tooltip or not stack_size or not auction_item.buyout_price then if not auction_item.tooltip or not stack_size or not auction_item.buyout_price then
k() ok()
return return
end end
local key = Aux.auction_key(auction_item.tooltip, stack_size, auction_item.buyout_price) local key = Aux.auction_key(auction_item.tooltip, stack_size, bid, auction_item.buyout_price)
if key == order_key then if key == order_key then
found = true found = true
if express_mode then if express_mode then
if GetMoney() >= auction_item.buyout_price then if GetMoney() >= amount then
tremove(entries, entry_index) tremove(entries, entry_index)
refresh = true refresh = true
end end
PlaceAuctionBid("list", i, auction_item.buyout_price) PlaceAuctionBid("list", i, amount)
Aux.scan.abort() Aux.scan.abort()
else else
Aux.buy.buyout_dialog_buy = function() Aux.buy.dialog_action = function()
if GetMoney() >= auction_item.buyout_price then if GetMoney() >= amount then
tremove(entries, entry_index) tremove(entries, entry_index)
refresh = true refresh = true
end end
PlaceAuctionBid("list", i, auction_item.buyout_price) PlaceAuctionBid("list", i, amount)
Aux.scan.abort() Aux.scan.abort()
AuxBuySearchButton:Enable() AuxBuySearchButton:Enable()
AuxBuyBuyoutDialog:Hide() AuxBuyDialog:Hide()
end end
AuxBuyBuyoutDialogBuyButton:Enable() AuxBuyDialogActionButton:Enable()
end end
end end
k() ok()
end, end,
on_complete = function() on_complete = function()
if not found then if not found then
tremove(entries, entry_index) tremove(entries, entry_index)
refresh = true refresh = true
Aux.buy.buyout_dialog_cancel() Aux.buy.dialog_cancel()
end end
if express_mode then if express_mode then
AuxBuySearchButton:Enable() AuxBuySearchButton:Enable()
@@ -243,8 +242,7 @@ function AuxBuyEntry_OnClick()
} }
end end
function AuxBuyEntry_OnEnter() function AuxBuyEntry_OnEnter(i)
local i = this:GetID()
local entry = entries[i] local entry = entries[i]
Aux.info.set_game_tooltip(this, entry.tooltip) Aux.info.set_game_tooltip(this, entry.tooltip)
@@ -260,17 +258,25 @@ function process_auction(auction_item, current_page)
entries = entries or {} entries = entries or {}
local stack_size = auction_item.charges or auction_item.count local stack_size = auction_item.charges or auction_item.count
if auction_item.buyout_price > 0 and auction_item.owner ~= UnitName("player") then local bid = auction_item.current_bid > 0 and auction_item.current_bid or auction_item.min_bid + auction_item.min_increment
local buyout_price = auction_item.buyout_price > 0 and auction_item.buyout_price or nil
local buyout_price_per_unit = buyout_price and Aux_Round(auction_item.buyout_price / stack_size)
if auction_item.owner ~= UnitName("player") then
tinsert(entries, { tinsert(entries, {
name = auction_item.name, name = auction_item.name,
tooltip = auction_item.tooltip, tooltip = auction_item.tooltip,
stack_size = stack_size, stack_size = stack_size,
buyout_price = auction_item.buyout_price, buyout_price = buyout_price,
unit_price = Aux_Round(auction_item.buyout_price / stack_size), buyout_price_per_unit = buyout_price_per_unit,
quality = auction_item.quality, quality = auction_item.quality,
hyperlink = auction_item.hyperlink, hyperlink = auction_item.hyperlink,
itemstring = auction_item.itemstring, itemstring = auction_item.itemstring,
page = current_page, page = current_page,
bid = bid,
bid_per_unit = Aux_Round(bid / stack_size),
owner = auction_item.owner,
duration = auction_item.duration,
}) })
end end
end end
@@ -287,68 +293,17 @@ end
----------------------------------------- -----------------------------------------
function Aux_Buy_ScrollbarUpdate() function Aux_Buy_ScrollbarUpdate()
if entries then Aux.list.populate(AuxBuyList, entries or {})
table.sort(entries, function(a,b) return a.unit_price < b.unit_price end)
end -- if entries then
-- table.sort(entries, function(a,b) return a.buyout_price_per_unit < b.buyout_price_per_unit end)
-- end
if entries and getn(entries) == 0 then if entries and getn(entries) == 0 then
set_message("No auctions were found") set_message("No auctions were found")
else else
AuxBuyMessage:Hide() AuxBuyMessage:Hide()
end end
local numrows
if not entries then
numrows = 0
else
numrows = getn(entries)
end
FauxScrollFrame_Update(AuxBuyScrollFrame, numrows, 19, 16);
for line = 1,19 do
local dataOffset = line + FauxScrollFrame_GetOffset(AuxBuyScrollFrame)
local lineEntry = getglobal("AuxBuyEntry"..line)
if numrows <= 19 then
lineEntry:SetWidth(800)
else
lineEntry:SetWidth(782)
end
lineEntry:SetID(dataOffset)
if dataOffset <= numrows and entries[dataOffset] then
local entry = entries[dataOffset]
local lineEntry_name = getglobal("AuxBuyEntry"..line.."_Name")
local lineEntry_stack_size = getglobal("AuxBuyEntry"..line.."_StackSize")
local color = "ffffffff"
if Aux_QualityColor(entry.quality) then
color = Aux_QualityColor(entry.quality)
end
lineEntry_name:SetText("\124c" .. color .. entry.name .. "\124r")
if Aux.util.set_contains(selectedEntries, entry) then
lineEntry:LockHighlight()
else
lineEntry:UnlockHighlight()
end
lineEntry_stack_size:SetText(entry.stack_size)
MoneyFrame_Update("AuxBuyEntry"..line.."_UnitPrice", Aux_Round(entry.buyout_price/entry.stack_size))
MoneyFrame_Update("AuxBuyEntry"..line.."_TotalPrice", Aux_Round(entry.buyout_price))
lineEntry:Show()
else
lineEntry:Hide()
end
end
end end
----------------------------------------- -----------------------------------------
+100 -203
View File
@@ -10,95 +10,48 @@
</Scripts> </Scripts>
</Frame> </Frame>
<Button name="AuxBuyEntryTemplate" virtual="true" hidden="true"> <Button name="SearchListItemTemplate" inherits="ListItemTemplate" virtual="true">
<Size><AbsDimension y="16"/></Size>
<Scripts> <Scripts>
local scrollFrame
local index
<OnLoad> <OnLoad>
this:RegisterForClicks("LeftButtonUp", "RightButtonUp") this:RegisterForClicks("LeftButtonUp", "RightButtonUp")
</OnLoad> </OnLoad>
</Scripts>
<Frames>
<Frame>
<Size><AbsDimension x="120" y="16" /></Size>
<Anchors><Anchor point="LEFT"><Offset><AbsDimension x="25" y="-3"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parent_Name" inherits="GameFontHighlightSmall">
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
</Frame>
<Frame>
<Size><AbsDimension x="120" y="16" /></Size>
<Anchors><Anchor point="LEFT"><Offset><AbsDimension x="300" y="0"/></Offset></Anchor></Anchors>
<Frames>
<Frame name="$parent_UnitPrice" inherits="SmallMoneyFrameTemplate">
<Anchors><Anchor point="RIGHT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
<Scripts>
<OnLoad>
SmallMoneyFrame_OnLoad()
MoneyFrame_SetType("STATIC")
</OnLoad>
</Scripts>
</Frame>
</Frames>
</Frame>
<Frame>
<Size><AbsDimension x="50" y="16" /></Size>
<Anchors><Anchor point="LEFT"><Offset><AbsDimension x="485" y="-3"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parent_StackSize" inherits="GameFontHighlightSmall">
<Anchors><Anchor point="TOPRIGHT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
</Frame>
<Frame>
<Size><AbsDimension x="120" y="16" /></Size>
<Anchors><Anchor point="LEFT"><Offset><AbsDimension x="620" y="0"/></Offset></Anchor></Anchors>
<Frames>
<Frame name="$parent_TotalPrice" inherits="SmallMoneyFrameTemplate">
<Anchors><Anchor point="RIGHT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
<Scripts>
<OnLoad>
SmallMoneyFrame_OnLoad()
MoneyFrame_SetType("STATIC")
</OnLoad>
</Scripts>
</Frame>
</Frames>
</Frame>
</Frames>
<HighlightTexture file="Interface\HelpFrame\HelpFrameButton-Highlight" alphaMode="ADD">
<TexCoords left="0" right="1.0" top="0.0" bottom="0.6"/>
</HighlightTexture>
<Scripts>
<OnEnter> <OnEnter>
AuxBuyEntry_OnEnter() scrollFrame = getglobal(this:GetParent():GetName().."ScrollFrame")
index = this:GetID() + FauxScrollFrame_GetOffset(scrollFrame)
AuxBuyEntry_OnEnter(index)
</OnEnter> </OnEnter>
<OnLeave> <OnLeave>
GameTooltip:Hide() GameTooltip:Hide()
ResetCursor()
scrollFrame = nil
index = nil
</OnLeave> </OnLeave>
<OnClick> <OnClick>
AuxBuyEntry_OnClick() AuxBuyEntry_OnClick(index)
</OnClick> </OnClick>
<OnUpdate>
if index then
if IsControlKeyDown() then
ShowInspectCursor()
elseif IsAltKeyDown() then
SetCursor("BUY_CURSOR")
else
ResetCursor()
end
end
</OnUpdate>
</Scripts> </Scripts>
<HighlightTexture name="$parentHighlight" file="Interface\HelpFrame\HelpFrameButton-Highlight" alphaMode="ADD">
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor><Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="1.0" top="0" bottom="0.578125"/>
</HighlightTexture>
</Button> </Button>
<Frame name="AuxBuyTemplate" virtual="true" hidden="true"> <Frame name="AuxBuyTemplate" virtual="true" hidden="true">
<Size> <Size><AbsDimension x="694" y="447"/></Size>
<AbsDimension x="694" y="447"/> <Anchors><Anchor point="TOPLEFT"/></Anchors>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
<Layers> <Layers>
<Layer level="BACKGROUND"> <Layer level="BACKGROUND">
<FontString inherits="GameFontNormal" text="Aux Buy"> <FontString inherits="GameFontNormal" text="Aux Buy">
@@ -109,47 +62,77 @@
<Anchors><Anchor point="TOP"><Offset><AbsDimension x="70" y="-120"/></Offset></Anchor></Anchors> <Anchors><Anchor point="TOP"><Offset><AbsDimension x="70" y="-120"/></Offset></Anchor></Anchors>
</FontString> </FontString>
</Layer> </Layer>
<Layer level="ARTWORK">
<Texture name="$parentMiddle" file="Interface\Glues\CharacterCreate\CharacterCreate-LabelFrame">
<Size><AbsDimension x="802" y="64"/></Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="20" y="-52"/>
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0.1953125" right="0.8046875" top="0" bottom="1"/>
</Texture>
<FontString inherits="GameFontHighlightSmall" text="Name">
<Anchors><Anchor point="LEFT" relativePoint="LEFT" relativeTo="$parentMiddle"><Offset><AbsDimension x="27" y="1"/></Offset></Anchor></Anchors>
</FontString>
<FontString inherits="GameFontHighlightSmall" text="Unit Price">
<Anchors><Anchor point="LEFT" relativePoint="LEFT" relativeTo="$parentMiddle"><Offset><AbsDimension x="358" y="1"/></Offset></Anchor></Anchors>
</FontString>
<FontString inherits="GameFontHighlightSmall" text="Stack Size">
<Anchors><Anchor point="LEFT" relativePoint="LEFT" relativeTo="$parentMiddle"><Offset><AbsDimension x="509" y="1"/></Offset></Anchor></Anchors>
</FontString>
<FontString inherits="GameFontHighlightSmall" text="Total Price">
<Anchors><Anchor point="LEFT" relativePoint="LEFT" relativeTo="$parentMiddle"><Offset><AbsDimension x="675" y="1"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers> </Layers>
<Frames> <Frames>
<!-- <Frame name="AuxBuyList" inherits="ListTemplate"> <Frame name="AuxBuyList" inherits="ListTemplate">
<Size><AbsDimension x="610" y="334"/></Size> <Size><AbsDimension x="781" y="334"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="187" y="-77"/></Offset></Anchor></Anchors> <Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="18" y="-70"/></Offset></Anchor></Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
Aux.list.initialize(this, {{ width=50, logicalColumns={1,2,3} }, { width=50, logicalColumns={1,2,3} }}) Aux.list.on_load(this)
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> --> <Frames>
<Button name="$parentItem1" inherits="SearchListItemTemplate" id="1">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentColumn1Sort" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="4" y="-4"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem2" inherits="SearchListItemTemplate" id="2">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem1" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem3" inherits="SearchListItemTemplate" id="3">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem2" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem4" inherits="SearchListItemTemplate" id="4">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem3" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem5" inherits="SearchListItemTemplate" id="5">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem4" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem6" inherits="SearchListItemTemplate" id="6">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem5" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem7" inherits="SearchListItemTemplate" id="7">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem6" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem8" inherits="SearchListItemTemplate" id="8">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem7" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem9" inherits="SearchListItemTemplate" id="9">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem8" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem10" inherits="SearchListItemTemplate" id="10">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem9" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem11" inherits="SearchListItemTemplate" id="11">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem10" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem12" inherits="SearchListItemTemplate" id="12">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem11" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem13" inherits="SearchListItemTemplate" id="13">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem12" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem14" inherits="SearchListItemTemplate" id="14">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem13" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem15" inherits="SearchListItemTemplate" id="15">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem14" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem16" inherits="SearchListItemTemplate" id="16">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem15" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem17" inherits="SearchListItemTemplate" id="17">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem16" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem18" inherits="SearchListItemTemplate" id="18">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem17" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="$parentItem19" inherits="SearchListItemTemplate" id="19">
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentItem18" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Button>
</Frames>
</Frame>
<Frame name="AuxBuyFilters"> <Frame name="AuxBuyFilters">
<Size><AbsDimension x="1" y="1"/></Size> <Size><AbsDimension x="1" y="1"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="80" y="-46"/></Offset></Anchor></Anchors> <Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="80" y="-46"/></Offset></Anchor></Anchors>
@@ -335,44 +318,8 @@
</OnClick> </OnClick>
</Scripts> </Scripts>
</Button> </Button>
<ScrollFrame name="AuxBuyScrollFrame" inherits="FauxScrollFrameTemplate">
<Size><AbsDimension x="785" y="309"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="13" y="-98"/></Offset></Anchor></Anchors>
<Scripts>
<OnVerticalScroll>
FauxScrollFrame_OnVerticalScroll(16, Aux_Buy_ScrollbarUpdate)
</OnVerticalScroll>
<OnShow>
<!--Aux_ScrollbarUpdate();-->
</OnShow>
</Scripts>
</ScrollFrame>
<Button name="AuxBuyEntry1" inherits="AuxBuyEntryTemplate">
<Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyScrollFrame" relativePoint="TOPLEFT"><Offset><AbsDimension x="8" y="0"/></Offset></Anchor></Anchors>
</Button>
<Button name="AuxBuyEntry2" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry1" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry3" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry2" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry4" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry3" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry5" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry4" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry6" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry5" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry7" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry6" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry8" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry7" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry9" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry8" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry10" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry9" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry11" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry10" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry12" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry11" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry13" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry12" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry14" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry13" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry15" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry14" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry16" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry15" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry17" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry16" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry18" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry17" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Button name="AuxBuyEntry19" inherits="AuxBuyEntryTemplate"><Anchors><Anchor point="TOPLEFT" relativeTo="AuxBuyEntry18" relativePoint="BOTTOMLEFT"/></Anchors></Button>
<Frame name="AuxBuyBuyoutDialog" frameStrata="FULLSCREEN_DIALOG" toplevel="true" enableMouse="true" hidden="true" movable="true"> <Frame name="AuxBuyDialog" frameStrata="FULLSCREEN_DIALOG" toplevel="true" enableMouse="true" hidden="true" movable="true">
<Size><AbsDimension x="230" y="140" /></Size> <Size><AbsDimension x="230" y="140" /></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="300" y="-150"/></Offset></Anchor></Anchors> <Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="300" y="-150"/></Offset></Anchor></Anchors>
<Scripts> <Scripts>
@@ -390,7 +337,10 @@
<Size><AbsDimension x="200" y="1" /></Size> <Size><AbsDimension x="200" y="1" /></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="30" y="-30"/></Offset></Anchor></Anchors> <Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="30" y="-30"/></Offset></Anchor></Anchors>
<FontStringHeader1 inherits="GameFontNormalWhite"/> <FontStringHeader1 inherits="GameFontNormalWhite"/>
</SimpleHTML> </SimpleHTML>
<Frame name="$parentBid" inherits="MoneyInputFrameTemplate">
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="35" y="-60"/></Offset></Anchor></Anchors>
</Frame>
<Frame name="$parentBuyoutPrice" inherits="SmallMoneyFrameTemplate"> <Frame name="$parentBuyoutPrice" inherits="SmallMoneyFrameTemplate">
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="30" y="-60"/></Offset></Anchor></Anchors> <Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="30" y="-60"/></Offset></Anchor></Anchors>
<Scripts> <Scripts>
@@ -400,12 +350,12 @@
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
<Button name="$parentBuyButton" inherits="UIPanelButtonTemplate" text="Buy" disabled="true"> <Button name="$parentActionButton" inherits="UIPanelButtonTemplate" text="Buy" disabled="true">
<Size><AbsDimension x="85" y="22"/> </Size> <Size><AbsDimension x="85" y="22"/> </Size>
<Anchors><Anchor point="BOTTOMLEFT"><Offset><AbsDimension x="20" y="15"/></Offset></Anchor></Anchors> <Anchors><Anchor point="BOTTOMLEFT"><Offset><AbsDimension x="20" y="15"/></Offset></Anchor></Anchors>
<Scripts> <Scripts>
<OnClick> <OnClick>
Aux.buy.buyout_dialog_buy() Aux.buy.dialog_action()
</OnClick> </OnClick>
</Scripts> </Scripts>
</Button> </Button>
@@ -414,60 +364,7 @@
<Anchors><Anchor point="BOTTOMRIGHT"><Offset><AbsDimension x="-20" y="15"/></Offset></Anchor></Anchors> <Anchors><Anchor point="BOTTOMRIGHT"><Offset><AbsDimension x="-20" y="15"/></Offset></Anchor></Anchors>
<Scripts> <Scripts>
<OnClick> <OnClick>
Aux.buy.buyout_dialog_cancel() Aux.buy.dialog_cancel()
</OnClick>
</Scripts>
</Button>
</Frames>
</Frame>
<Frame name="AuxBuyBidDialog" frameStrata="FULLSCREEN_DIALOG" toplevel="true" enableMouse="true" hidden="true" movable="true">
<Size><AbsDimension x="230" y="170" /></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="300" y="-135"/></Offset></Anchor></Anchors>
<Scripts>
<OnLoad>this:RegisterForDrag("LeftButton")</OnLoad>
<OnDragStart>this:StartMoving()</OnDragStart>
<OnDragStop>this:StopMovingOrSizing()</OnDragStop>
</Scripts>
<Backdrop bgFile="Interface\CharacterFrame\UI-Party-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
<BackgroundInsets><AbsInset left="11" right="12" top="12" bottom="11"/></BackgroundInsets>
<TileSize><AbsValue val="32"/></TileSize>
<EdgeSize><AbsValue val="32"/></EdgeSize>
</Backdrop>
<Frames>
<SimpleHTML name="$parentHTML">
<Size><AbsDimension x="200" y="1" /></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="30" y="-30"/></Offset></Anchor></Anchors>
</SimpleHTML>
<Frame name="$parentHighestBid" inherits="SmallMoneyFrameTemplate">
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="30" y="-60"/></Offset></Anchor></Anchors>
<Scripts>
<OnLoad>
SmallMoneyFrame_OnLoad()
MoneyFrame_SetType("STATIC")
</OnLoad>
</Scripts>
</Frame>
<Frame name="$parentBid" inherits="MoneyInputFrameTemplate">
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="35" y="-88"/></Offset></Anchor></Anchors>
</Frame>
<Button name="$parentBidButton" inherits="UIPanelButtonTemplate" text="Bid" disabled="true">
<Size><AbsDimension x="85" y="22"/> </Size>
<Anchors><Anchor point="BOTTOMLEFT"><Offset><AbsDimension x="20" y="15"/></Offset></Anchor></Anchors>
<Scripts>
<OnClick>
Aux.buy.bid_dialog_bid()
</OnClick>
</Scripts>
</Button>
<Button name="$parentCancelButton" inherits="UIPanelButtonTemplate" text="Cancel">
<Size><AbsDimension x="85" y="22"/> </Size>
<Anchors><Anchor point="BOTTOMRIGHT"><Offset><AbsDimension x="-20" y="15"/></Offset></Anchor></Anchors>
<Scripts>
<OnClick>
Aux.buy.bid_dialog_cancel()
</OnClick> </OnClick>
</Scripts> </Scripts>
</Button> </Button>
+4 -4
View File
@@ -166,8 +166,8 @@ function Aux_SetupHookFunctions()
Aux.orig.ContainerFrameItemButton_OnClick = ContainerFrameItemButton_OnClick Aux.orig.ContainerFrameItemButton_OnClick = ContainerFrameItemButton_OnClick
ContainerFrameItemButton_OnClick = Aux_ContainerFrameItemButton_OnClick ContainerFrameItemButton_OnClick = Aux_ContainerFrameItemButton_OnClick
Aux.orig.AuctionFrameBids_Update = AuctionFrameBids_Update Aux.orig.AuctionFrameBid_Update = AuctionFrameBid_Update
AuctionFrameBids_Update = Aux_AuctionFrameBids_Update AuctionFrameBid_Update = Aux_AuctionFrameBid_Update
Aux.orig.AuctionFrameAuctions_Update = AuctionFrameAuctions_Update Aux.orig.AuctionFrameAuctions_Update = AuctionFrameAuctions_Update
AuctionFrameAuctions_Update = Aux_AuctionFrameAuctions_Update AuctionFrameAuctions_Update = Aux_AuctionFrameAuctions_Update
@@ -478,7 +478,7 @@ end
----------------------------------------- -----------------------------------------
function Aux.auction_key(tooltip, stack_size, buyout_price) function Aux.auction_key(tooltip, stack_size, bid, buyout_price)
local key = '' local key = ''
for i, line in ipairs(tooltip) do for i, line in ipairs(tooltip) do
local left_text = line[1].text local left_text = line[1].text
@@ -490,5 +490,5 @@ function Aux.auction_key(tooltip, stack_size, buyout_price)
key = key .. right_text .. '_' key = key .. right_text .. '_'
end end
end end
return key .. stack_size .. '_' .. buyout_price return key .. stack_size .. '_' .. bid .. '_' .. buyout_price
end end
+4 -4
View File
@@ -26,7 +26,7 @@ function Aux.info.container_item(bag, slot)
end end
function Aux.info.auction_sell_item() function Aux.info.auction_sell_item()
local name, texture, count, quality, usable, price, unit_price, max_stack, total_count = GetAuctionSellItemInfo() local name, texture, count, quality, usable, price, buyout_price_per_unit, max_stack, total_count = GetAuctionSellItemInfo()
auction_sell_item = { auction_sell_item = {
name = name, name = name,
texture = texture, texture = texture,
@@ -34,7 +34,7 @@ function Aux.info.auction_sell_item()
quality = quality, quality = quality,
usable = usable, usable = usable,
price = price, price = price,
unit_price = unit_price, buyout_price_per_unit = buyout_price_per_unit,
max_stack = max_stack, max_stack = max_stack,
total_count = total_count, total_count = total_count,
} }
@@ -54,7 +54,7 @@ function Aux.info.auction_item(index)
local auction_item = hyperlink_item(hyperlink) local auction_item = hyperlink_item(hyperlink)
local name, texture, count, quality, usable, level, min_bid, min_increment, buyout_price, bid_amount, high_bidder, owner, sale_status, id, has_all_info = GetAuctionItemInfo("list", index) local name, texture, count, quality, usable, level, min_bid, min_increment, buyout_price, current_bid, high_bidder, owner, sale_status, id, has_all_info = GetAuctionItemInfo("list", index)
local duration = GetAuctionItemTimeLeft("list", index) local duration = GetAuctionItemTimeLeft("list", index)
auction_item.texture = texture auction_item.texture = texture
@@ -62,7 +62,7 @@ function Aux.info.auction_item(index)
auction_item.min_bid = min_bid auction_item.min_bid = min_bid
auction_item.min_increment = min_increment auction_item.min_increment = min_increment
auction_item.buyout_price = buyout_price auction_item.buyout_price = buyout_price
auction_item.bid_amount = bid_amount auction_item.current_bid = current_bid
auction_item.high_bidder = high_bidder auction_item.high_bidder = high_bidder
auction_item.owner = owner auction_item.owner = owner
auction_item.sale_status = sale_status auction_item.sale_status = sale_status
+225 -187
View File
@@ -2,68 +2,137 @@ Aux.list = {}
local MAX_COLUMNS = 6 local MAX_COLUMNS = 6
local order = { local NAME, OWNER, BID, BID_UNIT, BUYOUT, BUYOUT_UNIT, QUANTITY = 1, 2, 3, 4, 5, 6, 7, 8
BUYOUT = "Buyout price",
BID = "Bid price", MoneyTypeInfo["AUX_LIST"] = {
BUYOUT_UNIT = "Unit buyout price", UpdateFunc = function()
BID_UNIT = "Unit bid price", return this.staticMoney
end,
collapse = 1,
fixedWidth = 1,
showSmallerCoins = 1,
} }
local logical_columns = {
{
type = 'STRING',
title = 'Name',
comparator = function(row1, row2) return Aux.util.compare(row1.name, row2.name, Aux.util.GT) end,
getter = function(row) return row.name end,
color = function(row) return ITEM_QUALITY_COLORS[row.quality] end,
},
{
type = 'STRING',
title = 'Owner',
comparator = function(row1, row2) return Aux.util.compare(row1.owner, row2.owner, Aux.util.GT) end,
getter = function(row) return row.owner end,
},
{
type = 'MONEY',
title = 'Bid',
comparator = function(row1, row2) return Aux.util.compare(row1.bid, row2.bid, Aux.util.GT) end,
getter = function(row) return row.bid end,
},
{
type = 'MONEY',
title = 'Bid (Unit)',
comparator = function(row1, row2) return Aux.util.compare(row1.bid_per_unit, row2.bid_per_unit, Aux.util.GT) end,
getter = function(row) return row.bid_per_unit end,
},
{
type = 'MONEY',
title = 'Buyout',
comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price, row2.buyout_price, Aux.util.GT) end,
getter = function(row) return row.buyout_price end,
},
{
type = 'MONEY',
title = 'Buyout (Unit)',
comparator = function(row1, row2) return Aux.util.compare(row1.buyout_price_per_unit, row2.buyout_price_per_unit, Aux.util.GT) end,
getter = function(row) return row.buyout_price_per_unit end,
},
{
type = 'NUMBER',
title = 'Quantity',
comparator = function(row1, row2) return Aux.util.compare(row1.stack_size, row2.stack_size, Aux.util.LT) end,
getter = function(row) return row.stack_size end,
},
{
type = 'STRING',
title = 'Time Left',
comparator = function(row1, row2) return Aux.util.invert_order(Aux.util.compare(row1.duration, row2.duration, Aux.util.GT)) end,
getter = function(row)
if row.duration == 1 then
return 'Short'
elseif row.duration == 2 then
return 'Medium'
elseif row.duration == 3 then
return 'Long'
elseif row.duration == 4 then
return 'Very Long'
end
end,
},
}
local physical_columns = {
{ logical_column = logical_columns[NAME], width = 156 },
{ logical_column = logical_columns[OWNER], width = 156 },
{ logical_column = logical_columns[BUYOUT_UNIT], width = 156 },
{ logical_column = logical_columns[QUANTITY], width = 156 },
{ logical_column = logical_columns[BUYOUT], width = 156 },
}
function Aux.list.on_load()
Aux.list.initialize(this, physical_columns, logical_columns)
end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Compare two rows -- Aux.util.compare two rows
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
local CurrentListFrame = nil;
function ListTemplate_CompareRows(row1, row2) function Aux.list.row_comparator(list_frame)
frame = CurrentListFrame; return function(row1, row2)
for index, value in ipairs(frame.sortOrder) do for index, sort_info in ipairs(list_frame.sort_order) do
local column = value; local physical_column = list_frame.physical_columns[sort_info.column_index]
local physicalColumn = frame.physicalColumns[column.columnIndex]; local logical_column = physical_column.logical_column
local logicalColumn = physicalColumn.logicalColumn; if logical_column.comparator then
if (logicalColumn.compareAscendingFunc and logicalColumn.compareDescendingFunc) then local ordering = logical_column.comparator(row1, row2)
local ascending = logicalColumn.compareAscendingFunc(row1, row2); if ordering ~= Aux.util.EQ then
local descending = logicalColumn.compareDescendingFunc(row1, row2); return sort_info.sort_ascending and ordering or Aux.util.invert_order(ordering)
if (ascending or descending) then
if (column.sortAscending) then
return ascending;
else
return descending;
end end
end end
end end
return Aux.util.EQ
end end
return false;
end end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Initialize the list with the column information -- Initialize the list with the column information
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
function Aux.list.initialize(frame, physicalColumns, logicalColumns) function Aux.list.initialize(frame, physical_columns, logical_columns)
frame.lines = 19 frame.lines = 19
frame.lineHeight = 16 frame.lineHeight = 16
frame.content = {} frame.content = {}
frame.physicalColumns = physicalColumns frame.physical_columns = physical_columns
frame.logicalColumns = logicalColumns frame.logical_columns = logical_columns
frame.sortOrder = {} frame.sort_order = {}
for physicalColumnIndex = 1, MAX_COLUMNS do for i = 1, MAX_COLUMNS do
local button = getglobal(frame:GetName().."Column"..physicalColumnIndex.."Sort") local button = getglobal(frame:GetName().."Column"..i.."Sort")
local dropdown = getglobal(frame:GetName().."Column"..physicalColumnIndex.."DropDown") local dropdown = getglobal(frame:GetName().."Column"..i.."DropDown")
if (physicalColumnIndex <= table.getn(physicalColumns)) then if (i <= table.getn(physical_columns)) then
local physicalColumn = physicalColumns[physicalColumnIndex] local physical_column = physical_columns[i]
local logicalColumn = {title='kek'} -- physicalColumn.logicalColumn local logical_column = physical_column.logical_column
local column = {} table.insert(frame.sort_order, { column_index = i, sort_ascending = true})
column.columnIndex = physicalColumnIndex
column.sortAscending = true
table.insert(frame.sortOrder, column)
getglobal(button:GetName().."Arrow"):Hide() getglobal(button:GetName().."Arrow"):Hide()
getglobal(button:GetName().."Text"):SetText(logicalColumn.title) getglobal(button:GetName().."Text"):SetText(logical_column.title)
button:Show() button:Show()
if (table.getn(physicalColumn.logicalColumns) > 1) then dropdown:Show()
dropdown:Show()
else Aux.list.set_column_width(frame, i, physical_column.width);
dropdown:Hide()
end
Aux.list.set_column_width(frame, physicalColumnIndex, physicalColumn.width);
else else
button:Hide() button:Hide()
dropdown:Hide() dropdown:Hide()
@@ -76,19 +145,18 @@ end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Initialize the list with the column information -- Initialize the list with the column information
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
function Aux.list.set_column_width(frame, column, width) function Aux.list.set_column_width(frame, column_index, width)
-- Resize the header -- Resize the header
frame.physicalColumns[column].width = width local button = getglobal(frame:GetName().."Column"..column_index.."Sort")
local button = getglobal(frame:GetName().."Column"..column.."Sort")
button:SetWidth(width + 2) button:SetWidth(width + 2)
local dropdown = getglobal(frame:GetName().."Column"..column.."DropDown") local dropdown = getglobal(frame:GetName().."Column"..column_index.."DropDown")
UIDropDownMenu_SetWidth(width - 18, dropdown) UIDropDownMenu_SetWidth(width - 18, dropdown)
-- Resize each cell in the columns -- Resize each cell in the columns
for line = 1, frame.lines do for line = 1, frame.lines do
local textControl = getglobal(frame:GetName().."Item"..line.."Column"..column) local text = getglobal(frame:GetName().."Item"..line.."Column"..column_index)
if textControl then if text then
textControl:SetWidth(width - 20) text:SetWidth(width - 20)
end end
end end
end end
@@ -96,194 +164,168 @@ end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Set the item to display. -- Set the item to display.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
function ListTemplate_SetContent(frame, content) function Aux.list.populate(frame, content)
frame.content = content frame.content = content
-- Perform the sort. -- Perform the sort.
CurrentListFrame = frame Aux.util.merge_sort(frame.content, Aux.list.row_comparator(frame))
table.sort(frame.content, ListTemplate_CompareRows)
CurrentListFrame = nil
-- Update the scroll pane. -- Update the scroll pane.
ListTemplateScrollFrame_Update(getglobal(frame:GetName().."ScrollFrame")) Aux.list.scroll_frame_update(getglobal(frame:GetName().."ScrollFrame"))
end end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
function ListTemplate_SelectRow(frame, row) function ListTemplate_SelectRow(frame, row)
if (frame.selectedRow ~= row) then if frame.selectedRow ~= row then
local scrollFrame = getglobal(frame:GetName().."ScrollFrame"); local scrollFrame = getglobal(frame:GetName().."ScrollFrame")
local firstVisibleRow = FauxScrollFrame_GetOffset(scrollFrame) + 1; local firstVisibleRow = FauxScrollFrame_GetOffset(scrollFrame) + 1
local lastVisibleRow = firstVisibleRow + frame.lines - 1; local lastVisibleRow = firstVisibleRow + frame.lines - 1
-- Deselect the previous row -- Deselect the previous row
if (frame.selectedRow and firstVisibleRow <= frame.selectedRow and frame.selectedRow <= lastVisibleRow) then if frame.selectedRow and firstVisibleRow <= frame.selectedRow and frame.selectedRow <= lastVisibleRow then
local line = frame.selectedRow - firstVisibleRow + 1; local line = frame.selectedRow - firstVisibleRow + 1
local item = getglobal(frame:GetName().."Item"..line); local item = getglobal(frame:GetName().."Item"..line)
item:UnlockHighlight(); item:UnlockHighlight()
end end
-- Update the selected item -- Update the selected item
frame.selectedRow = row; frame.selectedRow = row
-- Select the new row -- Select the new row
if (frame.selectedRow and firstVisibleRow <= frame.selectedRow and frame.selectedRow <= lastVisibleRow) then if frame.selectedRow and firstVisibleRow <= frame.selectedRow and frame.selectedRow <= lastVisibleRow then
local line = frame.selectedRow - firstVisibleRow + 1; local line = frame.selectedRow - firstVisibleRow + 1
local item = getglobal(frame:GetName().."Item"..line); local item = getglobal(frame:GetName().."Item"..line)
item:LockHighlight(); item:LockHighlight()
end end
end end
end end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
function Aux.list.sort(frame, columnIndex) function Aux.list.sort(frame, i)
-- -- Update the SortColumn order
-- if (frame.sortOrder[1].columnIndex == columnIndex) then
-- frame.sortOrder[1].sortAscending = not frame.sortOrder[1].sortAscending;
-- else
-- getglobal(frame:GetName().."Column"..frame.sortOrder[1].columnIndex.."SortArrow"):Hide();
-- for index, value in ipairs(frame.sortOrder) do
-- if (value.columnIndex == columnIndex) then
-- local temp = value;
-- table.remove(frame.sortOrder, index);
-- table.insert(frame.sortOrder, 1, temp);
-- break;
-- end
-- end
-- frame.sortOrder[1].sortAscending = true;
-- getglobal(frame:GetName().."Column"..frame.sortOrder[1].columnIndex.."SortArrow"):Show();
-- end
-- -- Perform the sort. if frame.sort_order[1].column_index == i then
-- CurrentListFrame = frame; frame.sort_order[1].sort_ascending = not frame.sort_order[1].sort_ascending
-- table.sort(frame.content, ListTemplate_CompareRows); else
-- CurrentListFrame = nil; getglobal(frame:GetName().."Column"..frame.sort_order[1].column_index.."SortArrow"):Hide()
for index, value in ipairs(frame.sort_order) do
if value.column_index == i then
local temp = value
table.remove(frame.sort_order, index)
table.insert(frame.sort_order, 1, temp)
break
end
end
frame.sort_order[1].sort_ascending = true
getglobal(frame:GetName().."Column"..frame.sort_order[1].column_index.."SortArrow"):Show()
end
Aux.util.merge_sort(frame.content, Aux.list.row_comparator(frame))
-- -- Update the sort arrow. if frame.sort_order[1].sort_ascending then
-- if (frame.sortOrder[1].sortAscending) then getglobal(frame:GetName().."Column"..frame.sort_order[1].column_index.."SortArrow"):SetTexCoord(0, 0.5625, 0, 1.0)
-- getglobal(frame:GetName().."Column"..frame.sortOrder[1].columnIndex.."SortArrow"):SetTexCoord(0, 0.5625, 0, 1.0); else
-- else getglobal(frame:GetName().."Column"..frame.sort_order[1].column_index.."SortArrow"):SetTexCoord(0, 0.5625, 1.0, 0)
-- getglobal(frame:GetName().."Column"..frame.sortOrder[1].columnIndex.."SortArrow"):SetTexCoord(0, 0.5625, 1.0, 0); end
-- end
-- -- Update the scroll pane. Aux.list.scroll_frame_update(getglobal(frame:GetName().."ScrollFrame"))
-- ListTemplateScrollFrame_Update(getglobal(frame:GetName().."ScrollFrame"));
end end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
function ListTemplateScrollFrame_Update(frame) function Aux.list.scroll_frame_update(frame)
if (not frame) then frame = this end; if not frame then frame = this end
local parent = frame:GetParent(); local parent = frame:GetParent()
local content = parent.content; local content = parent.content
FauxScrollFrame_Update(frame, table.getn(content), parent.lines, parent.lineHeight); FauxScrollFrame_Update(frame, table.getn(content), parent.lines, parent.lineHeight)
for line = 1, parent.lines do for line = 1, parent.lines do
local item = getglobal(parent:GetName().."Item"..line); local item = getglobal(parent:GetName().."Item"..line)
local contentIndex = line + FauxScrollFrame_GetOffset(frame); local row_index = line + FauxScrollFrame_GetOffset(frame)
if contentIndex <= table.getn(content) then if row_index <= table.getn(content) then
for columnIndex = 1, MAX_COLUMNS do for column_index = 1, MAX_COLUMNS do
-- Get the text control (if any)
local text = getglobal(parent:GetName().."Item"..line.."Column"..columnIndex);
if (text) then
text:Hide();
end
-- Get the money frame (if any) local text = getglobal(parent:GetName().."Item"..line.."Column"..column_index)
local moneyFrame = getglobal(parent:GetName().."Item"..line.."Column"..columnIndex.."MoneyFrame"); -- text:Hide() TODO
if (moneyFrame) then text:SetText()
moneyFrame:Hide();
end
-- If the column exists, update it local moneyFrame = getglobal(parent:GetName().."Item"..line.."Column"..column_index.."MoneyFrame")
if (columnIndex <= table.getn(parent.physicalColumns)) then moneyFrame:Hide()
local physicalColumn = parent.physicalColumns[columnIndex];
local logicalColumn = physicalColumn.logicalColumn;
local value = logicalColumn.valueFunc(content[contentIndex]);
-- Setup the control based on the datatype if column_index <= table.getn(parent.physical_columns) then
if (value) then local physical_column = parent.physical_columns[column_index]
if (text and (logicalColumn.dataType == "Date" or logicalColumn.dataType == "Number" or logicalColumn.dataType == "String")) then local logical_column = physical_column.logical_column
text:SetText(value); local value = logical_column.getter(content[row_index])
if (logicalColumn.colorFunc) then
local color = logicalColumn.colorFunc(content[contentIndex]); if value then
text:SetTextColor(color.r, color.g, color.b); if text and (logical_column.type == "DATE" or logical_column.type == "NUMBER" or logical_column.type == "STRING") then
text:SetText(value)
if logical_column.color then
local color = logical_column.color(content[row_index])
text:SetTextColor(color.r, color.g, color.b)
else else
text:SetTextColor(255, 255, 255); text:SetTextColor(255, 255, 255)
end end
if (logicalColumn.alphaFunc) then if logical_column.alphaFunc then
text:SetAlpha(logicalColumn.alphaFunc(content[contentIndex])); text:SetAlpha(logical_column.alphaFunc(content[row_index]))
else else
text:SetAlpha(1.0); text:SetAlpha(1.0)
end end
if (logicalColumn.dataType == "Number") then if (logical_column.type == "NUMBER") then
text:SetJustifyH("RIGHT"); text:SetJustifyH("RIGHT")
else else
text:SetJustifyH("LEFT"); text:SetJustifyH("LEFT")
end end
text:Show(); text:Show()
elseif (moneyFrame and logicalColumn.dataType == "Money") then elseif moneyFrame and logical_column.type == "MONEY" then
if (value >= 0) then if value >= 0 then
MoneyFrame_Update(moneyFrame:GetName(), value); MoneyFrame_Update(moneyFrame:GetName(), value)
SetMoneyFrameColor(moneyFrame:GetName(), 255, 255, 255); SetMoneyFrameColor(moneyFrame:GetName(), 255, 255, 255)
else else
MoneyFrame_Update(moneyFrame:GetName(), -value); MoneyFrame_Update(moneyFrame:GetName(), -value)
SetMoneyFrameColor(moneyFrame:GetName(), 255, 0, 0); SetMoneyFrameColor(moneyFrame:GetName(), 255, 0, 0)
end end
if (logicalColumn.alphaFunc) then if logical_column.alphaFunc then
moneyFrame:SetAlpha(logicalColumn.alphaFunc(content[contentIndex])); moneyFrame:SetAlpha(logical_column.alphaFunc(content[row_index]))
else else
moneyFrame:SetAlpha(1.0); moneyFrame:SetAlpha(1.0)
end end
moneyFrame:Show(); moneyFrame:Show()
end end
end end
end end
end end
-- Update the row highlight -- Update the row highlight
if (parent.selectedRow and parent.selectedRow == contentIndex) then if parent.selectedRow and parent.selectedRow == row_index then
item:LockHighlight(); item:LockHighlight()
else else
item:UnlockHighlight(); item:UnlockHighlight()
end end
item:Show(); item:Show()
else else
item:Hide(); item:Hide()
end end
end end
end end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
function Aux.list.dropdown_onload() function Aux.list.dropdown_on_load()
getglobal(this:GetName().."Text"):Hide() getglobal(this:GetName().."Text"):Hide()
this.initialize = ListTemplate_DropDown_Initialize this.initialize = Aux.list.dropdown_initialize
UIDropDownMenu_SetSelectedID(this, 1) -- UIDropDownMenu_SetSelectedID(this, 1) TODO
end end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
function ListTemplate_DropDown_Initialize() function Aux.list.dropdown_initialize()
local dropdown = this:GetParent() local dropdown = this:GetParent()
local frame = dropdown:GetParent() local frame = dropdown:GetParent()
-- if (frame.physicalColumns) then
-- local physicalColumnIndex = dropdown:GetID();
-- local physicalColumn = frame.physicalColumns[physicalColumnIndex];
-- for index, value in pairs(physicalColumn.logicalColumns) do
-- local logicalColumn = value;
-- local info = {};
-- info.text = logicalColumn.title;
-- info.func = ListTemplate_DropDownItem_OnClick;
-- info.owner = dropdown;
-- UIDropDownMenu_AddButton(info);
-- end
-- end
for _, name in pairs(order) do for _, logical_column in pairs(frame.logical_columns) do
UIDropDownMenu_AddButton({ UIDropDownMenu_AddButton({
text = name, text = logical_column.title,
owner = dropdown, owner = dropdown,
func = Aux.list.dropdown_item_onclick func = Aux.list.dropdown_item_onclick
}) })
@@ -292,25 +334,21 @@ end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
function Aux.list.dropdown_item_onclick() function Aux.list.dropdown_item_onclick()
-- local logicalColumnIndex = this:GetID() local logical_column_index = this:GetID()
-- local physicalColumnIndex = this.owner:GetID() local physical_column_index = this.owner:GetID()
-- local dropdown = this.owner local dropdown = this.owner
-- local frame = dropdown:GetParent() local frame = dropdown:GetParent()
-- if (frame.physicalColumns[physicalColumnIndex].logicalColumn ~= frame.physicalColumns[physicalColumnIndex].logicalColumns[logicalColumnIndex]) then if (frame.physical_columns[physical_column_index].logical_column ~= frame.logical_columns[logical_column_index]) then
-- -- Change the physical column's logical column
-- frame.physicalColumns[physicalColumnIndex].logicalColumn = frame.physicalColumns[physicalColumnIndex].logicalColumns[logicalColumnIndex]
-- getglobal(frame:GetName().."Column"..physicalColumnIndex.."SortText"):SetText(frame.physicalColumns[physicalColumnIndex].logicalColumn.title)
-- -- Sort the content based on the new logical column frame.physical_columns[physical_column_index].logical_column = frame.logical_columns[logical_column_index]
-- CurrentListFrame = frame; getglobal(frame:GetName().."Column"..physical_column_index.."SortText"):SetText(frame.physical_columns[physical_column_index].logical_column.title)
-- table.sort(frame.content, ListTemplate_CompareRows)
-- CurrentListFrame = nil
-- -- Update the combo and scroll pane. Aux.util.merge_sort(frame.content, Aux.list.row_comparator(frame))
-- UIDropDownMenu_SetSelectedID(dropdown, logicalColumnIndex)
-- ListTemplateScrollFrame_Update(getglobal(frame:GetName().."ScrollFrame")) UIDropDownMenu_SetSelectedID(dropdown, logical_column_index)
-- end Aux.list.scroll_frame_update(getglobal(frame:GetName().."ScrollFrame"))
end
end end
+57 -128
View File
@@ -2,149 +2,93 @@
<Script file="list.lua"/> <Script file="list.lua"/>
<!-- <Button name="ListItemTemplate" hidden="true" virtual="true"> <Button name="ListItemTemplate" hidden="true" virtual="true">
<Size> <Size><AbsDimension x="776" y="16"/></Size>
<AbsDimension x="605" y="16"/>
</Size>
<Layers> <Layers>
<Layer level="BORDER"> <Layer level="BORDER">
<FontString name="$parentColumn1" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT"> <FontString name="$parentColumn1" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT">
<Size> <Size><AbsDimension x="100" y="16"/></Size>
<AbsDimension x="100" y="16"/> <Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="10" y="0"/></Offset></Anchor></Anchors>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="10" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString> </FontString>
<FontString name="$parentColumn2" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT"> <FontString name="$parentColumn2" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT">
<Size> <Size><AbsDimension x="100" y="16"/></Size>
<AbsDimension x="100" y="16"/> <Anchors><Anchor point="TOPLEFT" relativeTo="$parentColumn1" relativePoint="TOPRIGHT"><Offset><AbsDimension x="20" y="0"/></Offset></Anchor></Anchors>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentColumn1" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="20" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString> </FontString>
<FontString name="$parentColumn3" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT"> <FontString name="$parentColumn3" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT">
<Size> <Size><AbsDimension x="100" y="16"/></Size>
<AbsDimension x="100" y="16"/> <Anchors><Anchor point="TOPLEFT" relativeTo="$parentColumn2" relativePoint="TOPRIGHT"><Offset><AbsDimension x="20" y="0"/></Offset></Anchor></Anchors>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentColumn2" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="20" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString> </FontString>
<FontString name="$parentColumn4" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT"> <FontString name="$parentColumn4" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT">
<Size> <Size><AbsDimension x="100" y="16"/></Size>
<AbsDimension x="100" y="16"/> <Anchors><Anchor point="TOPLEFT" relativeTo="$parentColumn3" relativePoint="TOPRIGHT"><Offset><AbsDimension x="20" y="0"/></Offset></Anchor></Anchors>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentColumn3" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="20" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString> </FontString>
<FontString name="$parentColumn5" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT"> <FontString name="$parentColumn5" inherits="GameFontHighlight" wraponspaces="false" justifyH="LEFT">
<Size> <Size><AbsDimension x="100" y="16"/></Size>
<AbsDimension x="100" y="16"/> <Anchors><Anchor point="TOPLEFT" relativeTo="$parentColumn4" relativePoint="TOPRIGHT"><Offset><AbsDimension x="20" y="0"/></Offset></Anchor></Anchors>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentColumn4" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="20" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString> </FontString>
<FontString name="$parentColumn6" inherits="GameFontHighlight" wraponspaces="false" justifyH="RIGHT"> <FontString name="$parentColumn6" inherits="GameFontHighlight" wraponspaces="false" justifyH="RIGHT">
<Size> <Size><AbsDimension x="100" y="16"/></Size>
<AbsDimension x="100" y="16"/> <Anchors><Anchor point="TOPLEFT" relativeTo="$parentColumn5" relativePoint="TOPRIGHT"><Offset><AbsDimension x="20" y="0"/></Offset></Anchor></Anchors>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentColumn5" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="20" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString> </FontString>
</Layer> </Layer>
</Layers> </Layers>
<Frames> <Frames>
<Frame name="$parentColumn3MoneyFrame" inherits="SmallMoneyFrameTemplate"> <Frame name="$parentColumn1MoneyFrame" inherits="SmallMoneyFrameTemplate">
<Anchors> <Anchors><Anchor point="TOPRIGHT" relativeTo="$parentColumn1" relativePoint="TOPRIGHT"><Offset><AbsDimension x="10" y="0"/></Offset></Anchor></Anchors>
<Anchor point="TOPRIGHT" relativeTo="$parentColumn3" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="10" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
SmallMoneyFrame_OnLoad(); SmallMoneyFrame_OnLoad()
MoneyFrame_SetType("AUCTIONEER"); MoneyFrame_SetType("AUX_LIST")
</OnLoad>
</Scripts>
</Frame>
<Frame name="$parentColumn2MoneyFrame" inherits="SmallMoneyFrameTemplate">
<Anchors><Anchor point="TOPRIGHT" relativeTo="$parentColumn2" relativePoint="TOPRIGHT"><Offset><AbsDimension x="10" y="0"/></Offset></Anchor></Anchors>
<Scripts>
<OnLoad>
SmallMoneyFrame_OnLoad()
MoneyFrame_SetType("AUX_LIST")
</OnLoad>
</Scripts>
</Frame>
<Frame name="$parentColumn3MoneyFrame" inherits="SmallMoneyFrameTemplate">
<Anchors><Anchor point="TOPRIGHT" relativeTo="$parentColumn3" relativePoint="TOPRIGHT"><Offset><AbsDimension x="10" y="0"/></Offset></Anchor></Anchors>
<Scripts>
<OnLoad>
SmallMoneyFrame_OnLoad()
MoneyFrame_SetType("AUX_LIST")
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
<Frame name="$parentColumn4MoneyFrame" inherits="SmallMoneyFrameTemplate"> <Frame name="$parentColumn4MoneyFrame" inherits="SmallMoneyFrameTemplate">
<Anchors> <Anchors><Anchor point="TOPRIGHT" relativeTo="$parentColumn4" relativePoint="TOPRIGHT"><Offset><AbsDimension x="10" y="0"/></Offset></Anchor></Anchors>
<Anchor point="TOPRIGHT" relativeTo="$parentColumn4" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="10" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
SmallMoneyFrame_OnLoad(); SmallMoneyFrame_OnLoad()
MoneyFrame_SetType("AUCTIONEER"); MoneyFrame_SetType("AUX_LIST")
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
<Frame name="$parentColumn5MoneyFrame" inherits="SmallMoneyFrameTemplate"> <Frame name="$parentColumn5MoneyFrame" inherits="SmallMoneyFrameTemplate">
<Anchors> <Anchors><Anchor point="TOPRIGHT" relativeTo="$parentColumn5" relativePoint="TOPRIGHT"><Offset><AbsDimension x="10" y="0"/></Offset></Anchor></Anchors>
<Anchor point="TOPRIGHT" relativeTo="$parentColumn5" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="10" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
SmallMoneyFrame_OnLoad(); SmallMoneyFrame_OnLoad()
MoneyFrame_SetType("AUCTIONEER"); MoneyFrame_SetType("AUX_LIST")
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
<Frame name="$parentColumn6MoneyFrame" inherits="SmallMoneyFrameTemplate"> <Frame name="$parentColumn6MoneyFrame" inherits="SmallMoneyFrameTemplate">
<Anchors> <Anchors><Anchor point="TOPRIGHT" relativeTo="$parentColumn6" relativePoint="TOPRIGHT"><Offset><AbsDimension x="10" y="0"/></Offset></Anchor></Anchors>
<Anchor point="TOPRIGHT" relativeTo="$parentColumn6" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="10" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
SmallMoneyFrame_OnLoad(); SmallMoneyFrame_OnLoad()
MoneyFrame_SetType("AUCTIONEER"); MoneyFrame_SetType("AUX_LIST")
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
</Frames> </Frames>
</Button> --> </Button>
<Button name="ListSortButtonTemplate" virtual="true"> <Button name="ListSortButtonTemplate" virtual="true">
<Layers> <Layers>
@@ -234,7 +178,7 @@
<Frame name="$parentColumn1DropDown" inherits="UIDropDownMenuTemplate" id="1"><Anchors><Anchor point="LEFT" relativeTo="$parentColumn1Sort" relativePoint="LEFT"><Offset><AbsDimension x="-14" y="-3"/></Offset></Anchor></Anchors> <Frame name="$parentColumn1DropDown" inherits="UIDropDownMenuTemplate" id="1"><Anchors><Anchor point="LEFT" relativeTo="$parentColumn1Sort" relativePoint="LEFT"><Offset><AbsDimension x="-14" y="-3"/></Offset></Anchor></Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
Aux.list.dropdown_onload() Aux.list.dropdown_on_load()
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
@@ -248,30 +192,15 @@
</Scripts> </Scripts>
</Button> </Button>
<Frame name="$parentColumn2DropDown" inherits="UIDropDownMenuTemplate" id="2"> <Frame name="$parentColumn2DropDown" inherits="UIDropDownMenuTemplate" id="2">
<Anchors> <Anchors><Anchor point="LEFT" relativeTo="$parentColumn2Sort" relativePoint="LEFT"><Offset><AbsDimension x="-14" y="-3"/></Offset></Anchor></Anchors>
<Anchor point="LEFT" relativeTo="$parentColumn2Sort" relativePoint="LEFT">
<Offset>
<AbsDimension x="-14" y="-3"/>
</Offset>
</Anchor>
</Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
Aux.list.dropdown_onload() Aux.list.dropdown_on_load()
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
<Button name="$parentColumn3Sort" inherits="ListSortButtonTemplate"> <Button name="$parentColumn3Sort" inherits="ListSortButtonTemplate">
<Size> <Size><AbsDimension x="174" y="24"/></Size><Anchors><Anchor point="LEFT" relativeTo="$parentColumn2Sort" relativePoint="RIGHT"><Offset><AbsDimension x="-2" y="0"/></Offset></Anchor></Anchors>
<AbsDimension x="174" y="24"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentColumn2Sort" relativePoint="RIGHT">
<Offset>
<AbsDimension x="-2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts> <Scripts>
<OnClick> <OnClick>
Aux.list.sort(this:GetParent(), 3) Aux.list.sort(this:GetParent(), 3)
@@ -288,7 +217,7 @@
</Anchors> </Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
Aux.list.dropdown_onload() Aux.list.dropdown_on_load()
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
@@ -319,7 +248,7 @@
</Anchors> </Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
Aux.list.dropdown_onload() Aux.list.dropdown_on_load()
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
@@ -350,7 +279,7 @@
</Anchors> </Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
Aux.list.dropdown_onload() Aux.list.dropdown_on_load()
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
@@ -381,11 +310,11 @@
</Anchors> </Anchors>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
Aux.list.dropdown_onload() Aux.list.dropdown_on_load()
</OnLoad> </OnLoad>
</Scripts> </Scripts>
</Frame> </Frame>
<!-- <ScrollFrame name="$parentScrollFrame" inherits="FauxScrollFrameTemplate"> <ScrollFrame name="$parentScrollFrame" inherits="FauxScrollFrameTemplate">
<Anchors> <Anchors>
<Anchor point="TOPLEFT"> <Anchor point="TOPLEFT">
<Offset> <Offset>
@@ -430,10 +359,10 @@
</Layers> </Layers>
<Scripts> <Scripts>
<OnVerticalScroll> <OnVerticalScroll>
FauxScrollFrame_OnVerticalScroll(16, ListTemplateScrollFrame_Update) FauxScrollFrame_OnVerticalScroll(16, Aux.list.scroll_frame_update)
</OnVerticalScroll> </OnVerticalScroll>
</Scripts> </Scripts>
</ScrollFrame> --> </ScrollFrame>
</Frames> </Frames>
</Frame> </Frame>
</Ui> </Ui>
+70
View File
@@ -1,5 +1,11 @@
Aux.util = {} Aux.util = {}
Aux.util.LT = {}
Aux.util.EQ = {}
Aux.util.GT = {}
local merge, copy_array
function Aux.util.iter(array) function Aux.util.iter(array)
local with_index = ipairs(array) local with_index = ipairs(array)
return function() return function()
@@ -93,4 +99,68 @@ function Aux.util.set_filter(set, p)
end end
end end
return filtered return filtered
end
function Aux.util.merge_sort(A, comp)
local n = getn(A)
local B = {}
local width = 1
while width <= n do
for i=1, n, 2 * width do
merge(A, i, min(i + width, n), min(i + 2 * width - 1, n), B, comp)
end
copy_array(B, A, n)
width = 2 * width
end
end
function merge(A, start1, start2, last, B, comp)
local i1 = start1
local i2 = start2
for i=start1,last do
if i1 < start2 and (i2 > last or comp(A[i1], A[i2]) == Aux.util.LT or comp(A[i1], A[i2]) == Aux.util.EQ) then
B[i] = A[i1]
i1 = i1 + 1
else
B[i] = A[i2]
i2 = i2 + 1
end
end
end
function copy_array(A, B, n)
for i=1,n do
B[i] = A[i]
end
end
function Aux.util.invert_order(ordering)
if ordering == Aux.util.LT then
return Aux.util.GT
elseif ordering == Aux.util.GT then
return Aux.util.LT
else
return Aux.util.EQ
end
end
function Aux.util.compare(a, b, nil_ordering)
if not a and b then
return nil_ordering
elseif a and not b then
return Aux.util.invert_order(nil_ordering)
elseif not a and not b then
return Aux.util.EQ
elseif a < b then
return Aux.util.LT
elseif a > b then
return Aux.util.GT
else
return Aux.util.EQ
end
end end