Salome HOME
Merge branch 'abn/configuration' V8_1_0b1
authorrnv <rnv@opencascade.com>
Wed, 10 Aug 2016 14:46:10 +0000 (17:46 +0300)
committerrnv <rnv@opencascade.com>
Wed, 10 Aug 2016 14:46:10 +0000 (17:46 +0300)
18 files changed:
CMakeLists.txt
src/Plugins/MEDReader/IO/CMakeLists.txt
src/Plugins/MEDReader/IO/MEDFileFieldRepresentationTree.cxx
src/Plugins/MEDReader/IO/MEDFileFieldRepresentationTree.hxx
src/Plugins/ParaMEDCorba/CMakeLists.txt
test/VisuPrs/bugs/A5.py
test/VisuPrs/bugs/C5.py
test/standalone/CMakeLists.txt
test/standalone/gui/CMakeLists.txt
test/standalone/gui/PLMainWindow.cxx
test/standalone/gui/PLMainWindow.hxx
test/standalone/gui/PLViewTab.cxx
test/standalone/gui/PLViewTab.hxx
test/standalone/gui/PVViewer_GUIElements.cxx
test/standalone/gui/main.cpp
test/standalone/gui/ui/light_para.ui
test/standalone/gui/ui/view_tab.ui
test/standalone/gui/xml/ParaViewFilters.xml [new file with mode: 0644]

index 3a32e19382dada5c43c443b7d23adde90fbf7b14..04a774635ede0946f0a03998851d2b8c5d1d7824 100644 (file)
@@ -27,6 +27,9 @@ ENDIF(WIN32)
 
 # Ensure a proper linker behavior:
 CMAKE_POLICY(SET CMP0003 NEW)
+IF(WIN32)
+  CMAKE_POLICY(SET CMP0020 OLD) # disable automatic linking to qtmain.lib 
+ENDIF(WIN32)
 
 # Versioning
 # ===========
index 853c885c422e7a06710d1a7c7bde4c21ad4cd3e9..474cbcd2491c126ff0ed9803a5d000c573225c98 100644 (file)
@@ -39,6 +39,8 @@ FOREACH(class ${MEDReader_CLASSES})
     SET(MEDReader_HDRS ${MEDReader_HDRS} ${class}.h)
 ENDFOREACH(class)
 
+SET(MEDReader_HDRS ${MEDReader_HDRS} MEDFileFieldRepresentationTree.hxx MEDTimeReq.hxx MEDUtilities.hxx MEDLoaderForPV.h)
+  
 ADD_LIBRARY(MEDLoaderForPV SHARED MEDFileFieldRepresentationTree.cxx MEDTimeReq.cxx MEDUtilities.cxx vtkGenerateVectors.cxx)
 
 IF(HDF5_IS_PARALLEL)
index 975935353e5b1f90f00db9550ff2a0a14773a174..540464cea1af7563cc70845f33df3cae59767bfb 100644 (file)
@@ -1108,52 +1108,15 @@ int MEDFileFieldRepresentationTree::getMaxNumberOfTimeSteps() const
 /*!
  * 
  */
-void MEDFileFieldRepresentationTree::loadMainStructureOfFile(const char *fileName, bool isMEDOrSauv, int iPart, int nbOfParts)
+void MEDFileFieldRepresentationTree::loadInMemory(MEDCoupling::MEDFileFields *fields, MEDCoupling::MEDFileMeshes *meshes)
 {
-  if(isMEDOrSauv)
-    {
-      if((iPart==-1 && nbOfParts==-1) || (iPart==0 && nbOfParts==1))
-        {
-          _ms=MEDFileMeshes::New(fileName);
-          _fields=MEDFileFields::New(fileName,false);//false is important to not read the values
-        }
-      else
-        {
-#ifdef MEDREADER_USE_MPI
-          _ms=ParaMEDFileMeshes::New(iPart,nbOfParts,fileName);
-          int nbMeshes(_ms->getNumberOfMeshes());
-          for(int i=0;i<nbMeshes;i++)
-            {
-              MEDCoupling::MEDFileMesh *tmp(_ms->getMeshAtPos(i));
-              MEDCoupling::MEDFileUMesh *tmp2(dynamic_cast<MEDCoupling::MEDFileUMesh *>(tmp));
-              if(tmp2)
-                MCAuto<DataArrayInt> tmp3(tmp2->zipCoords());
-            }
-          _fields=MEDFileFields::LoadPartOf(fileName,false,_ms);//false is important to not read the values
-#else
-          std::ostringstream oss; oss << "MEDFileFieldRepresentationTree::loadMainStructureOfFile : request for iPart/nbOfParts=" << iPart << "/" << nbOfParts << " whereas Plugin not compiled with MPI !";
-          throw INTERP_KERNEL::Exception(oss.str().c_str());
-#endif
-        }
-    }
-  else
-    {
-      MCAuto<MEDCoupling::SauvReader> sr(MEDCoupling::SauvReader::New(fileName));
-      MCAuto<MEDCoupling::MEDFileData> mfd(sr->loadInMEDFileDS());
-      _ms=mfd->getMeshes(); _ms->incrRef();
-      int nbMeshes(_ms->getNumberOfMeshes());
-      for(int i=0;i<nbMeshes;i++)
-        {
-          MEDCoupling::MEDFileMesh *tmp(_ms->getMeshAtPos(i));
-          MEDCoupling::MEDFileUMesh *tmp2(dynamic_cast<MEDCoupling::MEDFileUMesh *>(tmp));
-          if(tmp2)
-            tmp2->forceComputationOfParts();
-        }
-      _fields=mfd->getFields();
-      if((MEDCoupling::MEDFileFields *)_fields)
-        _fields->incrRef();
-    }
-  if(!((MEDCoupling::MEDFileFields *)_fields))
+  _fields=fields; _ms=meshes;
+  if(_fields.isNotNull())
+    _fields->incrRef();
+  if(_ms.isNotNull())
+    _ms->incrRef();
+  //
+  if(_fields.isNull())
     {
       _fields=BuildFieldFromMeshes(_ms);
     }
@@ -1263,6 +1226,56 @@ void MEDFileFieldRepresentationTree::loadMainStructureOfFile(const char *fileNam
   this->computeFullNameInLeaves();
 }
 
+void MEDFileFieldRepresentationTree::loadMainStructureOfFile(const char *fileName, bool isMEDOrSauv, int iPart, int nbOfParts)
+{
+  MCAuto<MEDFileMeshes> ms;
+  MCAuto<MEDFileFields> fields;
+  if(isMEDOrSauv)
+    {
+      if((iPart==-1 && nbOfParts==-1) || (iPart==0 && nbOfParts==1))
+        {
+          ms=MEDFileMeshes::New(fileName);
+          fields=MEDFileFields::New(fileName,false);//false is important to not read the values
+        }
+      else
+        {
+#ifdef MEDREADER_USE_MPI
+          ms=ParaMEDFileMeshes::New(iPart,nbOfParts,fileName);
+          int nbMeshes(ms->getNumberOfMeshes());
+          for(int i=0;i<nbMeshes;i++)
+            {
+              MEDCoupling::MEDFileMesh *tmp(ms->getMeshAtPos(i));
+              MEDCoupling::MEDFileUMesh *tmp2(dynamic_cast<MEDCoupling::MEDFileUMesh *>(tmp));
+              if(tmp2)
+                MCAuto<DataArrayInt> tmp3(tmp2->zipCoords());
+            }
+          fields=MEDFileFields::LoadPartOf(fileName,false,ms);//false is important to not read the values
+#else
+          std::ostringstream oss; oss << "MEDFileFieldRepresentationTree::loadMainStructureOfFile : request for iPart/nbOfParts=" << iPart << "/" << nbOfParts << " whereas Plugin not compiled with MPI !";
+          throw INTERP_KERNEL::Exception(oss.str().c_str());
+#endif
+        }
+    }
+  else
+    {
+      MCAuto<MEDCoupling::SauvReader> sr(MEDCoupling::SauvReader::New(fileName));
+      MCAuto<MEDCoupling::MEDFileData> mfd(sr->loadInMEDFileDS());
+      ms=mfd->getMeshes(); ms->incrRef();
+      int nbMeshes(ms->getNumberOfMeshes());
+      for(int i=0;i<nbMeshes;i++)
+        {
+          MEDCoupling::MEDFileMesh *tmp(ms->getMeshAtPos(i));
+          MEDCoupling::MEDFileUMesh *tmp2(dynamic_cast<MEDCoupling::MEDFileUMesh *>(tmp));
+          if(tmp2)
+            tmp2->forceComputationOfParts();
+        }
+      fields=mfd->getFields();
+      if(fields.isNotNull())
+        fields->incrRef();
+    }
+  loadInMemory(fields,ms);
+}
+
 void MEDFileFieldRepresentationTree::removeEmptyLeaves()
 {
   std::vector< std::vector< std::vector< MEDFileFieldRepresentationLeaves > > > newSD;
index cedccc75303e242be7ab2ad8594a90bb8d9eae34..800e8c47ba6b1491be7bf282c07f51de14471b29 100644 (file)
@@ -155,6 +155,7 @@ public:
   std::map<std::string,bool> dumpState() const;
   //non const methods
   void loadMainStructureOfFile(const char *fileName, bool isMEDOrSauv, int iPart, int nbOfParts);
+  void loadInMemory(MEDCoupling::MEDFileFields *fields, MEDCoupling::MEDFileMeshes *meshes);
   void removeEmptyLeaves();
   // static methods
   static bool IsFieldMeshRegardingInfo(const std::vector<std::string>& compInfos);
index 1c0280fc9ab810d253d3c5bf4602718a34c2b9f3..2d61a70fdc8cd85f320a2f75d8b8f3a0c7dce84e 100644 (file)
 PROJECT( ParaMEDCorba )
 
   CMAKE_MINIMUM_REQUIRED( VERSION 2.8.7 )
+  IF(WIN32)
+    CMAKE_POLICY(SET CMP0020 OLD) # disable automatic linking to qtmain.lib 
+  ENDIF(WIN32)
+
   ## !!! This definition corrupts wrapping process
   #SET( LIBRARY_OUTPUT_PATH ${ParaMEDCorba_BINARY_DIR}/bin CACHE INTERNAL "Single place for output" )
   #SET( EXECUTABLE_OUTPUT_PATH ${ParaMEDCorba_BINARY_DIR}/bin  CACHE INTERNAL "Single place for output" )
index d5af545e25554573be684a66c391134a831a6a90..357194dc985775b4b1b078b59369733bb8704fd8 100644 (file)
@@ -34,9 +34,10 @@ data_file = datadir + "TimeStamps.med"
 
 tmp_dir = os.getenv("TmpDir")
 if tmp_dir == None:
-    tmp_dir = "/tmp"
+  import tempfile
+  tmp_dir = tempfile.mkdtemp()
 
-save_file = tmp_dir + "/TimeStamps_save.hdf"
+save_file = os.path.join(tmp_dir, "TimeStamps_save.hdf")
 print "Save to file ", save_file
 
 pvsimple.OpenDataFile(data_file)
index d1e47240dcbe7406217ed391eb89a815b76ca124..f48af7b65b6f60f05d83399628a1542b0a75a886 100644 (file)
@@ -144,7 +144,8 @@ theDuration = 20
 NbOfLoops = 4
 #thePath = os.getenv("TMP_DIR")
 thePrefix = "TestPngFromAnim"
-thePath = os.path.join("/tmp", thePrefix)
+import tempfile
+thePath = os.path.join(tempfile.mkdtemp(), thePrefix)
 thePath += ".png"
 
 displayMng = DisplayManager()
index 5c48d05b58961582a0e31cb4ee39f8ca2fe711a9..86bf9f6c9d60e937ffee2bdb370ed1c6e0b82098 100644 (file)
@@ -20,6 +20,9 @@
 
 PROJECT(LightPARAVIS)
 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.10)
+IF(WIN32)
+  CMAKE_POLICY(SET CMP0020 OLD) # disable automatic linking to qtmain.lib 
+ENDIF(WIN32)
 SET(CMAKE_BUILD_TYPE "Debug")
 
 OPTION(LIGHTPARAVIS_WITH_GUI "Build GUI test app" ON)
index a4b18ca2bcc8717bc6a61239a2e7eb2b60b369e6..20f62f86b6ea89f62bc8fec0b0c33e7ce1c8623a 100644 (file)
@@ -57,8 +57,8 @@ SET(ui_resources
   
 GENERATE_QT_RESOURCE_FROM_FILES(
     "${ui_resources}"
-    "/LightPara/Configuration"
-    "${PROJECT_SOURCE_DIR}/gui/xml/ParaViewReaders.xml")
+    "LightPara/Configuration"
+    "${PROJECT_SOURCE_DIR}/gui/xml/ParaViewReaders.xml;${PROJECT_SOURCE_DIR}/gui/xml/ParaViewFilters.xml")
 
 QT_ADD_RESOURCES(rcs_sources
     ${ui_resources}
index e2754985e3480d210d590a4817643e9a8f94d318..40b4e9ba2948db8e711b8d89e7bbbf36d2199313 100644 (file)
@@ -50,7 +50,8 @@ PLMainWindow::PLMainWindow(QWidget *parent) :
   QMainWindow(parent),
   _pAppC(0),
   _simplePipeline(),
-  _autoApply(true)
+  _autoApply(true),
+  _filterMenu(0)
 {
   _mainWindow.setupUi(this);
   _autoApply = _mainWindow.actionAuto_apply->isChecked();
@@ -63,25 +64,23 @@ PLMainWindow::PLMainWindow(QWidget *parent) :
 void PLMainWindow::finishUISetup()
 {
   _pAppC = PVViewer_Core::GetPVApplication();
-  PVViewer_GUIElements * pvgui = PVViewer_GUIElements::GetInstance(this);
-  QWidget * wprop = pvgui->getPropertiesPanel();
-  QWidget * wpipe = pvgui->getPipelineBrowserWidget();
+  _pvgui = PVViewer_GUIElements::GetInstance(this);
+
+  QWidget * wprop = _pvgui->getPropertiesPanel();
+  QWidget * wpipe = _pvgui->getPipelineBrowserWidget();
   wprop->setParent(_mainWindow.propFrame);
   _mainWindow.verticalLayoutProp->addWidget(wprop);
   wpipe->setParent(_mainWindow.pipelineFrame);
   _mainWindow.verticalLayoutPipe->addWidget(wpipe);
 
-  PVViewer_GUIElements * pvge = PVViewer_GUIElements::GetInstance(this);
-//  pvge->setToolBarVisible(false);
-
   // In this mockup, we play on the parent widget visibility (a QFrame), so show these:
-  pvge->getPipelineBrowserWidget()->show();
-  pvge->getPropertiesPanel()->show();
+  _pvgui->getPipelineBrowserWidget()->show();
+  _pvgui->getPropertiesPanel()->show();
   // and hide these:
   _mainWindow.propFrame->hide();
   _mainWindow.pipelineFrame->hide();
-//  pvge->setToolBarEnabled(false);
-//  pvge->setToolBarVisible(false);
+//  _pvgui->setToolBarEnabled(false);
+//  _pvgui->setToolBarVisible(false);
 
 }
 
@@ -110,6 +109,19 @@ void PLMainWindow::showPipeline(bool isChecked)
   isChecked ? _mainWindow.pipelineFrame->show() : _mainWindow.pipelineFrame->hide();
 }
 
+void PLMainWindow::onBuildFilterMenu()
+{
+  if(_filterMenu == 0)
+    {
+      _filterMenu = _pvgui->getFiltersMenu();
+//      _filterMenu = new QMenu();
+      _filterMenu->setTitle("Filters");
+      this->menuBar()->addMenu(_filterMenu);
+    }
+  else
+    QMessageBox::warning(this, "Warning", "Filter menu already added!");
+}
+
 void PLMainWindow::addTab()
 {
   int c = _mainWindow.tabWidget->count();
@@ -120,6 +132,7 @@ void PLMainWindow::addTab()
   // Connect buttons
   QObject::connect(newTab, SIGNAL(onInsertSingleView(PLViewTab *)), this, SLOT(insertSingleView(PLViewTab *)));
   QObject::connect(newTab, SIGNAL(onInsertMultiView(PLViewTab *)), this, SLOT(insertMultiView(PLViewTab *)));
+  QObject::connect(newTab, SIGNAL(onInsertSpreadsheetView(PLViewTab *)), this, SLOT(insertSpreadsheetView(PLViewTab *)));
 }
 
 void PLMainWindow::deleteTab()
@@ -202,6 +215,26 @@ void PLMainWindow::insertSingleView(PLViewTab * tab)
   pqActiveObjects::instance().setActiveView(pqview);
 }
 
+void PLMainWindow::insertSpreadsheetView(PLViewTab * tab)
+{
+  // Create a new view proxy on the server
+  pqObjectBuilder* builder = _pAppC->getObjectBuilder();
+  pqServer* active_serv = pqActiveObjects::instance().activeServer();
+
+  std::cout << "About to create spreadsheet view ..." << std::endl;
+  pqView * pqview = builder->createView(QString("SpreadSheetView"), active_serv);
+  std::cout << "Created: " << pqview << "!" << std::endl;
+
+  // Retrieve its widget and pass it to the Qt tab:
+  QWidget* viewWidget = pqview->widget();
+
+//  QWidget* viewWidget = new QPushButton("toto");
+  tab->hideAndReplace(viewWidget, pqview);
+
+  pqActiveObjects::instance().setActiveView(pqview);
+}
+
+
 void PLMainWindow::insertMultiView(PLViewTab * tab)
 {
   // Retrieve TabbedMultiView and see if it is already attached to someone:
@@ -221,7 +254,6 @@ void PLMainWindow::insertMultiView(PLViewTab * tab)
     }
 }
 
-
 void PLMainWindow::doShrink()
 {
   if(!_simplePipeline.isEmpty())
index 91bd85a4f9935cf00bde98b747c3f2eb76156c92..727361cebaa2a50082de279bed67c4b960d91d8a 100644 (file)
@@ -31,6 +31,7 @@ class pqServer;
 class pqProxy;
 
 class PLViewTab;
+class PVViewer_GUIElements;
 
 /** Main window of the application.
  */
@@ -73,18 +74,25 @@ private slots:
 
   void insertSingleView(PLViewTab *);
   void insertMultiView(PLViewTab *);
+  void insertSpreadsheetView(PLViewTab *);
 
   void currentTabChanged(int);
 
+  void onBuildFilterMenu();
+
 private:
   Ui::MainWindow _mainWindow;
 
+  PVViewer_GUIElements * _pvgui;
+
   pqPVApplicationCore * _pAppC;
   //pqServer * _activeServer;
   //pqPipelineSource * _activeSource;  // last pipeline element
   QStack<pqPipelineSource *> _simplePipeline;
 
   bool _autoApply;
+
+  QMenu * _filterMenu;
 };
 
 #endif /* PLVIEWWIDGET_H_ */
index 9411d513e21fcca6c53c2ff1a5e4e00d42f3a578..1840d446c97e5a46f17156d45fbf67b18eb89661 100644 (file)
@@ -28,6 +28,11 @@ _renderView(0)
   _viewTab.setupUi(this);
 }
 
+void PLViewTab::insertSpreadsheetView()
+{
+  emit onInsertSpreadsheetView(this);
+}
+
 void PLViewTab::insertSingleView()
 {
   emit onInsertSingleView(this);
index 6ff4dac99bfde3f5d4b14c35f301184297c32253..75248dfe9e567856439b47e1dbe0a2b4081dde1c 100644 (file)
@@ -42,11 +42,13 @@ public:
 private slots:
   void insertSingleView();
   void insertMultiView();
+  void insertSpreadsheetView();
   void viewDestroyed();
 
 signals:
   void onInsertSingleView(PLViewTab *);
   void onInsertMultiView(PLViewTab *);
+  void onInsertSpreadsheetView(PLViewTab *);
 
 private:
   Ui::ViewTab _viewTab;
index 7daff83c77b3b6ccbed90d40bdbe9976cc36824b..23ea93481aedd4ddd63ef77b2d71494ad6eef69d 100644 (file)
@@ -70,7 +70,7 @@ PVViewer_GUIElements::PVViewer_GUIElements(QMainWindow* desk) :
   macrosMenu = new QMenu(0);
   pqParaViewMenuBuilders::buildMacrosMenu(*macrosMenu);
 
-  //myBuildToolbars(desk);
+//  myBuildToolbars(desk);
 }
 
 PVViewer_GUIElements * PVViewer_GUIElements::GetInstance(QMainWindow* desk)
index bcb3f303ee2d7b68ae401b93415ee35664867992..c7e3d08e258a941c36bfe22c9b336d558a701b3f 100644 (file)
@@ -58,8 +58,8 @@ int main(int argc, char ** argv)
 
   //para_widget->updateActiveServer();
 
-  //std::cout << "Load config ..." << std::endl;
-  //PVViewer_Core::ParaviewLoadConfigurations(QString(":/LightPara/Configuration/"));
+  std::cout << "Load config ..." << std::endl;
+  PVViewer_Core::ParaviewLoadConfigurations(QString(":/LightPara/Configuration"));
 
   /* Inspired from ParaView source code:
    * leave time for the GUI to update itself before displaying the main window: */
index 47c38e3aa81af6a1bccddcb2af877a0e8cc608ae..2c0e833b6d6780c3cd871e67bc163b0dd0c56a78 100644 (file)
     <addaction name="actionAuto_apply"/>
     <addaction name="actionShow_prop_widget"/>
     <addaction name="actionShow_pipeline"/>
+    <addaction name="actionBuild_filter_menu"/>
    </widget>
    <addaction name="menuFile"/>
    <addaction name="menuSimple_actions"/>
     <string>Show pipeline</string>
    </property>
   </action>
+  <action name="actionBuild_filter_menu">
+   <property name="text">
+    <string>Build filter menu</string>
+   </property>
+  </action>
  </widget>
  <resources/>
  <connections>
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>actionBuild_filter_menu</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>onBuildFilterMenu()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>504</x>
+     <y>338</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
  <slots>
   <signal>changedCurrentFile(QString)</signal>
   <slot>showPipeline(bool)</slot>
   <slot>showProp(bool)</slot>
   <slot>currentTabChanged(int)</slot>
+  <slot>onBuildFilterMenu()</slot>
  </slots>
 </ui>
index 67cae6a8ae08a5335ca11e03f81bafbf6b1cb9e0..2d001bdd69a9f1cf0bd8ff532b9067ffc7e9071d 100644 (file)
         </property>
        </widget>
       </item>
+      <item>
+       <widget class="QPushButton" name="spreadsheetViewButton">
+        <property name="text">
+         <string>Spreadsheet view</string>
+        </property>
+       </widget>
+      </item>
       <item>
        <spacer name="verticalSpacer">
         <property name="orientation">
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>spreadsheetViewButton</sender>
+   <signal>clicked()</signal>
+   <receiver>ViewTab</receiver>
+   <slot>insertSpreadsheetView()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>89</x>
+     <y>286</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>274</x>
+     <y>309</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
  <slots>
   <slot>insertMultiView()</slot>
   <slot>insertSingleView()</slot>
+  <slot>insertSpreadsheetView()</slot>
  </slots>
 </ui>
diff --git a/test/standalone/gui/xml/ParaViewFilters.xml b/test/standalone/gui/xml/ParaViewFilters.xml
new file mode 100644 (file)
index 0000000..d1da9c3
--- /dev/null
@@ -0,0 +1,247 @@
+<ParaViewFilters>
+  <Category name="Common" menu_label="&amp;Common" preserve_order="1"
+    show_in_toolbar="1">
+    <Proxy group="filters" name="Calculator" icon=":/pqWidgets/Icons/pqCalculator24.png"/>
+    <Proxy group="filters" name="Contour" icon=":/pqWidgets/Icons/pqIsosurface24.png"/>
+    <Proxy group="filters" name="Clip" icon=":/pqWidgets/Icons/pqClip24.png"/>
+    <Proxy group="filters" name="Cut" icon=":/pqWidgets/Icons/pqSlice24.png"/>
+    <Proxy group="filters" name="Threshold" icon=":/pqWidgets/Icons/pqThreshold24.png"/>
+    <Proxy group="filters" name="ExtractGrid" icon=":/pqWidgets/Icons/pqExtractGrid24.png"/>
+    <Proxy group="filters" name="Glyph" icon=":/pqWidgets/Icons/pqGlyph24.png"/>
+    <Proxy group="filters" name="StreamTracer" icon=":/pqWidgets/Icons/pqStreamTracer24.png"/>
+    <Proxy group="filters" name="WarpVector" icon=":/pqWidgets/Icons/pqWarp24.png"/>
+    <Proxy group="filters" name="GroupDataSets" icon=":/pqWidgets/Icons/pqGroup24.png"/>
+    <Proxy group="filters" name="ExtractHierarchicalLevel" icon=":/pqWidgets/Icons/pqGroupExtract24.png"/>
+  </Category>
+
+  <Category name="CosmoTools" menu_label="&amp;CosmoTools" show_in_toolbar="0">
+    <Proxy group="filters" name="ANLHaloFinder" />
+    <Proxy group="filters" name="ANLSubhaloFinder" />
+    <Proxy group="filters" name="LANLHaloFinder" />
+    <Proxy group="filters" name="MinkowskiFilter" />
+    <Proxy group="filters" name="PMergeConnected" />
+  </Category>
+
+  <Category name="DataAnalysis" menu_label="&amp;Data Analysis" show_in_toolbar="1" hide_for_tests="1">
+    <Proxy group="filters" name="Calculator"
+            icon=":/pqWidgets/Icons/pqCalculator24.png" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="ExtractSelection"
+            icon=":/pqWidgets/Icons/pqExtractSelection24.png" />
+    <Proxy group="filters" name="ExtractSelectionOverTime"
+            icon=":/pqWidgets/Icons/pqPlotSelectionOverTime24.png" />
+    <Proxy group="filters" name="ExtractHistogram"
+            icon=":/pqWidgets/Icons/pqHistogram24.png" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="IntegrateAttributes" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="ExtractFieldDataOverTime"
+            icon=":/pqWidgets/Icons/pqPlotGlobalOverTime24.png" />
+    <Proxy group="filters" name="ProbeLine"
+            icon=":/pqWidgets/Icons/pqPlotOverLine24.png" />
+    <Proxy group="filters" name="ProbePoint"
+            icon=":/pqWidgets/Icons/pqProbeLocation24.png" />
+    <Proxy group="filters" name="PlotAttributes" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="PlotOnSortedLines" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="PlotOnIntersectionCurves" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="ProgrammableFilter"
+            icon=":/pqWidgets/Icons/pqProgrammableFilter24.png" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="TransposeTable" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="ComputeQuartiles"
+            icon=":/pqWidgets/Icons/pqBoxChart16.png" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="ExtractBagPlots"
+            icon=":/pqWidgets/Icons/pqFunctionalBagChart16.png" omit_from_toolbar="1"/>
+    <Proxy group="filters" name="ExtractLocation" omit_from_toolbar="1" />
+  </Category>
+
+  <Category name="Statistics" menu_label="&amp;Statistics">
+    <Proxy group="filters" name="ContingencyStatistics"/>
+    <Proxy group="filters" name="DescriptiveStatistics"/>
+    <Proxy group="filters" name="KMeans"/>
+    <Proxy group="filters" name="MulticorrelativeStatistics"/>
+    <Proxy group="filters" name="PCAStatistics"/>
+  </Category>
+
+  <Category name="Temporal" menu_label="&amp;Temporal">
+    <Proxy group="filters" name="ParticleTracer" />
+    <Proxy group="filters" name="ParticlePath" />
+    <Proxy group="filters" name="StreakLine" />
+    <Proxy group="filters" name="TemporalCache" />
+    <Proxy group="filters" name="TemporalInterpolator" />
+    <Proxy group="filters" name="TemporalSnapToTimeStep" />
+    <Proxy group="filters" name="TemporalShiftScale" />
+    <Proxy group="filters" name="TemporalStatistics" />
+    <Proxy group="filters" name="TimeToTextConvertor" />
+  </Category>
+
+  <Category name="Material Analysis" menu_label="&amp;Material Analysis">
+    <Proxy group="filters" name="MaterialInterfaceFilter" />
+    <Proxy group="filters" name="IntersectFragments" />
+  </Category>
+
+  <Category name="CTH" menu_label="&amp;CTH">
+    <Proxy group="filters" name="CTHFragmentConnect"/>
+    <Proxy group="filters" name="CTHFragmentIntersect"/>
+    <Proxy group="filters" name="CTHPart" />
+    <Proxy group="filters" name="NonOverlappingLevelIdScalars" />
+    <Proxy group="filters" name="MaterialInterfaceFilter" />
+    <Proxy group="filters" name="AMRDualClip" />
+    <Proxy group="filters" name="AMRDualContour" />
+    <Proxy group="filters" name="AMRConnectivity" />
+    <Proxy group="filters" name="AMRFragmentIntegration" />
+    <Proxy group="filters" name="AMRFragmentsFilter"/>
+    <Proxy group="filters" name="ExtractHierarchicalLevel" />
+    <Proxy group="filters" name="ExtractHierarchicalDataSets" />
+  </Category>
+
+  <Category name="AMR" menu_label="&amp;AMR">
+    <Proxy group="filters" name="AMRDualMeshExtractor" />
+    <Proxy group="filters" name="AMRResampleFilter" />
+    <Proxy group="filters" name="AMRSlice" />
+    <Proxy group="filters" name="AMRToMultiBlock" />
+    <Proxy group="filters" name="AMRCutPlane" />
+    <Proxy group="filters" name="OverlappingLevelIdScalars" />
+    <Proxy group="filters" name="ExtractHierarchicalLevel" />
+    <Proxy group="filters" name="ExtractHierarchicalDataSets" />
+  </Category>
+
+  <Category name="Quadrature Points" menu_label="&amp;Quadrature Points">
+    <Proxy group="filters" name="QuadraturePointInterpolator" />
+    <Proxy group="filters" name="QuadraturePointsGenerator" />
+    <Proxy group="filters" name="QuadraturePointStatistics" />
+    <Proxy group="filters" name="QuadratureSchemeDictionaryGenerator" />
+  </Category>
+
+  <Category name="Annotation" menu_label="Annotation">
+    <Proxy group="filters" name="AnnotateGlobalData" />
+    <Proxy group="filters" name="AnnotateAttributeData" />
+    <Proxy group="filters" name="PythonAnnotation" />
+    <Proxy group="filters" name="TimeToTextConvertor" />
+    <Proxy group="filters" name="DataSetRegionSurfaceFilter" />
+    <Proxy group="filters" name="EnvironmentAnnotation" />
+  </Category>
+
+  <Proxy group="filters" name="AddFieldArrays" />
+  <Proxy group="filters" name="ImageDataToAMR" />
+  <Proxy group="filters" name="UniformGridPartitioner" />
+  <Proxy group="filters" name="Append" />
+  <Proxy group="filters" name="AppendAttributes" />
+  <Proxy group="filters" name="AppendPolyData" />
+  <Proxy group="filters" name="AngularPeriodicFilter" />
+  <Proxy group="filters" name="ArbitrarySourceStreamTracer" />
+  <Proxy group="filters" name="BlockIdScalars" />
+  <Proxy group="filters" name="RandomAttributeGenerator" />
+  <Proxy group="filters" name="BrownianPoints" />
+  <Proxy group="filters" name="Calculator" />
+  <Proxy group="filters" name="CellCenters" />
+  <Proxy group="filters" name="CellDataToPointData" />
+  <Proxy group="filters" name="CellDerivatives"/>
+  <Proxy group="filters" name="CleanPolyData" />
+  <Proxy group="filters" name="CleanUnstructuredGrid" />
+  <Proxy group="filters" name="CleanUnstructuredGridCells" />
+  <Proxy group="filters" name="Clip" />
+  <Proxy group="filters" name="ClipClosedSurface" />
+  <Proxy group="filters" name="Contour" />
+  <Proxy group="filters" name="Curvatures" />
+  <Proxy group="filters" name="Cut" />
+  <Proxy group="filters" name="CutEverything" />
+  <Proxy group="filters" name="D3" />
+  <Proxy group="filters" name="DataSetSurfaceFilter" />
+  <Proxy group="filters" name="DataSetRegionSurfaceFilter" />
+  <Proxy group="filters" name="DataSetTriangleFilter" />
+  <Proxy group="filters" name="DecimatePro" />
+  <Proxy group="filters" name="Delaunay2D" />
+  <Proxy group="filters" name="Delaunay3D" />
+  <Proxy group="filters" name="ElevationFilter" />
+  <Proxy group="filters" name="ExtractBlock" />
+  <Proxy group="filters" name="ExtractComponent" />
+  <Proxy group="filters" name="ExtractEdges" />
+  <Proxy group="filters" name="ExtractGeometry" />
+  <Proxy group="filters" name="ExtractGrid" />
+  <Proxy group="filters" name="ExtractHistogram" />
+  <Proxy group="filters" name="ExtractSelection" />
+  <Proxy group="filters" name="ExtractSelectionOverTime" />
+  <Proxy group="filters" name="FeatureEdges" />
+  <Proxy group="filters" name="FFTSelectionOverTime" />
+  <Proxy group="filters" name="GaussianSplatter"/>
+  <Proxy group="filters" name="GenerateIdScalars"/>
+  <Proxy group="filters" name="Glyph" />
+  <Proxy group="filters" name="GlyphWithCustomSource" />
+  <Proxy group="filters" name="Gradient" />
+  <Proxy group="filters" name="GridConnectivity" />
+  <Proxy group="filters" name="GroupDataSets" />
+  <Proxy group="filters" name="ImageDataToAMR" />
+  <Proxy group="filters" name="ImageDataToPointSet" />
+  <Proxy group="filters" name="IntegrateAttributes" />
+  <Proxy group="filters" name="IntegrateFlowThroughSurface" />
+  <Proxy group="filters" name="LegacyGlyph" />
+  <!--  <Proxy group="filters" name="LevelIdScalars" /> -->
+  <Proxy group="filters" name="LinearExtrusionFilter" />
+  <Proxy group="filters" name="LoopSubdivisionFilter" />
+  <Proxy group="filters" name="MaskPoints" />
+  <Proxy group="filters" name="Median" />
+  <Proxy group="filters" name="MergeBlocks" />
+  <Proxy group="filters" name="MeshQuality" />
+  <Proxy group="filters" name="OctreeDepthLimit" />
+  <Proxy group="filters" name="OctreeDepthScalars" />
+  <Proxy group="filters" name="OutlineCornerFilter" />
+  <Proxy group="filters" name="OutlineFilter" />
+  <Proxy group="filters" name="ParticlePathLines" />
+  <Proxy group="filters" name="ParticleTracer" />
+  <Proxy group="filters" name="PassArrays" />
+  <Proxy group="filters" name="PlotAttributes" />
+  <Proxy group="filters" name="PlotOnIntersectionCurves" />
+  <Proxy group="filters" name="PlotOnSortedLines" />
+  <Proxy group="filters" name="PointDataToCellData" />
+  <Proxy group="filters" name="PolyDataNormals" />
+  <Proxy group="filters" name="Probe" />
+  <Proxy group="filters" name="ImageResampling" />
+  <Proxy group="filters" name="ProbeLine" />
+  <Proxy group="filters" name="ProbePoint" />
+  <Proxy group="filters" name="ProcessIdScalars" />
+  <Proxy group="filters" name="ProgrammableFilter" />
+  <Proxy group="filters" name="PVConnectivityFilter" />
+  <Proxy group="filters" name="PythonCalculator" />
+  <Proxy group="filters" name="PythonExtractSelection" />
+
+  <Proxy group="filters" name="QuadricClustering" />
+  <Proxy group="filters" name="RectilinearGridConnectivity" />
+  <Proxy group="filters" name="RectilinearGridToPointSet" />
+  <Proxy group="filters" name="ReflectionFilter" />
+  <Proxy group="filters" name="RibbonFilter" />
+  <Proxy group="filters" name="RotationalExtrusionFilter" />
+  <Proxy group="filters" name="ScatterPlot"/>
+  <Proxy group="filters" name="ShrinkFilter" />
+  <Proxy group="filters" name="SmoothPolyDataFilter" />
+  <Proxy group="filters" name="StreamTracer" />
+  <Proxy group="filters" name="Stripper" />
+  <Proxy group="filters" name="StructuredGridOutlineFilter" />
+  <Proxy group="filters" name="Subdivide" />
+  <Proxy group="filters" name="SurfaceVectors" />
+  <Proxy group="filters" name="TemporalCache" />
+  <Proxy group="filters" name="TemporalInterpolator" />
+  <Proxy group="filters" name="TemporalSnapToTimeStep" />
+  <Proxy group="filters" name="TemporalShiftScale" />
+  <Proxy group="filters" name="TemporalStatistics" />
+  <Proxy group="filters" name="TensorGlyph" />
+  <Proxy group="filters" name="TessellatorFilter" />
+  <Proxy group="filters" name="TextureMapToCylinder" />
+  <Proxy group="filters" name="TextureMapToPlane" />
+  <Proxy group="filters" name="TextureMapToSphere" />
+  <Proxy group="filters" name="Threshold" />
+  <Proxy group="filters" name="TransformFilter" />
+  <Proxy group="filters" name="TriangleFilter" />
+  <Proxy group="filters" name="TubeFilter" />
+  <Proxy group="filters" name="UnstructuredGradient" />
+  <Proxy group="filters" name="WarpScalar" />
+  <Proxy group="filters" name="WarpVector" />
+  <Proxy group="filters" name="YoungsMaterialInterface"/>
+  <Proxy group="filters" name="NormalGlyphs" />
+  <Proxy group="filters" name="TableToPolyData" />
+  <Proxy group="filters" name="TableToStructuredGrid" />
+  <Proxy group="filters" name="IsoVolume" />
+
+  <Proxy group="filters" name="GenericClip" />
+  <Proxy group="filters" name="GenericContour" />
+  <Proxy group="filters" name="GenericCut" />
+  <Proxy group="filters" name="GenericStreamTracer" />
+  <Proxy group="filters" name="GenericGeometryFilter" />
+  <Proxy group="filters" name="SliceAlongPolyLine" />
+</ParaViewFilters>