# Viewer Modules¶

Viewer modules appear as either QDockWidgets or QWidgets to the user. They must consist of a main ModuleGUI class which inherits from either QDockWidget or QWidget. They can utilize any additional python modules, classes, etc.

## Instructions¶

1. Create a directory plugins directory if you don’t have one. If you are using a snap installation this has to be within your home folder. Set this plugins directory in the System Configuration. This directory can contain as many custom modules as you want. All python modules within the plugins directory are automatically imported.

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 from PyQt5 import QtWidgets module_name = 'Example Module' # You must define module_name. # This is the name that will be displayed in the "Plugins" menu of the Viewer Window. # You can use this to reference the ModuleGUI instance through the Viewer Console via get_module() # The main GUI class MUST be named ModuleGUI. # You can have other classes and more GUIs however ModuleGUI is the one that the Viewer Window directly calls. class ModuleGUI(QtWidgets.QDockWidget): # The Viewer MainWindow will pass its Viewer instance that can be used to interact with the viewer and work environment. def __init__(self, parent, viewer_instance): QtWidgets.QDockWidget.__init__(self, parent) self.setFloating(True) # Must be floating 
4. The module will be accessible through the Viewer Window’s “Plugins” menu. The names in the plugins menu will correspond to the aforementioned module_name variable.