diff --git a/src/meshlab/interfaces.h b/src/meshlab/interfaces.h index 6f3bc857f..cfbfed557 100644 --- a/src/meshlab/interfaces.h +++ b/src/meshlab/interfaces.h @@ -289,7 +289,7 @@ class MeshFilterInterface { public: typedef int FilterIDType; - enum FilterClass { Generic, Selection, Cleaning, Remeshing, FaceColoring, VertexColoring, MeshCreation, Smoothing, Quality, Normal} ; + enum FilterClass { Generic, Selection, Cleaning, Remeshing, FaceColoring, VertexColoring, MeshCreation, Smoothing, Quality, Layer, Normal} ; virtual ~MeshFilterInterface() {} // The longer string describing each filtering action diff --git a/src/meshlab/mainwindow.h b/src/meshlab/mainwindow.h index b6cdad3d6..3525f0f59 100644 --- a/src/meshlab/mainwindow.h +++ b/src/meshlab/mainwindow.h @@ -352,6 +352,7 @@ private: QMenu *filterMenuSmoothing; QMenu *filterMenuQuality; QMenu *filterMenuNormal; + QMenu *filterMenuLayer; QMenu *editMenu; diff --git a/src/meshlab/mainwindow_Init.cpp b/src/meshlab/mainwindow_Init.cpp index 0c26b741b..7c60d2f89 100644 --- a/src/meshlab/mainwindow_Init.cpp +++ b/src/meshlab/mainwindow_Init.cpp @@ -522,6 +522,7 @@ void MainWindow::createMenus() filterMenuSmoothing = filterMenu->addMenu(tr("Smoothing")); filterMenuQuality = filterMenu->addMenu(tr("Quality")); filterMenuNormal = filterMenu->addMenu(tr("Normal and Orientation")); + filterMenuLayer = filterMenu->addMenu(tr("Layer")); //////////////////// Menu Render ////////////////////////////////////////////////////////////////////////// renderMenu = menuBar()->addMenu(tr("&Render")); @@ -642,6 +643,8 @@ void MainWindow::loadPlugins() filterMenuNormal->addAction(filterAction); break; case MeshFilterInterface::Quality : filterMenuQuality->addAction(filterAction); break; + case MeshFilterInterface::Layer : + filterMenuLayer->addAction(filterAction); break; case MeshFilterInterface::MeshCreation : fileMenuNew->addAction(filterAction); break; case MeshFilterInterface::Generic : diff --git a/src/meshlabplugins/filter_splitter/filter_splitter.cpp b/src/meshlabplugins/filter_splitter/filter_splitter.cpp index 003ab21f2..e5db8edec 100644 --- a/src/meshlabplugins/filter_splitter/filter_splitter.cpp +++ b/src/meshlabplugins/filter_splitter/filter_splitter.cpp @@ -154,4 +154,15 @@ bool FilterSplitterPlugin::applyFilter(QAction *filter, MeshDocument &md, Filter return true; } +const FilterSplitterPlugin::FilterClass FilterSplitterPlugin::getClass(QAction *a) +{ + switch(ID(a)) + { + case FP_SPLITSELECT : + return MeshFilterInterface::Layer; + default : + return MeshFilterInterface::Generic; + } +} + Q_EXPORT_PLUGIN(FilterSplitterPlugin) diff --git a/src/meshlabplugins/filter_splitter/filter_splitter.h b/src/meshlabplugins/filter_splitter/filter_splitter.h index 02281a083..66ac2694a 100644 --- a/src/meshlabplugins/filter_splitter/filter_splitter.h +++ b/src/meshlabplugins/filter_splitter/filter_splitter.h @@ -43,6 +43,7 @@ public: virtual const QString filterInfo(FilterIDType filter); virtual const PluginInfo &pluginInfo(); virtual bool autoDialog(QAction *) {return true;} + virtual const FilterClass getClass(QAction *); virtual void initParameterSet(QAction *,MeshDocument &/*m*/, FilterParameterSet & /*parent*/); virtual bool applyFilter(QAction *filter, MeshDocument &m, FilterParameterSet & /*parent*/, vcg::CallBackPos * cb) ; virtual bool applyFilter(QAction *filter, MeshModel &, FilterParameterSet & /*parent*/, vcg::CallBackPos * cb) { assert(0); return false;} ; diff --git a/src/sampleplugins/samplefilterdoc/samplefilterdoc.cpp b/src/sampleplugins/samplefilterdoc/samplefilterdoc.cpp index 6f49baeea..7f68d884c 100644 --- a/src/sampleplugins/samplefilterdoc/samplefilterdoc.cpp +++ b/src/sampleplugins/samplefilterdoc/samplefilterdoc.cpp @@ -145,4 +145,15 @@ bool SampleFilterDocPlugin::applyFilter(QAction *filter, MeshDocument &md, Filte return true; } +const SampleFilterDocPlugin::FilterClass SampleFilterDocPlugin::getClass(QAction *a) +{ + switch(ID(a)) + { + case FP_FLATTEN : + return MeshFilterInterface::Layer; + default : + return MeshFilterInterface::Generic; + } +} + Q_EXPORT_PLUGIN(SampleFilterDocPlugin) diff --git a/src/sampleplugins/samplefilterdoc/samplefilterdoc.h b/src/sampleplugins/samplefilterdoc/samplefilterdoc.h index 2424b7961..85727c209 100644 --- a/src/sampleplugins/samplefilterdoc/samplefilterdoc.h +++ b/src/sampleplugins/samplefilterdoc/samplefilterdoc.h @@ -53,6 +53,7 @@ public: virtual const QString filterInfo(FilterIDType filter); virtual const PluginInfo &pluginInfo(); virtual bool autoDialog(QAction *) {return true;} + virtual const FilterClass getClass(QAction *); virtual void initParameterSet(QAction *,MeshDocument &/*m*/, FilterParameterSet & /*parent*/); virtual bool applyFilter(QAction *filter, MeshDocument &m, FilterParameterSet & /*parent*/, vcg::CallBackPos * cb) ; virtual bool applyFilter(QAction *filter, MeshModel &, FilterParameterSet & /*parent*/, vcg::CallBackPos * cb) { assert(0); return false;} ;