// PARAVIS : ParaView wrapper SALOME module
//
-// 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
#include <QtxActionToolMgr.h>
#include <LightApp_Application.h>
-#include <SalomeApp_Application.h>
+#include <SalomeApp_Application.h> // // should ultimately be a LightApp only
#include <SUIT_Desktop.h>
#include <QApplication>
#include <pqMultiBlockInspectorPanel.h>
#include <pqProgressWidget.h>
#include <pqProgressManager.h>
-//#include <pqDisplayProxyEditorWidget.h>
#include <pqPropertiesPanel.h>
#include <pqApplicationCore.h>
#include <pqColorMapEditor.h>
#include <pqDeleteReaction.h>
-//class ResizeHelper : public pqPVAnimationWidget
-//{
-// // TEMPORARILY WORKAROUND AROUND PARAVIEW 3.14 BUG:
-// // WHEN ANIMATION VIEW IS RESIZED, ITS CONTENTS IS NOT PREPERLY RE-ARRANGED
-// // CAUSING SOME CONTROLS TO STAY NON-VISIBLE
-// // THIS BUG IS NATURALLY FIXED BY ADDING
-// // this->updateGeometries();
-// // TO THE
-// // void pqAnimationWidget::resizeEvent(QResizeEvent* e);
-// // BUT THIS CANNOT BE DONE DIRECTLY, SINCE CORRESPONDING API IS NOT PUBLIC
-// // THE ONLY WAY TO DO THIS BY SENDING SHOW EVENT TO THE WIDGET
-//
-//public:
-// ResizeHelper( QWidget* parent ) : pqPVAnimationWidget( parent ) {}
-//protected:
-// void resizeEvent(QResizeEvent* e)
-// {
-// pqAnimationWidget* w = findChild<pqAnimationWidget*>( "pqAnimationWidget" );
-// if ( w ) {
-// QShowEvent e;
-// QApplication::sendEvent( w, &e );
-// }
-// pqPVAnimationWidget::resizeEvent( e );
-// }
-//};
+#include <vtkPVGeneralSettings.h>
+
+class ResizeHelper : public pqPVAnimationWidget
+{
+ // TEMPORARY WORKAROUND AROUND PARAVIEW 3.14 BUG:
+ // WHEN ANIMATION VIEW IS RESIZED, ITS CONTENTS IS NOT PREPERLY RE-ARRANGED
+ // CAUSING SOME CONTROLS TO STAY NON-VISIBLE
+ // THIS BUG IS NATURALLY FIXED BY ADDING
+ // this->updateGeometries();
+ // TO THE
+ // void pqAnimationWidget::resizeEvent(QResizeEvent* e);
+ // BUT THIS CANNOT BE DONE DIRECTLY, SINCE CORRESPONDING API IS NOT PUBLIC
+ // THE ONLY WAY TO DO THIS BY SENDING SHOW EVENT TO THE WIDGET
+
+public:
+ ResizeHelper( QWidget* parent ) : pqPVAnimationWidget( parent ) {}
+protected:
+ void resizeEvent(QResizeEvent* e)
+ {
+ pqAnimationWidget* w = findChild<pqAnimationWidget*>( "pqAnimationWidget" );
+ if ( w ) {
+ QShowEvent e;
+ QApplication::sendEvent( w, &e );
+ }
+ pqPVAnimationWidget::resizeEvent( e );
+ }
+};
/*!
\brief Create dock widgets for ParaView widgets such as object inspector, pipeline browser, etc.
desk->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
desk->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
+ desk->setTabPosition(Qt::LeftDockWidgetArea, QTabWidget::North);
// Pipeline
QDockWidget* pipelineBrowserDock = new QDockWidget( tr( "TTL_PIPELINE_BROWSER" ), desk );
pqPipelineBrowserWidget* browser = guiElements->getPipelineBrowserWidget();
pipelineBrowserDock->setWidget(browser);
myDockWidgets[pipelineBrowserDock] = true;
+ pipelineBrowserDock->hide();
- // Properties dock (previously called OBJECT_INSPECTOR)
+ // PROPERTIES, DISPLAY and VIEW:
+ // See ParaViewMainWindow.cxx - those three panels can be separated or grouped.
+ pqSettings *settings = pqApplicationCore::instance()->settings();
+
+ // Properties dock (previously called OBJECT_INSPECTOR)
QDockWidget* propertiesDock = new QDockWidget( tr( "TTL_OBJECT_INSPECTOR" ), desk );
propertiesDock->setObjectName("propertiesDock");
propertiesDock->setAllowedAreas( Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea );
QAction* tempDeleteAction = new QAction(this);
pqDeleteReaction* handler = new pqDeleteReaction(tempDeleteAction);
handler->connect(propertiesPanel, SIGNAL(deleteRequested(pqPipelineSource*)), SLOT(deleteSource(pqPipelineSource*)));
-
myDockWidgets[propertiesDock] = true;
+ propertiesDock->hide();
+
+ // Display dock
+ QDockWidget* displayPropertiesDock = new QDockWidget( tr( "TTL_DISPLAY" ), desk );
+ displayPropertiesDock->setObjectName("displayPropertiesDock");
+ displayPropertiesDock->setAllowedAreas( Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea );
+ desk->addDockWidget( Qt::LeftDockWidgetArea, displayPropertiesDock );
+
+ pqPropertiesPanel* displayPropertiesPanel = new pqPropertiesPanel();
+ displayPropertiesPanel->setObjectName("displayPropertiesPanel");
+ displayPropertiesPanel->setProperty("panelMode", QVariant(2)); // probably to have only the Display part
+ displayPropertiesDock->setWidget(displayPropertiesPanel);
+ myDockWidgets[displayPropertiesDock] = false;
+ displayPropertiesDock->hide();
+
+ // View dock
+ QDockWidget* viewPropertiesDock = new QDockWidget( tr( "TTL_VIEW_PANEL" ), desk );
+ viewPropertiesDock->setObjectName("viewPropertiesDock");
+ viewPropertiesDock->setAllowedAreas( Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea );
+ desk->addDockWidget( Qt::LeftDockWidgetArea, viewPropertiesDock );
+
+ pqPropertiesPanel* viewPropertiesPanel = new pqPropertiesPanel();
+ viewPropertiesPanel->setObjectName("viewPropertiesPanel");
+ viewPropertiesPanel->setProperty("panelMode", QVariant(4)); // probably to have only the View part
+ viewPropertiesDock->setWidget(viewPropertiesPanel);
+ myDockWidgets[viewPropertiesDock] = false;
+ viewPropertiesDock->hide();
+
+ // Taken from ParaViewMainWindow.cxx:
+ int propertiesPanelMode = settings->value(
+ "GeneralSettings.PropertiesPanelMode", vtkPVGeneralSettings::ALL_IN_ONE).toInt();
+ switch (propertiesPanelMode)
+ {
+ case vtkPVGeneralSettings::SEPARATE_DISPLAY_PROPERTIES:
+ viewPropertiesDock->hide();
+ propertiesPanel->setPanelMode(
+ pqPropertiesPanel::SOURCE_PROPERTIES|pqPropertiesPanel::VIEW_PROPERTIES);
+ break;
+
+ case vtkPVGeneralSettings::SEPARATE_VIEW_PROPERTIES:
+ displayPropertiesDock->hide();
+ propertiesPanel->setPanelMode(
+ pqPropertiesPanel::SOURCE_PROPERTIES|pqPropertiesPanel::DISPLAY_PROPERTIES);
+ break;
+
+ case vtkPVGeneralSettings::ALL_SEPARATE:
+ propertiesPanel->setPanelMode(pqPropertiesPanel::SOURCE_PROPERTIES);
+ break;
+
+ case vtkPVGeneralSettings::ALL_IN_ONE:
+ default:
+ propertiesPanel->setPanelMode(
+ pqPropertiesPanel::SOURCE_PROPERTIES|pqPropertiesPanel::VIEW_PROPERTIES|pqPropertiesPanel::DISPLAY_PROPERTIES);
+ viewPropertiesDock->hide();
+ displayPropertiesDock->hide();
+ break;
+ }
// Information dock
QDockWidget* informationDock = new QDockWidget(tr( "TTL_INFORMATION" ), desk);
QWidget* informationWidgetFrame = new QWidget(informationDock);
informationWidgetFrame->setObjectName("informationWidgetFrame");
-
+
QVBoxLayout* verticalLayout_2 = new QVBoxLayout(informationWidgetFrame);
verticalLayout_2->setSpacing(0);
verticalLayout_2->setContentsMargins(0, 0, 0, 0);
myDockWidgets[informationDock] = true;
- desk->setTabPosition(Qt::LeftDockWidgetArea, QTabWidget::North);
- desk->tabifyDockWidget(informationDock, propertiesDock);
- desk->tabifyDockWidget(propertiesDock, pipelineBrowserDock);
- //propertiesDock->raise();
+ desk->tabifyDockWidget(propertiesDock, viewPropertiesDock);
+ desk->tabifyDockWidget(propertiesDock, displayPropertiesDock);
+ desk->tabifyDockWidget(propertiesDock, informationDock);
+ propertiesDock->raise();
// Statistic View
QDockWidget* statisticsViewDock = new QDockWidget( tr( "TTL_STATISTICS_VIEW" ), desk );
QDockWidget* animationViewDock = new QDockWidget( tr( "TTL_ANIMATION_VIEW" ), desk );
animationViewDock->setObjectName("animationViewDock");
desk->addDockWidget( Qt::BottomDockWidgetArea, animationViewDock );
- pqPVAnimationWidget* animation_panel = new pqPVAnimationWidget(animationViewDock); // [ABN] was resizeHelper
+ pqPVAnimationWidget* animation_panel = new ResizeHelper(animationViewDock); // [ABN] was resizeHelper
animationViewDock->setWidget(animation_panel);
myDockWidgets[animationViewDock] = false; // hidden by default
aProgress->setEnabled(true);
// Set up the dock window corners to give the vertical docks more room.
- desk->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
- desk->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
+// desk->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
+// desk->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
// Setup the default dock configuration ...
statisticsViewDock->hide();
/*!
\brief Save states of dockable ParaView widgets.
*/
-void PVGUI_Module::saveDockWidgetsState()
+void PVGUI_Module::saveDockWidgetsState(bool hideWidgets)
{
SUIT_Desktop* desk = application()->desktop();
it1.next();
QDockWidget* dw = qobject_cast<QDockWidget*>( it1.key() );
myDockWidgets[dw] = dw->isVisible();
- dw->setVisible( false );
- dw->toggleViewAction()->setVisible( false );
+ if ( hideWidgets ) {
+ dw->setVisible( false );
+ dw->toggleViewAction()->setVisible( false );
+ }
}
// store toolbar breaks state and remove all tollbar breaks
QMapIterator<QWidget*, bool> it2( myToolbarBreaks );
it2.next();
QToolBar* tb = qobject_cast<QToolBar*>( it2.key() );
myToolbarBreaks[tb] = desk->toolBarBreak( tb );
- if ( myToolbarBreaks[tb] )
+ if ( myToolbarBreaks[tb] && hideWidgets )
desk->removeToolBarBreak( tb );
}
// store toolbars visibility state and hide'em all
it3.next();
QToolBar* tb = qobject_cast<QToolBar*>( it3.key() );
myToolbars[tb] = tb->isVisible();
- tb->setVisible( false );
- tb->toggleViewAction()->setVisible( false );
+ if ( hideWidgets ) {
+ tb->setVisible( false );
+ tb->toggleViewAction()->setVisible( false );
+ }
}
}
// restoreCommonWindowsState() method, and at the moment of the ParaVis activation we call
// this method.
+ //LightApp_Application* anApp = getApp();
SalomeApp_Application* anApp = getApp();
if(!anApp)
return;
- int begin = SalomeApp_Application::WT_ObjectBrowser;
- int end = SalomeApp_Application::WT_NoteBook;
+// int begin = SalomeApp_Application::WT_ObjectBrowser;
+// int end = SalomeApp_Application::WT_NoteBook;
+ int begin = LightApp_Application::WT_ObjectBrowser;
+ int end = LightApp_Application::WT_User;
for( int i = begin; i <= end; i++ ) {
QWidget* wg = anApp->getWindow(i);
if(wg) {
*/
void PVGUI_Module::restoreCommonWindowsState() {
SalomeApp_Application* anApp = getApp();
+// LightApp_Application* anApp = getApp();
if(!anApp)
return;
DockWindowMap::const_iterator it = myCommonMap.begin();