diff options
-rwxr-xr-x | indra/newview/llpreviewscript.cpp | 10 | ||||
-rwxr-xr-x | indra/newview/llpreviewscript.h | 2 | ||||
-rw-r--r-- | indra/newview/llsyntaxid.cpp | 113 | ||||
-rw-r--r-- | indra/newview/llsyntaxid.h | 63 |
4 files changed, 96 insertions, 92 deletions
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 62e1d765b3..5f23249c8d 100755 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -407,14 +407,10 @@ BOOL LLScriptEdCore::postBuild() initMenu(); // Make this work ;-) - mSyntaxLSL = LLSyntaxIdLSL(); - -// mSyntaxLSL.initialise(); -// mSyntaxLSL.mKeywords = &mEditor->mKeywords; + mSyntaxIdLSL.initialise(); // ... -// mSyntaxLSL->mKeywords.initialise(); -// Move into the SyntaxIdLSL class - mEditor->mKeywords.initialise(mSyntaxLSL.filenamePath(), mSyntaxLSL.filenameCurrent()); + mEditor->mKeywords.initialise(LL_PATH_APP_SETTINGS, "keywords_lsl_default.xml"); +// mEditor->mKeywords.initialise(mSyntaxIdLSL.getFullFileSpec()); // FIX: Refactor LLTextEditor::loadKeywords so these can be removed. std::vector<std::string> funcs; diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h index 21e33f30d5..73ccaab0b8 100755 --- a/indra/newview/llpreviewscript.h +++ b/indra/newview/llpreviewscript.h @@ -150,7 +150,7 @@ private: BOOL mEnableSave; BOOL mHasScriptData; LLLiveLSLFile* mLiveFile; - LLSyntaxIdLSL mSyntaxLSL; + LLSyntaxIdLSL mSyntaxIdLSL; LLScriptEdContainer* mContainer; // parent view }; diff --git a/indra/newview/llsyntaxid.cpp b/indra/newview/llsyntaxid.cpp index deaa64c0e7..442793bff1 100644 --- a/indra/newview/llsyntaxid.cpp +++ b/indra/newview/llsyntaxid.cpp @@ -41,14 +41,17 @@ //----------------------------------------------------------------------------- class fetchKeywordsFileResponder : public LLCurl::Responder { - std::string mFileSpec; public: + std::string mFileSpec; + fetchKeywordsFileResponder(std::string filespec) { mFileSpec = filespec; } - void errorWithContent(U32 status, const std::string& reason, const LLSD& content) + void errorWithContent(U32 status, + const std::string& reason, + const LLSD& content) { LL_WARNS("") << "fetchKeywordsFileResponder error [status:" @@ -58,15 +61,14 @@ public: << LL_ENDL; } - void result(LLSD& content_ref) + void result(const LLSD& content_ref) { - LLSyntaxIdLSL::setKeywordsXml(content_ref); + //LLSyntaxIdLSL::setKeywordsXml(content_ref); std::stringstream str; LLSDSerialize::toPrettyXML(content_ref, str); LL_WARNS("") - << "fetchKeywordsFileResponder result:" - << str.str() + << "fetchKeywordsFileResponder result:" << str.str() << "filename: '" << mFileSpec << "'" << LL_ENDL; @@ -80,20 +82,21 @@ public: //----------------------------------------------------------------------------- // LLSyntaxIdLSL //----------------------------------------------------------------------------- +/** + * @brief LLSyntaxIdLSL constructor + */ LLSyntaxIdLSL::LLSyntaxIdLSL() : // Move these to signature? - mFilenameDefault("keywords_lsl_default.xml"), + mFileNameDefault("keywords_lsl_default.xml"), mSimulatorFeature("LSLSyntaxId"), - mCapabilityName("LSLSyntax") + mCapabilityName("LSLSyntax"), + mFilePath(LL_PATH_APP_SETTINGS) { mCurrentSyntaxId = LLUUID(); - mFilenameCurrent = mFilenameDefault; - mFilenameLocation = LL_PATH_APP_SETTINGS; - checkSyntaxIdChange(); - //LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLSyntaxIdLSL::checkSyntaxIdChange(), this)); + mFileNameCurrent = mFileNameDefault; } -std::string LLSyntaxIdLSL::buildFilename(LLUUID& SyntaxId) +std::string LLSyntaxIdLSL::buildFileName(LLUUID& SyntaxId) { std::string filename = "keywords_lsl_" + SyntaxId.asString() + "_" + gLastVersionChannel + ".llsd.xml"; return filename; @@ -102,23 +105,24 @@ std::string LLSyntaxIdLSL::buildFilename(LLUUID& SyntaxId) //----------------------------------------------------------------------------- // checkSyntaxIdChange() //----------------------------------------------------------------------------- -bool LLSyntaxIdLSL::checkSyntaxIdChange() +bool LLSyntaxIdLSL::checkSyntaxIdChanged() { bool changed = false; - if (mRegion) + LLViewerRegion* region = gAgent.getRegion(); + + if (region) { + /* LL_WARNS("LSLSyntax") - << "REGION is '" - << mRegion->getName() - << "'" + << "REGION is '" << region->getName() << "'" << LL_ENDL; + */ - if (!mRegion->capabilitiesReceived()) + if (!region->capabilitiesReceived()) { // Shouldn't be possible, but experience shows that it's needed -// mRegion->setCapabilitiesReceivedCallback(boost::bind(&LLSyntaxIdLSL::checkSyntaxIdChange, this)); +// region->setCapabilitiesReceivedCallback(boost::bind(&LLSyntaxIdLSL::checkSyntaxIdChange, this)); LL_WARNS("LSLSyntax") - << "mRegion '" - << mRegion->getName() + << "region '" << region->getName() << "' has not received capabilities yet! Setting a callback for when they arrive." << LL_ENDL; } @@ -126,23 +130,21 @@ bool LLSyntaxIdLSL::checkSyntaxIdChange() { // get and check the hash LLSD simFeatures; - mRegion->getSimulatorFeatures(simFeatures); + region->getSimulatorFeatures(simFeatures); if (simFeatures.has("LSLSyntaxId")) { LLUUID SyntaxId = simFeatures["LSLSyntaxId"].asUUID(); if (mCurrentSyntaxId != SyntaxId) { // set the properties for the fetcher to use - mFilenameCurrent = buildFilename(SyntaxId); - mFilenameLocation = LL_PATH_CACHE; + mFileNameCurrent = buildFileName(SyntaxId); + mFilePath = LL_PATH_CACHE; mCurrentSyntaxId = SyntaxId; LL_WARNS("LSLSyntax") - << "Region changed to '" - << mRegion->getName() + << "Region changed to '" << region->getName() << "' it has LSLSyntaxId capability, and the new hash is '" - << SyntaxId - << "'" + << SyntaxId << "'" << LL_ENDL; changed = true; @@ -150,11 +152,9 @@ bool LLSyntaxIdLSL::checkSyntaxIdChange() else { LL_WARNS("LSLSyntax") - << "Region changed to '" - << mRegion->getName() + << "Region changed to '" << region->getName() << "' it has the same LSLSyntaxId! Leaving hash as '" - << mCurrentSyntaxId - << "'" + << mCurrentSyntaxId << "'" << LL_ENDL; } } @@ -164,17 +164,19 @@ bool LLSyntaxIdLSL::checkSyntaxIdChange() if ( mCurrentSyntaxId.isNull() ) { LL_WARNS("LSLSyntax") - << "Region does not have LSLSyntaxId capability, remaining with default keywords file!" + << "Region changed to '" << region->getName() + << " it does not have LSLSyntaxId capability, remaining with default keywords file!" << LL_ENDL; } else { mCurrentSyntaxId = LLUUID(); - mFilenameCurrent = mFilenameDefault; - mFilenameLocation = LL_PATH_APP_SETTINGS; + mFileNameCurrent = mFileNameDefault; + mFilePath = LL_PATH_APP_SETTINGS; LL_WARNS("LSLSyntax") - << "Region does not have LSLSyntaxId capability, using default keywords file!" + << "Region changed to '" << region->getName() + << " it does not have LSLSyntaxId capability, using default keywords file!" << LL_ENDL; changed = true; @@ -190,12 +192,13 @@ bool LLSyntaxIdLSL::checkSyntaxIdChange() //----------------------------------------------------------------------------- bool LLSyntaxIdLSL::fetchKeywordsFile() { + LLViewerRegion* region = gAgent.getRegion(); bool fetched = false; - std::string cap_url = mRegion->getCapability(mCapabilityName); -// mResponder->setFileSpec(mFilenameSpec); + + std::string cap_url = region->getCapability(mCapabilityName); if ( !cap_url.empty() ) { - LLHTTPClient::get(cap_url, new fetchKeywordsFileResponder(mFilenameSpec)); + LLHTTPClient::get(cap_url, new fetchKeywordsFileResponder(mFullFileSpec)); } return fetched; @@ -203,26 +206,34 @@ bool LLSyntaxIdLSL::fetchKeywordsFile() void LLSyntaxIdLSL::initialise() { - mRegion = gAgent.getRegion(); - if (checkSyntaxIdChange()) + if (checkSyntaxIdChanged()) { - mFilenameFull = gDirUtilp->getExpandedFilename( - mFilenameLocation, - mFilenameCurrent - ); + LL_WARNS("LSLSyntax") + << "Change to syntax, setting up new file." + << LL_ENDL; + + setFileNameNew(gDirUtilp->getExpandedFilename( + mFilePath, + mFileNameCurrent + )); if ( !mCurrentSyntaxId.isNull() ) { - bool success = true; - if (!gDirUtilp->fileExists(mFilenameSpec)) - { - //mResponder = new fetchKeywordsFileResponder(mFilenameSpec); + bool success = false; + if ( !gDirUtilp->fileExists(mFullFileSpec) ) + { // Does not exist, so fetch it from the capability success = fetchKeywordsFile(); } } // TODO add a signal here to tell the editor the hash has changed? } + else + { + LL_WARNS("LSLSyntax") + << "Apparently there is no change to Syntax!" + << LL_ENDL; - mRegion = NULL; + } + //LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLSyntaxIdLSL::checkSyntaxIdChange(), this)); } //----------------------------------------------------------------------------- diff --git a/indra/newview/llsyntaxid.h b/indra/newview/llsyntaxid.h index e32fcf209e..f7e3d6896e 100644 --- a/indra/newview/llsyntaxid.h +++ b/indra/newview/llsyntaxid.h @@ -12,9 +12,6 @@ #include "llviewerregion.h" -//class LLKeywords; - - /** * @file llsyntaxid.h * @brief The LLSyntaxIdLSL class @@ -22,45 +19,45 @@ class LLSyntaxIdLSL { public: - /** - * @brief LLSyntaxIdLSL constructor - */ LLSyntaxIdLSL(); - LLUUID getSyntaxId() const { return mCurrentSyntaxId; } + bool checkSyntaxIdChanged(); + std::string getFileNameCurrent() const { return mFileNameCurrent; } + ELLPath getFilePath() const { return mFilePath; } + LLUUID getSyntaxId() const { return mCurrentSyntaxId; } + + void initialise(); + + static void setKeywordsXml(const LLSD& content) { sKeywordsXml = content; } - bool checkSyntaxIdChange(); - std::string filenameCurrent() { return mFilenameCurrent; } - ELLPath filenamePath() { return mFilenameLocation; } - void initialise(); - static void setKeywordsXml(const LLSD& content) { LLSyntaxIdLSL::sKeywordsXml = content; } protected: - std::string buildFilename(LLUUID& SyntaxId); - bool fetchKeywordsFile(); - void openKeywordsFile(); - void setSyntaxId(LLUUID SyntaxId) { mCurrentSyntaxId = SyntaxId; } - void setFilenameCurrent(std::string& name) { mFilenameCurrent = name; } - void setFilenameDefault(std::string& name) { mFilenameDefault = name; } - void setSimulatorFeatureName(const std::string& name) { mSimulatorFeature = name; } + std::string buildFileName(LLUUID& SyntaxId); + bool fetchKeywordsFile(); + void openKeywordsFile(); + void setSyntaxId(LLUUID SyntaxId) { mCurrentSyntaxId = SyntaxId; } + void setFileNameCurrent(std::string& name) { mFileNameCurrent = name; } + void setFileNameDefault(std::string& name) { mFileNameDefault = name; } + void setFileNameNew(std::string& name) { mFileNameNew = name; } + void setSimulatorFeatureName(const std::string& name) { mSimulatorFeature = name; } -public: - static LLHTTPClient::ResponderPtr mResponder; + +//public: protected: -// LLKeywords& mKeywords; - LLViewerRegion* mRegion; + LLViewerRegion* region; + private: - std::string mCapabilityName; - LLUUID mCurrentSyntaxId; - std::string mFilenameCurrent; - std::string mFilenameDefault; - std::string mFilenameFull; - ELLPath mFilenameLocation; - std::string mFilenameSpec; - std::string mSimulatorFeature; - - static LLSD sKeywordsXml; + std::string mCapabilityName; + LLUUID mCurrentSyntaxId; + std::string mFileNameCurrent; + std::string mFileNameDefault; + std::string mFileNameNew; + ELLPath mFilePath; + std::string mFullFileSpec; + std::string mSimulatorFeature; + + static LLSD sKeywordsXml; }; |