///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2011-2012 Statoil ASA, Ceetron AS // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. // // See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #include "RimCalcScript.h" #include "RiaApplication.h" #include "RiaFieldHandleTools.h" #include "RiaLogging.h" #include "cafPdmField.h" #include "cafPdmUiFilePathEditor.h" #include CAF_PDM_SOURCE_INIT( RimCalcScript, "CalcScript" ); //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimCalcScript::RimCalcScript() { CAF_PDM_InitObject( "CalcScript", ":/OctaveScriptFile16x16.png", "Calc Script", "" ); CAF_PDM_InitField( &absoluteFileName, "AbsolutePath", QString(), "Location" ); absoluteFileName.uiCapability()->setUiReadOnly( true ); absoluteFileName.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimCalcScript::~RimCalcScript() { } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimCalcScript::ScriptType RimCalcScript::scriptType( const QString& absoluteFileNameScript ) { QFileInfo fileInfo( absoluteFileNameScript ); if ( fileInfo.suffix() == "py" ) { return PYTHON; } else if ( fileInfo.suffix() == "m" ) { return OCTAVE; } return UNKNOWN; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimCalcScript::ScriptType RimCalcScript::scriptType() const { return scriptType( absoluteFileName() ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QStringList RimCalcScript::createCommandLineArguments( const QString& absoluteFileNameScript ) { QStringList arguments; if ( scriptType( absoluteFileNameScript ) == PYTHON ) { arguments.append( absoluteFileNameScript ); } else if ( scriptType( absoluteFileNameScript ) == OCTAVE ) { { auto app = RiaApplication::instance(); arguments = app->octaveArguments(); arguments.append( "--path" ); } { QFileInfo fi( absoluteFileNameScript ); QString octaveFunctionSearchPath = fi.absolutePath(); QString absFilePath = fi.absoluteFilePath(); arguments << octaveFunctionSearchPath; arguments << absFilePath; } } bool debugPrintArgumentText = false; if ( debugPrintArgumentText ) { QString argumentString = arguments.join( " " ); RiaLogging::info( "Scriptarguments : " + argumentString ); } return arguments; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimCalcScript::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/ ) { if ( scriptType() == PYTHON ) { uiCapability()->setUiIconFromResourceString( ":/PythonScriptFile16x16.png" ); } }