Scripting:User Interface
While the Gui Module provides individual widgets and container classes to arrange them, the actual GUI needs to be created on Python side. To help with that, an overview is provided below. For more details, consult the API documentation.
Widgets
Unlike most GUI toolkits you might know, the widgets provided by Adonthell do not have a default look. Instead, an artist will have to provide the skin used to represent a widget. On the bright side, each instance of a widget can have its own skin, so you should be able to implement a GUI that suits the look and feel of your game. Keeping that in mind, the steps to create a widget are no surprise:
mywidget = widget (<width>, <height>) mywidget.set_style ("<skin>.xml")
At present, the following widgets are available:
Widget Hierarchy | Description |
[+] widget | Base class for all widgets. Not much use on its own. |
-- [+] canvas | Displays any kind of drawable, usually an image or sprite. |
-- [+] indicatorbar | Displays progress or other percentages. |
-- [+] label | Displays one or more lines of text. |
-- -- [+] button | A label that can receive focus and react to user events. |
-- -- -- [+] option | A button with two possible states. |
-- -- [+] textbox | An element where the user can type in text. |
Layouts
In order to group widgets and display them to the user, they have to be added to a layout first. As layouts are also widgets, they can get their own individual skin to turn them into toplevel windows or list items of another layout. At present, the following layouts are available:
Layout Hierarchy | Description |
[+] widget | Base class for all layouts. Not much use on its own. |
-- [+] layout | Layout where widgets can be freely placed. |
-- -- [+] scrollview | Layout that can have one child, which it can scroll to show hidden parts. |
-- -- [+] listview | Layout to automatically arrange children in a vertical or horizontal list. |
Window Manager
To actually display a layout to the user, it has to be added to the static window_manager instance. This can be used to control focus and z-order if multiple layouts are onscreen at once.