I'm trying to make a scroll list with columns.
I started by downloading "ScrollListExample" addon, which didn't work.
I fixed it by comparing it's code to MailR. Then it worked.
Then I copied the code into my add-on and I'm getting this error:
Here's my code:
Code:
UI_OrdersList = ZO_SortFilterList:Subclass()
UI_OrdersList.defaults = {}
UI_OrdersList.SORT_KEYS = {
["name"] = {},
["race"] = {tiebreaker="name"},
["class"] = {tiebreaker="name"},
["zone"] = {tiebreaker="name"}
}
function UI_OrdersList:New()
local units = ZO_SortFilterList.New(self, HotepCGS_UI_main)
units.masterList = {}
ZO_ScrollList_AddDataType(units.list, 1, "HotepCGS_UI_main_OrdersList_Row", 30, function(control, data) self:SetupOrderRow(control, data) end)
ZO_ScrollList_EnableHighlight(units.list, "ZO_ThinListHighlight")
units.sortFunction = function(listEntry1, listEntry2)
return ZO_TableOrderingFunction(listEntry1.data, listEntry2.data, units.currentSortKey, UI_OrdersList.SORT_KEYS, units.currentSortOrder)
end
units:RefreshData()
return units
end
function UI_OrdersList:SetupOrderRow(rowControl, data)
rowControl.data = data
rowControl.name = GetControl(rowControl, "Name")
rowControl.race = GetControl(rowControl, "Race")
rowControl.class = GetControl(rowControl, "Class")
rowControl.zone = GetControl(rowControl, "Zone")
rowControl.name:SetText(data.name)
rowControl.race:SetText(data.race)
rowControl.class:SetText(data.class)
rowControl.zone:SetText(data.zone)
local DEFAULT_TEXT = ZO_ColorDef:New(0.4627, 0.737, 0.7647, 1)
rowControl.name.normalColor = DEFAULT_TEXT
rowControl.race.normalColor = DEFAULT_TEXT
rowControl.class.normalColor = DEFAULT_TEXT
rowControl.zone.normalColor = DEFAULT_TEXT
ZO_SortFilterList.SetupRow(self, rowControl, data)
end
function UI_OrdersList:BuildMasterList()
self.masterList = HotepCGS.GetOrdersList()
end
function UI_OrdersList:FilterScrollList()
local scrollData = ZO_ScrollList_GetDataList(self.list)
ZO_ClearNumericallyIndexedTable(scrollData)
for i = 1, #self.masterList do
local data = self.masterList[i]
table.insert(scrollData, ZO_ScrollList_CreateDataEntry(1, data))
end
end
function UI_OrdersList:SortScrollList()
local scrollData = ZO_ScrollList_GetDataList(self.list)
table.sort(scrollData, self.sortFunction)
end
function UI_OrdersList:Refresh()
self:RefreshData()
end
function HotepCGS.test3()
SCENE_MANAGER:ToggleTopLevel(HotepCGS_UI_main)
end
function HotepCGS.MainMenuSwitch(orderstatus)
local headings = {
[ORDER_STATUS_WAITING] = "Viewing all Waiting orders",
[ORDER_STATUS_CLAIMED] = "Viewing all Claimed orders",
[ORDER_STATUS_DELIVERED] = "Viewing all Delivered orders",
}
HotepCGS_UI_main_OrdersHeading:SetText(headings[orderstatus])
HotepCGS.UI_OrdersList:Refresh()
end
function HotepCGS.GetOrdersList(orderstatus)
local dataItems = {}
for emoteIndex=1, GetNumEmotes() do
local emoteSlashName, emoteCategory, emoteId = GetEmoteInfo(emoteIndex)
-- Organize your data for each item inside of a table
local data = {
name = string.sub(emoteSlashName,2),
race = tostring(emoteId),
class = tostring(emoteCategory),
zone = tostring(emoteIndex),
}
-- and use table.insert to put them into the dataItems table
table.insert(dataItems, data)
end
return dataItems
end
function HotepCGS.OnOrderSelect(control, button, upInside)
d(control.data)
end
function HotepCGS.InitOrdersList()
SCENE_MANAGER:RegisterTopLevel(HotepCGS_UI_main, false)
HotepCGS.UI_OrdersList = UI_OrdersList:New()
HotepCGS.MainMenuSwitch(ORDER_STATUS_WAITING)
end
function HotepCGS:Initialize()
EVENT_MANAGER:RegisterForEvent(self.name, EVENT_PLAYER_ACTIVATED, function()
EVENT_MANAGER:UnregisterForEvent(self.name, EVENT_PLAYER_ACTIVATED)
msgWithName("Loaded.")
HotepCGS.InitOrdersList()
end
)
-- ... other stuff ...
end
function HotepCGS.OnAddOnLoaded(event, addonName)
if (addonName == HotepCGS.name) then
EVENT_MANAGER:UnregisterForEvent(HotepCGS.name, EVENT_ADD_ON_LOADED)
math.randomseed(GetTimeStamp())
HotepCGS:Initialize()
end
end
EVENT_MANAGER:RegisterForEvent(HotepCGS.name, EVENT_ADD_ON_LOADED, HotepCGS.OnAddOnLoaded)
Code:
<GuiXml>
<Controls>
<TopLevelControl name="HotepCGS_UI_main" mouseEnabled="true" movable="true" clampedToScreen="true" hidden="true">
<Dimensions x="750" y="800" />
<Anchor point="CENTER" />
<Controls>
<Backdrop name="$(parent)_BG" inherits="ZO_DefaultBackdrop" />
<Label name="$(parent)_WindowTitle" font="ZoFontWindowTitle" text="|c3366ffHotep|r |cff6633Crafting Guild Service|r">
<Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" />
</Label>
<Texture name="$(parent)_TopDivider" textureFile="/esoui/art/miscellaneous/horizontaldivider.dds" tier="HIGH">
<Dimensions x="800" y="4"/>
<Anchor point="TOP" relativeTo="$(parent)" offsetY="38" />
</Texture>
<Button name="$(parent)_Button_Close" inherits="ZO_ButtonBehaviorClickSound">
<Dimensions x="40" y="40" />
<Anchor point="TOPRIGHT" relativeTo="$(parent)" relativePoint="TOPRIGHT" offsetX="15" />
<Textures normal="EsoUI/Art/Buttons/closebutton_up.dds"
pressed="EsoUI/Art/Buttons/closebutton_down.dds"
mouseOver="EsoUI/Art/Buttons/closebutton_mouseover.dds"
disabled="EsoUI/Art/Buttons/closebutton_disabled.dds"/>
<OnClicked>
HotepCGS.test3()
</OnClicked>
</Button>
<Button name="$(parent)_Button_Waiting" inherits="ZO_DefaultButton" text="Waiting Orders">
<Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="30" offsetY="46" />
<OnClicked>
HotepCGS.MainMenuSwitch("waiting")
</OnClicked>
</Button>
<Button name="$(parent)_Button_Claimed" inherits="ZO_DefaultButton" text="Claimed Orders">
<Anchor point="TOP" relativeTo="$(parent)" relativePoint="TOP" offsetX="0" offsetY="46" />
<OnClicked>
HotepCGS.MainMenuSwitch("claimed")
</OnClicked>
</Button>
<Button name="$(parent)_Button_Delivered" inherits="ZO_DefaultButton" text="Delivered Orders">
<Anchor point="TOPRIGHT" relativeTo="$(parent)" relativePoint="TOPRIGHT" offsetX="-30" offsetY="46" />
<OnClicked>
HotepCGS.MainMenuSwitch("delivered")
</OnClicked>
</Button>
<Label name="$(parent)_OrdersHeading" font="ZoFontHeader4" text="">
<Anchor point="TOP" relativeTo="$(parent)_Button_Claimed" relativePoint="BOTTOM" offsetY="6" />
<Dimensions x="700" />
</Label>
<Control name="$(parent)_OrdersListHeaders">
<Anchor point="TOPLEFT" relativeTo="$(parent)_OrdersHeading" relativePoint="BOTTOMLEFT" offsetX="0" offsetY="16"/>
<Dimensions y="32" />
<Controls>
<Control name="$(parent)Name" inherits="ZO_SortHeader">
<OnInitialized>
ZO_SortHeader_Initialize(self, "Name", "name", ZO_SORT_ORDER_DOWN, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold")
</OnInitialized>
<Anchor point="TOPLEFT" />
<Dimensions x="128" y="32" />
</Control>
<Control name="$(parent)Race" inherits="ZO_SortHeader">
<OnInitialized>
ZO_SortHeader_Initialize(self, "Race", "status", ZO_SORT_ORDER_DOWN, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold")
</OnInitialized>
<Anchor point="TOPLEFT" relativeTo="$(parent)Name" relativePoint="TOPRIGHT"/>
<Dimensions x="128" y="32" />
</Control>
<Control name="$(parent)Class" inherits="ZO_SortHeader">
<OnInitialized>
ZO_SortHeader_Initialize(self, "Class", "rankName", ZO_SORT_ORDER_DOWN, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold")
</OnInitialized>
<Anchor point="TOPLEFT" relativeTo="$(parent)Race" relativePoint="TOPRIGHT" />
<Dimensions x="128" y="32" />
</Control>
<Control name="$(parent)Zone" inherits="ZO_SortHeader">
<OnInitialized>
ZO_SortHeader_Initialize(self, "Zone", "recipient", ZO_SORT_ORDER_UP, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold")
</OnInitialized>
<Anchor point="TOPLEFT" relativeTo="$(parent)Class" relativePoint="TOPRIGHT" />
<Dimensions x="128" y="32" />
</Control>
</Controls>
</Control>
<Control name="$(parent)_OrdersList" inherits="ZO_ScrollList">
<Anchor point="TOPLEFT" relativeTo="$(parent)_OrdersListHeaders" relativePoint="BOTTOMLEFT" />
<Dimensions x="700" y="650" />
</Control>
</Controls>
</TopLevelControl>
<Button name="HotepCGS_UI_main_OrdersList_Row" virtual="true">
<Dimensions y="30" />
<Anchor point="RIGHT" relativeTo="$(parent)" />
<OnMouseEnter>
HotepCGS.UI_OrdersList:Row_OnMouseEnter(self)
</OnMouseEnter>
<OnMouseExit>
HotepCGS.UI_OrdersList:Row_OnMouseExit(self)
</OnMouseExit>
<OnMouseUp>
HotepCGS.OnOrderSelect(self, button, upInside)
</OnMouseUp>
<Controls>
<Label name="$(parent)Name" font="ZoFontWinH4" wrapMode="ELLIPSIS">
<Anchor point="TOPLEFT" relativeTo="$(parent)" />
<Dimensions x="128" y="32" />
</Label>
<Label name="$(parent)Race" font="ZoFontWinH4" wrapMode="ELLIPSIS">
<Anchor point="TOPLEFT" relativeTo="$(parent)Name" relativePoint="TOPRIGHT" />
<Dimensions x="128" y="32" />
</Label>
<Label name="$(parent)Class" font="ZoFontWinH4" wrapMode="ELLIPSIS">
<Anchor point="TOPLEFT" relativeTo="$(parent)Race" relativePoint="TOPRIGHT" />
<Dimensions x="128" y="32" />
</Label>
<Label name="$(parent)Zone" font="ZoFontWinH4" wrapMode="ELLIPSIS">
<Anchor point="TOPLEFT" relativeTo="$(parent)Class" relativePoint="TOPRIGHT" />
<Dimensions x="128" y="32" />
</Label>
</Controls>
</Button>
</Controls>
</GuiXml>
Please Help. I've been pulling my hair out for a week.