Plugins are special Modules that are exposed to the user through the Workbench GUI. This is typically done using the main menu, or the context-sensitive menu. Much of the MySQL Workbench functionality is implemented using plugins, for example, tabel, view, and routine editors are native C++ plugins, as are the forward and reverse engineering wizards. The Administrator facility in MySQL Workbench is implemented entirely as a plugin in Python.
A plugin can be a simple function that performs some action on an
input, and ends without further interaction with the user.
Examples of this include auto-arranging a diagram, or making batch
changes to objects. To create a simple plugin, the function needs
to be located in a module and then declare it as a plugin using
the plugin
decorator of the
ModuleInfo
object.
Plugins can have an indefinite runtime, such as when they are driven by the user through a graphical user interface. This is the case for the various object editors and wizards within MySQL Workbench. Although this latter type of plugin will need to be declared in the usual way, only the entry point of the plugin will need to be executed in the plugin function, as most of the additional functionality will be invoked as a result of the user interacting with the GUI.
The syntax for declaring a plugin is as follows:
@ModuleInfo.plugin(plugin_name, caption, [input], [groups], [pluginMenu])
These parameters are defined as follows:
plugin_name: A unique name for the plugin. It may only contain alphanumeric characters, dots, and underscores.
caption: A caption to use for the plugin in menus.
input: An optional list of input arguments.
groups: Optional list of groups the plugin belongs to. Recognized values are:
Overview/Utility
: The menu in the Model Overview.Model/Utility
: The menu for diagram objects.Menu/<category>
: The menu in the main menu.
pluginMenu: Optional name of a submenu in the Plugins menu where the plugin should appear. For example, , , . This is equivalent to adding a
Menu/<category>
in the groups list.