Interfaces.docu 5.94 KB
Newer Older
Mike Kremer's avatar
Mike Kremer committed
1 2
/** \page interfaces Plugin Interfaces
 *
3 4 5 6
 * \section pluginInterfacesIntro Introduction
 *
 * OpenFlipper provides a flexible plugin interface. Plugins can implement various interfaces.\n
 *
Mike Kremer's avatar
Mike Kremer committed
7 8 9
 * Each interface provides special signals/slots or functions to communicate with the core or
 * to react on special events. The most important interface is the BaseInterface. This Interface
 * provides the core functionality for the plugin. E.g. loading the plugin, specifying its name
10 11
 * and basic communication regarding object changes or view updates ( See BaseInterface for further details).\n
 *
Mike Kremer's avatar
Mike Kremer committed
12 13 14
 * Additional functionality is provided by the other interfaces. For user interaction one typically uses the
 * MouseInterface or KeyInterface which will provide events based on mouse or keyboard interaction.\n
 *
15 16 17
 * The user interface of OpenFlipper can also be used by plugins. The MenubarInterface provides functions to
 * add additional icons to the menubar while the ToolboxInterface can add widgets to the toolbox on
 * the right of the OpenFlipper screen.
Mike Kremer's avatar
Mike Kremer committed
18
 *
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
 * \section pluginInterfacesUsage Usage of plugin interfaces
 *
 * To use functions from one of the interfaces you have to do the following steps:
 * <ul>
 * <li> Include the interface header file in your plugins header file
 * <li> derive your plugin from the Interface class defined in the interface header file
 * <li> add Q_INTERFACES( InterfaceName ) macro to your plugin class containing only the name of the interface to be used
 * <li> Add the signature of the signals you want to use to the signals of your class definition.
 * <li> Add the signature of a slot you want to implement to the \b private \b slots of your class definition.
 * </ul>
 * It is not necessary to implement all signals or slots from one of the interfaces (Except some functions from BaseInterface).
 * The core application will only use the slots you define in the plugins header file and ignore all other functions.\n
 *
 * If you recognize that an interface function of your plugin is not called, check if it is defined correctly in your plugin
 * class and the signature is the same as in the interface.\n
 * 
 * \section pluginInterfacesOverview Available Interfaces
 * 
 * This section gives an overview over the available interfaces in OpenFlipper.
 *
 * \subsection BasePlugin Base Interface
Mike Kremer's avatar
Mike Kremer committed
40 41 42 43
 * This is the Basic plugin Interface. All Plugins have to provide at least this interface. It offers plugin
 * name and some important Signals and slots which will be called by the main application. See BaseInterface
 * for details.
 *
44
 * \subsection KeyPlugin Keyboard Interface
Mike Kremer's avatar
Mike Kremer committed
45 46 47 48
 * \image html keyInterface.png
 *  You have to provide this interface if you want to get key events in your plugin ( KeyInterface ).\n
 *
 *
49
 * \subsection MousePlugin Mouse Interface
Mike Kremer's avatar
Mike Kremer committed
50 51 52 53
 * \image html mouseInterface.png
 * This interface is used to deliver mouse events to a plugin ( MouseInterface ).\n
 *
 *
54
 * \subsection LoadSavePlugin Load / Save Interface
Mike Kremer's avatar
Mike Kremer committed
55 56 57 58 59
 * \image html loadSaveInterface.png
 * Provides functions to handle mesh files and load / unload geometry
 * objects into the scene graph ( LoadSaveInterface ).
 *
 *
60
 * \subsection ToolbarPlugin Toolbar Interface
Mike Kremer's avatar
Mike Kremer committed
61 62 63 64
 * \image html ToolbarInterface.png
 * Provides a function to add toolbar buttons. ( ToolbarInterface )
 *
 *
65
 * \subsection ContextMenu Context Menu Interface
66 67 68 69
 * \image html ContextMenuInterface.png
 * Add context menu entries in your plugin. ( ContextMenuInterface )
 *
 *
Jan Möbius's avatar
Jan Möbius committed
70 71 72
 * \subpage menuInterfacePage
 * \image html MenuInterface.png
 * Provides a function to create entries in the menubar ( \ref menuInterfacePage ).
Mike Kremer's avatar
Mike Kremer committed
73
 *
74 75
 *
 * \subpage toolboxInterfacePage
Mike Kremer's avatar
Mike Kremer committed
76
 * \image html ToolboxInterface.png
Jan Möbius's avatar
Jan Möbius committed
77
 * Provides functions to create a separate widget in the toolbox on the right ( \ref toolboxInterfacePage ).
78
 * \n
Mike Kremer's avatar
Mike Kremer committed
79
 *
80
 * \subpage loggingInterfacePage
Mike Kremer's avatar
Mike Kremer committed
81
 * \image html LoggingInterface.png
82
 * This is an Interface for Logging to the included log widget. You can log to different levels
Jan Möbius's avatar
Jan Möbius committed
83
 * (LOGOUT,LOGWARN,LOGERR,LOGINFO) ( \ref loggingInterfacePage ).
84
 * \n
Mike Kremer's avatar
Mike Kremer committed
85
 *
86
 * \subsection TexturePlugin Texture Interface
Mike Kremer's avatar
Mike Kremer committed
87 88 89 90
 * \image html TextureInterface.png
 * Allows your plugin to provide a texture. ( TextureInterface )
 *
 *
91
 * \subsection PickingPlugin Mouse Picking / Pick Modes
Mike Kremer's avatar
Mike Kremer committed
92 93 94 95
 * \image html PickingInterface.png
 * Handle mouse picking in your plugin ( PickingInterface )
 *
 *
96
 * \subsection RPCPlugin RPC Interface
Mike Kremer's avatar
Mike Kremer committed
97 98 99 100
 * \image html RPCInterface.png
 * This interface is used to call functions across different plugins ( RPCInterface ).
 *
 *
101
 * \subsection FilePlugin File Interface
Mike Kremer's avatar
Mike Kremer committed
102 103 104 105
 * \image html FileInterface.png
 * Provides functions to read and write custom filetypes ( FileInterface )
 *
 *
106
 * \subsection TypePlugin Type Interface
107 108 109 110 111
 * \image html FileInterface.png
 * Allows plugins to specify custom data types and makes them available
 * to other plugins ( TypeInterface )
 *
 *
112
 * \subsection ViewModePlugin View Mode Interface
113 114 115 116
 * \image html FileInterface.png
 * Specify own view modes ( ViewModeInterface )
 *
 *
117
 * \subsection ViewPlugin View Interface
Mike Kremer's avatar
Mike Kremer committed
118 119 120 121
 * \image html ViewInterface.png
 * This interface is used to add additional view widgets ( ViewInterface ).
 *
 *
122
 * \subsection ScriptPlugin Script Interface
Mike Kremer's avatar
Mike Kremer committed
123 124 125 126
 * \image html ScriptInterface.png
 * For plugins who provide scriptable functions ( ScriptInterface )
 *
 *
127
 * \subsection StatusPlugin Status Bar Interface
Mike Kremer's avatar
Mike Kremer committed
128 129 130 131
 * \image html StatusbarInterface.png
 * This interface is used to display messages in the status bar ( StatusbarInterface )
 *
 *
132
 * \subsection OptionsPlugin Options Interface
Mike Kremer's avatar
Mike Kremer committed
133 134 135 136 137
 * \image html OptionsInterface.png
 * This Interface is used by plugins which will provide their own options by
 * integrating its own options widget into OpenFlipper's options window. ( OptionsInterface )
 *
 *
138
 * \subsection BackupPlugin Backup Interface
Mike Kremer's avatar
Mike Kremer committed
139 140 141 142
 * \image html BackupInterface.png
 * Use this interface to backup data ( BackupInterface )
 *
 *
143
 * \subsection INIPlugin Use Inifiles to store information
Mike Kremer's avatar
Mike Kremer committed
144 145 146
 * \image html INIInterface.png
 * Receive an event if an ini file is opened by the application. ( INIInterface )\n
 */