Commit fe65b989 authored by Jan Möbius's avatar Jan Möbius

Introduced openflipper command line python scripts with extension ofp

parent 470f345e
...@@ -1318,7 +1318,17 @@ private slots: ...@@ -1318,7 +1318,17 @@ private slots:
void showReducedMenuBar(bool reduced); void showReducedMenuBar(bool reduced);
/** \brief Open the given file and execute its contents as a python script
*
* @param _filename Name of the python script
*/
void executePythonScriptFile(QString _filename);
/** \brief execute the given string as a python script
*
* @param _script Python script
*/
void executePythonScript(QString _script);
private : private :
/// Core scripting engine /// Core scripting engine
......
...@@ -149,10 +149,14 @@ void Core::slotExecuteAfterStartup() { ...@@ -149,10 +149,14 @@ void Core::slotExecuteAfterStartup() {
QStringList scriptFiles = scriptDir.entryList(QDir::Files,QDir::Name); QStringList scriptFiles = scriptDir.entryList(QDir::Files,QDir::Name);
// Execute all files ending with ofs // Execute all files ending with ofs
for ( int i = 0 ; i < scriptFiles.size(); ++i ) for ( int i = 0 ; i < scriptFiles.size(); ++i ) {
if ( scriptFiles[i].endsWith("ofs",Qt::CaseInsensitive) ) if ( scriptFiles[i].endsWith("ofs",Qt::CaseInsensitive) )
emit executeFileScript(scriptDir.path() + "/" + scriptFiles[i]); emit executeFileScript(scriptDir.path() + "/" + scriptFiles[i]);
if ( scriptFiles[i].endsWith("ofp",Qt::CaseInsensitive) )
executePythonScriptFile(scriptDir.path() + "/" + scriptFiles[i]);
}
// Clear scripting window afterexecuting the coresubdir scripts // Clear scripting window afterexecuting the coresubdir scripts
bool ok = false; bool ok = false;
slotCall( "scripting" ,"clearEditor()",ok); slotCall( "scripting" ,"clearEditor()",ok);
...@@ -165,7 +169,7 @@ void Core::slotExecuteAfterStartup() { ...@@ -165,7 +169,7 @@ void Core::slotExecuteAfterStartup() {
// Skip scripts here as they will be handled by a different function // Skip scripts here as they will be handled by a different function
QString tmp = commandLineFileNames_[i].first; QString tmp = commandLineFileNames_[i].first;
if ( tmp.endsWith("ofs",Qt::CaseInsensitive) ) { if ( tmp.endsWith(".ofs",Qt::CaseInsensitive) || tmp.endsWith(".ofp",Qt::CaseInsensitive) ) {
commandLineScriptNames_.push_back(commandLineFileNames_[i].first); commandLineScriptNames_.push_back(commandLineFileNames_[i].first);
continue; continue;
} }
...@@ -185,8 +189,14 @@ void Core::slotExecuteAfterStartup() { ...@@ -185,8 +189,14 @@ void Core::slotExecuteAfterStartup() {
// If we have scripting support, execute the scripts given at the commandline. // If we have scripting support, execute the scripts given at the commandline.
if ( scriptingSupport ) if ( scriptingSupport )
for ( uint i = 0 ; i < commandLineScriptNames_.size() ; ++i ) { for ( unsigned int i = 0 ; i < commandLineScriptNames_.size() ; ++i ) {
emit executeFileScript(commandLineScriptNames_[i]);
if ( commandLineScriptNames_[i].endsWith("ofs",Qt::CaseInsensitive) )
emit executeFileScript(commandLineScriptNames_[i]);
if ( commandLineScriptNames_[i].endsWith("ofp",Qt::CaseInsensitive) )
executePythonScriptFile(commandLineScriptNames_[i]);
} }
// If we don't have a gui and we are not under remote control, // If we don't have a gui and we are not under remote control,
...@@ -249,8 +259,11 @@ int Core::loadObject ( QString _filename ) { ...@@ -249,8 +259,11 @@ int Core::loadObject ( QString _filename ) {
return -2; return -2;
} else if (_filename.endsWith(".ofs",Qt::CaseInsensitive)) { } else if (_filename.endsWith(".ofs",Qt::CaseInsensitive)) {
emit log(LOGINFO ,tr("Starting script execution of %1.").arg( _filename)) ; emit log(LOGINFO ,tr("Starting script execution of OpenFlipper Script %1.").arg( _filename)) ;
emit executeFileScript(_filename); emit executeFileScript(_filename);
} else if (_filename.endsWith(".ofp",Qt::CaseInsensitive)) {
emit log(LOGINFO ,tr("Starting script execution of Python script %1.").arg( _filename)) ;
executePythonScriptFile(_filename);
} else { } else {
QFileInfo fi(_filename); QFileInfo fi(_filename);
......
...@@ -56,6 +56,9 @@ ...@@ -56,6 +56,9 @@
#include "Core.hh" #include "Core.hh"
#include <QUiLoader> #include <QUiLoader>
#ifdef PYTHON_ENABLED
#include <PythonInterpreter/PythonInterpreter.hh>
#endif
//== IMPLEMENTATION ========================================================== //== IMPLEMENTATION ==========================================================
...@@ -410,3 +413,35 @@ QScriptValue helpFunction(QScriptContext *context, QScriptEngine *engine) ...@@ -410,3 +413,35 @@ QScriptValue helpFunction(QScriptContext *context, QScriptEngine *engine)
return engine->undefinedValue(); return engine->undefinedValue();
} }
void Core::executePythonScriptFile(QString _filename){
QFile file(_filename);
if (!file.exists()) {
emit scriptLog("Unable to load file " + _filename + " as python script. File not found!");
return;
}
file.open(QIODevice::ReadOnly| QFile::Text);
QTextStream in(&file);
QString script = in.readAll();
std::cerr << "Script : " << std::endl;
std::cerr << script.toStdString() << std::endl;
executePythonScript(script);
}
void Core::executePythonScript(QString _script) {
#ifdef PYTHON_ENABLED
PythonInterpreter* interpreter = PythonInterpreter::getInstance();
interpreter->runScript(_script);
#else
emit scriptLog("Python scripting Error! No build in python support. Unable to execute script. Build OpenFlipper with Python support to enable Python based scripting.");
#endif
}
...@@ -311,6 +311,8 @@ PYBIND11_EMBEDDED_MODULE(openflipper, m) { ...@@ -311,6 +311,8 @@ PYBIND11_EMBEDDED_MODULE(openflipper, m) {
core.def("updateView", &Core::updateView); core.def("updateView", &Core::updateView);
core.def("clearAll", &Core::clearAll); core.def("clearAll", &Core::clearAll);
core.def("fullscreen", &Core::fullscreen);
core.def("writeVersionNumbers", &Core::writeVersionNumbers); core.def("writeVersionNumbers", &Core::writeVersionNumbers);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment