LUADOC - Farming Simulator 19

Script v1.7.1.0

Engine v1.7.1.0

Foundation Reference

PagingElement

Description
Paging control element. Organizes grouped elements into pages to be displayed one at a time. To set it up, one defines several same-sized container elements (e.g. bare GuiElement) as children of the PagingElement to hold the pages' contents. The pages should be given #name properties which are resolved to a localization text with a prepended "ui_" prefix. On loading, any named child element of this PagingElement will be added as a page.
Parent
GuiElement
XML Configuration Parameters
GuiElement#onPageChangecallback [optional] onPageChangeCallback(pageIndex, pageMappingIndex, element) Called when the page changes. Receives the current index in all pages, the current index in all enabled pages and this element.
GuiElement#onPageUpdatecallback [optional] onPageUpdateCallback(pageInfo) Called when a page is disabled. Receives the page information {id=[index], mappingIndex=[mappingIndex], idName=[elementId], element=[element], title=[title], disabled=[true/false]}

Functions

addElement

Description
Definition
addElement()
Code
97function PagingElement:addElement(element)
98 PagingElement:superClass().addElement(self, element)
99 if element.name ~= nil and g_i18n:hasText("ui_"..element.name) then
100 self:addPage(string.upper(element.name), element, g_i18n:getText("ui_"..element.name))
101 else
102 self:addPage(tostring(element), element, "")
103 end
104end

copyAttributes

Description
Definition
copyAttributes()
Code
54function PagingElement:copyAttributes(src)
55 PagingElement:superClass().copyAttributes(self, src)
56 self.onPageChangeCallback = src.onPageChangeCallback
57 self.onPageUpdateCallback = src.onPageUpdateCallback
58
59 GuiMixin.cloneMixin(IndexChangeSubjectMixin, src, self)
60end

getCurrentPageId

Description
Get the page ID of the currently displayed page.
Definition
getCurrentPageId()
Code
229function PagingElement:getCurrentPageId()
230 return self.pages[self.currentPageIndex].id
231end

getIsPageDisabled

Description
Determine if a page, identified by page ID, is disabled.
Definition
getIsPageDisabled()
Code
241function PagingElement:getIsPageDisabled(pageId)
242 return self.idPageHash[pageId].disabled
243end

getPageById

Description
Get a page by ID.
Definition
getPageById()
Code
247function PagingElement:getPageById(pageId)
248 return self.idPageHash[pageId]
249end

getPageMappingIndex

Description
Get the index of a page in the page mappings (only visible pages) by page ID.
Definition
getPageMappingIndex()
Code
235function PagingElement:getPageMappingIndex(pageId)
236 return self.idPageHash[pageId].mappingIndex
237end

loadFromXML

Description
Definition
loadFromXML()
Code
45function PagingElement:loadFromXML(xmlFile, key)
46 PagingElement:superClass().loadFromXML(self, xmlFile, key)
47
48 self:addCallback(xmlFile, key .. "#onPageChange", "onPageChangeCallback")
49 self:addCallback(xmlFile, key .. "#onPageUpdate", "onPageUpdateCallback")
50end

new

Description
Definition
new()
Code
23function PagingElement:new(target, custom_mt)
24 if custom_mt == nil then
25 custom_mt = PagingElement_mt
26 end
27
28 local self = GuiElement:new(target, custom_mt)
29 self:include(IndexChangeSubjectMixin)-- add index change subject mixin for paging observers
30
31 self.pageIdCount = 1
32
33 self.pages = {} -- list of pages
34 self.idPageHash = {} -- hash of page ID to actual page
35 self.pageMapping = {} -- map of visible page indices to all page indices
36
37 self.currentPageIndex = 1
38 self.currentPageMappingIndex = 1
39
40 return self
41end

onGuiSetupFinished

Description
Definition
onGuiSetupFinished()
Code
64function PagingElement:onGuiSetupFinished()
65 PagingElement:superClass().onGuiSetupFinished(self)
66 self:updatePageMapping()
67end

removeElement

Description
Definition
removeElement()
Code
222function PagingElement:removeElement(element)
223 PagingElement:superClass().removeElement(self, element)
224 self:removePageByElement(element) -- also remove any page using that element as its root node
225end

setPageDisabled

Description
Definition
setPageDisabled()
Code
253function PagingElement:setPageDisabled(page, disabled)
254 if page ~= nil then
255 page.disabled = disabled
256 self:updatePageMapping()
257 self:raiseCallback("onPageUpdateCallback", page, self)
258 end
259end

updatePageMapping

Description
Definition
updatePageMapping()
Code
272function PagingElement:updatePageMapping()
273 self.pageMapping = {}
274 self.pageTitles = {}
275 local currentPage = self.pages[self.currentPageIndex]
276
277 for i, page in ipairs(self.pages) do
278 if not page.disabled then
279 table.insert(self.pageMapping, i)
280 table.insert(self.pageTitles, page.title)
281 page.mappingIndex = #self.pageMapping
282 else
283 if page == currentPage then
284 -- force page resetting
285 currentPage = nil
286 end
287 page.mappingIndex = 1
288 end
289 end
290
291 if currentPage == nil then
292 self.currentPageMappingIndex = MathUtil.clamp(self.currentPageMappingIndex, 1, #self.pageMapping)
293 if self.currentPageMappingIndex > 0 then
294 self:setPage(self.currentPageMappingIndex)
295 end
296 else
297 self:notifyIndexChange(self.currentPageMappingIndex, #self.pageMapping) -- notify change in number of pages
298 end
299end