# UI properties and methods UI elements in scripts are accessed through a Document instance (*document* variable) by id specified in xml. Example: print the pos property of an element with id: "worlds-panel" to the console: ```lua print(document["worlds-panel"].pos) -- or local worldsPanel = document["worlds-panel"] print(worldsPanel.pos) ``` The IDs of the elements are global for the document, that is, *worlds-panel* can be located either in the root element, and in a nested container. The element id cannot be changed from a script. The following tables will use abbreviated type descriptions, such as: - vec2 - an array of two numbers. - ivec2 - an array of two integers. - rgba - an array of four integers in the range *\[0..255\]* denoting RGBA constituent colors. Element methods, according to OOP features in Lua, are called using the `:` operator instead of `.` For example: ```lua document["worlds-panel"]:clear() ``` ## General properties and methods Properties that apply to all elements: | Title | Type | Reading | Record | Description | | ------------ | ------ | ------- | ------ | ------------------------------------------- | | id | string | yes | *no* | element id | | pos | vec2 | yes | yes | element position inside a container | | wpos | vec2 | yes | yes | element position inside the window | | size | vec2 | yes | yes | element size | | interactive | bool | yes | yes | ability to interact with the element | | enabled | bool | yes | yes | visually indicated version of *interactive* | | visible | bool | yes | yes | element visibility | | focused | bool | yes | yes | focus on element | | color | rgba | yes | yes | element color | | hoverColor | rgba | yes | yes | hover color | | pressedColor | rgba | yes | yes | color when pressed | | tooltip | string | yes | yes | tooltip text | | tooltipDelay | float | yes | yes | tooltip delay | Common element methods: | Method | Description | | ------------------- | ----------------------------------------------------------------------- | | moveInto(container) | moves the element to the specified container (the element is specified, not the id) | | destruct() | removes element | ## Containers Common methods for containers (elements: container, panel, button, pagebox): | Method | Description | | ------------------------------- | ------------------------------------------------------------------ | | clear() | clears content | | add(xml) | adds an element, creating it using xml code. Example: `container:add("")` | | setInterval(interval, callback) | assigns a function to be executed repeatedly at an interval specified in milliseconds | ## Textbox Properties: | Title | Type | Reading | Record | Description | | ----------- | ------ | ------- | ------ | ------------------------------------------------------------------------------------ | | text | string | yes | yes | entered text or placeholder | | placeholder | string | yes | yes | placeholder (used if nothing has been entered) | | caret | int | yes | yes | carriage position. `textbox.caret = -1` will set the position to the end of the text | | editable | bool | yes | yes | text mutability | | multiline | bool | yes | yes | multiline support | | textWrap | bool | yes | yes | automatic text wrapping (only with multiline: "true") | | valid | bool | yes | no | is the entered text correct | Methods: | Method | Description | | ----------- | -------------------------------------------- | | paste(text) | inserts the specified text at the caret position | ## Slider (trackbar) Properties: | Title | Type | Reading | Record | Description | | ---------- | ----- | ------- | ------ | --------------------- | | value | float | yes | yes | current value | | min | float | yes | yes | minimum value | | max | float | yes | yes | maximum value | | step | float | yes | yes | division step | | trackWidth | float | yes | yes | control element width | | trackColor | rgba | yes | yes | control element color | ## Menu (pagebox) Properties: | Title | Type | Reading | Record | Description | | -------- | ------ | ------ | ------ | ---------------- | | page | string | yes | yes | current page | Methods: | Method | Description | | ------- | ------------------------------------------ | | back() | switches to previous page | | reset() | resets page and switching history | ## Checkbox Properties: | Title | Type | Reading | Record | Description | | -------- | ---- | ------ | ------ | ----------------- | | checked | bool | yes | yes | mark status | ## Button Properties: | Title | Type | Reading | Record | Description | | -------- | ------ | ------ | ------ | ------------ | | text | string | yes | yes | button text | ## Label Properties: | Title | Type | Reading | Record | Description | | -------- | ------ | ------ | ------ | ----------- | | text | string | yes | yes | label text | ## Image Properties: | Title | Type | Reading | Record | Description | | ----- | ------ | ------- | ------ | ------------ | | src | string | yes | yes | texture name | ## Inventory Properties: | Title | Type | Reading | Record | Description | | --------- | ---- | ------- | ------ | ------------------------------------------------- | | inventory | int | yes | yes | id of the inventory to which the element is bound |