Interfaces.docu 6.93 KB
Newer Older
Mike Kremer's avatar
Mike Kremer committed
1
/** \page interfaces Plugin Interfaces
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

\section pluginInterfacesIntro Introduction

OpenFlipper provides a flexible plugin interface. Plugins can implement various interfaces.\n

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
and basic communication regarding object changes or view updates ( See BaseInterface for further details).\n

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

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.

\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

35 36 37 38 39 40 41
\section pluginInterfacesBaseInterface OpenFlipper Base Interface

\subpage baseInterfacePage

All plugins in OpenFlipper have to implement some basic functions from BaseInterface. They are used to integrate and manage
the plugins by the core application. See \ref baseInterfacePage for details.

42

43 44
\section  pluginInterfacesGroups Interfaces
The following groups of Interfaces are available:
45

46
\subpage pluginInterfacesUIOverview
47

48
\subpage pluginInterfacesDataHandling
49

50
\subpage pluginInterfacesInputDevices
51

Jan Möbius's avatar
Jan Möbius committed
52 53
\subpage pluginInterfacesOtherInterfaces

Jan Möbius's avatar
Jan Möbius committed
54 55


56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
\section todoInterfaces Interfaces todos for documentation:
BackupInterface
FileInterface
IniInterface
KeyInterface
LoadSaveInterface
MouseInterface
OptionsInterface
PickingInterface
ProcessInterface
SecurityInterface
TextureInterface
TypeInterface
ViewInterface
ViewModeInterface
Jan Möbius's avatar
Jan Möbius committed
71

72 73
\section pluginInterfacesOtherOverview Available Interfaces for controlling other functions

74
This page gives an overview over the available interfaces which control other parts of OpenFlipper.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136

\subsection KeyPlugin Keyboard Interface
\image html keyInterface.png
 You have to provide this interface if you want to get key events in your plugin ( KeyInterface ).\n


\subsection MousePlugin Mouse Interface
\image html mouseInterface.png
This interface is used to deliver mouse events to a plugin ( MouseInterface ).\n


\subsection LoadSavePlugin Load / Save Interface
\image html loadSaveInterface.png
Provides functions to handle mesh files and load / unload geometry
objects into the scene graph ( LoadSaveInterface ).



\subsection TexturePlugin Texture Interface
\image html TextureInterface.png
Allows your plugin to provide a texture. ( TextureInterface )


\subsection PickingPlugin Mouse Picking / Pick Modes
\image html PickingInterface.png
Handle mouse picking in your plugin ( PickingInterface )


\subsection FilePlugin File Interface
\image html FileInterface.png
Provides functions to read and write custom filetypes ( FileInterface )


\subsection TypePlugin Type Interface
\image html FileInterface.png
Allows plugins to specify custom data types and makes them available
to other plugins ( TypeInterface )


\subsection ViewModePlugin View Mode Interface
\image html FileInterface.png
Specify own view modes ( ViewModeInterface )


\subsection ViewPlugin View Interface
\image html ViewInterface.png
This interface is used to add additional view widgets ( ViewInterface ).

\subsection OptionsPlugin Options Interface
\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 )


\subsection BackupPlugin Backup Interface
\image html BackupInterface.png
Use this interface to backup data ( BackupInterface )


\subsection INIPlugin Use Inifiles to store information
\image html INIInterface.png
Receive an event if an ini file is opened by the application. ( INIInterface )\n
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183

*/


/** \page pluginInterfacesUIOverview User Interface control

This page gives an overview over the available interfaces which control OpenFlippers User interface.

\subpage contextmenuInterfacePage
\image html ContextMenuInterface.png
Add context menu entries in your plugin. ( \ref contextmenuInterfacePage )
\n

\subpage loggingInterfacePage
\image html LoggingInterface.png
This is an Interface for Logging to the included log widget. You can log to different levels
(LOGOUT,LOGWARN,LOGERR,LOGINFO) ( \ref loggingInterfacePage ).
\n

\subpage menuInterfacePage
\image html MenuInterface.png
Provides a function to create entries in the menubar ( \ref menuInterfacePage ).
\n

\subpage statusbarInterfacePage
\image html StatusbarInterface.png
This interface is used to display messages in the status bar or adding widgets to it ( \ref statusbarInterfacePage ).
\n

\subpage toolboxInterfacePage
\image html ToolboxInterface.png
Provides functions to create a separate widget in the toolbox on the right ( \ref toolboxInterfacePage ).
\n

\subpage toolbarInterfacePage
\image html ToolbarInterface.png
Provides a function to add toolbar buttons. ( \ref toolbarInterfacePage  )
\n
*/

/** \page pluginInterfacesDataHandling Object and Data Handling
This page shows interfaces for controlling and adding Objects.
*/


/** \page pluginInterfacesInputDevices Input Devices
This page shows interfaces which could be used to get data from input devices.
184
*/
185

Jan Möbius's avatar
Jan Möbius committed
186 187 188
/** \page pluginInterfacesOtherInterfaces Other Interfaces
This page shows interfaces for other operations.

Jan Möbius's avatar
Jan Möbius committed
189 190 191 192 193 194 195
\subpage RPCInterfacePage
\n
\image html RPCInterface.png
\n
Interface to call functions across plugins ( \ref RPCInterfacePage  )
\n

Jan Möbius's avatar
Jan Möbius committed
196
\subpage scriptInterfacePage
Jan Möbius's avatar
Jan Möbius committed
197
\n
Jan Möbius's avatar
Jan Möbius committed
198
\image html ScriptInterface.png
Jan Möbius's avatar
Jan Möbius committed
199
\n
Jan Möbius's avatar
Jan Möbius committed
200
For plugins which provide scriptable functions ( \ref scriptInterfacePage  )
Jan Möbius's avatar
Jan Möbius committed
201
\n
Jan Möbius's avatar
Jan Möbius committed
202

203
\subpage pluginConnectionInterfacePage
Jan Möbius's avatar
Jan Möbius committed
204
\n
205
\image html PluginConnectionInterface.png
Jan Möbius's avatar
Jan Möbius committed
206
\n
207
Enables the developer to connect signals and slots across plugins. ( \ref pluginConnectionInterfacePage  )
Jan Möbius's avatar
Jan Möbius committed
208
\n
209

Jan Möbius's avatar
Jan Möbius committed
210 211 212
*/


213 214 215 216 217