Skip to content

Plugin Management

joern274 edited this page Mar 1, 2023 · 6 revisions

Features described in this section are not available in master yet but can be tested when checking out branch feature/gui_extension_plugin.

Loading all available plugins prior to opening GUI window consumes a lot of time and is not necessary for most use cases. Therefore a more flexible plugin management has been developed allowing the user to customize the HAL system by loading exactly the plugins he needs. Additionally it is now possible to load, reload, or unload plugins at any time during a HAL session. The management page also provides a quick overview about available plugins and their purpose and CLI extensions (if any).

The plugin manager gets opened either by either selecting Help -> Plugin Manager from main menu or by clicking the plugin icon next to settings icon. The plugin manager gets closed by Cancel. Plugins might contribute GUI extensions which are enabled the moment a netlist is loaded. Activating the GUI extension menu for a given plugin will also return to the main view and graphical netlist.

The core part of the plugin manager is a table providing an overview about all plugins available. The plugins are gathered by scanning the entries of all directories which may host plugins gathering all shared library files. The HAL system memorizes the entries. If an entry is new or if the timestamp indicates possible modification HAL attempts to load the plugin and memorizes information relevant for the plugin manager.

Underneath the table interactive buttons are explained. Once the user actively loads a plugin the choice gets stored and the plugin will get loaded all subsequent HAL sessions until the user decides to unload it. Other than this a plugin gets loaded for the current session only if it is needed as dependency or if it provides a parser for a file just opened.

Unloading the plugin will remove it from memory immediately. However, a plugin cannot be unloaded if it required as dependency by another plugin. In such a case a warning message will pop up explaining which other plugin needs to be unloaded first. Obviously the GUI plugin manager does not allow to unload the hal_gui plugin.

The plugin manager does not come with a file notifier meaning that ongoing manipulations (e.g. recompile) of a plugin would not get noticed while the HAL session is running. If the user wants to reload a modified plugin in the middle of a session the Refresh button comes handy. This button causes all directory entries to be compared with memorized information thus (re-)loading all new or modified plugins.

Clone this wiki locally