Salome HOME
PVViewer: further code split between pure ParaView stuff and SALOME.
[modules/gui.git] / src / PVViewer / PVViewer_GUIElements.cxx
index c534b8a72aafedcd991954780103a74a338cbd38..e2b77ddb84661e7d9b0cef57f6b155bb41fe596c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2014  CEA/DEN, EDF R&D
+// Copyright (C) 2010-2015  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // Author: Adrien Bruneton (CEA)
 
 #include "PVViewer_GUIElements.h"
-#include "SUIT_Desktop.h"
 
 #include <pqPropertiesPanel.h>
 #include <pqPipelineBrowserWidget.h>
 #include <pqParaViewMenuBuilders.h>
+#include <pqMainControlsToolbar.h>
+#include <pqVCRToolbar.h>
+#include <pqAnimationTimeToolbar.h>
+#include <pqColorToolbar.h>
+#include <pqRepresentationToolbar.h>
+#include <pqCameraToolbar.h>
+#include <pqAxesToolbar.h>
+#include <pqSetName.h>
 
+#include <pqPythonManager.h>
+#include <pqApplicationCore.h>
+
+#include <QMainWindow>
 #include <QMenu>
 #include <QList>
 #include <QAction>
+#include <QToolBar>
+#include <QLayout>
+
+#include <QCoreApplication>
 
 PVViewer_GUIElements * PVViewer_GUIElements::theInstance = 0;
 
-PVViewer_GUIElements::PVViewer_GUIElements(SUIT_Desktop* desk) :
+PVViewer_GUIElements::PVViewer_GUIElements(QMainWindow* desk) :
   propertiesPanel(0), pipelineBrowserWidget(0),
   sourcesMenu(0)
 {
@@ -46,58 +61,148 @@ PVViewer_GUIElements::PVViewer_GUIElements(SUIT_Desktop* desk) :
   pqParaViewMenuBuilders::buildFiltersMenu(*filtersMenu, desk);
   macrosMenu = new QMenu(0);
   pqParaViewMenuBuilders::buildMacrosMenu(*macrosMenu);
+
+  myBuildToolbars(desk);
 }
 
-PVViewer_GUIElements * PVViewer_GUIElements::GetInstance(SUIT_Desktop* desk)
+PVViewer_GUIElements * PVViewer_GUIElements::GetInstance(QMainWindow* desk)
 {
   if (! theInstance)
     theInstance = new PVViewer_GUIElements(desk);
   return theInstance;
 }
 
-//void PVViewer_GUIElements::updateSourcesMenu(QMenu *menu)
-//{
-//  if (menu)
-//    {
-//      menu->clear();
-//      QList<QAction *> act_list = sourcesMenu->actions();
-//      foreach(QAction * a, act_list)
-//      {
-//        menu->addAction(a);
-//      }
-//    }
-//}
-//
-//void PVViewer_GUIElements::updateFiltersMenu(QMenu *menu)
-//{
-//  if (menu)
-//    {
-//      filtersMenu->linkToMenu(menu);
-//      menu->clear();
-//      QList<QAction *> act_list = filtersMenu->actions();
-//      foreach(QAction * a, act_list)
-//      {
-//        menu->addAction(a);
-//      }
-//    }
-//}
-//
-//void PVViewer_GUIElements::updateMacrosMenu(QMenu *menu)
-//{
-//  if (menu)
-//    {
-//      menu->clear();
-//      QList<QAction *> act_list = macrosMenu->actions();
-//      foreach(QAction * a, act_list)
-//      {
-//        menu->addAction(a);
-//      }
-//    }
-//}
-
-
-void PVViewer_GUIElements::onEmulateApply()
+/**
+ * See ParaView source code: pqParaViewMenuBuilders::buildToolbars()
+ * to keep this function up to date:
+ */
+void PVViewer_GUIElements::myBuildToolbars(QMainWindow* mainWindow)
+{
+  mainToolBar = new pqMainControlsToolbar(mainWindow)
+    << pqSetName("MainControlsToolbar");
+  mainToolBar->layout()->setSpacing(0);
+
+  vcrToolbar = new pqVCRToolbar(mainWindow)
+    << pqSetName("VCRToolbar");
+  vcrToolbar->layout()->setSpacing(0);
+
+  timeToolbar = new pqAnimationTimeToolbar(mainWindow)
+    << pqSetName("currentTimeToolbar");
+  timeToolbar->layout()->setSpacing(0);
+
+  colorToolbar = new pqColorToolbar(mainWindow)
+    << pqSetName("variableToolbar");
+  colorToolbar->layout()->setSpacing(0);
+
+  reprToolbar = new pqRepresentationToolbar(mainWindow)
+    << pqSetName("representationToolbar");
+  reprToolbar->layout()->setSpacing(0);
+
+  cameraToolbar = new pqCameraToolbar(mainWindow)
+    << pqSetName("cameraToolbar");
+  cameraToolbar->layout()->setSpacing(0);
+
+  axesToolbar = new pqAxesToolbar(mainWindow)
+    << pqSetName("axesToolbar");
+  axesToolbar->layout()->setSpacing(0);
+
+  // Give the macros menu to the pqPythonMacroSupervisor
+  pqPythonManager* manager = qobject_cast<pqPythonManager*>(
+    pqApplicationCore::instance()->manager("PYTHON_MANAGER"));
+
+  macrosToolbar = new QToolBar("Macros Toolbars", mainWindow)
+      << pqSetName("MacrosToolbar");
+  manager->addWidgetForRunMacros(macrosToolbar);
+
+  commonToolbar = new QToolBar("Common", mainWindow) << pqSetName("Common");
+  commonToolbar->layout()->setSpacing(0);
+
+  dataToolbar = new QToolBar("DataAnalysis", mainWindow) << pqSetName("DataAnalysis");
+  dataToolbar->layout()->setSpacing(0);
+
+  addToolbars(mainWindow);
+}
+
+void PVViewer_GUIElements::setToolBarVisible(bool show)
+{
+  QCoreApplication::processEvents();
+  mainAction->setChecked(!show);
+  mainAction->setVisible(show);
+  mainAction->trigger();
+  vcrAction->setChecked(!show);
+  vcrAction->setVisible(show);
+  vcrAction->trigger();
+  timeAction->setChecked(!show);
+  timeAction->setVisible(show);
+  timeAction->trigger();
+  colorAction->setChecked(!show);
+  colorAction->setVisible(show);
+  colorAction->trigger();
+  reprAction->setChecked(!show);
+  reprAction->setVisible(show);
+  reprAction->trigger();
+  cameraAction->setChecked(!show);
+  cameraAction->setVisible(show);
+  cameraAction->trigger();
+  axesAction->setChecked(!show);
+  axesAction->setVisible(show);
+  axesAction->trigger();
+  macrosAction->setChecked(!show);
+  macrosAction->setVisible(show);
+  macrosAction->trigger();
+  commonAction->setChecked(!show);
+  commonAction->setVisible(show);
+  commonAction->trigger();
+  dataAction->setChecked(!show);
+  dataAction->setVisible(show);
+  dataAction->trigger();
+}
+
+void PVViewer_GUIElements::addToolbars(QMainWindow* desk)
+{
+  desk->addToolBar(Qt::TopToolBarArea, mainToolBar);
+  desk->addToolBar(Qt::TopToolBarArea, vcrToolbar);
+  desk->addToolBar(Qt::TopToolBarArea, timeToolbar);
+  desk->addToolBar(Qt::TopToolBarArea, colorToolbar);
+  desk->insertToolBarBreak(colorToolbar);
+  desk->addToolBar(Qt::TopToolBarArea, reprToolbar);
+  desk->addToolBar(Qt::TopToolBarArea, cameraToolbar);
+  desk->addToolBar(Qt::TopToolBarArea, axesToolbar);
+  desk->addToolBar(Qt::TopToolBarArea, macrosToolbar);
+  desk->addToolBar(Qt::TopToolBarArea, commonToolbar);
+  desk->addToolBar(Qt::TopToolBarArea, dataToolbar);
+
+  mainAction = mainToolBar->toggleViewAction();
+  vcrAction = vcrToolbar->toggleViewAction();
+  timeAction = timeToolbar->toggleViewAction();
+  colorAction = colorToolbar->toggleViewAction();
+  reprAction = reprToolbar->toggleViewAction();
+  cameraAction = cameraToolbar->toggleViewAction();
+  axesAction = axesToolbar->toggleViewAction();
+  macrosAction = macrosToolbar->toggleViewAction();
+  commonAction = commonToolbar->toggleViewAction();
+  dataAction = dataToolbar->toggleViewAction();
+}
+
+QList<QToolBar*> PVViewer_GUIElements::getToolbars()
+{
+  QList<QToolBar*> l;
+  l << mainToolBar << vcrToolbar << timeToolbar << colorToolbar
+    << reprToolbar << cameraToolbar << axesToolbar << macrosToolbar
+    << commonToolbar << dataToolbar;
+  return l;
+}
+
+void PVViewer_GUIElements::setToolBarEnabled(bool enabled)
 {
-  if (propertiesPanel)
-    propertiesPanel->apply();
+  mainToolBar  ->setEnabled(enabled);
+  vcrToolbar   ->setEnabled(enabled);
+  timeToolbar  ->setEnabled(enabled);
+  colorToolbar ->setEnabled(enabled);
+  reprToolbar  ->setEnabled(enabled);
+  cameraToolbar->setEnabled(enabled);
+  axesToolbar  ->setEnabled(enabled);
+  macrosToolbar->setEnabled(enabled);
+  commonToolbar->setEnabled(enabled);
+  dataToolbar  ->setEnabled(enabled);
 }