The modo user interface is broken down into a few key components. Many of these are available to plug-ins, although some are not as yet.
Layouts are the root level of the Frames System. A layout contains and organizes viewports around resizable dividers. Layouts can be nested into sub-frames, can be arranged into tabs, or can be placed in different windows.
Viewports represent a specific targeted module for interacting with the user, and are managed by the Frames System. The Item List, 3D Viewport, and Form View are examples of viewports. Viewports may contain OpenGL views, controls, trees, or any combination thereof. Viewports are not currently available as an extensible part of modo through the SDK.
The various properties forms in the user interface in modo are defined through the Form System. This system uses commands grouped into forms to populate Form View viewports. Forms are stored in configs and can be edited through the Form Editor. How the control is defined and how it is added to the form determines the kind of control that is created. Scripts and plug-ins will most often create their user interfaces by adding commands to Form Views, either through User Values or, in the case of plug-ins, by defining their own custom commands.
The Card View provides an image-based approach to user interfaces. Usually reserved for very specific layouts and image-centric designs, it allows regions on an image to be associated with commands. Card sets are created by hand-editing configs and placing them in a Card View viewport.
There are a few ways to create a dialog in modo. Executing a command may open a command dialog to get argument values from the user. Simple confirmation dialogs can be created with the dialog commands. These can also be used to open common system dialogs like file load/save, directory chooser and color picker dialogs.
Third Party User Interfaces
Some scripting languages can provide their own libraries that can be used to create modal user interfaces. These are not supported directly by modo, and it is preferred that you use Form Views and other supported mechanisms for your user interface, but they are an option if it's something you're interested in using.