Exemplo n.º 1
0
// static
void LLPanelContents::onClickNewScript(void *userdata)
{
	const BOOL children_ok = TRUE;
	LLViewerObject* object = gSelectMgr->getSelection()->getFirstRootObject(children_ok);
	if(object)
	{
//MK
		if (RRenabled)
		{
			// can't edit objects that someone is sitting on,
			// when prevented from sit-tping
			if (gAgent.mRRInterface.contains ("sittp") || gAgent.mRRInterface.mContainsUnsit)
			{
				if (object->isSeat())
				{
					return;
				}
			}

			if (!gAgent.mRRInterface.isAllowed (object->getRootEdit()->getID(), "detach"))
			{
				return;
			}

			LLVOAvatar *avatarp = gAgent.getAvatarObject();
			LLUUID inv_item_id = LLUUID::null;
			LLInventoryItem* inv_item = gAgent.mRRInterface.getItem(object->getRootEdit()->getID());
			if (inv_item) inv_item_id = inv_item->getUUID();
			if (avatarp && gAgent.mRRInterface.contains("detach:"+avatarp->getAttachedPointName(inv_item_id)))
			{
				return;
			}
		}
//mk
		LLPermissions perm;
		perm.init(gAgent.getID(), gAgent.getID(), LLUUID::null, LLUUID::null);
		perm.initMasks(
			PERM_ALL,
			PERM_ALL,
			PERM_NONE,
			PERM_NONE,
			PERM_MOVE | PERM_TRANSFER);
		LLString desc;
		LLAssetType::generateDescriptionFor(LLAssetType::AT_LSL_TEXT, desc);
		LLPointer<LLViewerInventoryItem> new_item =
			new LLViewerInventoryItem(
				LLUUID::null,
				LLUUID::null,
				perm,
				LLUUID::null,
				LLAssetType::AT_LSL_TEXT,
				LLInventoryType::IT_LSL,
				LLString("New Script"),
				desc,
				LLSaleInfo::DEFAULT,
				LLViewerInventoryItem::II_FLAGS_NONE,
				time_corrected());
		object->saveScript(new_item, TRUE, true);

		// *NOTE: In order to resolve SL-22177, we needed to create
		// the script first, and then you have to click it in
		// inventory to edit it.
		// *TODO: The script creation should round-trip back to the
		// viewer so the viewer can auto-open the script and start
		// editing ASAP.
#if 0
		S32 left, top;
		gFloaterView->getNewFloaterPosition(&left, &top);
		LLRect rect = gSavedSettings.getRect("PreviewScriptRect");
		rect.translate( left - rect.mLeft, top - rect.mTop );

		LLLiveLSLEditor* editor;
		editor = new LLLiveLSLEditor("script ed",
									   rect,
									   "Script: New Script",
									   object->mID,
									   LLUUID::null);
		editor->open();	/*Flawfinder: ignore*/

		// keep onscreen
		gFloaterView->adjustToFitScreen(editor, FALSE);
#endif
	}
}