From 3f68ea9b4d724f5199fce99bbb2468540c96ef0e Mon Sep 17 00:00:00 2001 From: Ylva Selling Date: Wed, 7 Apr 2021 16:09:14 +0200 Subject: [PATCH] Send over image name and url to GUI api --- modules/skybrowser/include/wwtdatahandler.h | 3 ++- modules/skybrowser/skybrowsermodule_lua.inl | 24 +++++++++++++++------ modules/skybrowser/src/wwtdatahandler.cpp | 13 ++++++----- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/modules/skybrowser/include/wwtdatahandler.h b/modules/skybrowser/include/wwtdatahandler.h index 847cb9a44b..488924df6e 100644 --- a/modules/skybrowser/include/wwtdatahandler.h +++ b/modules/skybrowser/include/wwtdatahandler.h @@ -27,7 +27,8 @@ namespace openspace { void loadWTMLCollectionsFromDirectory(std::string directory); int loadAllImagesFromXMLs(); void printAllUrls(); - std::vector getAllThumbnailUrls(); + std::vector < std::pair < std::string, std::string> > getAllThumbnailUrls(); + const std::vector& getImages() const; private: int loadPlace(tinyxml2::XMLElement* place, std::string collectionName); diff --git a/modules/skybrowser/skybrowsermodule_lua.inl b/modules/skybrowser/skybrowsermodule_lua.inl index 0062cdf0b5..35e0eded1a 100644 --- a/modules/skybrowser/skybrowsermodule_lua.inl +++ b/modules/skybrowser/skybrowsermodule_lua.inl @@ -63,24 +63,36 @@ namespace openspace::skybrowser::luascriptfunctions { ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::moveBrowser"); SkyBrowserModule* module = global::moduleEngine->module(); module->getWWTDataHandler()->loadWTMLCollectionsFromDirectory(absPath("${MODULE_SKYBROWSER}/WWTimagedata/")); - module->getWWTDataHandler()->printAllUrls(); - LINFO(std::to_string(module->getWWTDataHandler()->loadAllImagesFromXMLs())); + std::string noOfLoadedImgs = std::to_string(module->getWWTDataHandler()->loadAllImagesFromXMLs()); + LINFO("Loaded " + noOfLoadedImgs + " WorldWide Telescope images."); return 1; } int createBrowser(lua_State* L) { ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::createBrowser"); SkyBrowserModule* module = global::moduleEngine->module(); - std::vector names = module->getWWTDataHandler()->getAllThumbnailUrls(); + // If no data has been loaded yet, load it! + if (module->getWWTDataHandler()->getImages().size() == 0) { + moveBrowser(L); + } + + std::vector> names = module->getWWTDataHandler()->getAllThumbnailUrls(); lua_newtable(L); + int number = 1; - for (const std::string& s : names) { - lua_pushstring(L, s.c_str()); + for (const std::pair& s : names) { + + lua_newtable(L); + lua_pushstring(L, s.first.c_str()); + lua_rawseti(L, -2, 1); + lua_pushstring(L, s.second.c_str()); + lua_rawseti(L, -2, 2); + lua_rawseti(L, -2, number); ++number; } - + return 1; } int adjustCamera(lua_State* L) { diff --git a/modules/skybrowser/src/wwtdatahandler.cpp b/modules/skybrowser/src/wwtdatahandler.cpp index f87a581fbc..daccfeaf9d 100644 --- a/modules/skybrowser/src/wwtdatahandler.cpp +++ b/modules/skybrowser/src/wwtdatahandler.cpp @@ -209,12 +209,15 @@ namespace openspace { return node; } - std::vector WWTDataHandler::getAllThumbnailUrls() { - std::vector imgUrls; + std::vector < std::pair < std::string, std::string> > WWTDataHandler::getAllThumbnailUrls() { + std::vector < std::pair < std::string, std::string> > imgResult; std::for_each(images.begin(), images.end(), [&](ImageData obj) { - imgUrls.push_back(obj.thumbnailUrl); + imgResult.push_back(std::pair(obj.name, obj.thumbnailUrl)); }); - return imgUrls; + return imgResult; + } + + const std::vector& WWTDataHandler::getImages() const { + return images; } - }