-// 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)
{
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);
}