From: vsr Date: Thu, 2 Dec 2021 11:52:29 +0000 (+0300) Subject: Manage dynamic properties properly X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2FCR26446;p=modules%2Fgui.git Manage dynamic properties properly --- diff --git a/src/SalomeApp/SalomeApp_Application.cxx b/src/SalomeApp/SalomeApp_Application.cxx index a4a26f4a4..aac94f91b 100644 --- a/src/SalomeApp/SalomeApp_Application.cxx +++ b/src/SalomeApp/SalomeApp_Application.cxx @@ -173,6 +173,25 @@ namespace bool myPrevState; bool& myLock; //! External 'Lock state' boolean flag }; + + /*! + \brief Dynamic property manager + */ + class PropertyMgr + { + QObject* myObject; + QString myProperty; + public: + PropertyMgr(QObject* object, const QString& property, const QVariant& value) + : myObject(object), myProperty(property) + { + myObject->setProperty(qPrintable(myProperty), value); + } + ~PropertyMgr() + { + myObject->setProperty(qPrintable(myProperty), QVariant()); + } + }; } /*!Constructor.*/ @@ -255,10 +274,12 @@ void SalomeApp_Application::start() LightApp_Application::start(); SALOME_EventFilter::Init(); - setProperty("open_study_from_command_line", true); - if ( !hdffile.isEmpty() ) // open hdf file given as parameter + if ( !hdffile.isEmpty() ) + { + // open hdf file given as parameter + PropertyMgr propm( this, "open_study_from_command_line", true ); onOpenDoc( hdffile ); - setProperty("open_study_from_command_line", QVariant()); + } #ifndef DISABLE_PYCONSOLE // import/execute python scripts @@ -287,6 +308,7 @@ void SalomeApp_Application::start() script.remove( QRegExp("^python.*[\\s]+") ); QString command = QString( "exec(open(\"%1\", \"rb\").read(), args=(%2))" ).arg(script).arg(args.join(",")); + PropertyMgr propm( this, "IsLoadedScript", true ); pyConsole->exec(command); } } // end for loop on pyfiles QStringList @@ -523,11 +545,10 @@ void SalomeApp_Application::onNewWithScript() { onNewDoc(); - QString command = QString("exec(open(\"%1\", \"rb\").read())").arg(aFile); - #ifndef DISABLE_PYCONSOLE + QString command = QString("exec(open(\"%1\", \"rb\").read())").arg(aFile); PyConsole_Console* pyConsole = pythonConsole(); - + PropertyMgr propm( this, "IsLoadedScript", true ); if ( pyConsole ) pyConsole->exec( command ); #endif @@ -998,19 +1019,12 @@ void SalomeApp_Application::onLoadScript( ) if ( !aFile.isEmpty() ) { - - QString command = QString("exec(compile(open('%1', 'rb').read(), '%1', 'exec'))").arg(aFile); - #ifndef DISABLE_PYCONSOLE + QString command = QString("exec(compile(open('%1', 'rb').read(), '%1', 'exec'))").arg(aFile); PyConsole_Console* pyConsole = pythonConsole(); - + PropertyMgr propm( this, "IsLoadedScript", true ); if ( pyConsole ) - { - std::string aProperty("IsLoadedScript"); - setProperty(aProperty.c_str(), true); pyConsole->exec(command); - setProperty(aProperty.c_str(), false); - } #endif } } @@ -2051,8 +2065,10 @@ bool SalomeApp_Application::onRestoreStudy( const QString& theDumpScript, #ifndef DISABLE_PYCONSOLE PyConsole_Console* pyConsole = app->pythonConsole(); - if ( pyConsole ) + if ( pyConsole ) { + PropertyMgr propm( this, "IsLoadedScript", true ); pyConsole->execAndWait( command ); + } #endif // remove temporary directory