[[PageOutline(1-5, Contents)]] = API Reference = This is mostly the same as the Python page. For only the differences with Python, see LINK HERE How to read: For methods, on the left is the return type, then a space, then the name of the method. In the parenthesis will be a comma separated list of parameters with a type, then a space, then a hopefully descriptive name. For properties, there will be a type to the left in parenthesis. Get and/or Set access are indicated in the last sentence. Types should be easy to decipher, with an exception where ''{}'' means a table and ''void'' means no type. Table examples: {} = see the text for more info[[br]] {type} = array of type objects[[br]] {k=k_type,v=v_type} = table with k_type keys and v_type values == rocket Table == `Context `'''CreateContext'''(`string` ''name'', `Vector2i` ''dimensions''):: Creates and returns a new context called ''name'', with initial dimensions of ''dimensions''. The name of the context must be unique; if it is not, ''nil'' will be returned `bool `'''LoadFontFace'''(`string` ''font_path''):: Loads the font face at ''font_path''. The function will return true if the font face was loaded, false if not. `void `'''RegisterTag'''(`string` ''tag_name'', `ElementInstancer` ''instancer''):: Registers a [wiki:documentation/LuaManual/ElementInstancer ElementInstancer] to instance when a specific XML tag is encountered in an RML file. '''contexts'''` `(`{}`):: A table of the active libRocket contexts. It can be indexed by string (in which case the context with the matching name is returned), or number (in which case the nth context is returned). == Basic Types == '''class''' [wiki:documentation/LuaManual/Vectors Vector2i]:: A two-dimensional integral vector. '''class''' [wiki:documentation/LuaManual/Vectors Vector2f]:: Constructs a two-dimensional floating-point vector. '''class''' [wiki:documentation/LuaManual/Colours Colourb]:: A colour with four channels, each from 0 to 255. '''class''' [wiki:documentation/LuaManual/Colours Colourf]:: A colour with four channels, each from 0 to 255. == Log == `void `'''Message'''(`logtype` ''type'', `string` ''message''):: Sends a log message to libRocket (and the attached debugger if present). This is not called from an instance of a Log object, just ''Log.Message''.[[br]] type should be one of: * Log.logtype.always * Log.logtype.error * Log.logtype.warning * Log.logtype.info * Log.logtype.debug == DataSource == Abstract DataSource Interface. Create one by calling ''DataSource.new'', and set the ''GetNumRows'' and ''GetRow'' functions to a Lua function that fits the specification. `DataSource `'''new'''(`string` ''name''):: Create a new DataSource object for use in Lua. `void `'''NotifyRowAdd'''(`string` ''table_name'', `int` ''first_row_added'', `int` ''num_rows_added''):: Notify listeners that rows have been added to the data source. `void `'''NotifyRowRemove'''(`string` ''table_name'', `int` ''first_row_removed'', `int` ''num_rows_removed''):: Notify listeners that rows have been removed from the data source. `void `'''NotifyRowChange'''(`string` ''table_name'', `int` ''first_row_changed'', `int` ''num_rows_changed''):: Notify listeners that rows have been changed on the data source. `void `'''NotifyRowChange'''(`string` ''table_name''):: Notify listeners that all rows on the data source have changed. `int `'''GetNumRows''' = function(`string` ''table_name''):: To be set in Lua; return the number of rows in the given table. `{string} `'''GetRow''' = function(`string` ''table_name'', `int` ''index'', `{string}` ''columns'') :: To be set in Lua; return a table of the values of the columns in string form. == Element == The ''Element'' global table contains a table named ''As'', where you would find the child types of ''Element'' to cast to. For example, if you are using RocketControls, to convert an element from an event to an ''ElementFormControlInput'', you could put `local input = Element.As.ElementFormControlInput(element)`. The ''Element'' class has no constructor; it must be instantiated through a ''[wiki:documentation/LuaManual/APIReference#Document Document]'' object instead. It has the following methods and properties: `void `'''AddEventListener'''(`string` ''event'', `string` OR `function` ''listener''[, `bool` ''in_capture_phase'']):: Attaches ''listener'' to this element, listening for occurrences of ''event'' in either the bubble or capture phase. If not specified, ''in_capture_phase'' will default to false. [wiki:documentation/LuaManual/AttachingToEvents See also][[br]]''NOTE: Events added from Lua cannot be removed.'' `void `'''AppendChild'''(`Element` ''element''):: Appends ''element'' as a child to this element. `void `'''Blur'''():: Removes input focus from this element. `void `'''Click'''():: Fakes a click on this element. `void `'''DispatchEvent'''(`string` ''event'', `{}` ''parameters'', `bool` ''interruptible''):: Dispatches an event to this element. The event is of type ''event''. Parameters to the event are given in the table ''parameters''; the table must only contain string keys and floating-point, integer, boolean, Lua userdata, or string values. ''interruptible'' determines if the event can be forced to stop propagation early. `void `'''Focus'''():: Gives input focus to this element. ''[wiki:documentation/LuaManual/Variant variant]''` `'''GetAttribute'''(`string` ''name''):: Returns the value of the attribute named ''name''. If no such attribute exists, the empty string will be returned. `Element `'''GetElementById'''(`string` ''id''):: Returns the descendant element with an id of ''id''. `{`Element} `'''GetElementsByTagName'''(`string` ''tag_name''):: Returns a list of all descendant elements with the tag of ''tag_name''. `bool `'''HasAttribute'''(`string` ''name''):: Returns True if the element has a value for the attribute named ''name'', False if not. `bool `'''HasChildNodes'''():: Returns True if the element has at least one child node, false if not. `void `'''InsertBefore'''(`Element` ''element'', `Element` ''adjacent_element''):: Inserts the element ''element'' as a child of this element, directly before ''adjacent_element'' in the list of children. ''bool''` `'''IsClassSet'''(''string name''):: Returns true if the class ''name'' is set on the element, false if not. ''void''` `'''RemoveAttribute'''(''name''):: Removes the attribute named ''name'' from the element. ''bool''` `'''RemoveChild'''(''Element element''):: Removes the child element ''element'' from this element. ''void''` `'''ReplaceChild'''(''Element inserted_element'', ''Element replaced_element''):: Replaces the child element ''replaced_element'' with ''inserted_element'' in this element's list of children. If ''replaced_element'' is not a child of this element, ''inserted_element'' will be appended onto the list instead. ''void''` `'''ScrollIntoView'''(''bool align_with_top''):: Scrolls this element into view if its ancestors have hidden overflow. If ''align_with_top'' is True, the element's top edge will be aligned with the top (or as close as possible to the top) of its ancestors' viewing windows. If False, its bottom edge will be aligned to the bottom. ''void''` `'''SetAttribute'''(''string name'', ''string value''):: Sets the value of the attribute named ''name'' to ''value''. ''void''` `'''SetClass'''(''string name'', ''bool value''):: Sets (if ''value'' is true) or clears (if ''value'' is false) the class ''name'' on the element. '''attributes'''` `(`{k`=''string'',`v`=''[wiki:documentation/LuaManual/Variant variant]''`}`):: The array of attributes on the element. Read-only [wiki:documentation/LuaManual/ProxyTables proxy table]. '''child_nodes'''` `(`{`''Element''`}`):: The array of child nodes on the element. Read-only. '''class_name'''` `(''string''):: The space-separated list of classes on the element. Read & write. '''client_left'''` `(''float''):: The distance between the left border edge and the left client edge of the element. Read-only. '''client_height'''` `(''float''):: The height of the element's client area. Read-only. '''client_top'''` `(''float''):: The distance between the top border edge and the top client edge of the element. Read-only. '''client_width'''` `(''float''):: The width of the element's client area. Read-only. '''first_child'''` `(''Element''):: The first child of the element, or nil if the client has no children. Read-only. '''id'''` `(''string''):: The ID of the element, or the empty string if the element has no ID. Read & write. '''inner_rml'''` `(''string''):: The element's RML content. Read & write. '''last_child'''` `(''Element''):: The last child of the element, or nil if the client has no children. Read-only. '''next_sibling'''` `(''Element''):: The element's next sibling, or None if it is the last sibling. Read-only. '''offset_height'''` `(''float''):: The height of the element, excluding margins. Read-only. '''offset_left'''` `(''float''):: The distance between the element's offset parent's left border edge and this element's left border edge. Read-only. '''offset_parent'''` `(''Element''):: The element's offset parent. Read only. '''offset_top'''` `(''float''):: The distance between the element's offset parent's top border edge and this element's top border edge. Read-only. '''offset_width'''` `(''float''):: The width of the element, excluding margins. Read-only. '''owner_document'''` `(''Document''):: The document this element is part of. Read-only. '''parent_node'''` `(''Element''):: The element this element is directly parented to. Read-only. '''previous_sibling''':: The element's previous sibling, or nil if it is the first sibling. Read-only. '''scroll_height'''` `(''float''):: The height of this element's content. This will be at least as high as the client height. Read-only. '''scroll_left'''` `(''float''):: The offset between the left edge of this element's client area and the left edge of the content area. Read & write. '''scroll_top'''` `(''float''):: The offset between the top edge of this element's client area and the top edge of the content area. Read & write. '''scroll_width'''` `(''float''):: The width of this element's content. This will be at least as wide as the client width. Read-only. '''style'''` `(`{k=`''string'',`v=`''string''`}`):: An object used to access this element's style information. Read & write [wiki:documentation/LuaManual/ProxyTables proxy table]. '''tag_name'''` `(''string''):: The tag name used to instance this element. Read-only. == ElementText == ''ElementText'' derives from ''Element''. ''ElementText'' is an interface, and therefore cannot be instanced directly. A concrete ''ElementText'' must be instantiated through a ''[wiki:documentation/LuaManual/APIReference#Document Document]'' object instead. It has the following property: '''text'''` `(''string''):: The raw text content of the text element in UTF-8 encoding. == Document == ''Document'' derives from ''Element''. ''Document'' has no constructor; it must be instantiated through a ''[wiki:documentation/PythonManual/APIReference#Context Context]'' object instead, either by loading an external RML file or creating an empty document. It has the following methods and properties: ''void''` `'''PullToFront'''():: Pulls the document in front of other documents within its context with a similar z-index. ''void''` `'''PushToBack'''():: Pushes the document behind other documents within its context with a similar z-index. ''void''` `'''Show'''([''flags'']):: Shows the document. ''flags'' is either ''Document.NONE'', ''Document.FOCUS'' or ''Document.MODAL''. ''flags'' defaults to ''Document.FOCUS''. ''void''` `'''Hide'''():: Hides the document. ''void''` `'''Close'''():: Hides and closes the document, destroying its contents. ''Element''` `'''CreateElement'''(''tag_name''):: Instances an element with a tag of ''tag_name''. ''ElementText''` `'''CreateTextNode'''(''text''):: Instances a text element containing the string ''text''. '''title'''` `(''string''):: The title of the document, as initially set by the