Getting Started =============== Before actually getting started, it is important to understand the motivation and mechanics behind SUIT: - **Immediate mode is better than retained mode** - **Layout should not care about content** - **Less is more** Immediate mode? --------------- With classical (retained) mode libraries you typically have a stage where you create the whole UI when the program initializes. This includes what happens when events like button presses or slider changes occur. After that point, the GUI is expected to not change very much. This is great for word processors where the interaction is consistent and straightforward, but bad for games, where everything changes all the time. With immediate mode libraries, on the other hand, the GUI is created every frame from scratch. Because that would be wasteful, there are no widget objects. Instead, widgets are created by functions that react to UI state and present some data. Where this data comes from and how it is maintained does not concern the widget at all. This is, after all, your job. This gives great control over what is shown where and when. The widget code can be right next to the code that does what should happen if the widget state changes. The layout is also very flexible: adding a widget is one more function call, and if you want to hide a widget, you simply don't call the corresponding function. This separation of data and behaviour is great when a lot of stuff is going on, but takes a bit of time getting used to. What SUIT is ^^^^^^^^^^^^ SUIT is simple: It provides only a few basic widgets that are important for games: - :func:`Buttons