/*===========================================================================*\ * * * OpenFlipper * * Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen * * 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 . * * * \*===========================================================================*/ /*===========================================================================*\ * * * $Revision: 17990 $ * * $LastChangedBy: moeller $ * * $Date: 2014-01-07 17:36:34 +0100 (Di, 07. Jan 2014) $ * * * \*===========================================================================*/ #ifndef COMPONENTSPLUGIN_HH #define COMPONENTSPLUGIN_HH #include #include #include #include #include #include #include #include #include #include #include #include class ComponentsPlugin : public QObject, BaseInterface, MouseInterface, PickingInterface, LoggingInterface, BackupInterface, LoadSaveInterface, ToolbarInterface,ScriptInterface { Q_OBJECT Q_INTERFACES( BaseInterface ) Q_INTERFACES( MouseInterface ) Q_INTERFACES( PickingInterface ) Q_INTERFACES( LoggingInterface ) Q_INTERFACES( BackupInterface ) Q_INTERFACES( LoadSaveInterface ) Q_INTERFACES( ToolbarInterface ) Q_INTERFACES( ScriptInterface ) signals: // BaseInterface void updateView(); void updatedObject(int _identifier, const UpdateType _type); void setSlotDescription(QString _slotName, QString _slotDescription, QStringList _parameters, QStringList _descriptions); // LoadSaveInterface void addEmptyObject( DataType _type, int& _id); void copyObject( int _oldId, int& _newId); // ToolBarInterface void addToolbar(QToolBar* _toolbar); void getToolBar( QString _name, QToolBar*& _toolbar); // PickingInterface void addPickMode( const std::string _mode ); //ScriptInterface void scriptInfo( QString _functionName ); // LoggingInterface void log( Logtype _type, QString _message ); void log( QString _message ); // BackupInterface void createBackup( int _objectid, QString _name, UpdateType _type); // LoadSaveInterface void deleteObject( int _id ); private slots: // BaseInterface void initializePlugin(); void pluginsInitialized(); // PickingInterface void slotPickModeChanged( const std::string& _mode); // MouseInterface: void slotMouseEvent( QMouseEvent* _event ); public: ComponentsPlugin(); ~ComponentsPlugin() { } void exit() {} QString name() { return (QString("Components")); }; QString description( ) { return (QString("Handle mesh components")); }; //=========================================================================== /** @name GUI Related * @{ */ //=========================================================================== private slots: /// Split into Components Button was hit void slotSplitComponentsButton(); void slotBiggestComponentButton(); /// Split Components of picked object void splitComponents(QMouseEvent* _event); void biggestComponent(QMouseEvent* _event); private : //toolbar QAction* splitAction_; QAction* biggestAction_; /** @} */ //=========================================================================== /** @name Template Functions * @{ */ //=========================================================================== /// Split mesh into components template< class MeshT > void splitComponent( MeshT* _mesh, MeshT* _copy); template< class MeshT > void selectBiggestComponent( MeshT* _mesh); template< class MeshT > void isolateBiggestComponent( MeshT* _mesh); /** @} */ //=========================================================================== /** @name Scripting Functions * @{ */ //=========================================================================== public slots: /// Split a mesh into components IdList splitComponents( int _objectId ); void biggestComponent(int _objId); public slots: QString version() { return QString("1.0"); }; /** @} */ private: /// set scripting slot descriptions void setDescriptions(); }; #if defined(INCLUDE_TEMPLATES) && !defined(COMPONENTSPLUGIN_CC) #define COMPONENTSPLUGIN_TEMPLATES #include "ComponentsPluginT.cc" #endif //============================================================================= #endif //CUTPLUGIN_HH //=============================================================================