X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Fscripting.cpp;fp=src%2Fscripting.cpp;h=788d8dffc347485d40d26458020ca327b4537d29;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/src/scripting.cpp b/src/scripting.cpp new file mode 100644 index 0000000..788d8df --- /dev/null +++ b/src/scripting.cpp @@ -0,0 +1,157 @@ +#include "scripting.h" + +#include "branchitem.h" +#include "confluence-agent.h" +#include "imageitem.h" +#include "mainwindow.h" +#include "misc.h" +#include "vymmodelwrapper.h" +#include "vymtext.h" +#include "xlink.h" + +extern Main *mainWindow; +extern QString vymVersion; + +/////////////////////////////////////////////////////////////////////////// +void logError(QScriptContext *context, QScriptContext::Error error, + const QString &text) +{ + if (context) + context->throwError(error, text); + else + qDebug() << "VymWrapper: " << text; +} + +/////////////////////////////////////////////////////////////////////////// +VymScriptContext::VymScriptContext() {} + +QString VymScriptContext::setResult(const QString &r) +{ + context()->engine()->globalObject().setProperty("lastResult", r); + return r; +} + +bool VymScriptContext::setResult(bool r) +{ + context()->engine()->globalObject().setProperty("lastResult", r); + return r; +} + +int VymScriptContext::setResult(int r) +{ + context()->engine()->globalObject().setProperty("lastResult", r); + return r; +} + +uint VymScriptContext::setResult(uint r) +{ + context()->engine()->globalObject().setProperty("lastResult", r); + return r; +} + +/////////////////////////////////////////////////////////////////////////// +VymWrapper::VymWrapper() {} + +void VymWrapper::clearConsole() { mainWindow->clearScriptOutput(); } + +bool VymWrapper::isConfluenceAgentAvailable() +{ + return ConfluenceAgent::available(); +} + +QObject *VymWrapper::currentMap() +{ + return mainWindow->getCurrentModelWrapper(); +} + +void VymWrapper::editHeading() +{ + MapEditor *me = mainWindow->currentMapEditor(); + if (me) me->editHeading(); +} + +bool VymWrapper::loadMap(const QString &filename) +{ + bool r; + if (File::Success == mainWindow->fileLoad(filename, NewMap, VymMap)) + r = true; + else + r = false; + return setResult(r); +} + +int VymWrapper::mapCount() +{ + context()->engine()->globalObject().setProperty("lastResult", + mainWindow->modelCount()); + return setResult(mainWindow->modelCount()); +} + +void VymWrapper::gotoMap(uint n) +{ + if (!mainWindow->gotoWindow(n)) { + logError(context(), QScriptContext::RangeError, + QString("Map '%1' not available.").arg(n)); + } +} + +bool VymWrapper::closeMapWithID(uint n) +{ + bool r = mainWindow->closeModelWithID(n); + if (!r) + logError(context(), QScriptContext::RangeError, + QString("Map '%1' not available.").arg(n)); + return setResult(r); +} + +void VymWrapper::selectQuickColor(int n) +{ + mainWindow->selectQuickColor(n); +} + +QString VymWrapper::currentColor() +{ + return mainWindow->getCurrentColor().name(); +} + +uint VymWrapper::currentMapID() +{ + uint id = mainWindow->currentMapID(); + return setResult(id); +} + +void VymWrapper::toggleTreeEditor() { mainWindow->windowToggleTreeEditor(); } + +QString VymWrapper::loadFile( + const QString + &filename) // FIXME-3 error handling missing (in vymmodel and here) +{ + QString s; + loadStringFromDisk(filename, s); + return s; +} + +void VymWrapper::saveFile( + const QString &filename, + const QString &s) // FIXME-3 error handling missing (in vymmodel and here) +{ + saveStringToDisk(filename, s); +} + +QString VymWrapper::version() { return setResult(vymVersion); } + +// See also http://doc.qt.io/qt-5/qscriptengine.html#newFunction +Selection::Selection() { modelWrapper = NULL; } + +void Selection::test() +{ + qDebug() << "Selection::testSelection called"; // TODO debug + if (modelWrapper) + modelWrapper->setHeadingPlainText("huhu!"); +} + +void Selection::setModel(VymModelWrapper *mw) +{ + qDebug() << "Selection::setModel called: " << mw; // TODO debug + modelWrapper = mw; +}