Open\+Flipper is a powerful tool that allows implementing algorithms on geometry with preferably small effort. It bases on the Qt plugin model such that it is easily extendable by user defined plugins. For information on how Qt plugins work we recommend developers to read the Qt documentation. The integration of a plugin into Open\+Flipper\textquotesingle{}s user interface and its interactivity are controlled by \hyperlink{interfaces}{Plugin Interfaces} that can be implemented. Also see \hyperlink{pluginProgramming}{Plugin Programming} for a few small tutorials on Open\+Flipper plugin programming.\hypertarget{uiconcept_userInterface}{}\section{The user interface}\label{uiconcept_userInterface}
The Open\+Flipper user interface is composed of four essential widgets each accessible and extendable by user plugins\+:


\begin{DoxyItemize}
\item \hyperlink{uiconcept_viewport_widget}{The viewport widget}
\item \hyperlink{uiconcept_plugin_widget}{The plugin widget}
\item \hyperlink{uiconcept_logging_widget}{The logging widget}
\item \hyperlink{uiconcept_tool_bar}{The tool bar}
\end{DoxyItemize}\hypertarget{uiconcept_mouseKeyboardEvents}{}\section{Mouse and keyboard events}\label{uiconcept_mouseKeyboardEvents}
The user interactivity is gained by plain Qt mouse and keyboard events. If the plugin wants to interact with the mouse or keyboard, it has to implement the \hyperlink{classMouseInterface}{Mouse\+Interface} and \hyperlink{classKeyInterface}{Key\+Interface} (for keyboard shortcuts, etc.). Read tutorial \hyperlink{ex3}{Implementing mouse and keyboard interaction} to learn how to add mouse and keyboard interactivity to your plugin. Also see \hyperlink{interfaces}{Plugin Interfaces} for an overview of implementable interfaces.\hypertarget{uiconcept_viewport_widget}{}\section{The viewport widget}\label{uiconcept_viewport_widget}
The viewport widget visualizes the whole scenegraph. One can adjust viewer specific settings by chosing {\ttfamily View} in Open\+Flippers menu bar. Adjustable settings contain\+:


\begin{DoxyItemize}
\item Drawmodes (points, wireframe, solid,...)
\item Projection mode (orthogonal, perspective)
\item Set / reset home view
\item Capture screenshots
\item Adapt colors such that they match the desired profile (for printing, presentation,...)
\end{DoxyItemize}

\hypertarget{uiconcept_plugin_widget}{}\section{The plugin widget}\label{uiconcept_plugin_widget}
The plugin widget shows the Qt toolboxes of the loaded plugins. A plugin can integrate its own toolbox by simply implementing the \hyperlink{classToolboxInterface}{Toolbox\+Interface}. Providing toolboxes is not mandatory, but most plugins make use of it in order to offer user control to its parameters.

\hypertarget{uiconcept_logging_widget}{}\section{The logging widget}\label{uiconcept_logging_widget}
The logging widget is used to display plugin specific information, warnings or errors. By implementing the \hyperlink{classLoggingInterface}{Logging\+Interface} a plugin can easily tell the user what is going on inside.

\hypertarget{uiconcept_tool_bar}{}\section{The tool bar}\label{uiconcept_tool_bar}
The toolbar at the top of Open\+Flipper\textquotesingle{}s main window offers clickable icons to quickly access a plugins function. A user plugin can integrate its own buttons into the tool bar by implementing the \hyperlink{classToolbarInterface}{Toolbar\+Interface}.

 