X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOME_PYQT%2FSALOME_PYQT_GUI%2FSALOME_PYQT_Module.cxx;h=4b44353888ab88c3b17cdc9f75d47a7099c192e3;hb=8faac81a;hp=31439aedad097c5c37b067e1789cdfc06765bd69;hpb=ebedad009fafa24900d3cc8e9727a294b5c4dc34;p=modules%2Fgui.git diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx index 31439aeda..4b4435388 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // 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 @@ -29,6 +29,8 @@ #include #include +#include + // // NB: Python requests. // General rule for Python requests created by Python-based GUI modules @@ -43,7 +45,7 @@ // and to get C API from sip : sipBuildResult for example // -#define INIT_FUNCTION initSalomePyQtGUILight +#define INIT_FUNCTION PyInit_SalomePyQtGUILight #if defined(SIP_STATIC_MODULE) extern "C" void INIT_FUNCTION(); #else @@ -64,12 +66,13 @@ PyMODINIT_FUNC INIT_FUNCTION(); extern "C" { SALOME_PYQT_EXPORT CAM_Module* createModule() { - static bool alreadyInitialized = false; + QCoreApplication* app = QCoreApplication::instance(); + bool alreadyInitialized = app && app->property( "salome_pyqt_gui_light_initialized" ).toBool(); if ( !alreadyInitialized ) { PyLockWrapper lck; // GIL acquisition INIT_FUNCTION(); - alreadyInitialized = !alreadyInitialized; + if ( app ) app->setProperty( "salome_pyqt_gui_light_initialized", true ); } return new SALOME_PYQT_Module(); @@ -109,16 +112,12 @@ SALOME_PYQT_Module::~SALOME_PYQT_Module() */ QString SALOME_PYQT_Module::engineIOR() const { - // call helper to get IOR from Python module - static QString ior; + // first call helper to get IOR from Python module + QString ior = myHelper->engineIOR(); + // if IOR is still not specified, try default implementation + // which loads engine to the default FactoryServer container. if ( ior.isEmpty() ) { - // first call helper to get IOR from Python module - ior = myHelper->engineIOR(); - } - if ( ior.isEmpty() ) { - // if IOR is still not specified, try default implementation - // which loads engine to the default FactoryServer container. Engines::EngineComponent_var comp; // temporary solution try { @@ -243,6 +242,18 @@ void SALOME_PYQT_Module::preferencesChanged( const QString& section, const QStri myHelper->preferencesChanged( section, parameter ); } +/*! + \brief Called when study is closed + \param study study being closed + \sa PyModuleHelper::studyClosed() +*/ +void SALOME_PYQT_Module::studyClosed( SUIT_Study* study ) +{ + // call helper + myHelper->modelClosed( study ); + SalomeApp_Module::studyClosed( study ); +} + /*! \brief Test if object \a what can be dragged by the user. \param what data object being tested