The development of QubeGUI is modular—each Python file can be run on its own. The main Python script (qube.py) refers to the other Python files.
Signals are used to communicate between the different GUI components so that the components are are not codependent on each other. For example, the jobList panel sends a "job selection changed" signal so that the panels registered to that signal receive the message. Currently there are 2 main types of signals: itemselectionChanged and _item_cacheChanged.
A separate thread is used to communicate with the Supervisor so that the GUI does not block while waiting for return messages. A request is placed in a Queue that is then processed by a separate thread (or threads) on the most recently entered first (FILO or First-In-Last-Out).