From 42f8875d693b57bc93d98ba57ec65f1d11e93877 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Sat, 14 Sep 2013 21:07:01 -0400 Subject: [PATCH] Group chat seems to want script reset from object inventory, so here you go. --- indra/newview/llpanelobjectinventory.cpp | 25 +++++++++++++++++-- .../default/xui/en-us/menu_inventory.xml | 3 +++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index e9f46c0b4..87d6c3844 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -671,19 +671,34 @@ BOOL LLTaskInvFVBridge::dragOrDrop(MASK mask, BOOL drop, // llwarns << "LLTaskInvFVBridge::dropped() - not implemented" << llendl; //} +void pack_script_message(LLMessageSystem*, const LLInventoryItem*, const LLViewerObject*); + +void reset_script(const LLInventoryItem* item, const LLViewerObject* obj) +{ + if (!item || !obj) return; + gMessageSystem->newMessageFast(_PREHASH_ScriptReset); + pack_script_message(gMessageSystem, item, obj); + gMessageSystem->sendReliable(obj->getRegion()->getHost()); +} + void set_script_running(bool running, const LLInventoryItem* item, const LLViewerObject* obj) { if (!item || !obj) return; LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_SetScriptRunning); + pack_script_message(msg, item, obj); + msg->addBOOLFast(_PREHASH_Running, running); + msg->sendReliable(obj->getRegion()->getHost()); +} + +void pack_script_message(LLMessageSystem* msg, const LLInventoryItem* item, const LLViewerObject* obj) +{ msg->nextBlockFast(_PREHASH_AgentData); msg->addUUIDFast(_PREHASH_AgentID, gAgentID); msg->addUUIDFast(_PREHASH_SessionID, gAgentSessionID); msg->nextBlockFast(_PREHASH_Script); msg->addUUIDFast(_PREHASH_ObjectID, obj->getID()); msg->addUUIDFast(_PREHASH_ItemID, item->getUUID()); - msg->addBOOLFast(_PREHASH_Running, running); - msg->sendReliable(obj->getRegion()->getHost()); } // virtual @@ -719,6 +734,10 @@ void LLTaskInvFVBridge::performAction(LLInventoryModel* model, std::string actio { showProperties(); } + else if (action == "reset_script") + { + reset_script(findItem(), gObjectList.findObject(mPanel->getTaskUUID())); + } else if (action == "start_script") { set_script_running(true, findItem(), gObjectList.findObject(mPanel->getTaskUUID())); @@ -777,11 +796,13 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { if (LLAssetType::AT_LSL_TEXT == item->getType()) { + items.push_back(std::string("Task Reset")); items.push_back(std::string("Task Set Running")); items.push_back(std::string("Task Set Not Running")); const LLViewerObject* obj = gObjectList.findObject(mPanel->getTaskUUID()); if (!obj || !(obj->permModify() || obj->permYouOwner())) { + disabled_items.push_back(std::string("Task Reset")); disabled_items.push_back(std::string("Task Set Running")); disabled_items.push_back(std::string("Task Set Not Running")); } diff --git a/indra/newview/skins/default/xui/en-us/menu_inventory.xml b/indra/newview/skins/default/xui/en-us/menu_inventory.xml index 967c12462..12ebca6f0 100644 --- a/indra/newview/skins/default/xui/en-us/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en-us/menu_inventory.xml @@ -25,6 +25,9 @@ name="Task Remove" width="128"> + + +