summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gavriliuk <alexandrgproductengine@lindenlab.com>2025-01-24 00:26:00 +0100
committerAlexander Gavriliuk <alexandrgproductengine@lindenlab.com>2025-01-25 03:02:29 +0100
commit7f88aedbc3b53496bc99d8e0e64a818c7a3f6d6f (patch)
tree2877cdffc55025608cfd756ece65a34ddad3dd57
parent5029f0322f264e17f7509952f7bf9812db17a9ec (diff)
#3423 Add Lua as Compile Target in Viewer Script Editor
-rw-r--r--indra/llmessage/message_prehash.cpp2
-rw-r--r--indra/llmessage/message_prehash.h2
-rw-r--r--indra/llui/llcombobox.cpp17
-rw-r--r--indra/llui/llcombobox.h5
-rw-r--r--indra/llui/llscrolllistctrl.cpp13
-rw-r--r--indra/llui/llscrolllistctrl.h3
-rw-r--r--indra/newview/llcompilequeue.cpp22
-rw-r--r--indra/newview/llcompilequeue.h11
-rw-r--r--indra/newview/llpreviewscript.cpp189
-rw-r--r--indra/newview/llpreviewscript.h33
-rw-r--r--indra/newview/llstartup.cpp228
-rw-r--r--indra/newview/llviewerassetupload.cpp8
-rw-r--r--indra/newview/llviewerassetupload.h12
-rw-r--r--indra/newview/llviewermenu.cpp6
-rw-r--r--indra/newview/skins/default/xui/en/floater_live_lsleditor.xml74
15 files changed, 316 insertions, 309 deletions
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index c264a9f086..df16184e76 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -714,6 +714,8 @@ char const* const _PREHASH_FirstName = LLMessageStringTable::getInstance()->getS
char const* const _PREHASH_AttachedSoundGainChange = LLMessageStringTable::getInstance()->getString("AttachedSoundGainChange");
char const* const _PREHASH_LocationID = LLMessageStringTable::getInstance()->getString("LocationID");
char const* const _PREHASH_Running = LLMessageStringTable::getInstance()->getString("Running");
+char const* const _PREHASH_Mono = LLMessageStringTable::getInstance()->getString("Mono");
+char const* const _PREHASH_CompileTarget = LLMessageStringTable::getInstance()->getString("CompileTarget");
char const* const _PREHASH_AgentThrottle = LLMessageStringTable::getInstance()->getString("AgentThrottle");
char const* const _PREHASH_NeighborList = LLMessageStringTable::getInstance()->getString("NeighborList");
char const* const _PREHASH_PathTaperX = LLMessageStringTable::getInstance()->getString("PathTaperX");
diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h
index 1d30b69b67..0feb6ecad8 100644
--- a/indra/llmessage/message_prehash.h
+++ b/indra/llmessage/message_prehash.h
@@ -714,6 +714,8 @@ extern char const* const _PREHASH_FirstName;
extern char const* const _PREHASH_AttachedSoundGainChange;
extern char const* const _PREHASH_LocationID;
extern char const* const _PREHASH_Running;
+extern char const* const _PREHASH_Mono;
+extern char const* const _PREHASH_CompileTarget;
extern char const* const _PREHASH_AgentThrottle;
extern char const* const _PREHASH_NeighborList;
extern char const* const _PREHASH_PathTaperX;
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index f3876ef695..17e583b868 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -251,11 +251,26 @@ void LLComboBox::resetDirty()
}
}
-bool LLComboBox::itemExists(const std::string& name)
+bool LLComboBox::itemExists(const std::string& name) const
{
return mList->getItemByLabel(name);
}
+bool LLComboBox::valueExists(const std::string& value) const
+{
+ return mList->getItemByValue(value);
+}
+
+LLScrollListItem* LLComboBox::findItemByValue(const std::string& value) const
+{
+ return mList->getItemByValue(value);
+}
+
+std::vector<LLScrollListItem*> LLComboBox::getAllData() const
+{
+ return mList->getAllData();
+}
+
// add item "name" to menu
LLScrollListItem* LLComboBox::add(const std::string& name, EAddPosition pos, bool enabled)
{
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index 8be3eb57e4..be18cdba48 100644
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
@@ -143,7 +143,10 @@ public:
LLScrollListItem* addSeparator(EAddPosition pos = ADD_BOTTOM);
bool remove( S32 index ); // remove item by index, return true if found and removed
void removeall() { clearRows(); }
- bool itemExists(const std::string& name);
+ bool itemExists(const std::string& name) const;
+ bool valueExists(const std::string& value) const;
+ LLScrollListItem* findItemByValue(const std::string& value) const;
+ std::vector<LLScrollListItem*> getAllData() const;
void sortByName(bool ascending = true); // Sort the entries in the combobox by name
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 93bd3c6bed..deaf2fe188 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -1281,6 +1281,19 @@ LLScrollListItem* LLScrollListCtrl::getItemByLabel(const std::string& label, boo
return NULL;
}
+LLScrollListItem* LLScrollListCtrl::getItemByValue(const std::string& value)
+{
+ for (LLScrollListItem* item : mItemList)
+ {
+ if (item->getValue().asString() == value)
+ {
+ return item;
+ }
+ }
+
+ return NULL;
+}
+
LLScrollListItem* LLScrollListCtrl::getItemByIndex(S32 index)
{
if (index >= 0 && index < (S32)mItemList.size())
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index c24784338a..70d4a75fb5 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -263,7 +263,8 @@ public:
bool selectItemByLabel(const std::string& item, bool case_sensitive = true, S32 column = 0); // false if item not found
bool selectItemByPrefix(const std::string& target, bool case_sensitive = true, S32 column = -1);
bool selectItemByPrefix(const LLWString& target, bool case_sensitive = true, S32 column = -1);
- LLScrollListItem* getItemByLabel(const std::string& item, bool case_sensitive = true, S32 column = 0);
+ LLScrollListItem* getItemByLabel(const std::string& label, bool case_sensitive = true, S32 column = 0);
+ LLScrollListItem* getItemByValue(const std::string& value);
LLScrollListItem* getItemByIndex(S32 index);
std::string getSelectedItemLabel(S32 column = 0) const;
LLSD getSelectedValue();
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 552ea75559..32d0f3fa1b 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -122,9 +122,9 @@ namespace
class LLQueuedScriptAssetUpload : public LLScriptAssetUpload
{
public:
- LLQueuedScriptAssetUpload(LLUUID taskId, LLUUID itemId, LLUUID assetId, TargetType_t targetType,
+ LLQueuedScriptAssetUpload(LLUUID taskId, LLUUID itemId, LLUUID assetId, std::string compileTarget,
bool isRunning, std::string scriptName, LLUUID queueId, LLUUID exerienceId, taskUploadFinish_f finish) :
- LLScriptAssetUpload(taskId, itemId, targetType, isRunning,
+ LLScriptAssetUpload(taskId, itemId, compileTarget, isRunning,
exerienceId, std::string(), finish, nullptr),
mScriptName(scriptName),
mQueueId(queueId)
@@ -183,9 +183,7 @@ struct LLScriptQueueData
// Default constructor
LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD& key) :
- LLFloater(key),
- mDone(false),
- mMono(false)
+ LLFloater(key)
{
}
@@ -197,7 +195,7 @@ LLFloaterScriptQueue::~LLFloaterScriptQueue()
bool LLFloaterScriptQueue::postBuild()
{
- childSetAction("close",onCloseBtn,this);
+ childSetAction("close", onCloseBtn, this);
getChildView("close")->setEnabled(false);
setVisible(true);
return true;
@@ -222,8 +220,8 @@ bool LLFloaterScriptQueue::start()
LLStringUtil::format_map_t args;
args["[START]"] = mStartString;
- args["[COUNT]"] = llformat ("%d", mObjectList.size());
- buffer = getString ("Starting", args);
+ args["[COUNT]"] = llformat("%d", mObjectList.size());
+ buffer = getString("Starting", args);
getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM);
@@ -276,8 +274,8 @@ bool LLFloaterCompileQueue::hasExperience( const LLUUID& id ) const
return mExperienceIds.find(id) != mExperienceIds.end();
}
-// //Attempt to record this asset ID. If it can not be inserted into the set
-// //then it has already been processed so return false.
+// Attempt to record this asset ID. If it can not be inserted into the set
+// then it has already been processed so return false.
void LLFloaterCompileQueue::handleHTTPResponse(std::string pumpName, const LLSD &expresult)
{
@@ -359,7 +357,7 @@ bool LLFloaterCompileQueue::processScript(LLHandle<LLFloaterCompileQueue> hfloat
LLCheckedHandle<LLFloaterCompileQueue> floater(hfloater);
// Dereferencing floater may fail. If they do they throw LLExeceptionStaleHandle.
// which is caught in objectScriptProcessingQueueCoro
- bool monocompile = floater->mMono;
+ std::string compile_target = floater->mCompileTarget;
// Initial test to see if we can (or should) attempt to compile the script.
LLInventoryItem *item = dynamic_cast<LLInventoryItem *>(inventory);
@@ -470,7 +468,7 @@ bool LLFloaterCompileQueue::processScript(LLHandle<LLFloaterCompileQueue> hfloat
LLResourceUploadInfo::ptr_t uploadInfo(new LLQueuedScriptAssetUpload(object->getID(),
inventory->getUUID(),
assetId,
- monocompile ? LLScriptAssetUpload::MONO : LLScriptAssetUpload::LSL2,
+ compile_target,
true,
inventory->getName(),
LLUUID(),
diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h
index 951d4800e8..42af5b1881 100644
--- a/indra/newview/llcompilequeue.h
+++ b/indra/newview/llcompilequeue.h
@@ -55,7 +55,7 @@ public:
/*virtual*/ bool postBuild();
- void setMono(bool mono) { mMono = mono; }
+ void setCompileTarget(std::string target) { mCompileTarget = target; }
// addObject() accepts an object id.
void addObject(const LLUUID& id, std::string name);
@@ -80,8 +80,8 @@ protected:
protected:
// UI
- LLScrollListCtrl* mMessages;
- LLButton* mCloseBtn;
+ LLScrollListCtrl* mMessages { nullptr };
+ LLButton* mCloseBtn { nullptr };
// Object Queue
struct ObjectData
@@ -93,14 +93,13 @@ protected:
object_data_list_t mObjectList;
LLUUID mCurrentObjectID;
- bool mDone;
+ bool mDone { false };
std::string mStartString;
- bool mMono;
+ std::string mCompileTarget { "lsl2" };
typedef boost::function<bool(const LLPointer<LLViewerObject> &, LLInventoryObject*, LLEventPump &)> fnQueueAction_t;
static void objectScriptProcessingQueueCoro(std::string action, LLHandle<LLFloaterScriptQueue> hfloater, object_data_list_t objectList, fnQueueAction_t func);
-
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 02a4c7fb26..432aaa8f18 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -441,42 +441,37 @@ void LLLiveLSLEditor::experienceChanged()
}
}
-void LLLiveLSLEditor::onViewProfile( LLUICtrl *ui, void* userdata )
+void LLLiveLSLEditor::onViewProfile()
{
- LLLiveLSLEditor* self = (LLLiveLSLEditor*)userdata;
-
- LLUUID id;
- if(self->mExperienceEnabled->get())
+ if (mExperienceEnabled->get())
{
- id=self->mScriptEd->getAssociatedExperience();
- if(id.notNull())
+ LLUUID id = mScriptEd->getAssociatedExperience();
+ if (id.notNull())
{
LLFloaterReg::showInstance("experience_profile", id, true);
}
}
-
}
-void LLLiveLSLEditor::onToggleExperience( LLUICtrl *ui, void* userdata )
+void LLLiveLSLEditor::onToggleExperience()
{
- LLLiveLSLEditor* self = (LLLiveLSLEditor*)userdata;
-
LLUUID id;
- if(self->mExperienceEnabled->get())
+ if (mExperienceEnabled->get())
{
- if(self->mScriptEd->getAssociatedExperience().isNull())
+ if (mScriptEd->getAssociatedExperience().isNull())
{
- id=self->mExperienceIds.beginArray()->asUUID();
+ id = mExperienceIds.beginArray()->asUUID();
}
}
- if(id != self->mScriptEd->getAssociatedExperience())
+ if (id != mScriptEd->getAssociatedExperience())
{
- self->mScriptEd->enableSave(self->getIsModifiable());
+ mScriptEd->enableSave(getIsModifiable());
}
- self->mScriptEd->setAssociatedExperience(id);
- self->updateExperiencePanel();
+ mScriptEd->setAssociatedExperience(id);
+
+ updateExperiencePanel();
}
bool LLScriptEdCore::postBuild()
@@ -1375,7 +1370,7 @@ void LLLiveLSLEditor::updateExperiencePanel()
mExperienceEnabled->setEnabled(false);
mExperienceEnabled->setToolTip(getString("no_experiences"));
}
- getChild<LLButton>("view_profile")->setVisible(false);
+ mViewProfileButton->setVisible(false);
}
else
{
@@ -1383,7 +1378,7 @@ void LLLiveLSLEditor::updateExperiencePanel()
mExperienceEnabled->setEnabled(getIsModifiable());
mExperiences->setVisible(true);
mExperienceEnabled->set(true);
- getChild<LLButton>("view_profile")->setToolTip(getString("show_experience_profile"));
+ mViewProfileButton->setToolTip(getString("show_experience_profile"));
buildExperienceList();
}
}
@@ -1452,7 +1447,7 @@ void LLLiveLSLEditor::buildExperienceList()
mExperiences->setEnabled(true);
mExperiences->sortByName(true);
mExperiences->setCurrentByIndex(mExperiences->getCurrentIndex());
- getChild<LLButton>("view_profile")->setVisible(true);
+ mViewProfileButton->setVisible(true);
}
}
@@ -1960,28 +1955,26 @@ LLLiveLSLEditor::LLLiveLSLEditor(const LLSD& key) :
bool LLLiveLSLEditor::postBuild()
{
- childSetCommitCallback("running", LLLiveLSLEditor::onRunningCheckboxClicked, this);
- getChildView("running")->setEnabled(false);
+ mResetButton = getChild<LLButton>("reset");
+ mResetButton->setClickedCallback([&](LLUICtrl*, const LLSD&) { onReset(); });
- childSetAction("Reset",&LLLiveLSLEditor::onReset,this);
- getChildView("Reset")->setEnabled(true);
-
- mMonoCheckbox = getChild<LLCheckBoxCtrl>("mono");
- childSetCommitCallback("mono", &LLLiveLSLEditor::onMonoCheckboxClicked, this);
- getChildView("mono")->setEnabled(true);
-
- mScriptEd->mEditor->makePristine();
- mScriptEd->mEditor->setFocus(true);
+ mRunningCheckbox = getChild<LLCheckBoxCtrl>("running");
+ mRunningCheckbox->setCommitCallback([&](LLUICtrl*, const LLSD&) { onRunningCheckboxClicked(); });
+ mCompileTarget = getChild<LLComboBox>("compile_target");
+ mCompileTarget->setCommitCallback([&](LLUICtrl*, const LLSD&) { onCompileTargetChanged(); });
mExperiences = getChild<LLComboBox>("Experiences...");
- mExperiences->setCommitCallback(boost::bind(&LLLiveLSLEditor::experienceChanged, this));
+ mExperiences->setCommitCallback([&](LLUICtrl*, const LLSD&) { experienceChanged(); });
mExperienceEnabled = getChild<LLCheckBoxCtrl>("enable_xp");
+ mExperienceEnabled->setCommitCallback([&](LLUICtrl*, const LLSD&) { onToggleExperience(); });
- childSetCommitCallback("enable_xp", onToggleExperience, this);
- childSetCommitCallback("view_profile", onViewProfile, this);
+ mViewProfileButton = getChild<LLButton>("view_profile");
+ mViewProfileButton->setClickedCallback([&](LLUICtrl*, const LLSD&) { onViewProfile(); });
+ mScriptEd->mEditor->makePristine();
+ mScriptEd->mEditor->setFocus(true);
return LLPreview::postBuild();
}
@@ -1994,7 +1987,7 @@ void LLLiveLSLEditor::callbackLSLCompileSucceeded(const LLUUID& task_id,
LL_DEBUGS() << "LSL Bytecode saved" << LL_ENDL;
mScriptEd->mErrorList->setCommentText(LLTrans::getString("CompileSuccessful"));
mScriptEd->mErrorList->setCommentText(LLTrans::getString("SaveComplete"));
- getChild<LLCheckBoxCtrl>("running")->set(is_script_running);
+ mRunningCheckbox->set(is_script_running);
mIsSaving = false;
closeIfNeeded();
}
@@ -2057,9 +2050,10 @@ void LLLiveLSLEditor::loadAsset()
{
mItem = new LLViewerInventoryItem(item);
// request the text from the object
- LLSD* user_data = new LLSD();
- user_data->with("taskid", mObjectUUID).with("itemid", mItemUUID);
- gAssetStorage->getInvItemAsset(object->getRegion()->getHost(),
+ LLSD* user_data = new LLSD();
+ user_data->with("taskid", mObjectUUID).with("itemid", mItemUUID);
+ gAssetStorage->getInvItemAsset(
+ object->getRegion()->getHost(),
gAgent.getID(),
gAgent.getSessionID(),
item->getPermissions().getOwner(),
@@ -2067,8 +2061,8 @@ void LLLiveLSLEditor::loadAsset()
item->getUUID(),
item->getAssetUUID(),
item->getType(),
- &LLLiveLSLEditor::onLoadComplete,
- (void*)user_data,
+ LLLiveLSLEditor::onLoadComplete,
+ user_data,
true);
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_GetScriptRunning);
@@ -2202,14 +2196,9 @@ void LLLiveLSLEditor::loadScriptText(const LLUUID &uuid, LLAssetType::EType type
}
-void LLLiveLSLEditor::onRunningCheckboxClicked( LLUICtrl*, void* userdata )
+void LLLiveLSLEditor::onRunningCheckboxClicked()
{
- LLLiveLSLEditor* self = (LLLiveLSLEditor*) userdata;
- LLViewerObject* object = gObjectList.findObject( self->mObjectUUID );
- LLCheckBoxCtrl* runningCheckbox = self->getChild<LLCheckBoxCtrl>("running");
- bool running = runningCheckbox->get();
- //self->mRunningCheckbox->get();
- if( object )
+ if (LLViewerObject* object = gObjectList.findObject(mObjectUUID))
{
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_SetScriptRunning);
@@ -2217,24 +2206,21 @@ void LLLiveLSLEditor::onRunningCheckboxClicked( LLUICtrl*, void* userdata )
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->nextBlockFast(_PREHASH_Script);
- msg->addUUIDFast(_PREHASH_ObjectID, self->mObjectUUID);
- msg->addUUIDFast(_PREHASH_ItemID, self->mItemUUID);
- msg->addBOOLFast(_PREHASH_Running, running);
+ msg->addUUIDFast(_PREHASH_ObjectID, mObjectUUID);
+ msg->addUUIDFast(_PREHASH_ItemID, mItemUUID);
+ msg->addBOOLFast(_PREHASH_Running, mRunningCheckbox->get());
msg->sendReliable(object->getRegion()->getHost());
}
else
{
- runningCheckbox->set(!running);
+ mRunningCheckbox->set(!mRunningCheckbox->get());
LLNotificationsUtil::add("CouldNotStartStopScript");
}
}
-void LLLiveLSLEditor::onReset(void *userdata)
+void LLLiveLSLEditor::onReset()
{
- LLLiveLSLEditor* self = (LLLiveLSLEditor*) userdata;
-
- LLViewerObject* object = gObjectList.findObject( self->mObjectUUID );
- if(object)
+ if (LLViewerObject* object = gObjectList.findObject(mObjectUUID))
{
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_ScriptReset);
@@ -2242,8 +2228,8 @@ void LLLiveLSLEditor::onReset(void *userdata)
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->nextBlockFast(_PREHASH_Script);
- msg->addUUIDFast(_PREHASH_ObjectID, self->mObjectUUID);
- msg->addUUIDFast(_PREHASH_ItemID, self->mItemUUID);
+ msg->addUUIDFast(_PREHASH_ObjectID, mObjectUUID);
+ msg->addUUIDFast(_PREHASH_ItemID, mItemUUID);
msg->sendReliable(object->getRegion()->getHost());
}
else
@@ -2255,34 +2241,33 @@ void LLLiveLSLEditor::onReset(void *userdata)
void LLLiveLSLEditor::draw()
{
LLViewerObject* object = gObjectList.findObject(mObjectUUID);
- LLCheckBoxCtrl* runningCheckbox = getChild<LLCheckBoxCtrl>( "running");
- if(object && mAskedForRunningInfo && mHaveRunningInfo)
+ if (object && mAskedForRunningInfo && mHaveRunningInfo)
{
- if(object->permAnyOwner())
+ if (object->permAnyOwner())
{
- runningCheckbox->setLabel(getString("script_running"));
- runningCheckbox->setEnabled(!mIsSaving);
+ mRunningCheckbox->setLabel(getString("script_running"));
+ mRunningCheckbox->setEnabled(!mIsSaving);
}
else
{
- runningCheckbox->setLabel(getString("public_objects_can_not_run"));
- runningCheckbox->setEnabled(false);
+ mRunningCheckbox->setLabel(getString("public_objects_can_not_run"));
+ mRunningCheckbox->setEnabled(false);
// *FIX: Set it to false so that the ui is correct for
// a box that is released to public. It could be
// incorrect after a release/claim cycle, but will be
// correct after clicking on it.
- runningCheckbox->set(false);
- mMonoCheckbox->set(false);
+ mRunningCheckbox->set(false);
+ mCompileTarget->clear();
}
}
- else if(!object)
+ else if (!object)
{
// HACK: Display this information in the title bar.
// Really ought to put in main window.
setTitle(LLTrans::getString("ObjectOutOfRange"));
- runningCheckbox->setEnabled(false);
- mMonoCheckbox->setEnabled(false);
+ mRunningCheckbox->setEnabled(false);
+ mCompileTarget->setEnabled(false);
// object may have fallen out of range.
mHaveRunningInfo = false;
}
@@ -2389,7 +2374,7 @@ void LLLiveLSLEditor::saveIfNeeded(bool sync /*= true*/)
mScriptEd->sync();
}
- bool isRunning = getChild<LLCheckBoxCtrl>("running")->get();
+ bool is_running = mRunningCheckbox->get();
getWindow()->incBusyCount();
mPendingUploads++;
@@ -2397,17 +2382,18 @@ void LLLiveLSLEditor::saveIfNeeded(bool sync /*= true*/)
if (!url.empty())
{
+ std::string compile_target(mCompileTarget->getValue());
std::string buffer(mScriptEd->mEditor->getText());
LLUUID old_asset_id = mScriptEd->getAssetID();
LLResourceUploadInfo::ptr_t uploadInfo(std::make_shared<LLScriptAssetUpload>(mObjectUUID, mItemUUID,
- monoChecked() ? LLScriptAssetUpload::MONO : LLScriptAssetUpload::LSL2,
- isRunning, mScriptEd->getAssociatedExperience(), buffer,
- [isRunning, old_asset_id](LLUUID itemId, LLUUID taskId, LLUUID newAssetId, LLSD response) {
- LLFileSystem::removeFile(old_asset_id, LLAssetType::AT_LSL_TEXT);
- LLLiveLSLEditor::finishLSLUpload(itemId, taskId, newAssetId, response, isRunning);
- },
- nullptr)); // needs failure handling?
+ compile_target, is_running, mScriptEd->getAssociatedExperience(), buffer,
+ [is_running, old_asset_id](LLUUID item_id, LLUUID task_id, LLUUID new_asset_id, LLSD response)
+ {
+ LLFileSystem::removeFile(old_asset_id, LLAssetType::AT_LSL_TEXT);
+ LLLiveLSLEditor::finishLSLUpload(item_id, task_id, new_asset_id, response, is_running);
+ },
+ nullptr)); // needs failure handling?
LLViewerAssetUpload::EnqueueInventoryUpload(url, uploadInfo);
}
@@ -2460,28 +2446,41 @@ void LLLiveLSLEditor::processScriptRunningReply(LLMessageSystem* msg, void**)
if (LLLiveLSLEditor* instance = LLFloaterReg::findTypedInstance<LLLiveLSLEditor>("preview_scriptedit", floater_key))
{
instance->mHaveRunningInfo = true;
+
bool running;
msg->getBOOLFast(_PREHASH_Script, _PREHASH_Running, running);
- LLCheckBoxCtrl* runningCheckbox = instance->getChild<LLCheckBoxCtrl>("running");
- runningCheckbox->set(running);
- bool mono;
- msg->getBOOLFast(_PREHASH_Script, "Mono", mono);
- LLCheckBoxCtrl* monoCheckbox = instance->getChild<LLCheckBoxCtrl>("mono");
- monoCheckbox->setEnabled(instance->getIsModifiable() && have_script_upload_cap(object_id));
- monoCheckbox->set(mono);
- }
-}
+ instance->mRunningCheckbox->set(running);
-void LLLiveLSLEditor::onMonoCheckboxClicked(LLUICtrl*, void* userdata)
-{
- LLLiveLSLEditor* self = static_cast<LLLiveLSLEditor*>(userdata);
- self->mMonoCheckbox->setEnabled(have_script_upload_cap(self->mObjectUUID));
- self->mScriptEd->enableSave(self->getIsModifiable());
+ std::string compile_target;
+ msg->getStringFast(_PREHASH_Script, _PREHASH_CompileTarget, compile_target);
+ if (compile_target.empty()) // Old sim not providing CompileTarget field
+ {
+ bool mono;
+ msg->getBOOLFast(_PREHASH_Script, _PREHASH_Mono, mono); // Use Mono field
+ instance->mCompileTarget->setValue(mono ? "mono" : "lso2");
+ }
+ else if (instance->mCompileTarget->valueExists(compile_target))
+ {
+ instance->mCompileTarget->setValue(compile_target); // Use CompileTarget field
+ }
+ else
+ {
+ instance->mCompileTarget->setValue("mono"); // Use default value
+ }
+
+ if (LLScrollListItem* item = instance->mCompileTarget->findItemByValue("luau"))
+ {
+ item->setEnabled(!compile_target.empty());
+ }
+
+ instance->mCompileTarget->setEnabled(instance->getIsModifiable() && have_script_upload_cap(object_id));
+ }
}
-bool LLLiveLSLEditor::monoChecked() const
+void LLLiveLSLEditor::onCompileTargetChanged()
{
- return mMonoCheckbox && mMonoCheckbox->getValue();
+ mCompileTarget->setEnabled(have_script_upload_cap(mObjectUUID));
+ mScriptEd->enableSave(getIsModifiable());
}
void LLLiveLSLEditor::setAssociatedExperience( LLHandle<LLLiveLSLEditor> editor, const LLSD& experience )
diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h
index 70ee1a4274..9ec439d21a 100644
--- a/indra/newview/llpreviewscript.h
+++ b/indra/newview/llpreviewscript.h
@@ -290,8 +290,8 @@ public:
void setIsNew() { mIsNew = true; }
static void setAssociatedExperience( LLHandle<LLLiveLSLEditor> editor, const LLSD& experience );
- static void onToggleExperience(LLUICtrl *ui, void* userdata);
- static void onViewProfile(LLUICtrl *ui, void* userdata);
+ void onToggleExperience();
+ void onViewProfile();
void setExperienceIds(const LLSD& experience_ids);
void buildExperienceList();
@@ -301,6 +301,8 @@ public:
void setObjectName(std::string name) { mObjectName = name; }
+ bool getIsModifiable() const { return mIsModifiable; } // Evaluated on load assert
+
private:
virtual bool canClose();
void closeIfNeeded();
@@ -308,8 +310,6 @@ private:
virtual void loadAsset();
/*virtual*/ void saveIfNeeded(bool sync = true);
- bool monoChecked() const;
-
static void onSearchReplace(void* userdata);
static void onLoad(void* userdata);
@@ -318,14 +318,14 @@ private:
static void onLoadComplete(const LLUUID& asset_uuid,
LLAssetType::EType type,
void* user_data, S32 status, LLExtStat ext_status);
- static void onRunningCheckboxClicked(LLUICtrl*, void* userdata);
- static void onReset(void* userdata);
+ void onRunningCheckboxClicked();
+ void onReset();
void loadScriptText(const LLUUID &uuid, LLAssetType::EType type);
static void* createScriptEdPanel(void* userdata);
- static void onMonoCheckboxClicked(LLUICtrl*, void* userdata);
+ void onCompileTargetChanged();
static void finishLSLUpload(LLUUID itemId, LLUUID taskId, LLUUID newAssetId, LLSD response, bool isRunning);
static void receiveExperienceIds(LLSD result, LLHandle<LLLiveLSLEditor> parent);
@@ -343,19 +343,18 @@ private:
S32 mPendingUploads;
bool mIsSaving;
+ bool mIsModifiable;
- bool getIsModifiable() const { return mIsModifiable; } // Evaluated on load assert
-
- LLCheckBoxCtrl* mMonoCheckbox;
- bool mIsModifiable;
-
-
- LLComboBox* mExperiences;
- LLCheckBoxCtrl* mExperienceEnabled;
- LLSD mExperienceIds;
+ LLButton* mResetButton { nullptr };
+ LLCheckBoxCtrl* mRunningCheckbox { nullptr };
+ LLComboBox* mCompileTarget { nullptr };
+ LLComboBox* mExperiences { nullptr };
+ LLCheckBoxCtrl* mExperienceEnabled { nullptr };
+ LLButton* mViewProfileButton { nullptr };
+ LLSD mExperienceIds;
LLHandle<LLFloater> mExperienceProfile;
- std::string mObjectName;
+ std::string mObjectName;
};
#endif // LL_LLPREVIEWSCRIPT_H
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index b32b80331a..322476f24a 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2625,172 +2625,138 @@ void use_circuit_callback(void**, S32 result)
void register_viewer_callbacks(LLMessageSystem* msg)
{
- msg->setHandlerFuncFast(_PREHASH_LayerData, process_layer_data );
- msg->setHandlerFuncFast(_PREHASH_ObjectUpdate, process_object_update );
- msg->setHandlerFunc("ObjectUpdateCompressed", process_compressed_object_update );
- msg->setHandlerFunc("ObjectUpdateCached", process_cached_object_update );
+ msg->setHandlerFuncFast(_PREHASH_LayerData, process_layer_data);
+ msg->setHandlerFuncFast(_PREHASH_ObjectUpdate, process_object_update);
+ msg->setHandlerFuncFast(_PREHASH_ObjectUpdateCompressed, process_compressed_object_update);
+ msg->setHandlerFuncFast(_PREHASH_ObjectUpdateCached, process_cached_object_update);
msg->setHandlerFuncFast(_PREHASH_ImprovedTerseObjectUpdate, process_terse_object_update_improved );
- msg->setHandlerFunc("SimStats", process_sim_stats);
- msg->setHandlerFuncFast(_PREHASH_HealthMessage, process_health_message );
+ msg->setHandlerFuncFast(_PREHASH_SimStats, process_sim_stats);
+ msg->setHandlerFuncFast(_PREHASH_HealthMessage, process_health_message);
msg->setHandlerFuncFast(_PREHASH_EconomyData, process_economy_data);
- msg->setHandlerFunc("RegionInfo", LLViewerRegion::processRegionInfo);
+ msg->setHandlerFuncFast(_PREHASH_RegionInfo, LLViewerRegion::processRegionInfo);
- msg->setHandlerFuncFast(_PREHASH_ChatFromSimulator, process_chat_from_simulator);
- msg->setHandlerFuncFast(_PREHASH_KillObject, process_kill_object, NULL);
- msg->setHandlerFuncFast(_PREHASH_SimulatorViewerTimeMessage, process_time_synch, NULL);
+ msg->setHandlerFuncFast(_PREHASH_ChatFromSimulator, process_chat_from_simulator);
+ msg->setHandlerFuncFast(_PREHASH_KillObject, process_kill_object);
+ msg->setHandlerFuncFast(_PREHASH_SimulatorViewerTimeMessage,process_time_synch);
msg->setHandlerFuncFast(_PREHASH_EnableSimulator, process_enable_simulator);
msg->setHandlerFuncFast(_PREHASH_DisableSimulator, process_disable_simulator);
- msg->setHandlerFuncFast(_PREHASH_KickUser, process_kick_user, NULL);
+ msg->setHandlerFuncFast(_PREHASH_KickUser, process_kick_user);
- msg->setHandlerFunc("CrossedRegion", process_crossed_region);
- msg->setHandlerFuncFast(_PREHASH_TeleportFinish, process_teleport_finish);
+ msg->setHandlerFuncFast(_PREHASH_CrossedRegion, process_crossed_region);
+ msg->setHandlerFuncFast(_PREHASH_TeleportFinish, process_teleport_finish);
- msg->setHandlerFuncFast(_PREHASH_AlertMessage, process_alert_message);
- msg->setHandlerFunc("AgentAlertMessage", process_agent_alert_message);
- msg->setHandlerFuncFast(_PREHASH_MeanCollisionAlert, process_mean_collision_alert_message, NULL);
- msg->setHandlerFunc("ViewerFrozenMessage", process_frozen_message);
+ msg->setHandlerFuncFast(_PREHASH_AlertMessage, process_alert_message);
+ msg->setHandlerFuncFast(_PREHASH_AgentAlertMessage, process_agent_alert_message);
+ msg->setHandlerFuncFast(_PREHASH_MeanCollisionAlert, process_mean_collision_alert_message);
+ msg->setHandlerFuncFast(_PREHASH_ViewerFrozenMessage, process_frozen_message);
- msg->setHandlerFuncFast(_PREHASH_NameValuePair, process_name_value);
- msg->setHandlerFuncFast(_PREHASH_RemoveNameValuePair, process_remove_name_value);
- msg->setHandlerFuncFast(_PREHASH_AvatarAnimation, process_avatar_animation);
- msg->setHandlerFuncFast(_PREHASH_ObjectAnimation, process_object_animation);
- msg->setHandlerFuncFast(_PREHASH_AvatarAppearance, process_avatar_appearance);
- msg->setHandlerFuncFast(_PREHASH_CameraConstraint, process_camera_constraint);
- msg->setHandlerFuncFast(_PREHASH_AvatarSitResponse, process_avatar_sit_response);
- msg->setHandlerFunc("SetFollowCamProperties", process_set_follow_cam_properties);
- msg->setHandlerFunc("ClearFollowCamProperties", process_clear_follow_cam_properties);
+ msg->setHandlerFuncFast(_PREHASH_NameValuePair, process_name_value);
+ msg->setHandlerFuncFast(_PREHASH_RemoveNameValuePair, process_remove_name_value);
+ msg->setHandlerFuncFast(_PREHASH_AvatarAnimation, process_avatar_animation);
+ msg->setHandlerFuncFast(_PREHASH_ObjectAnimation, process_object_animation);
+ msg->setHandlerFuncFast(_PREHASH_AvatarAppearance, process_avatar_appearance);
+ msg->setHandlerFuncFast(_PREHASH_CameraConstraint, process_camera_constraint);
+ msg->setHandlerFuncFast(_PREHASH_AvatarSitResponse, process_avatar_sit_response);
+ msg->setHandlerFuncFast(_PREHASH_SetFollowCamProperties, process_set_follow_cam_properties);
+ msg->setHandlerFuncFast(_PREHASH_ClearFollowCamProperties, process_clear_follow_cam_properties);
msg->setHandlerFuncFast(_PREHASH_ImprovedInstantMessage, process_improved_im);
msg->setHandlerFuncFast(_PREHASH_ScriptQuestion, process_script_question);
- msg->setHandlerFuncFast(_PREHASH_ObjectProperties, LLSelectMgr::processObjectProperties, NULL);
- msg->setHandlerFuncFast(_PREHASH_ObjectPropertiesFamily, LLSelectMgr::processObjectPropertiesFamily, NULL);
- msg->setHandlerFunc("ForceObjectSelect", LLSelectMgr::processForceObjectSelect);
+ msg->setHandlerFuncFast(_PREHASH_ObjectProperties, LLSelectMgr::processObjectProperties);
+ msg->setHandlerFuncFast(_PREHASH_ObjectPropertiesFamily, LLSelectMgr::processObjectPropertiesFamily);
+ msg->setHandlerFuncFast(_PREHASH_ForceObjectSelect, LLSelectMgr::processForceObjectSelect);
- msg->setHandlerFuncFast(_PREHASH_MoneyBalanceReply, process_money_balance_reply, NULL);
- msg->setHandlerFuncFast(_PREHASH_CoarseLocationUpdate, LLWorld::processCoarseUpdate, NULL);
- msg->setHandlerFuncFast(_PREHASH_ReplyTaskInventory, LLViewerObject::processTaskInv, NULL);
- msg->setHandlerFuncFast(_PREHASH_DerezContainer, process_derez_container, NULL);
- msg->setHandlerFuncFast(_PREHASH_ScriptRunningReply,
- &LLLiveLSLEditor::processScriptRunningReply);
+ msg->setHandlerFuncFast(_PREHASH_MoneyBalanceReply, process_money_balance_reply);
+ msg->setHandlerFuncFast(_PREHASH_CoarseLocationUpdate, LLWorld::processCoarseUpdate);
+ msg->setHandlerFuncFast(_PREHASH_ReplyTaskInventory, LLViewerObject::processTaskInv);
+ msg->setHandlerFuncFast(_PREHASH_DerezContainer, process_derez_container);
+ msg->setHandlerFuncFast(_PREHASH_ScriptRunningReply, LLLiveLSLEditor::processScriptRunningReply);
- msg->setHandlerFuncFast(_PREHASH_DeRezAck, process_derez_ack);
+ msg->setHandlerFuncFast(_PREHASH_DeRezAck, process_derez_ack);
- msg->setHandlerFunc("LogoutReply", process_logout_reply);
+ msg->setHandlerFuncFast(_PREHASH_LogoutReply, process_logout_reply);
- //msg->setHandlerFuncFast(_PREHASH_AddModifyAbility,
- // &LLAgent::processAddModifyAbility);
- //msg->setHandlerFuncFast(_PREHASH_RemoveModifyAbility,
- // &LLAgent::processRemoveModifyAbility);
- msg->setHandlerFuncFast(_PREHASH_AgentDataUpdate,
- &LLAgent::processAgentDataUpdate);
- msg->setHandlerFuncFast(_PREHASH_AgentGroupDataUpdate,
- &LLAgent::processAgentGroupDataUpdate);
- msg->setHandlerFunc("AgentDropGroup",
- &LLAgent::processAgentDropGroup);
+ //msg->setHandlerFuncFast(_PREHASH_AddModifyAbility, LLAgent::processAddModifyAbility);
+ //msg->setHandlerFuncFast(_PREHASH_RemoveModifyAbility, LLAgent::processRemoveModifyAbility);
+ msg->setHandlerFuncFast(_PREHASH_AgentDataUpdate, LLAgent::processAgentDataUpdate);
+ msg->setHandlerFuncFast(_PREHASH_AgentGroupDataUpdate, LLAgent::processAgentGroupDataUpdate);
+ msg->setHandlerFuncFast(_PREHASH_AgentDropGroup, LLAgent::processAgentDropGroup);
// land ownership messages
- msg->setHandlerFuncFast(_PREHASH_ParcelOverlay,
- LLViewerParcelMgr::processParcelOverlay);
- msg->setHandlerFuncFast(_PREHASH_ParcelProperties,
- LLViewerParcelMgr::processParcelProperties);
- msg->setHandlerFunc("ParcelAccessListReply",
- LLViewerParcelMgr::processParcelAccessListReply);
- msg->setHandlerFunc("ParcelDwellReply",
- LLViewerParcelMgr::processParcelDwellReply);
+ msg->setHandlerFuncFast(_PREHASH_ParcelOverlay, LLViewerParcelMgr::processParcelOverlay);
+ msg->setHandlerFuncFast(_PREHASH_ParcelProperties, LLViewerParcelMgr::processParcelProperties);
+ msg->setHandlerFuncFast(_PREHASH_ParcelAccessListReply, LLViewerParcelMgr::processParcelAccessListReply);
+ msg->setHandlerFuncFast(_PREHASH_ParcelDwellReply, LLViewerParcelMgr::processParcelDwellReply);
- msg->setHandlerFunc("AvatarPropertiesReply",
- &LLAvatarPropertiesProcessor::processAvatarLegacyPropertiesReply);
- msg->setHandlerFunc("AvatarInterestsReply",
- &LLAvatarPropertiesProcessor::processAvatarInterestsReply);
- msg->setHandlerFunc("AvatarGroupsReply",
- &LLAvatarPropertiesProcessor::processAvatarGroupsReply);
- msg->setHandlerFunc("AvatarNotesReply",
- &LLAvatarPropertiesProcessor::processAvatarNotesReply);
- msg->setHandlerFunc("AvatarPicksReply",
- &LLAvatarPropertiesProcessor::processAvatarPicksReply);
- msg->setHandlerFunc("AvatarClassifiedReply",
- &LLAvatarPropertiesProcessor::processAvatarClassifiedsReply);
+ msg->setHandlerFuncFast(_PREHASH_AvatarPropertiesReply, LLAvatarPropertiesProcessor::processAvatarLegacyPropertiesReply);
+ msg->setHandlerFuncFast(_PREHASH_AvatarInterestsReply, LLAvatarPropertiesProcessor::processAvatarInterestsReply);
+ msg->setHandlerFuncFast(_PREHASH_AvatarGroupsReply, LLAvatarPropertiesProcessor::processAvatarGroupsReply);
+ msg->setHandlerFuncFast(_PREHASH_AvatarNotesReply, LLAvatarPropertiesProcessor::processAvatarNotesReply);
+ msg->setHandlerFuncFast(_PREHASH_AvatarPicksReply, LLAvatarPropertiesProcessor::processAvatarPicksReply);
+ msg->setHandlerFuncFast(_PREHASH_AvatarClassifiedReply, LLAvatarPropertiesProcessor::processAvatarClassifiedsReply);
- msg->setHandlerFuncFast(_PREHASH_CreateGroupReply,
- LLGroupMgr::processCreateGroupReply);
- msg->setHandlerFuncFast(_PREHASH_JoinGroupReply,
- LLGroupMgr::processJoinGroupReply);
- msg->setHandlerFuncFast(_PREHASH_EjectGroupMemberReply,
- LLGroupMgr::processEjectGroupMemberReply);
- msg->setHandlerFuncFast(_PREHASH_LeaveGroupReply,
- LLGroupMgr::processLeaveGroupReply);
- msg->setHandlerFuncFast(_PREHASH_GroupProfileReply,
- LLGroupMgr::processGroupPropertiesReply);
+ msg->setHandlerFuncFast(_PREHASH_CreateGroupReply, LLGroupMgr::processCreateGroupReply);
+ msg->setHandlerFuncFast(_PREHASH_JoinGroupReply, LLGroupMgr::processJoinGroupReply);
+ msg->setHandlerFuncFast(_PREHASH_EjectGroupMemberReply, LLGroupMgr::processEjectGroupMemberReply);
+ msg->setHandlerFuncFast(_PREHASH_LeaveGroupReply, LLGroupMgr::processLeaveGroupReply);
+ msg->setHandlerFuncFast(_PREHASH_GroupProfileReply, LLGroupMgr::processGroupPropertiesReply);
// ratings deprecated
- // msg->setHandlerFuncFast(_PREHASH_ReputationIndividualReply,
- // LLFloaterRate::processReputationIndividualReply);
+ //msg->setHandlerFuncFast(_PREHASH_ReputationIndividualReply, LLFloaterRate::processReputationIndividualReply);
- msg->setHandlerFunc("ScriptControlChange",
- LLAgent::processScriptControlChange );
+ msg->setHandlerFuncFast(_PREHASH_ScriptControlChange, LLAgent::processScriptControlChange );
+ msg->setHandlerFuncFast(_PREHASH_ViewerEffect, LLHUDManager::processViewerEffect);
+ msg->setHandlerFuncFast(_PREHASH_GrantGodlikePowers, process_grant_godlike_powers);
+ msg->setHandlerFuncFast(_PREHASH_GroupAccountSummaryReply, LLPanelGroupLandMoney::processGroupAccountSummaryReply);
+ msg->setHandlerFuncFast(_PREHASH_GroupAccountDetailsReply, LLPanelGroupLandMoney::processGroupAccountDetailsReply);
+ msg->setHandlerFuncFast(_PREHASH_GroupAccountTransactionsReply, LLPanelGroupLandMoney::processGroupAccountTransactionsReply);
- msg->setHandlerFuncFast(_PREHASH_ViewerEffect, LLHUDManager::processViewerEffect);
+ msg->setHandlerFuncFast(_PREHASH_UserInfoReply, process_user_info_reply);
- msg->setHandlerFuncFast(_PREHASH_GrantGodlikePowers, process_grant_godlike_powers);
+ msg->setHandlerFuncFast(_PREHASH_RegionHandshake, process_region_handshake);
- msg->setHandlerFuncFast(_PREHASH_GroupAccountSummaryReply,
- LLPanelGroupLandMoney::processGroupAccountSummaryReply);
- msg->setHandlerFuncFast(_PREHASH_GroupAccountDetailsReply,
- LLPanelGroupLandMoney::processGroupAccountDetailsReply);
- msg->setHandlerFuncFast(_PREHASH_GroupAccountTransactionsReply,
- LLPanelGroupLandMoney::processGroupAccountTransactionsReply);
+ msg->setHandlerFuncFast(_PREHASH_TeleportStart, process_teleport_start);
+ msg->setHandlerFuncFast(_PREHASH_TeleportProgress, process_teleport_progress);
+ msg->setHandlerFuncFast(_PREHASH_TeleportFailed, process_teleport_failed);
+ msg->setHandlerFuncFast(_PREHASH_TeleportLocal, process_teleport_local);
- msg->setHandlerFuncFast(_PREHASH_UserInfoReply,
- process_user_info_reply);
+ msg->setHandlerFuncFast(_PREHASH_ImageNotInDatabase, LLViewerTextureList::processImageNotInDatabase);
- msg->setHandlerFunc("RegionHandshake", process_region_handshake, NULL);
-
- msg->setHandlerFunc("TeleportStart", process_teleport_start );
- msg->setHandlerFunc("TeleportProgress", process_teleport_progress);
- msg->setHandlerFunc("TeleportFailed", process_teleport_failed, NULL);
- msg->setHandlerFunc("TeleportLocal", process_teleport_local, NULL);
-
- msg->setHandlerFunc("ImageNotInDatabase", LLViewerTextureList::processImageNotInDatabase, NULL);
-
- msg->setHandlerFuncFast(_PREHASH_GroupMembersReply,
- LLGroupMgr::processGroupMembersReply);
- msg->setHandlerFunc("GroupRoleDataReply",
- LLGroupMgr::processGroupRoleDataReply);
- msg->setHandlerFunc("GroupRoleMembersReply",
- LLGroupMgr::processGroupRoleMembersReply);
- msg->setHandlerFunc("GroupTitlesReply",
- LLGroupMgr::processGroupTitlesReply);
+ msg->setHandlerFuncFast(_PREHASH_GroupMembersReply, LLGroupMgr::processGroupMembersReply);
+ msg->setHandlerFuncFast(_PREHASH_GroupRoleDataReply, LLGroupMgr::processGroupRoleDataReply);
+ msg->setHandlerFuncFast(_PREHASH_GroupRoleMembersReply, LLGroupMgr::processGroupRoleMembersReply);
+ msg->setHandlerFuncFast(_PREHASH_GroupTitlesReply, LLGroupMgr::processGroupTitlesReply);
// Special handler as this message is sometimes used for group land.
- msg->setHandlerFunc("PlacesReply", process_places_reply);
- msg->setHandlerFunc("GroupNoticesListReply", LLPanelGroupNotices::processGroupNoticesListReply);
+ msg->setHandlerFuncFast(_PREHASH_PlacesReply, process_places_reply);
+ msg->setHandlerFuncFast(_PREHASH_GroupNoticesListReply, LLPanelGroupNotices::processGroupNoticesListReply);
- msg->setHandlerFunc("AvatarPickerReply", LLFloaterAvatarPicker::processAvatarPickerReply);
+ msg->setHandlerFuncFast(_PREHASH_AvatarPickerReply, LLFloaterAvatarPicker::processAvatarPickerReply);
- msg->setHandlerFunc("MapBlockReply", LLWorldMapMessage::processMapBlockReply);
- msg->setHandlerFunc("MapItemReply", LLWorldMapMessage::processMapItemReply);
- msg->setHandlerFunc("EventInfoReply", LLEventNotifier::processEventInfoReply);
+ msg->setHandlerFuncFast(_PREHASH_MapBlockReply, LLWorldMapMessage::processMapBlockReply);
+ msg->setHandlerFuncFast(_PREHASH_MapItemReply, LLWorldMapMessage::processMapItemReply);
+ msg->setHandlerFuncFast(_PREHASH_EventInfoReply, LLEventNotifier::processEventInfoReply);
- msg->setHandlerFunc("PickInfoReply", &LLAvatarPropertiesProcessor::processPickInfoReply);
- msg->setHandlerFunc("ClassifiedInfoReply", LLAvatarPropertiesProcessor::processClassifiedInfoReply);
- msg->setHandlerFunc("ParcelInfoReply", LLRemoteParcelInfoProcessor::processParcelInfoReply);
- msg->setHandlerFunc("ScriptDialog", process_script_dialog);
- msg->setHandlerFunc("LoadURL", process_load_url);
- msg->setHandlerFunc("ScriptTeleportRequest", process_script_teleport_request);
- msg->setHandlerFunc("EstateCovenantReply", process_covenant_reply);
+ msg->setHandlerFuncFast(_PREHASH_PickInfoReply, LLAvatarPropertiesProcessor::processPickInfoReply);
+ msg->setHandlerFuncFast(_PREHASH_ClassifiedInfoReply, LLAvatarPropertiesProcessor::processClassifiedInfoReply);
+ msg->setHandlerFuncFast(_PREHASH_ParcelInfoReply, LLRemoteParcelInfoProcessor::processParcelInfoReply);
+ msg->setHandlerFuncFast(_PREHASH_ScriptDialog, process_script_dialog);
+ msg->setHandlerFuncFast(_PREHASH_LoadURL, process_load_url);
+ msg->setHandlerFuncFast(_PREHASH_ScriptTeleportRequest, process_script_teleport_request);
+ msg->setHandlerFuncFast(_PREHASH_EstateCovenantReply, process_covenant_reply);
// calling cards
- msg->setHandlerFunc("OfferCallingCard", process_offer_callingcard);
- msg->setHandlerFunc("AcceptCallingCard", process_accept_callingcard);
- msg->setHandlerFunc("DeclineCallingCard", process_decline_callingcard);
+ msg->setHandlerFuncFast(_PREHASH_OfferCallingCard, process_offer_callingcard);
+ msg->setHandlerFuncFast(_PREHASH_AcceptCallingCard, process_accept_callingcard);
+ msg->setHandlerFuncFast(_PREHASH_DeclineCallingCard, process_decline_callingcard);
- msg->setHandlerFunc("ParcelObjectOwnersReply", LLPanelLandObjects::processParcelObjectOwnersReply);
+ msg->setHandlerFuncFast(_PREHASH_ParcelObjectOwnersReply, LLPanelLandObjects::processParcelObjectOwnersReply);
- msg->setHandlerFunc("InitiateDownload", process_initiate_download);
- msg->setHandlerFunc("LandStatReply", LLFloaterTopObjects::handle_land_reply);
- msg->setHandlerFunc("GenericMessage", process_generic_message);
- msg->setHandlerFunc("GenericStreamingMessage", process_generic_streaming_message);
- msg->setHandlerFunc("LargeGenericMessage", process_large_generic_message);
+ msg->setHandlerFuncFast(_PREHASH_InitiateDownload, process_initiate_download);
+ msg->setHandlerFuncFast(_PREHASH_LandStatReply, LLFloaterTopObjects::handle_land_reply);
+ msg->setHandlerFuncFast(_PREHASH_GenericMessage, process_generic_message);
+ msg->setHandlerFuncFast(_PREHASH_GenericStreamingMessage, process_generic_streaming_message);
+ msg->setHandlerFuncFast(_PREHASH_LargeGenericMessage, process_large_generic_message);
- msg->setHandlerFuncFast(_PREHASH_FeatureDisabled, process_feature_disabled_message);
+ msg->setHandlerFuncFast(_PREHASH_FeatureDisabled, process_feature_disabled_message);
}
void asset_callback_nothing(const LLUUID&, LLAssetType::EType, void*, S32)
diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp
index 7ef2c8d697..1784179237 100644
--- a/indra/newview/llviewerassetupload.cpp
+++ b/indra/newview/llviewerassetupload.cpp
@@ -804,16 +804,16 @@ bool LLBufferedAssetUploadInfo::failedUpload(LLSD &result, std::string &reason)
LLScriptAssetUpload::LLScriptAssetUpload(LLUUID itemId, std::string buffer, invnUploadFinish_f finish, uploadFailed_f failed):
LLBufferedAssetUploadInfo(itemId, LLAssetType::AT_LSL_TEXT, buffer, finish, failed),
mExerienceId(),
- mTargetType(MONO),
+ mCompileTarget("mono"),
mIsRunning(false)
{
}
-LLScriptAssetUpload::LLScriptAssetUpload(LLUUID taskId, LLUUID itemId, TargetType_t targetType,
+LLScriptAssetUpload::LLScriptAssetUpload(LLUUID taskId, LLUUID itemId, std::string compileTarget,
bool isRunning, LLUUID exerienceId, std::string buffer, taskUploadFinish_f finish, uploadFailed_f failed):
LLBufferedAssetUploadInfo(taskId, itemId, LLAssetType::AT_LSL_TEXT, buffer, finish, failed),
mExerienceId(exerienceId),
- mTargetType(targetType),
+ mCompileTarget(compileTarget),
mIsRunning(isRunning)
{
}
@@ -832,7 +832,7 @@ LLSD LLScriptAssetUpload::generatePostBody()
body["task_id"] = getTaskId();
body["item_id"] = getItemId();
body["is_script_running"] = getIsRunning();
- body["target"] = (getTargetType() == MONO) ? "mono" : "lsl2";
+ body["target"] = getCompileTarget();
body["experience"] = getExerienceId();
}
diff --git a/indra/newview/llviewerassetupload.h b/indra/newview/llviewerassetupload.h
index 365436ede0..c3c570efb2 100644
--- a/indra/newview/llviewerassetupload.h
+++ b/indra/newview/llviewerassetupload.h
@@ -251,25 +251,19 @@ private:
class LLScriptAssetUpload : public LLBufferedAssetUploadInfo
{
public:
- enum TargetType_t
- {
- LSL2,
- MONO
- };
-
LLScriptAssetUpload(LLUUID itemId, std::string buffer, invnUploadFinish_f finish, uploadFailed_f failed);
- LLScriptAssetUpload(LLUUID taskId, LLUUID itemId, TargetType_t targetType,
+ LLScriptAssetUpload(LLUUID taskId, LLUUID itemId, std::string compileTarget,
bool isRunning, LLUUID exerienceId, std::string buffer, taskUploadFinish_f finish, uploadFailed_f failed);
virtual LLSD generatePostBody();
LLUUID getExerienceId() const { return mExerienceId; }
- TargetType_t getTargetType() const { return mTargetType; }
+ const std::string& getCompileTarget() const { return mCompileTarget; }
bool getIsRunning() const { return mIsRunning; }
private:
LLUUID mExerienceId;
- TargetType_t mTargetType;
+ std::string mCompileTarget;
bool mIsRunning;
};
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 80c75ec919..fb6b8b12f1 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -7761,13 +7761,13 @@ class LLToolsSelectedScriptAction : public view_listener_t
bool handleEvent(const LLSD& userdata)
{
std::string action = userdata.asString();
- bool mono = false;
+ std::string target = "lsl2";
std::string msg, name;
std::string title;
if (action == "compile mono")
{
name = "compile_queue";
- mono = true;
+ target = "mono";
msg = "Recompile";
title = LLTrans::getString("CompileQueueTitle");
}
@@ -7800,7 +7800,7 @@ class LLToolsSelectedScriptAction : public view_listener_t
LLFloaterScriptQueue* queue =LLFloaterReg::getTypedInstance<LLFloaterScriptQueue>(name, LLSD(id));
if (queue)
{
- queue->setMono(mono);
+ queue->setCompileTarget(target);
if (queue_actions(queue, msg))
{
queue->setTitle(title);
diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
index e30c519c8a..4d15522c76 100644
--- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
@@ -7,7 +7,7 @@
height="607"
layout="topleft"
min_height="271"
- min_width="328"
+ min_width="600"
name="script ed float"
help_topic="script_ed_float"
save_rect="true"
@@ -62,7 +62,6 @@
</text>
<panel
bevel_style="none"
-
border_style="line"
follows="left|top|right|bottom"
height="499"
@@ -93,25 +92,15 @@
name="running"
width="205" />
<check_box
- left_delta="140"
- enabled="true"
- follows="left|bottom"
- font="SansSerif"
- height="18"
- initial_value="true"
- label="Mono"
+ width="130"
+ height="21"
+ enabled="false"
+ left="9"
+ top_pad="10"
layout="topleft"
- name="mono"
- width="100" />
- <check_box width="130"
- height="21"
- enabled="false"
- left="9"
- top_pad="10"
- layout="topleft"
- follows="bottom|left"
- label="Use Experience:"
- name="enable_xp"/>
+ follows="bottom|left"
+ label="Use Experience:"
+ name="enable_xp"/>
<combo_box
label=""
top_pad="-21"
@@ -121,13 +110,40 @@
follows="left|bottom|right"
visible="false"
name="Experiences..."/>
- <button label="&gt;"
- name="view_profile"
- height="23"
- width="23"
- right="496"
- layout="topleft"
- top_pad="-23"
- follows="right"
- visible="false"/>
+ <button
+ label="&gt;"
+ name="view_profile"
+ height="23"
+ width="23"
+ right="496"
+ layout="topleft"
+ top_pad="-23"
+ follows="right"
+ visible="false"/>
+ <text
+ name="compile_target_label"
+ follows="right|bottom"
+ right="180"
+ top="-100"
+ width="100"
+ >Compiler:</text>
+ <combo_box
+ name="compile_target"
+ follows="right|bottom"
+ right="300"
+ top="-105"
+ width="140">
+ <combo_box.item
+ label="LSL: Legacy (LSO2)"
+ name="compile_target_lsl2"
+ value="lsl2" />
+ <combo_box.item
+ label="LSL: Mono"
+ name="compile_target_mono"
+ value="mono" />
+ <combo_box.item
+ label="Lua"
+ name="compile_target_luau"
+ value="luau" />
+ </combo_box>
</floater>