// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
// File : PVGUI_Module.cxx
-// Author : Julia DOROVSKIKH
#include <Standard_math.hxx> // E.A. must be included before Python.h to fix compilation on windows
#ifdef HAVE_FINITE
# include "PARAVIS_Gen_i.hh"
#endif
-//#include "PV_Tools.h"
+#include CORBA_SERVER_HEADER(SALOME_ModuleCatalog)
+#include CORBA_SERVER_HEADER(SALOMEDS)
#include "PVGUI_ViewModel.h"
#include "PVGUI_ViewManager.h"
#include <pqPythonScriptEditor.h>
#include <pqDataRepresentation.h>
#include <pqPipelineRepresentation.h>
-#include <pqLookupTableManager.h>
+//#include <pqLookupTableManager.h>
#include <pqDisplayColorWidget.h>
#include <pqColorToolbar.h>
#include <pqScalarBarVisibilityReaction.h>
+#include <pqStandardPropertyWidgetInterface.h>
+#include <pqStandardViewFrameActionsImplementation.h>
+#include <pqViewStreamingBehavior.h>
+
+#include <PARAVIS_version.h>
+
+#include <vtkPVConfig.h>
#include <pqServerResource.h>
#include <pqServerConnectReaction.h>
#include <pqServerDisconnectReaction.h>
#include <pqApplicationCore.h>
+#include <pqAutoLoadPluginXMLBehavior.h>
+#include <pqCommandLineOptionsBehavior.h>
+#include <pqCrashRecoveryBehavior.h>
+#include <pqDataTimeStepBehavior.h>
+#include <pqDefaultViewBehavior.h>
+#include <pqObjectPickingBehavior.h>
+#include <pqPersistentMainWindowStateBehavior.h>
+#include <pqPipelineContextMenuBehavior.h>
+#include <pqPluginActionGroupBehavior.h>
+#include <pqPluginDockWidgetsBehavior.h>
+#include <pqPluginManager.h>
+#include <pqSpreadSheetVisibilityBehavior.h>
+#include <pqUndoRedoBehavior.h>
#include <pqServerManagerObserver.h>
+#include <pqVerifyRequiredPluginBehavior.h>
+#include <pqFixPathsInStateFilesBehavior.h>
+#include <pqPluginSettingsBehavior.h>
+#include <pqPropertiesPanel.h>
+
+#include <pqApplyBehavior.h>
+
#include <vtkClientServerInterpreterInitializer.h>
#include <vtkPVConfig.h>
-#include <PARAVIS_version.h>
-
-#include CORBA_SERVER_HEADER(SALOME_ModuleCatalog)
+// Trace related
+#include <vtkNew.h>
+#include <vtkSMTrace.h>
+#include <vtkSMSessionProxyManager.h>
+#include <vtkSMParaViewPipelineController.h>
//----------------------------------------------------------------------------
pqPVApplicationCore* PVGUI_Module::MyCoreApp = 0;
SALOME module wrapping ParaView GUI.
*/
-
-/*
- Fix for the issue 21730: [CEA 596] Slice of polyhedron in PARAVIS returns no cell.
- Wrap vtkEDFCutter filter.
-*/
-
-extern "C" void vtkEDFCutterCS_Initialize(vtkClientServerInterpreter*);
-static void vtkEDFHelperInit();
-
-void vtkEDFHelperInit(vtkClientServerInterpreter* interp){
- vtkEDFCutterCS_Initialize(interp);
-}
-
-void vtkEDFHelperInit() {
- vtkClientServerInterpreterInitializer::GetInitializer()->
- RegisterCallback(&vtkEDFHelperInit);
-}
-
-
_PTR(SComponent)
ClientFindOrCreateParavisComponent(_PTR(Study) theStudyDocument)
{
}
}
- // Find Plugin Menus
- QList<QMenu*> currentMenus = aDesktop->findChildren<QMenu*>();
- QList<QMenu*>::iterator im;
- for (im = currentMenus.begin(); im != currentMenus.end(); ++im) {
- if(!activeMenus.contains(*im)) {
- myMenus.append(*im);
- }
- }
+ // Find Plugin Menus
+ // [ABN] TODO: fix this - triggers a SEGFAULT at deactivation() time.
+// QList<QMenu*> currentMenus = aDesktop->findChildren<QMenu*>();
+// QList<QMenu*>::iterator im;
+// for (im = currentMenus.begin(); im != currentMenus.end(); ++im) {
+// if(!activeMenus.contains(*im)) {
+// QString s = (*im)->title();
+// std::cout << " MENU "<< s.toStdString() << std::endl;
+// myMenus.append(*im);
+// }
+// }
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
QString aPath = resMgr->stringValue("resources", "PARAVIS", QString());
}
void PVGUI_Module::onDataRepresentationCreated(pqDataRepresentation* data) {
- if(!data)
- return;
-
- if(!data->getLookupTable())
- return;
-
- SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
- if(!aResourceMgr)
- return;
-
- bool visible = aResourceMgr->booleanValue( "PARAVIS", "show_color_legend", false );
- pqLookupTableManager* lut_mgr = pqApplicationCore::instance()->getLookupTableManager();
-
- if(lut_mgr) {
- lut_mgr->setScalarBarVisibility(data,visible);
- }
-
- connect(data, SIGNAL(dataUpdated()), this, SLOT(onDataRepresentationUpdated()));
+// if(!data)
+// return;
+//
+// if(!data->getLookupTable())
+// return;
+//
+// SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+// if(!aResourceMgr)
+// return;
+//
+// bool visible = aResourceMgr->booleanValue( "PARAVIS", "show_color_legend", false );
+// pqLookupTableManager* lut_mgr = pqApplicationCore::instance()->getLookupTableManager();
+//
+// if(lut_mgr) {
+// lut_mgr->setScalarBarVisibility(data,visible);
+// }
+//
+// connect(data, SIGNAL(dataUpdated()), this, SLOT(onDataRepresentationUpdated()));
}
void PVGUI_Module::onDataRepresentationUpdated() {
}
}
-void PVGUI_Module::execPythonCommand(const QString& cmd, bool inSalomeConsole)
-{
- if ( inSalomeConsole ) {
- if ( PyInterp_Dispatcher::Get()->IsBusy() ) return;
- SalomeApp_Application* app =
- dynamic_cast< SalomeApp_Application* >(SUIT_Session::session()->activeApplication());
- PyConsole_Console* pyConsole = app->pythonConsole();
- if (pyConsole)
- pyConsole->exec(cmd);
- }
- else
- {
- SalomeApp_Application* app =
- dynamic_cast< SalomeApp_Application* >(SUIT_Session::session()->activeApplication());
- PyConsole_Interp* pyInterp = app->pythonConsole()->getInterp();
- PyLockWrapper aGil;
- pyInterp->run(cmd.toStdString().c_str());
-// pqPythonManager* manager = qobject_cast<pqPythonManager*>
-// ( pqApplicationCore::instance()->manager( "PYTHON_MANAGER" ) );
-// if ( manager )
-// {
-// pqPythonDialog* pyDiag = manager->pythonShellDialog();
-// if ( pyDiag )
-// {
-// pqPythonShell* shell = pyDiag->shell();
-// if ( shell ) {
-// shell->executeScript(cmd);
-// }
-// }
-// }
- }
-}
-
/*!
\brief Initialisation timer event - fired only once, after the GUI loop is ready.
See creation in initialize().
#ifndef PARAVIS_WITH_FULL_CORBA
connectToExternalPVServer();
#endif
-
-#ifndef WNT
-// if ( PyInterp_Dispatcher::Get()->IsBusy() )
-// {
-// // Reschedule for later
-// MESSAGE("interpreter busy -> rescheduling trace start.");
-// startTimer(500);
-// }
-// else
-// {
- MESSAGE("timerEvent(): About to start trace....");
- execPythonCommand("from paraview import smtrace;smtrace.start_trace()", false);
- MESSAGE("timerEvent(): Trace STARTED....");
-// }
-#endif
-
- MESSAGE("initialize(): Initializing PARAVIS's Python context ...");
- execPythonCommand("import paraview.servermanager as sm; sm.fromGUI=True", false);
- MESSAGE("initialize(): Initialized.");
}
/*!
*/
// End of Initializer code
+ MyCoreApp->settings();
+
vtkOutputWindow::SetInstance(PVGUI_OutputWindowAdapter::New());
new pqTabbedMultiViewWidget(); // it registers as "MULTIVIEW_WIDGET on creation
pqLoadDataReaction::loadData(aFiles);
}
+/**!
+ * Start trace invoking the newly introduced C++ API (PV 4.2)
+ * (inspired from pqTraceReaction::start())
+ */
+void PVGUI_Module::startTrace()
+{
+ vtkSMSessionProxyManager* pxm = pqActiveObjects::instance().activeServer()->proxyManager();
+
+ vtkSmartPointer<vtkSMProxy> proxy;
+ proxy.TakeReference(pxm->NewProxy("pythontracing", "PythonTraceOptions"));
+ if (proxy)
+ {
+ vtkNew<vtkSMParaViewPipelineController> controller;
+ controller->InitializeProxy(proxy);
+ }
+ vtkSMTrace* trace = vtkSMTrace::StartTrace();
+ if (proxy)
+ {
+ // Set manually the properties entered via the dialog box poping-up when requiring
+ // a trace start in PV4.2 (trace options)
+ trace->SetPropertiesToTraceOnCreate(vtkSMTrace::RECORD_USER_MODIFIED_PROPERTIES);
+ trace->SetFullyTraceSupplementalProxies(false);
+ }
+}
+
+void PVGUI_Module::stopTrace()
+{
+ vtkSMTrace::StopTrace();
+}
+
void PVGUI_Module::executeScript(const char *script)
{
#ifndef WNT
static const QString MYReplaceImportStr("except: from pvsimple import *");
QString PVGUI_Module::getTraceString()
{
- QString traceString;
-#ifndef WNT
- {
- PyLockWrapper lck; // Acquire GIL
-
- const char * code = "from paraview import smtrace;"
- "__smtraceString = smtrace.get_trace_string()";
- PyRun_SimpleString(code);
- // Now get the value of __smtraceString
- PyObject* main_module = PyImport_AddModule((char*)"__main__");
- PyObject* global_dict = PyModule_GetDict(main_module);
- PyObject* string_object = PyDict_GetItemString(global_dict, "__smtraceString");
- char* string_ptr = string_object ? PyString_AsString(string_object) : 0;
- if (string_ptr) {
- traceString = string_ptr;
- }
- } // release GIL
+ vtkSMTrace *tracer = vtkSMTrace::GetActiveTracer();
+ if (!tracer) // trace is not started
+ return QString("");
+ QString traceString(tracer->GetCurrentTrace());
+
+ // Replace import "paraview.simple" by "pvsimple"
if ((!traceString.isNull()) && traceString.length() != 0) {
int aPos = traceString.indexOf(MYReplaceStr);
while (aPos != -1) {
traceString = traceString.replace(aImportPos, MYReplaceImportStr.length(), "except:\n import pvsimple\n from pvsimple import *");
}
}
-#endif
+
return traceString;
}
setPreferenceProperty(aSaveType, "indexes", aIndices);
//rnv: imp 21712: [CEA 581] Preference to display legend by default
- int aDispColoreLegend = addPreference( tr( "PREF_SHOW_COLOR_LEGEND" ), aParaVisSettingsTab,
- LightApp_Preferences::Bool, "PARAVIS", "show_color_legend");
+ // [ABN]: now fixed in ParaView.
+// int aDispColoreLegend = addPreference( tr( "PREF_SHOW_COLOR_LEGEND" ), aParaVisSettingsTab,
+// LightApp_Preferences::Bool, "PARAVIS", "show_color_legend");
}
/*!
*/
void PVGUI_Module::onRestartTrace()
{
- QString script = "from paraview import smtrace\n";
- script += "smtrace.stop_trace()\n";
- script += "smtrace.start_trace()\n";
- execPythonCommand(script, false);
+ stopTrace();
+ startTrace();
}
/*!
bool flag = false;
PVGUI_EXPORT CAM_Module* createModule() {
- if(!flag) {
- vtkEDFHelperInit();
- flag = true;
- }
+// if(!flag) {
+// vtkEDFHelperInit();
+// flag = true;
+// }
return new PVGUI_Module();
}