// PARAVIS : ParaView wrapper SALOME module
//
-// Copyright (C) 2010-2013 CEA/DEN, EDF R&D
+// Copyright (C) 2010-2014 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
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
//
#include "PVGUI_Module.h"
+#include "PVViewer_ViewManager.h"
+#include "PVViewer_GUIElements.h"
#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 <pqObjectInspectorWidget.h>
-#include <pqDisplayProxyEditorWidget.h>
+//#include <pqDisplayProxyEditorWidget.h>
+#include <pqPropertiesPanel.h>
-#include <pqAlwaysConnectedBehavior.h>
#include <pqApplicationCore.h>
-#include <pqAutoLoadPluginXMLBehavior.h>
-#include <pqCommandLineOptionsBehavior.h>
-#include <pqCrashRecoveryBehavior.h>
-#include <pqDataTimeStepBehavior.h>
-#include <pqDefaultViewBehavior.h>
-#include <pqDeleteBehavior.h>
-#include <pqPersistentMainWindowStateBehavior.h>
-#include <pqPluginActionGroupBehavior.h>
-#include <pqPluginDockWidgetsBehavior.h>
#include <pqPluginManager.h>
-#include <pqPVNewSourceBehavior.h>
-#include <pqSpreadSheetVisibilityBehavior.h>
-#include <pqStandardViewModules.h>
-#include <pqUndoRedoBehavior.h>
-#include <pqViewFrameActionsBehavior.h>
#include <pqParaViewMenuBuilders.h>
#include <pqCollaborationPanel.h>
#include <pqMemoryInspectorPanel.h>
#include <pqColorMapEditor.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 <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 );
+// }
+//};
/*!
\brief Create dock widgets for ParaView widgets such as object inspector, pipeline browser, etc.
- ParaView pqMainWIndowCore class is fully responsible for these dock widgets' contents.
+ ParaView pqMainWindowCore class is fully responsible for these dock widgets' contents.
+ ==> To update this function, see the reference set up of ParaView in Application/Paraview/ParaviewMainWindow.ui
*/
void PVGUI_Module::setupDockWidgets()
{
SUIT_Desktop* desk = application()->desktop();
+ PVViewer_GUIElements * guiElements = PVViewer_GUIElements::GetInstance(desk);
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 );
pipelineBrowserDock->setObjectName("pipelineBrowserDock");
pipelineBrowserDock->setAllowedAreas( Qt::LeftDockWidgetArea|Qt::NoDockWidgetArea|Qt::RightDockWidgetArea );
desk->addDockWidget( Qt::LeftDockWidgetArea, pipelineBrowserDock );
- pqPipelineBrowserWidget* browser = new pqPipelineBrowserWidget(pipelineBrowserDock);
- pqParaViewMenuBuilders::buildPipelineBrowserContextMenu(*browser);
+ pqPipelineBrowserWidget* browser = guiElements->getPipelineBrowserWidget();
pipelineBrowserDock->setWidget(browser);
myDockWidgets[pipelineBrowserDock] = true;
- //Object inspector
- QDockWidget* objectInspectorDock = new QDockWidget( tr( "TTL_OBJECT_INSPECTOR" ), desk );
- objectInspectorDock->setObjectName("objectInspectorDock");
- objectInspectorDock->setAllowedAreas( Qt::LeftDockWidgetArea|Qt::NoDockWidgetArea|Qt::RightDockWidgetArea );
- desk->addDockWidget( Qt::LeftDockWidgetArea, objectInspectorDock );
-
- pqObjectInspectorWidget* objectInspectorWidget = new pqObjectInspectorWidget(objectInspectorDock);
- objectInspectorDock->setObjectName("objectInspectorWidget");
- objectInspectorWidget->setShowOnAccept(true);
- objectInspectorDock->setWidget(objectInspectorWidget);
- connect( objectInspectorWidget, SIGNAL( helpRequested(const QString&, const QString&) ), this, SLOT( showHelpForProxy(const QString&, const QString&) ) );
- myDockWidgets[objectInspectorDock] = true;
-
- //Display Dock
- QDockWidget* displayDock = new QDockWidget( tr( "TTL_DISPLAY" ), desk );
- displayDock->setObjectName("displayDock");
- QWidget* displayWidgetFrame = new QWidget(displayDock);
- displayWidgetFrame->setObjectName("displayWidgetFrame");
- displayDock->setWidget(displayWidgetFrame);
-
- QScrollArea* displayScrollArea = new QScrollArea(displayWidgetFrame);
- displayScrollArea->setObjectName("displayScrollArea");
- displayScrollArea->setWidgetResizable(true);
-
- QVBoxLayout* verticalLayout = new QVBoxLayout(displayWidgetFrame);
- verticalLayout->setSpacing(0);
- verticalLayout->setContentsMargins(0, 0, 0, 0);
-
- pqDisplayProxyEditorWidget* displayWidget = new pqDisplayProxyEditorWidget(displayDock);
- displayWidget->setObjectName("displayWidget");
- displayScrollArea->setWidget(displayWidget);
- verticalLayout->addWidget(displayScrollArea);
-
- myDockWidgets[displayDock] = true;
-
- // information dock
+ // Properties dock (previously called OBJECT_INSPECTOR)
+ QDockWidget* propertiesDock = new QDockWidget( tr( "TTL_OBJECT_INSPECTOR" ), desk );
+ propertiesDock->setObjectName("propertiesDock");
+ propertiesDock->setAllowedAreas( Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea );
+ desk->addDockWidget( Qt::LeftDockWidgetArea, propertiesDock );
+
+ pqPropertiesPanel* propertiesPanel = guiElements->getPropertiesPanel();
+ propertiesDock->setWidget(propertiesPanel);
+ connect( propertiesPanel, SIGNAL( helpRequested(const QString&, const QString&) ), this, SLOT( showHelpForProxy(const QString&, const QString&) ) );
+ // hook delete to pqDeleteReaction.
+ QAction* tempDeleteAction = new QAction(this);
+ pqDeleteReaction* handler = new pqDeleteReaction(tempDeleteAction);
+ handler->connect(propertiesPanel, SIGNAL(deleteRequested(pqPipelineSource*)), SLOT(deleteSource(pqPipelineSource*)));
+
+ myDockWidgets[propertiesDock] = true;
+
+ // Information dock
QDockWidget* informationDock = new QDockWidget(tr( "TTL_INFORMATION" ), desk);
informationDock->setObjectName("informationDock");
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(objectInspectorDock, displayDock);
- desk->tabifyDockWidget(objectInspectorDock, informationDock);
- objectInspectorDock->raise();
+ desk->tabifyDockWidget(informationDock, propertiesDock);
+ desk->tabifyDockWidget(propertiesDock, pipelineBrowserDock);
+ //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 ResizeHelper(animationViewDock); //pqPVAnimationWidget
+ pqPVAnimationWidget* animation_panel = new pqPVAnimationWidget(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();
comparativePanelDock->hide();
dw->setVisible( it1.value() );
dw->toggleViewAction()->setVisible( true );
}
- // restore toolbar breaks state
- QMapIterator<QWidget*, bool> it2( myToolbarBreaks );
- while( it2.hasNext() ) {
- it2.next();
- QToolBar* tb = qobject_cast<QToolBar*>( it2.key() );
- if ( myToolbarBreaks[tb] )
- desk->insertToolBarBreak( tb );
- }
+
+ // restore toolbar breaks state
+ QMapIterator<QWidget*, bool> it2( myToolbarBreaks );
+ while( it2.hasNext() ) {
+ it2.next();
+ QToolBar* tb = qobject_cast<QToolBar*>( it2.key() );
+ if ( myToolbarBreaks[tb] )
+ desk->insertToolBarBreak( tb );
+ }
+
// restore toolbar visibility state
QMapIterator<QWidget*, bool> it3( myToolbars );
while( it3.hasNext() ) {
// 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) {
QDockWidget* dock = 0;
QWidget* w = wg->parentWidget();
while ( w && !dock ) {
- dock = ::qobject_cast<QDockWidget*>( w );
- w = w->parentWidget();
+ dock = ::qobject_cast<QDockWidget*>( w );
+ w = w->parentWidget();
}
if(dock){
- if(!myCommonMap.contains(i)){
- myCommonMap.insert(i,dock->isVisible());
- } else {
- myCommonMap[i] = dock->isVisible();
- }
+ if(!myCommonMap.contains(i)){
+ myCommonMap.insert(i,dock->isVisible());
+ } else {
+ myCommonMap[i] = dock->isVisible();
+ }
}
}
}
*/
void PVGUI_Module::restoreCommonWindowsState() {
SalomeApp_Application* anApp = getApp();
+// LightApp_Application* anApp = getApp();
if(!anApp)
return;
DockWindowMap::const_iterator it = myCommonMap.begin();
QDockWidget* dock = 0;
QWidget* w = wg->parentWidget();
while ( w && !dock ) {
- dock = ::qobject_cast<QDockWidget*>( w );
- w = w->parentWidget();
+ dock = ::qobject_cast<QDockWidget*>( w );
+ w = w->parentWidget();
}
if(dock) {
- dock->setVisible(it.value());
+ dock->setVisible(it.value());
}
}
}