======Widget======
----
A **widget** is a UI component such as the [[inventory]] window or [[item container]] window. A widget's layout is grid-based and contains child elements that either display information to the player (e.g. the player's health or description of a quest) or allow the player to interact with them (e.g. a button that triggers a [[script]] or a slot for placing an [[item]] into). Custom widgets can be created in the [[Widget Editor]].
Custom widgets can be displayed in-game using the [[Show Widget]] scripting function. You can also add them to the [[management screen]] by adding their IDs to the comma-separated list of widgets in the "Experimental" section of your [[Game Configuration]].
=====Scripting=====
You can access and change certain element properties from within a [[script]] by simply referencing the parent [[widget]] and the child element by their unique IDs. The following example code assumes there is a [[widget]] with an ID of "test", and it contains a [[text field]] with an ID of "0001" and a [[button]] with an ID of "0002".
This script will close the [[widget]], store the text that was entered into the [[text field]] into a variable, then display a message to the player using their name.
hide_widget("test");
$name = widget["test"].element["0001"].text;
display_message("Hello, " + $name + "!");
This script will change the text of the [[button]] to "New Text".
widget["test"].element["0002"].text = "New Text";
~~NOTOC~~