Satisfy Issue 852: Implement way to stop\start single non-fullperm script in modiable objects
This commit is contained in:
@@ -671,6 +671,21 @@ BOOL LLTaskInvFVBridge::dragOrDrop(MASK mask, BOOL drop,
|
||||
// llwarns << "LLTaskInvFVBridge::dropped() - not implemented" << llendl;
|
||||
//}
|
||||
|
||||
void set_script_running(bool running, const LLInventoryItem* item, const LLViewerObject* obj)
|
||||
{
|
||||
if (!item || !obj) return;
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessageFast(_PREHASH_SetScriptRunning);
|
||||
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
|
||||
void LLTaskInvFVBridge::performAction(LLInventoryModel* model, std::string action)
|
||||
{
|
||||
@@ -704,6 +719,14 @@ void LLTaskInvFVBridge::performAction(LLInventoryModel* model, std::string actio
|
||||
{
|
||||
showProperties();
|
||||
}
|
||||
else if (action == "start_script")
|
||||
{
|
||||
set_script_running(true, findItem(), gObjectList.findObject(mPanel->getTaskUUID()));
|
||||
}
|
||||
else if (action == "stop_script")
|
||||
{
|
||||
set_script_running(false, findItem(), gObjectList.findObject(mPanel->getTaskUUID()));
|
||||
}
|
||||
}
|
||||
|
||||
void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
||||
@@ -752,6 +775,18 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
||||
}
|
||||
else if (canOpenItem())
|
||||
{
|
||||
if (LLAssetType::AT_LSL_TEXT == item->getType())
|
||||
{
|
||||
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 Set Running"));
|
||||
disabled_items.push_back(std::string("Task Set Not Running"));
|
||||
}
|
||||
}
|
||||
|
||||
items.push_back(std::string("Task Open"));
|
||||
if (!isItemCopyable())
|
||||
{
|
||||
|
||||
@@ -25,6 +25,12 @@
|
||||
name="Task Remove" width="128">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="delete" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Set Not Running" name="Task Set Not Running">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="stop_script" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Set Running" name="Task Set Running" width="128">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="start_script" />
|
||||
</menu_item_call>
|
||||
<menu_item_call bottom_delta="-18" height="18" label="Empty Trash" left="0" mouse_opaque="true"
|
||||
name="Empty Trash" width="128">
|
||||
<on_click filter="" function="Inventory.EmptyTrash" userdata="rename" />
|
||||
|
||||
Reference in New Issue
Block a user