+ // TODO: check if ParaView view already exists
+ if ( !Implementation ){
+ LightApp_Application* anApp = getApp();
+ SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+ PVGUI_ViewManager* viewMgr = new PVGUI_ViewManager( anApp->activeStudy(), anApp->desktop() );
+ anApp->addViewManager( viewMgr );
+ connect( viewMgr, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ),
+ anApp, SLOT( onCloseView( SUIT_ViewManager* ) ) );
+ //connect( viewMgr, SIGNAL( viewCreated( SUIT_ViewWindow* ) ), vm, SLOT( onViewCreated( SUIT_ViewWindow* ) ) );
+ //connect( viewMgr, SIGNAL( deleteView( SUIT_ViewWindow* ) ), this, SLOT( onViewDeleted( SUIT_ViewWindow* ) ) );
+ SUIT_ViewWindow* wnd = viewMgr->createViewWindow();
+
+ // Simulate ParaView client main window
+ Implementation = new pqImplementation( anApp->desktop() );
+ PVGUI_ViewWindow* pvWnd = dynamic_cast<PVGUI_ViewWindow*>( wnd );
+ pvWnd->setMultiViewManager( &Implementation->Core.multiViewManager() );
+
+ setupDockWidgets();
+
+ pvCreateActions();
+ pvCreateMenus();
+ pvCreateToolBars();
+
+ setupDockWidgetsContextMenu();
+
+ // Now that we're ready, initialize everything ...
+ Implementation->Core.initializeStates();
+ }
+}
+
+/*!
+ \brief Manage the label of Undo operation.
+*/
+void PVGUI_Module::onUndoLabel(const QString& label)
+{
+ action(UndoId)->setText(
+ label.isEmpty() ? tr("Can't Undo") : QString(tr("&Undo %1")).arg(label));
+ action(UndoId)->setStatusTip(
+ label.isEmpty() ? tr("Can't Undo") : QString(tr("Undo %1")).arg(label));
+}
+
+/*!
+ \brief Manage the label of Redo operation.
+*/
+void PVGUI_Module::onRedoLabel(const QString& label)
+{
+ action(RedoId)->setText(
+ label.isEmpty() ? tr("Can't Redo") : QString(tr("&Redo %1")).arg(label));
+ action(RedoId)->setStatusTip(
+ label.isEmpty() ? tr("Can't Redo") : QString(tr("Redo %1")).arg(label));
+}
+
+/*!
+ \brief Manage the label of Undo Camera operation.
+*/
+void PVGUI_Module::onCameraUndoLabel(const QString& label)
+{
+ action(CameraUndoId)->setText(
+ label.isEmpty() ? tr("Can't Undo Camera") : QString(tr("U&ndo %1")).arg(label));
+ action(CameraUndoId)->setStatusTip(
+ label.isEmpty() ? tr("Can't Undo Camera") : QString(tr("Undo %1")).arg(label));
+}
+
+/*!
+ \brief Manage the label of Redo Camera operation.
+*/
+void PVGUI_Module::onCameraRedoLabel(const QString& label)
+{
+ action(CameraRedoId)->setText(
+ label.isEmpty() ? tr("Can't Redo Camera") : QString(tr("R&edo %1")).arg(label));
+ action(CameraRedoId)->setStatusTip(
+ label.isEmpty() ? tr("Can't Redo Camera") : QString(tr("Redo %1")).arg(label));
+}
+
+/*!
+ \brief Slot to delete all objects.
+*/
+void PVGUI_Module::onDeleteAll()
+{
+ pqObjectBuilder* builder = pqApplicationCore::instance()->getObjectBuilder();
+ Implementation->Core.getApplicationUndoStack()->beginUndoSet("Delete All");
+ builder->destroyPipelineProxies();
+ Implementation->Core.getApplicationUndoStack()->endUndoSet();
+}
+
+/*!
+ \brief Slot to check/uncheck the action for corresponding selection mode.
+*/
+void PVGUI_Module::onSelectionModeChanged(int mode)
+{
+ if( toolMgr()->toolBar( mySelectionControlsTb )->isEnabled() ) {
+ if(mode == pqRubberBandHelper::SELECT) //surface selection
+ action(SelectCellsOnId)->setChecked(true);
+ else if(mode == pqRubberBandHelper::SELECT_POINTS) //surface selection
+ action(SelectPointsOnId)->setChecked(true);
+ else if(mode == pqRubberBandHelper::FRUSTUM)
+ action(SelectCellsThroughId)->setChecked(true);
+ else if(mode == pqRubberBandHelper::FRUSTUM_POINTS)
+ action(SelectPointsThroughId)->setChecked(true);
+ else if (mode == pqRubberBandHelper::BLOCKS)
+ action(SelectBlockId)->setChecked(true);
+ else // INTERACT
+ action(InteractId)->setChecked(true);
+ }
+}
+
+/*!
+ \brief Slot to manage the change of axis center.
+*/
+void PVGUI_Module::onShowCenterAxisChanged(bool enabled)
+{
+ action(ShowCenterId)->setEnabled(enabled);
+ action(ShowCenterId)->blockSignals(true);
+ pqRenderView* renView = qobject_cast<pqRenderView*>(
+ pqActiveView::instance().current());
+ action(ShowCenterId)->setChecked( renView ? renView->getCenterAxesVisibility() : false);
+ action(ShowCenterId)->blockSignals(false);
+}
+
+/*!
+ \brief Slot to set tooltips for the first anf the last frames, i.e. a time range of animation.
+*/
+void PVGUI_Module::setTimeRanges(double start, double end)
+{
+ action(FirstFrameId)->setToolTip(QString("First Frame (%1)").arg(start, 0, 'g'));
+ action(LastFrameId)->setToolTip(QString("Last Frame (%1)").arg(end, 0, 'g'));
+}
+
+/*!
+ \brief Slot to manage the plaing process of animation.
+*/
+void PVGUI_Module::onPlaying(bool playing)
+{
+ SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+ if(playing) {
+ disconnect( action(PlayId), SIGNAL( triggered() ),
+ &Implementation->Core.VCRController(), SLOT( onPlay() ) );
+ connect( action(PlayId), SIGNAL( triggered() ),
+ &Implementation->Core.VCRController(), SLOT( onPause() ) );
+ action(PlayId)->setIcon(QIcon(resMgr->loadPixmap("ParaView",tr("ICON_PAUSE"),false)));
+ action(PlayId)->setText("Pa&use");
+ }
+ else {
+ connect( action(PlayId), SIGNAL( triggered() ),
+ &Implementation->Core.VCRController(), SLOT( onPlay() ) );
+ disconnect( action(PlayId), SIGNAL( triggered() ),
+ &Implementation->Core.VCRController(), SLOT( onPause() ) );
+ action(PlayId)->setIcon(QIcon(resMgr->loadPixmap("ParaView",tr("ICON_PLAY"),false)));
+ action(PlayId)->setText("&Play");
+ }
+
+ Implementation->Core.setSelectiveEnabledState(!playing);
+}
+
+/*!
+ \brief Slot to add camera link.
+*/
+void PVGUI_Module::onAddCameraLink()
+{
+ pqView* vm = pqActiveView::instance().current();
+ pqRenderView* rm = qobject_cast<pqRenderView*>(vm);
+ if(rm) rm->linkToOtherView();
+ else SUIT_MessageBox::warning(getApp()->desktop(),
+ tr("WARNING"), tr("WRN_ADD_CAMERA_LINK"));
+}
+
+/*!
+ \brief Slot to show information about ParaView.
+*/
+void PVGUI_Module::onHelpAbout()
+{
+ pqClientAboutDialog* const dialog = new pqClientAboutDialog(getApp()->desktop());
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ dialog->show();
+}
+
+/*!
+ \brief Returns the ParaView multi-view manager.
+*/
+pqViewManager* PVGUI_Module::getMultiViewManager() const
+{
+ pqViewManager* aMVM = 0;
+ if ( Implementation )
+ aMVM = &Implementation->Core.multiViewManager();
+ return aMVM;