#include "PVViewer_EngineWrapper.h"
#include <Utils_SALOME_Exception.hxx>
-//#include <SalomeApp_Application.h>
#include <SUIT_Session.h>
+#include <PyInterp_Utils.h>
+
+class PVViewer_EngineWrapper::Private
+{
+public:
+ PyObjWrapper pvserverEngine;
+};
PVViewer_EngineWrapper * PVViewer_EngineWrapper::instance = NULL;
return instance;
}
-//static SalomeApp_Application* getApplication()
-//{
-// if ( SUIT_Session::session() )
-// return dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
-// return 0;
-//}
-//
-//PVViewer_EngineWrapper::PVViewer_EngineWrapper()
-//// : pvserverEngine(NULL)
-//{
-// _component = getApplication()->lcc()->FindOrLoad_Component( "FactoryServer", "PARAVIS" );
-//}
-//
-//bool PVViewer_EngineWrapper::GetGUIConnected()
-//{
-// CORBA::Request_var req = _component->_request("GetGUIConnected");
-// req->set_return_type(CORBA::_tc_boolean);
-// req->invoke();
-// CORBA::Exception *exc =req->env()->exception();
-// if( exc )
-// throw SALOME_Exception("Unable to invoke PARAVIS engine!");
-// CORBA::Any & ret = req->return_value();
-// CORBA::Boolean bo;
-//
-// if (ret >>= bo)
-// return bool(bo);
-// else
-// throw SALOME_Exception("Unable to convert engine result!");
-//}
-//
-//void PVViewer_EngineWrapper::SetGUIConnected(bool isConnected)
-//{
-// CORBA::Request_var req = _component->_request("SetGUIConnected");
-// CORBA::Boolean arg = isConnected;
-// req->add_in_arg() <<= arg;
-// req->set_return_type(CORBA::_tc_void);
-// req->invoke();
-// CORBA::Exception *exc =req->env()->exception();
-// if( exc )
-// throw SALOME_Exception("Unable to invoke PARAVIS engine!");
-//}
-//
-//std::string PVViewer_EngineWrapper::FindOrStartPVServer(int port)
-//{
-// CORBA::Request_var req = _component->_request("FindOrStartPVServer");
-// CORBA::Long arg = port;
-// req->add_in_arg() <<= arg;
-// req->set_return_type(CORBA::_tc_string);
-// req->invoke();
-// CORBA::Exception *exc =req->env()->exception();
-// if( exc )
-// throw SALOME_Exception("Unable to invoke PARAVIS engine!");
-//
-// const char* ret;
-// if(req->return_value() >>= ret)
-// return std::string(ret);
-// else
-// throw SALOME_Exception("Unable to convert engine result!");
-//}
-
-PVViewer_EngineWrapper::PVViewer_EngineWrapper() :
- pvserverEngine(NULL)
+PVViewer_EngineWrapper::PVViewer_EngineWrapper()
{
+ myData = new Private;
PyLockWrapper lock;
const char* code = "import PVSERVER_utils as pa;__enginePVSERVER=pa.getEngine()";
int ret = PyRun_SimpleString(const_cast<char*>(code));
PyObject* main_module = PyImport_AddModule((char*)"__main__");
PyObject* global_dict = PyModule_GetDict(main_module);
PyObjWrapper tmp(PyDict_GetItemString(global_dict, "__enginePVSERVER"));
- pvserverEngine = tmp;
+ myData->pvserverEngine = tmp;
}
-
+PVViewer_EngineWrapper::~PVViewer_EngineWrapper()
+{
+ delete myData;
+}
bool PVViewer_EngineWrapper::GetGUIConnected()
{
PyLockWrapper lock;
- PyObjWrapper obj(PyObject_CallMethod(pvserverEngine, (char*)("GetGUIConnected"), NULL));
+ PyObjWrapper obj(PyObject_CallMethod(myData->pvserverEngine, (char*)("GetGUIConnected"), NULL));
if (!obj)
{
PyErr_Print();
{
PyLockWrapper lock;
- PyObjWrapper obj(PyObject_CallMethod(pvserverEngine, (char*)("SetGUIConnected"),
+ PyObjWrapper obj(PyObject_CallMethod(myData->pvserverEngine, (char*)("SetGUIConnected"),
(char *)"i", (int)isConnected ) );
if (!obj)
{
std::string PVViewer_EngineWrapper::FindOrStartPVServer(int port)
{
PyLockWrapper lock;
- PyObjWrapper obj(PyObject_CallMethod(pvserverEngine, (char*)("FindOrStartPVServer"),
+ PyObjWrapper obj(PyObject_CallMethod(myData->pvserverEngine, (char*)("FindOrStartPVServer"),
(char *)"i", port ) );
if (!obj)
{
void PVViewer_EngineWrapper::PutPythonTraceStringToEngine(const char * str)
{
PyLockWrapper lock;
- PyObjWrapper obj(PyObject_CallMethod(pvserverEngine, (char*)("PutPythonTraceStringToEngine"),
+ PyObjWrapper obj(PyObject_CallMethod(myData->pvserverEngine, (char*)("PutPythonTraceStringToEngine"),
(char *)"s", str) );
if (!obj)
{