// PARAVIS : ParaView wrapper SALOME module
//
-// Copyright (C) 2010-2012 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 <SALOME_ListIO.hxx>
#include <SALOMEDS_Tool.hxx>
#include <PyInterp_Dispatcher.h>
+#include <PyConsole_Console.h>
#include <QtxActionMenuMgr.h>
#include <QtxActionToolMgr.h>
#endif
ParavisModule = this;
- // Clear old macros
+ // Clear old copies of embedded macros files
QString aDestPath = QString( "%1/.config/%2/Macros" ).arg( QDir::homePath() ).arg( QApplication::applicationName() );
QStringList aFilter;
aFilter << "*.py";
QDir aDestDir(aDestPath);
QStringList aDestFiles = aDestDir.entryList(aFilter, QDir::Files);
- foreach (QString aStr, aDestFiles) {
- aDestDir.remove(aStr);
+ foreach (QString aMacrosPath, getEmbeddedMacrosList()) {
+ QString aMacrosName = QFileInfo(aMacrosPath).fileName();
+ if (aDestFiles.contains(aMacrosName)) {
+ aDestDir.remove(aMacrosName);
+ }
}
}
QShortcut *ctrlSpace = new QShortcut(Qt::CTRL + Qt::Key_Space, aDesktop);
QObject::connect(ctrlSpace, SIGNAL(activated()),
pqApplicationCore::instance(), SLOT(quickLaunch()));
- QShortcut *altSpace = new QShortcut(Qt::ALT + Qt::Key_Space, aDesktop);
- QObject::connect(altSpace, SIGNAL(activated()),
- pqApplicationCore::instance(), SLOT(quickLaunch()));
- // End pqParaViewBehaviors
// Find Plugin Dock Widgets
QList<QDockWidget*> currentDocks = aDesktop->findChildren<QDockWidget*>();
bool isStop = aResourceMgr->booleanValue( "PARAVIS", "stop_trace", false );
// start timer to activate trace in a proper moment
if(!isStop)
- startTimer( 50 );
+ startTimer( 1000 );
this->VTKConnect = vtkEventQtSlotConnect::New();
SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
bool isStop = aResourceMgr->booleanValue( "PARAVIS", "stop_trace", false );
if(!isStop)
- startTimer( 50 );
+ startTimer( 500 );
}
void PVGUI_Module::onDataRepresentationCreated(pqDataRepresentation* data) {
}
}
-
-/*!
- \brief Launches a tracing of current server
-*/
-void PVGUI_Module::timerEvent(QTimerEvent* te )
+void PVGUI_Module::execPythonCommand(const QString& cmd, bool inSalomeConsole)
{
-#ifndef WNT
- PyInterp_Dispatcher* aDispatcher = PyInterp_Dispatcher::Get();
- if ( !aDispatcher->IsBusy() ) {
+ if ( PyInterp_Dispatcher::Get()->IsBusy() ) return;
+ if ( inSalomeConsole ) {
+ SalomeApp_Application* app =
+ dynamic_cast< SalomeApp_Application* >(SUIT_Session::session()->activeApplication());
+ PyConsole_Console* pyConsole = app->pythonConsole();
+ if (pyConsole)
+ pyConsole->exec(cmd);
+ }
+ else {
pqPythonManager* manager = qobject_cast<pqPythonManager*>
( pqApplicationCore::instance()->manager( "PYTHON_MANAGER" ) );
if ( manager ) {
if ( pyDiag ) {
pqPythonShell* shell = pyDiag->shell();
if ( shell ) {
- QString script = "from paraview import smtrace\nsmtrace.start_trace()\n";
- shell->executeScript(script);
- killTimer( te->timerId() );
+ shell->executeScript(cmd);
}
}
}
}
+}
+
+/*!
+ \brief Launches a tracing of current server
+*/
+void PVGUI_Module::timerEvent(QTimerEvent* te )
+{
+#ifndef WNT
+ execPythonCommand("from paraview import smtrace\nsmtrace.start_trace()\n", false);
+ killTimer( te->timerId() );
#endif
}
-void PVGUI_Module::updateMacros()
+/*!
+ \brief Get list of embedded macros files
+*/
+QStringList PVGUI_Module::getEmbeddedMacrosList()
{
- pqPythonManager* aPythonManager = pqPVApplicationCore::instance()->pythonManager();
- if(!aPythonManager) {
- return;
- }
-
QString aRootDir = getenv("PARAVIS_ROOT_DIR");
QString aSourcePath = aRootDir + "/bin/salome/Macro";
QDir aSourceDir(aSourcePath);
QStringList aSourceFiles = aSourceDir.entryList(aFilter, QDir::Files);
- foreach (QString aStr, aSourceFiles) {
- aPythonManager->addMacro(aSourcePath + "/" + aStr);
+ QStringList aFullPathSourceFiles;
+ foreach (QString aMacrosName, aSourceFiles) {
+ aFullPathSourceFiles << aSourceDir.absoluteFilePath(aMacrosName);
+ }
+ return aFullPathSourceFiles;
+}
+
+void PVGUI_Module::updateMacros()
+{
+ pqPythonManager* aPythonManager = pqPVApplicationCore::instance()->pythonManager();
+ if(!aPythonManager) {
+ return;
+ }
+
+ foreach (QString aStr, getEmbeddedMacrosList()) {
+ aPythonManager->addMacro(aStr);
}
}
SUIT_ExceptionHandler::addCleanUpRoutine( paravisCleanUp );
+ storeCommonWindowsState();
+
bool isDone = SalomeApp_Module::activateModule( study );
if ( !isDone ) return false;
if (myOldMsgHandler)
qInstallMsgHandler(myOldMsgHandler);
+ restoreCommonWindowsState();
+
return SalomeApp_Module::deactivateModule( study );
}
}
}
+/*!
+ \brief. Show ParaView python trace.
+*/
void PVGUI_Module::onShowTrace()
{
if (!myTraceWindow) {
myTraceWindow->activateWindow();
}
+
+/*!
+ \brief. Re-initialize ParaView python trace.
+*/
+void PVGUI_Module::onRestartTrace()
+{
+ QString script = "from paraview import smtrace\n";
+ script += "smtrace.stop_trace()\n";
+ script += "smtrace.start_trace()\n";
+ execPythonCommand(script, false);
+}
+
/*!
\brief Show ParaView view.
*/