diff --git a/examples/edit.js b/examples/edit.js index 0d1164685a..f508de3cec 100644 --- a/examples/edit.js +++ b/examples/edit.js @@ -1035,7 +1035,7 @@ function handeMenuEvent(menuItem) { var importURL; if (menuItem == "Import Entities") { - importURL = Window.browse("Select models to import", "", "*.json"); + importURL = "file:///" + Window.browse("Select models to import", "", "*.json"); } else { importURL = Window.prompt("URL of SVO to import", ""); } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d33f752cfe..2a8f7cf8b5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2340,7 +2340,8 @@ bool Application::exportEntities(const QString& filename, const QVector entities; auto entityTree = _entities.getTree(); - EntityTree exportTree; + auto exportTree = std::make_shared(); + exportTree->createRootElement(); glm::vec3 root(TREE_SCALE, TREE_SCALE, TREE_SCALE); for (auto entityID : entityIDs) { @@ -2367,10 +2368,10 @@ bool Application::exportEntities(const QString& filename, const QVectorgetProperties(); properties.setPosition(properties.getPosition() - root); - exportTree.addEntity(entityItem->getEntityItemID(), properties); + exportTree->addEntity(entityItem->getEntityItemID(), properties); } - exportTree.writeToJSONFile(filename.toLocal8Bit().constData()); + exportTree->writeToJSONFile(filename.toLocal8Bit().constData()); // restore the main window's active state _window->activateWindow(); @@ -2383,15 +2384,16 @@ bool Application::exportEntities(const QString& filename, float x, float y, floa if (entities.size() > 0) { glm::vec3 root(x, y, z); - EntityTree exportTree; + auto exportTree = std::make_shared(); + exportTree->createRootElement(); for (int i = 0; i < entities.size(); i++) { EntityItemProperties properties = entities.at(i)->getProperties(); EntityItemID id = entities.at(i)->getEntityItemID(); properties.setPosition(properties.getPosition() - root); - exportTree.addEntity(id, properties); + exportTree->addEntity(id, properties); } - exportTree.writeToSVOFile(filename.toLocal8Bit().constData()); + exportTree->writeToSVOFile(filename.toLocal8Bit().constData()); } else { qCDebug(interfaceapp) << "No models were selected"; return false; diff --git a/interface/src/scripting/ClipboardScriptingInterface.cpp b/interface/src/scripting/ClipboardScriptingInterface.cpp index f833ad43cc..4cebb85648 100644 --- a/interface/src/scripting/ClipboardScriptingInterface.cpp +++ b/interface/src/scripting/ClipboardScriptingInterface.cpp @@ -19,17 +19,40 @@ float ClipboardScriptingInterface::getClipboardContentsLargestDimension() { } bool ClipboardScriptingInterface::exportEntities(const QString& filename, const QVector& entityIDs) { - return Application::getInstance()->exportEntities(filename, entityIDs); + bool retVal; + QMetaObject::invokeMethod(Application::getInstance(), "exportEntities", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(bool, retVal), + Q_ARG(const QString&, filename), + Q_ARG(const QVector&, entityIDs)); + return retVal; } bool ClipboardScriptingInterface::exportEntities(const QString& filename, float x, float y, float z, float s) { - return Application::getInstance()->exportEntities(filename, x, y, z, s); + bool retVal; + QMetaObject::invokeMethod(Application::getInstance(), "exportEntities", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(bool, retVal), + Q_ARG(const QString&, filename), + Q_ARG(float, x), + Q_ARG(float, y), + Q_ARG(float, z), + Q_ARG(float, s)); + return retVal; } bool ClipboardScriptingInterface::importEntities(const QString& filename) { - return Application::getInstance()->importEntities(filename); + bool retVal; + QMetaObject::invokeMethod(Application::getInstance(), "importEntities", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(bool, retVal), + Q_ARG(const QString&, filename)); + return retVal; } QVector ClipboardScriptingInterface::pasteEntities(glm::vec3 position) { - return Application::getInstance()->pasteEntities(position.x, position.y, position.z); + QVector retVal; + QMetaObject::invokeMethod(Application::getInstance(), "pasteEntities", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(QVector, retVal), + Q_ARG(float, position.x), + Q_ARG(float, position.y), + Q_ARG(float, position.z)); + return retVal; }