Jan Möbius committed Aug 05, 2009 1 ``````/*===========================================================================*\ `````` Jan Möbius committed Nov 25, 2010 2 3 ``````* * * OpenFlipper * `````` Jan Möbius committed Jan 26, 2011 4 ``````* Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen * `````` Jan Möbius committed Nov 25, 2010 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 ``````* www.openflipper.org * * * *--------------------------------------------------------------------------- * * This file is part of OpenFlipper. * * * * OpenFlipper is free software: you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * * published by the Free Software Foundation, either version 3 of * * the License, or (at your option) any later version with the * * following exceptions: * * * * If other files instantiate templates or use macros * * or inline functions from this file, or you compile this file and * * link it with other files to produce an executable, this file does * * not by itself cause the resulting executable to be covered by the * * GNU Lesser General Public License. This exception does not however * * invalidate any other reasons why the executable file might be * * covered by the GNU Lesser General Public License. * * * * OpenFlipper is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License for more details. * * * * You should have received a copy of the GNU LesserGeneral Public * * License along with OpenFlipper. If not, * * see . * * * `````` Jan Möbius committed Aug 05, 2009 33 34 35 ``````\*===========================================================================*/ /*===========================================================================*\ `````` Jan Möbius committed Nov 25, 2010 36 37 38 39 40 ``````* * * \$Revision\$ * * \$LastChangedBy\$ * * \$Date\$ * * * `````` Jan Möbius committed Aug 05, 2009 41 ``````\*===========================================================================*/ `````` Jan Möbius committed Aug 29, 2008 42 43 44 45 46 47 48 `````` // // C++ Interface: BasePlugin // `````` Jan Möbius committed Jan 27, 2009 49 ``````// Description: `````` Jan Möbius committed Aug 29, 2008 50 51 52 53 54 ``````// // // Author: Jan Moebius , (C) 2007 // `````` Jan Möbius committed Jan 27, 2009 55 56 ``````#ifndef CONTEXTMENUINTERFACE_HH #define CONTEXTMENUINTERFACE_HH `````` Jan Möbius committed Aug 29, 2008 57 58 59 60 `````` #include #include #include `````` Jan Möbius committed Jan 27, 2009 61 `````` `````` Jan Möbius committed Aug 29, 2008 62 ``````enum ContextMenuType { `````` Jan Möbius committed Mar 09, 2009 63 64 65 66 67 68 69 `````` /// The Menu will be shown when an object was picked CONTEXTOBJECTMENU, /// The Menu will be shown when a node was picked CONTEXTNODEMENU, /// The Menu will be shown when the background was picked CONTEXTBACKGROUNDMENU `````` Jan Möbius committed Aug 29, 2008 70 ``````}; `````` Jan Möbius committed Jan 27, 2009 71 `````` `````` Jan Möbius committed Aug 29, 2008 72 `````` /** \brief Interface class for creating custom context menus `````` Jan Möbius committed Jan 27, 2009 73 `````` * `````` Jan Möbius committed Aug 29, 2008 74 `````` * Using this interface you can create custom context menus for your plugin. You `````` Jan Möbius committed Mar 09, 2009 75 76 77 78 `````` * can choose between context menus for objects nodes or the background.\n * Before a menu of the requested type is shown, an update function for the specific type * will be invoked by the core. * You have to create a QAction. The signals and slots of your actions have to be connected `````` Jan Möbius committed Aug 29, 2008 79 `````` * to your plugin. Just connect them as usual. Only visibility of the menu is handled `````` Jan Möbius committed Mar 09, 2009 80 81 `````` * by the core. You can also add submenus to the context menus. Just add the action for * the menu ( menu->menuAction() ) `````` Jan Möbius committed Aug 29, 2008 82 83 `````` */ class ContextMenuInterface { `````` Jan Möbius committed Jan 27, 2009 84 85 86 `````` public : `````` Jan Möbius committed Aug 29, 2008 87 88 `````` /// Destructor virtual ~ContextMenuInterface() {}; `````` Jan Möbius committed Jan 27, 2009 89 `````` `````` Jan Möbius committed Aug 29, 2008 90 ``````signals: `````` Jan Möbius committed Jan 27, 2009 91 `````` `````` Jan Möbius committed Mar 09, 2009 92 `````` /** \brief Add an entry for a context Menu `````` Jan Möbius committed Jan 27, 2009 93 `````` * `````` Jan Möbius committed Mar 09, 2009 94 `````` * Create an Action (Can also be the action of a Menu) and register this menu as a context menu to the core. `````` Jan Möbius committed Mar 09, 2009 95 96 97 `````` * This Action will be visible when you rightclick in the viewer widget on an item * of the given context menu type. You can add a whole menu here by adding the action: * menu->menuAction() of your own menu. `````` Jan Möbius committed Mar 09, 2009 98 `````` * @param _menu Pointer to the new Action `````` Jan Möbius committed Aug 29, 2008 99 `````` */ `````` Jan Möbius committed Mar 09, 2009 100 `````` virtual void addContextMenuItem(QAction* /*_action*/ , ContextMenuType /*_type*/) {}; `````` Jan Möbius committed Jan 27, 2009 101 `````` `````` Jan Möbius committed Aug 29, 2008 102 `````` /** \brief Add an entry for a context Menu `````` Jan Möbius committed Jan 27, 2009 103 `````` * `````` Jan Möbius committed Mar 09, 2009 104 105 `````` * Create an action (Can also be the action of a Menu) and register this action as a context menu entry to the core. * This Action will only be visible if the picked object is of the given datatype. `````` Jan Möbius committed Aug 29, 2008 106 `````` * To support multiple object types with your menu, you can emit this signal multiple `````` Jan Möbius committed Mar 09, 2009 107 108 `````` * times with the same action but different DataTypes. You can add a whole Menu here by adding the action: * menu->menuAction() `````` Jan Möbius committed Jan 27, 2009 109 `````` * `````` Jan Möbius committed Mar 09, 2009 110 `````` * @param _action Pointer to the new action `````` Jan Möbius committed Aug 29, 2008 111 112 113 `````` * @param _objectType Type of the picked object * @param _type Type of the context Menu ( See ContextMenuType ) */ `````` Jan Möbius committed Mar 09, 2009 114 `````` virtual void addContextMenuItem(QAction* /*_action*/ ,DataType /*_objectType*/ , ContextMenuType /*_type*/ ) {}; `````` Jan Möbius committed Jan 27, 2009 115 `````` `````` Jan Möbius committed Aug 29, 2008 116 ``````private slots: `````` Jan Möbius committed Jan 27, 2009 117 `````` `````` Jan Möbius committed Aug 29, 2008 118 119 `````` /** When the main application requests a context menu, this slot is called before showing the window. * If an object is picked the id will be given in this call so you can change the contents of your menu `````` Jan Möbius committed Mar 09, 2009 120 121 `````` * depending on the given object. * @param _objectId id of the object `````` Jan Möbius committed Aug 29, 2008 122 `````` */ `````` Dirk Wilden committed Sep 30, 2008 123 `````` virtual void slotUpdateContextMenu( int /*_objectId*/ ) {}; `````` Jan Möbius committed Aug 29, 2008 124 `````` `````` Jan Möbius committed Mar 09, 2009 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 `````` /** When the main application requests a context menu, this slot is called before showing the window. * This slot will be called indicating that a scenegraph node not belonging to an object * has been picked. * The id of the node is given as a parameter * @param _node id of the picked node */ virtual void slotUpdateContextMenuNode( int /*_nodeId*/ ) {}; /** When the main application requests a context menu, this slot is called before showing the window. * This slot will be called indicating thatthe background has been picked. * The id of the node is given as a parameter * @param _node id of the picked node */ virtual void slotUpdateContextMenuBackground( ) {}; `````` Jan Möbius committed Aug 29, 2008 140 141 ``````}; `````` Jan Möbius committed Mar 09, 2009 142 ``````Q_DECLARE_INTERFACE(ContextMenuInterface,"OpenFlipper.ContextMenuInterface/1.0") `````` Jan Möbius committed Jan 27, 2009 143 `````` `````` Jan Möbius committed Aug 29, 2008 144 ``#endif // CONTEXTMENUINTERFACE_HH``