This commit is contained in:
Lirusaito
2013-06-27 06:00:21 -04:00
29 changed files with 41 additions and 1172 deletions

View File

@@ -115,7 +115,6 @@ set(viewer_SOURCE_FILES
llanimstatelabels.cpp
llappearancemgr.cpp
llappviewer.cpp
llassetconverter.cpp
llassetuploadqueue.cpp
llassetuploadresponders.cpp
llattachmentsmgr.cpp
@@ -303,7 +302,6 @@ set(viewer_SOURCE_FILES
llinventorypanel.cpp
lljoystickbutton.cpp
lllandmarklist.cpp
lllocalinventory.cpp
lllogchat.cpp
llloginhandler.cpp
llmainlooprepeater.cpp
@@ -619,7 +617,6 @@ set(viewer_HEADER_FILES
llappearance.h
llappearancemgr.h
llappviewer.h
llassetconverter.h
llassetuploadqueue.h
llassetuploadresponders.h
llattachmentsmgr.h
@@ -807,7 +804,6 @@ set(viewer_HEADER_FILES
lljoystickbutton.h
lllandmarklist.h
lllightconstants.h
lllocalinventory.h
lllogchat.h
llloginhandler.h
llmainlooprepeater.h

View File

@@ -235,28 +235,6 @@
<key>Value</key>
<real>0.0</real>
</map>
<key>AscentUseSystemFolder</key>
<map>
<key>Comment</key>
<string>Enables the System folder for setting and non-permanent asset storage.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>AscentSystemTemporary</key>
<map>
<key>Comment</key>
<string>When enabled, temporary uploads are put in the System Asset folder (if System Folder exists).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>AscentShowFriendsTag</key>
<map>
<key>Comment</key>

View File

@@ -218,8 +218,6 @@ void LLPrefsAscentSys::refreshValues()
mAlwaysShowFly = gSavedSettings.getBOOL("AscentFlyAlwaysEnabled");
mDisableMinZoom = gSavedSettings.getBOOL("AscentDisableMinZoomDist");
mPowerUser = gSavedSettings.getBOOL("AscentPowerfulWizard");
mUseSystemFolder = gSavedSettings.getBOOL("AscentUseSystemFolder");
mUploadToSystem = gSavedSettings.getBOOL("AscentSystemTemporary");
mFetchInventoryOnLogin = gSavedSettings.getBOOL("FetchInventoryOnLogin");
mEnableLLWind = gSavedSettings.getBOOL("WindEnabled");
mEnableClouds = gSavedSettings.getBOOL("CloudsEnabled");
@@ -286,7 +284,6 @@ void LLPrefsAscentSys::refresh()
childSetEnabled("offset_teleport_check", mDoubleClickTeleport);
childSetValue("power_user_check", mPowerUser);
childSetValue("power_user_confirm_check", mPowerUser);
childSetEnabled("temp_in_system_check", mUseSystemFolder);
childSetEnabled("speed_rez_interval", mSpeedRez);
childSetEnabled("speed_rez_seconds", mSpeedRez);
@@ -371,8 +368,6 @@ void LLPrefsAscentSys::cancel()
gSavedSettings.setBOOL("AscentBuildAlwaysEnabled", mBuildAlwaysEnabled);
gSavedSettings.setBOOL("AscentFlyAlwaysEnabled", mAlwaysShowFly);
gSavedSettings.setBOOL("AscentDisableMinZoomDist", mDisableMinZoom);
gSavedSettings.setBOOL("AscentUseSystemFolder", mUseSystemFolder);
gSavedSettings.setBOOL("AscentSystemTemporary", mUploadToSystem);
gSavedSettings.setBOOL("FetchInventoryOnLogin", mFetchInventoryOnLogin);
gSavedSettings.setBOOL("WindEnabled", mEnableLLWind);
gSavedSettings.setBOOL("CloudsEnabled", mEnableClouds);

View File

@@ -66,8 +66,6 @@ protected:
BOOL mAlwaysShowFly;
BOOL mDisableMinZoom;
BOOL mPowerUser;
BOOL mUseSystemFolder;
BOOL mUploadToSystem;
BOOL mFetchInventoryOnLogin;
BOOL mEnableLLWind;
BOOL mEnableClouds;

View File

@@ -263,12 +263,6 @@ LLTimer gLogoutTimer;
static const F32 LOGOUT_REQUEST_TIME = 6.f; // this will be cut short by the LogoutReply msg.
F32 gLogoutMaxTime = LOGOUT_REQUEST_TIME;
// <edit>
LLUUID gSystemFolderRoot;
LLUUID gSystemFolderSettings;
LLUUID gSystemFolderAssets;
// </edit>
BOOL gDisconnected = FALSE;
// used to restore texture state after a mode switch

View File

@@ -321,12 +321,6 @@ extern LLTimer gLogoutTimer;
extern F32 gSimLastTime;
extern F32 gSimFrames;
// <edit>
extern LLUUID gSystemFolderRoot;
extern LLUUID gSystemFolderSettings;
extern LLUUID gSystemFolderAssets;
// </edit>
extern BOOL gDisconnected;
extern LLFrameTimer gRestoreGLTimer;

View File

@@ -1,112 +0,0 @@
// <edit>
#include "llviewerprecompiledheaders.h"
#include "llvfs.h"
#include "llapr.h"
#include "llvfile.h"
#include "llassetconverter.h"
#include "llviewertexturelist.h"
#include "llvorbisencode.h"
#include "llwearable.h"
#include "llbvhloader.h"
#include <boost/bind.hpp>
struct conversion_s
{
std::string extension;
LLAssetType::EType type;
boost::function<bool(const std::string&, const std::string&)> conv_fn;
}conversion_list[] =
{
{ "bmp", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_BMP) },
{ "tga", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_TGA) },
{ "jpg", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_JPEG)},
{ "jpeg", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_JPEG)},
{ "png", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_PNG) },
{ "jp2", LLAssetType::AT_TEXTURE, &LLAssetConverter::copyFile },
{ "j2k", LLAssetType::AT_TEXTURE, &LLAssetConverter::copyFile },
{ "j2c", LLAssetType::AT_TEXTURE, &LLAssetConverter::copyFile },
{ "wav", LLAssetType::AT_SOUND, &encode_vorbis_file },
{ "ogg", LLAssetType::AT_SOUND, &LLAssetConverter::copyFile },
{ "bvh", LLAssetType::AT_ANIMATION, &LLAssetConverter::copyBVH },
{ "animatn", LLAssetType::AT_ANIMATION, &LLAssetConverter::copyFile },
{ "gesture", LLAssetType::AT_GESTURE, &LLAssetConverter::copyFile },
{ "notecard", LLAssetType::AT_NOTECARD, &LLAssetConverter::copyFile },
{ "lsl", LLAssetType::AT_LSL_TEXT, &LLAssetConverter::copyFile },
//tmp ?
};
// static
extern std::string STATUS[];
LLAssetType::EType LLAssetConverter::convert(const std::string &src_filename, const std::string &filename)
{
std::string exten = gDirUtilp->getExtension(src_filename);
for(U32 i = 0;i < sizeof(conversion_list) / sizeof(conversion_list[0]); ++i)
{
if(conversion_list[i].extension == exten)
{
return conversion_list[i].conv_fn(src_filename, filename) ?
conversion_list[i].type : LLAssetType::AT_NONE;
}
}
LLWearableType::EType wear_type = LLWearableType::typeNameToType(exten);
if(wear_type != LLWearableType::WT_NONE && copyFile(src_filename, filename))
{
return LLWearableType::getAssetType(wear_type);
}
llwarns << "Unhandled extension" << llendl;
return LLAssetType::AT_NONE;
}
bool LLAssetConverter::copyFile(const std::string &src_filename, const std::string &dst_filename)
{
S32 src_size;
LLAPRFile src_fp(src_filename, LL_APR_RB, &src_size);
if(!src_fp.getFileHandle()) return false;
LLAPRFile dst_fp(dst_filename, LL_APR_WB);
if(!dst_fp.getFileHandle()) return false;
std::vector<char> buffer(src_size + 1);
src_fp.read(&buffer[0], src_size);
dst_fp.write(&buffer[0], src_size);
return true;
}
bool LLAssetConverter::copyBVH(const std::string &src_filename, const std::string &dst_filename)
{
S32 file_size;
LLAPRFile fp(src_filename, LL_APR_RB, &file_size);
if(!fp.getFileHandle()) return false;
std::vector<char> buffer(file_size + 1);
ELoadStatus load_status = E_ST_OK;
S32 line_number = 0;
LLBVHLoader* loaderp = new LLBVHLoader(&buffer[0], load_status, line_number);
if(load_status == E_ST_NO_XLT_FILE)
{
llwarns << "NOTE: No translation table found." << llendl;
}
else if(load_status != E_ST_OK)
{
llwarns << "ERROR: [line: " << line_number << "] " << STATUS[load_status].c_str() << llendl;
}
buffer.resize(loaderp->getOutputSize());
LLDataPackerBinaryBuffer dp((U8*)&buffer[0], buffer.size());
loaderp->serialize(dp);
delete loaderp;
LLAPRFile apr_file(dst_filename, LL_APR_RB, &file_size);
if(!apr_file.getFileHandle()) return false;
apr_file.write(&buffer[0], buffer.size());
return true;
}
// </edit>

View File

@@ -1,16 +0,0 @@
// <edit>
#ifndef LL_LLASSETCONVERTER_H
#define LL_LLASSETCONVERTER_H
#include "llcommon.h"
#include "llassettype.h"
class LLAssetConverter
{
public:
static LLAssetType::EType convert(const std::string &src_filename, const std::string &filename);
static bool copyFile(const std::string &src_filename, const std::string &dest_filename);
static bool copyBVH(const std::string &src_filename, const std::string &dst_filename);
};
#endif
// </edit>

View File

@@ -6,7 +6,6 @@
#include "llscrolllistctrl.h"
#include "llfloaterbvhpreview.h"
#include "llvoavatar.h"
#include "lllocalinventory.h"
#include "llviewercamera.h"
#include "llviewerwindow.h"
#include "lltoolmgr.h"

View File

@@ -88,8 +88,6 @@
#include "rlvlocks.h"
// [/RLVa:KB]
extern LLUUID gSystemFolderRoot;
// Marketplace outbox current disabled
#define ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU 1
#define ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU 1
@@ -385,33 +383,26 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*
move_ids.push_back(item->getUUID());
--update[item->getParentUUID()];
++update[trash_id];
// <edit>
if(!gInventory.isObjectDescendentOf(item->getUUID(), gSystemFolderRoot))
if(start_new_message)
{
// </edit>
if(start_new_message)
{
start_new_message = false;
msg->newMessageFast(_PREHASH_MoveInventoryItem);
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->addBOOLFast(_PREHASH_Stamp, TRUE);
}
msg->nextBlockFast(_PREHASH_InventoryData);
msg->addUUIDFast(_PREHASH_ItemID, item->getUUID());
msg->addUUIDFast(_PREHASH_FolderID, trash_id);
msg->addString("NewName", NULL);
if(msg->isSendFullFast(_PREHASH_InventoryData))
{
start_new_message = true;
gAgent.sendReliableMessage();
gInventory.accountForUpdate(update);
update.clear();
}
// <edit>
start_new_message = false;
msg->newMessageFast(_PREHASH_MoveInventoryItem);
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->addBOOLFast(_PREHASH_Stamp, TRUE);
}
msg->nextBlockFast(_PREHASH_InventoryData);
msg->addUUIDFast(_PREHASH_ItemID, item->getUUID());
msg->addUUIDFast(_PREHASH_FolderID, trash_id);
msg->addString("NewName", NULL);
if(msg->isSendFullFast(_PREHASH_InventoryData))
{
start_new_message = true;
gAgent.sendReliableMessage();
gInventory.accountForUpdate(update);
update.clear();
}
// </edit>
}
}
if(!start_new_message)
@@ -433,32 +424,25 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*
move_ids.push_back(cat->getUUID());
--update[cat->getParentUUID()];
++update[trash_id];
// <edit>
if(!gInventory.isObjectDescendentOf(cat->getUUID(), gSystemFolderRoot)) //Avoid fake items.
if(start_new_message)
{
// </edit>
if(start_new_message)
{
start_new_message = false;
msg->newMessageFast(_PREHASH_MoveInventoryFolder);
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->addBOOL("Stamp", TRUE);
}
msg->nextBlockFast(_PREHASH_InventoryData);
msg->addUUIDFast(_PREHASH_FolderID, cat->getUUID());
msg->addUUIDFast(_PREHASH_ParentID, trash_id);
if(msg->isSendFullFast(_PREHASH_InventoryData))
{
start_new_message = true;
gAgent.sendReliableMessage();
gInventory.accountForUpdate(update);
update.clear();
}
// <edit>
start_new_message = false;
msg->newMessageFast(_PREHASH_MoveInventoryFolder);
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->addBOOL("Stamp", TRUE);
}
msg->nextBlockFast(_PREHASH_InventoryData);
msg->addUUIDFast(_PREHASH_FolderID, cat->getUUID());
msg->addUUIDFast(_PREHASH_ParentID, trash_id);
if(msg->isSendFullFast(_PREHASH_InventoryData))
{
start_new_message = true;
gAgent.sendReliableMessage();
gInventory.accountForUpdate(update);
update.clear();
}
// </edit>
}
}
if(!start_new_message)
@@ -472,37 +456,6 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*
uuid_vec_t::iterator end = move_ids.end();
for(; it != end; ++it)
{
// <edit> trash problem
if(gInventory.isObjectDescendentOf(*it, gSystemFolderRoot))
{
// if it's a category, delete descendents
if(gInventory.getCategory(*it))
{
LLViewerInventoryCategory* cat = gInventory.getCategory(*it);
cat->setDescendentCount(0);
LLInventoryModel::cat_array_t categories;
LLInventoryModel::item_array_t items;
gInventory.collectDescendents(cat->getUUID(),
categories,
items,
false); // include trash?
S32 count = items.count();
S32 i;
for(i = 0; i < count; ++i)
{
gInventory.deleteObject(items.get(i)->getUUID());
}
count = categories.count();
for(i = 0; i < count; ++i)
{
gInventory.deleteObject(categories.get(i)->getUUID());
}
}
// delete it
gInventory.deleteObject(*it);
}
else
// </edit>
gInventory.moveObject((*it), trash_id);
}
@@ -1520,9 +1473,6 @@ void LLItemBridge::selectItem()
LLViewerInventoryItem* item = static_cast<LLViewerInventoryItem*>(getItem());
if(item && !item->isFinished())
{
// <edit>
if(!(gInventory.isObjectDescendentOf(mUUID, gSystemFolderRoot)))
// </edit>
//item->fetchFromServer();
LLInventoryModelBackgroundFetch::instance().start(item->getUUID(), false);
}
@@ -1794,16 +1744,6 @@ BOOL LLItemBridge::removeItem()
// Already in trash
if (model->isObjectDescendentOf(mUUID, trash_id)) return FALSE;
// <edit> trash problem
if(gInventory.isObjectDescendentOf(mUUID, gSystemFolderRoot))
{
LLInventoryModel::LLCategoryUpdate up(item->getParentUUID(), -1);
gInventory.deleteObject(mUUID);
gInventory.accountForUpdate(up);
gInventory.notifyObservers();
}
// </edit>
LLNotification::Params params("ConfirmItemDeleteHasLinks");
params.functor(boost::bind(&LLItemBridge::confirmRemoveItem, this, _1, _2));

View File

@@ -1777,10 +1777,6 @@ bool LLInventoryModel::isCategoryComplete(const LLUUID& cat_id) const
}
}
// <edit>
if((cat_id == gSystemFolderRoot) || gInventory.isObjectDescendentOf(cat_id, gSystemFolderRoot)) return true;
// </edit>
return false;
}

View File

@@ -1,561 +0,0 @@
// <edit>
#include "llviewerprecompiledheaders.h"
#include "lllocalinventory.h"
#include "llviewerinventory.h"
#include "llviewercontrol.h"
#include "llpreviewsound.h"
#include "llpreviewanim.h"
#include "llpreviewtexture.h"
#include "llpreviewgesture.h"
#include "llpreviewlandmark.h"
#include "llappviewer.h"
#include "lluictrlfactory.h"
#include "llcombobox.h"
#include "llnotificationsutil.h"
#include "llagent.h" // gAgent
#include "llviewerwindow.h" // alertXml
LLUUID LLLocalInventory::addItem(std::string name, int type, LLUUID asset_id, bool open_automatically)
{
LLUUID item_id = addItem(name, type, asset_id);
if(open_automatically) open(item_id);
return item_id;
}
LLUUID LLLocalInventory::addItem(std::string name, int type, LLUUID asset_id)
{
LLUUID item_id;
item_id.generate();
LLPermissions* perms = new LLPermissions();
perms->set(LLPermissions::DEFAULT);
perms->setOwnerAndGroup(LLUUID::null, LLUUID::null, LLUUID::null, false);
perms->setMaskBase(0);
perms->setMaskEveryone(0);
perms->setMaskGroup(0);
perms->setMaskNext(0);
perms->setMaskOwner(0);
LLViewerInventoryItem* item = new LLViewerInventoryItem(
item_id,
gSystemFolderAssets,
*perms,
asset_id,
(LLAssetType::EType)type,
(LLInventoryType::EType)type,
name,
"",
LLSaleInfo::DEFAULT,
0,
time_corrected());
addItem(item);
return item_id;
}
void LLLocalInventory::addItem(LLViewerInventoryItem* item)
{
//gInventory.addPretendItem(item);
LLInventoryModel::update_map_t update;
++update[item->getParentUUID()];
gInventory.accountForUpdate(update);
gInventory.updateItem(item);
gInventory.notifyObservers();
}
void LLLocalInventory::open(LLUUID item_id)
{
LLViewerInventoryItem* item = gInventory.getItem(item_id);
if(!item)
{
llwarns << "Trying to open non-existent item" << llendl;
return;
}
LLAssetType::EType type = item->getType();
if(type == LLAssetType::AT_SOUND)
{
S32 left, top;
gFloaterView->getNewFloaterPosition(&left, &top);
LLRect rect = gSavedSettings.getRect("PreviewSoundRect");
rect.translate(left - rect.mLeft, top - rect.mTop);
LLPreviewSound* floaterp;
floaterp = new LLPreviewSound("Preview sound",
rect,
"",
item_id);
floaterp->setFocus(TRUE);
gFloaterView->adjustToFitScreen(floaterp, FALSE);
}
else if(type == LLAssetType::AT_ANIMATION)
{
S32 left, top;
gFloaterView->getNewFloaterPosition(&left, &top);
LLRect rect = gSavedSettings.getRect("PreviewAnimRect");
rect.translate(left - rect.mLeft, top - rect.mTop);
LLPreviewAnim* floaterp;
floaterp = new LLPreviewAnim("Preview anim",
rect,
"",
item_id,
LLPreviewAnim::NONE);
floaterp->setFocus(TRUE);
gFloaterView->adjustToFitScreen(floaterp, FALSE);
}
else if(type == LLAssetType::AT_TEXTURE)
{
S32 left, top;
gFloaterView->getNewFloaterPosition(&left, &top);
LLRect rect = gSavedSettings.getRect("PreviewTextureRect");
rect.translate( left - rect.mLeft, top - rect.mTop );
LLPreviewTexture* preview;
preview = new LLPreviewTexture("preview texture",
rect,
"Preview texture",
item_id,
LLUUID::null,
FALSE);
//preview->setSourceID(source_id);
preview->setFocus(TRUE);
gFloaterView->adjustToFitScreen(preview, FALSE);
}
else if(type == LLAssetType::AT_GESTURE)
{
// If only the others were like this
LLPreviewGesture::show("preview gesture", item_id, LLUUID::null, TRUE);
}
else if(type == LLAssetType::AT_LANDMARK)
{
S32 left, top;
gFloaterView->getNewFloaterPosition(&left, &top);
LLRect rect = gSavedSettings.getRect("PreviewLandmarkRect");
rect.translate( left - rect.mLeft, top - rect.mTop );
LLPreviewLandmark* preview;
preview = new LLPreviewLandmark("preview landmark",
rect,
"Preview landmark",
item_id);
preview->setFocus(TRUE);
gFloaterView->adjustToFitScreen(preview, FALSE);
}
else
{
llwarns << "Dunno how to open type " << type << llendl;
}
}
//static
void LLLocalInventory::loadInvCache(std::string filename)
{
std::string extension = gDirUtilp->getExtension(filename);
std::string inv_filename = filename;
if(extension == "gz")
{
LLUUID random;
random.generate();
inv_filename = filename.substr(0, filename.length() - 3) + "." + random.asString();
if(!gunzip_file(filename, inv_filename))
{
// failure... message?
return;
}
}
LLInventoryModel::cat_array_t cats;
LLInventoryModel::item_array_t items;
bool is_cache_obsolete = false;
if(LLInventoryModel::loadFromFile(inv_filename, cats, items, is_cache_obsolete))
{
// create a container category for everything
LLViewerInventoryCategory* container = new LLViewerInventoryCategory(gAgent.getID());
container->rename(gDirUtilp->getBaseFileName(filename, false));
LLUUID container_id;
container_id.generate();
container->setUUID(container_id);
container->setParent(gSystemFolderRoot);
container->setPreferredType(LLFolderType::FT_NONE);
LLInventoryModel::update_map_t container_update;
++container_update[container->getParentUUID()];
gInventory.accountForUpdate(container_update);
gInventory.updateCategory(container);
gInventory.notifyObservers();
LLViewerInventoryCategory* orphaned_items = new LLViewerInventoryCategory(gAgent.getID());
orphaned_items->rename("Orphaned Items");
LLUUID orphaned_items_id;
orphaned_items_id.generate();
orphaned_items->setUUID(orphaned_items_id);
orphaned_items->setParent(container_id);
orphaned_items->setPreferredType(LLFolderType::FT_NONE);
LLInventoryModel::update_map_t orphaned_items_update;
++orphaned_items_update[orphaned_items->getParentUUID()];
gInventory.accountForUpdate(orphaned_items_update);
gInventory.updateCategory(orphaned_items);
gInventory.notifyObservers();
//conflict handling
std::map<LLUUID,LLUUID> conflicting_cats;
int dropped_cats = 0;
int dropped_items = 0;
// Add all categories
LLInventoryModel::cat_array_t::iterator cat_iter = cats.begin();
LLInventoryModel::cat_array_t::iterator cat_end = cats.end();
for(; cat_iter != cat_end; ++cat_iter)
{
// Conditionally change its parent
// Note: Should I search for missing parent id's?
//if the parent is null, it goes in the very root of the tree!
if((*cat_iter)->getParentUUID().isNull())
{
(*cat_iter)->setParent(container_id);
}
// If the parent exists and outside of pretend inventory, generate a new uuid
else if(gInventory.getCategory((*cat_iter)->getParentUUID()))
{
if(!gInventory.isObjectDescendentOf((*cat_iter)->getParentUUID(), gSystemFolderRoot, TRUE))
{
std::map<LLUUID,LLUUID>::iterator itr = conflicting_cats.find((*cat_iter)->getParentUUID());
if(itr == conflicting_cats.end())
{
dropped_cats++;
continue;
}
(*cat_iter)->setParent(itr->second);
}
} else {
//well balls, this is orphaned.
(*cat_iter)->setParent(orphaned_items_id);
}
// If this category already exists, generate a new uuid
if(gInventory.getCategory((*cat_iter)->getUUID()))
{
LLUUID cat_random;
cat_random.generate();
conflicting_cats[(*cat_iter)->getUUID()] = cat_random;
(*cat_iter)->setUUID(cat_random);
}
LLInventoryModel::update_map_t update;
++update[(*cat_iter)->getParentUUID()];
gInventory.accountForUpdate(update);
gInventory.updateCategory(*cat_iter);
gInventory.notifyObservers();
}
// Add all items
LLInventoryModel::item_array_t::iterator item_iter = items.begin();
LLInventoryModel::item_array_t::iterator item_end = items.end();
for(; item_iter != item_end; ++item_iter)
{
// Conditionally change its parent
// Note: Should I search for missing parent id's?
//if the parent is null, it goes in the very root of the tree!
if((*item_iter)->getParentUUID().isNull())
{
(*item_iter)->setParent(container_id);
}
// If the parent exists and outside of pretend inventory, generate a new uuid
if(gInventory.getCategory((*item_iter)->getParentUUID()))
{
if(!gInventory.isObjectDescendentOf((*item_iter)->getParentUUID(), gSystemFolderRoot, TRUE))
{
std::map<LLUUID,LLUUID>::iterator itr = conflicting_cats.find((*item_iter)->getParentUUID());
if(itr == conflicting_cats.end())
{
dropped_items++;
continue;
}
(*item_iter)->setParent(itr->second);
}
} else {
//well balls, this is orphaned.
(*item_iter)->setParent(orphaned_items_id);
}
// Avoid conflicts with real inventory...
// If this item id already exists, generate a new uuid
if(gInventory.getItem((*item_iter)->getUUID()))
{
LLUUID item_random;
item_random.generate();
(*item_iter)->setUUID(item_random);
}
LLInventoryModel::update_map_t update;
++update[(*item_iter)->getParentUUID()];
gInventory.accountForUpdate(update);
gInventory.updateItem(*item_iter);
gInventory.notifyObservers();
}
// Quality time
if(dropped_items || dropped_cats)
{
std::ostringstream message;
message << "Some items were ignored due to conflicts:\n\n";
if(dropped_cats) message << dropped_cats << " folders\n";
if(dropped_items) message << dropped_items << " items\n";
LLSD args;
args["ERROR_MESSAGE"] = message.str();
LLNotificationsUtil::add("ErrorMessage", args);
}
conflicting_cats.clear();// srsly dont think this is need but w/e :D
}
// remove temporary unzipped file
if(extension == "gz")
{
LLFile::remove(inv_filename);
}
}
//static
void LLLocalInventory::saveInvCache(std::string filename, LLFolderView* folder)
{
LLInventoryModel* model = &gInventory;
std::set<LLUUID> selected_items = folder->getSelectionList();
if(selected_items.size() < 1)
{
// No items selected? Wtfboom
return;
}
LLInventoryModel::cat_array_t cats;
LLInventoryModel::item_array_t items;
// Make complete lists of child categories and items
std::set<LLUUID>::iterator sel_iter = selected_items.begin();
std::set<LLUUID>::iterator sel_end = selected_items.end();
for( ; sel_iter != sel_end; ++sel_iter)
{
LLInventoryCategory* cat = model->getCategory(*sel_iter);
if(cat)
{
climb(cat, cats, items);
}
}
// And what about items inside a folder that wasn't selected?
// I guess I will just add selected items, so long as they aren't already added
for(sel_iter = selected_items.begin(); sel_iter != sel_end; ++sel_iter)
{
LLInventoryItem* item = model->getItem(*sel_iter);
if(item)
{
if(std::find(items.begin(), items.end(), item) == items.end())
{
items.push_back(LLPointer<LLViewerInventoryItem>((LLViewerInventoryItem*)item));
LLInventoryCategory* parent = model->getCategory(item->getParentUUID());
if(std::find(cats.begin(), cats.end(), parent) == cats.end())
{
cats.push_back(LLPointer<LLViewerInventoryCategory>((LLViewerInventoryCategory*)parent));
}
}
}
}
LLInventoryModel::saveToFile(filename, cats, items);
}
// static
void LLLocalInventory::climb(LLInventoryCategory* cat,
LLInventoryModel::cat_array_t& cats,
LLInventoryModel::item_array_t& items)
{
LLInventoryModel* model = &gInventory;
// Add this category
cats.push_back(LLPointer<LLViewerInventoryCategory>((LLViewerInventoryCategory*)cat));
LLInventoryModel::cat_array_t *direct_cats;
LLInventoryModel::item_array_t *direct_items;
model->getDirectDescendentsOf(cat->getUUID(), direct_cats, direct_items);
// Add items
LLInventoryModel::item_array_t::iterator item_iter = direct_items->begin();
LLInventoryModel::item_array_t::iterator item_end = direct_items->end();
for( ; item_iter != item_end; ++item_iter)
{
items.push_back(*item_iter);
}
// Do subcategories
LLInventoryModel::cat_array_t::iterator cat_iter = direct_cats->begin();
LLInventoryModel::cat_array_t::iterator cat_end = direct_cats->end();
for( ; cat_iter != cat_end; ++cat_iter)
{
climb(*cat_iter, cats, items);
}
}
LLUUID LLFloaterNewLocalInventory::sLastCreatorId = LLUUID::null;
LLFloaterNewLocalInventory::LLFloaterNewLocalInventory()
: LLFloater()
{
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_new_local_inventory.xml");
}
LLFloaterNewLocalInventory::~LLFloaterNewLocalInventory()
{
}
BOOL LLFloaterNewLocalInventory::postBuild(void)
{
// Fill in default values
getChild<LLLineEditor>("creator_id_line")->setText(std::string("00000000-0000-0000-0000-000000000000"));
getChild<LLLineEditor>("owner_id_line")->setText(gAgent.getID().asString());
getChild<LLLineEditor>("asset_id_line")->setText(std::string("00000000-0000-0000-0000-000000000000"));
getChild<LLLineEditor>("name_line")->setText(std::string(""));
getChild<LLLineEditor>("desc_line")->setText(std::string(""));
// Set up callbacks
childSetAction("ok_btn", onClickOK, this);
return TRUE;
}
// static
void LLFloaterNewLocalInventory::onClickOK(void* user_data)
{
LLFloaterNewLocalInventory* floater = (LLFloaterNewLocalInventory*)user_data;
LLUUID item_id;
item_id.generate();
std::string name = floater->getChild<LLLineEditor>("name_line")->getText();
std::string desc = floater->getChild<LLLineEditor>("desc_line")->getText();
LLUUID asset_id = LLUUID(floater->getChild<LLLineEditor>("asset_id_line")->getText());
LLUUID creator_id = LLUUID(floater->getChild<LLLineEditor>("creator_id_line")->getText());
LLUUID owner_id = LLUUID(floater->getChild<LLLineEditor>("owner_id_line")->getText());
LLAssetType::EType type = LLAssetType::lookup(floater->getChild<LLComboBox>("type_combo")->getValue().asString());
LLInventoryType::EType inv_type = LLInventoryType::IT_NONE;
switch(type)
{
case LLAssetType::AT_TEXTURE:
case LLAssetType::AT_TEXTURE_TGA:
case LLAssetType::AT_IMAGE_TGA:
case LLAssetType::AT_IMAGE_JPEG:
inv_type = LLInventoryType::IT_TEXTURE;
break;
case LLAssetType::AT_SOUND:
case LLAssetType::AT_SOUND_WAV:
inv_type = LLInventoryType::IT_SOUND;
break;
case LLAssetType::AT_CALLINGCARD:
inv_type = LLInventoryType::IT_CALLINGCARD;
break;
case LLAssetType::AT_LANDMARK:
inv_type = LLInventoryType::IT_LANDMARK;
break;
case LLAssetType::AT_SCRIPT:
inv_type = LLInventoryType::IT_LSL;
break;
case LLAssetType::AT_CLOTHING:
inv_type = LLInventoryType::IT_WEARABLE;
break;
case LLAssetType::AT_OBJECT:
inv_type = LLInventoryType::IT_OBJECT;
break;
case LLAssetType::AT_NOTECARD:
inv_type = LLInventoryType::IT_NOTECARD;
break;
case LLAssetType::AT_CATEGORY:
inv_type = LLInventoryType::IT_CATEGORY;
break;
//No longer asset types.
/*case LLFolderType::FT_ROOT_CATEGORY:
case LLFolderType::FT_TRASH:
case LLFolderType::FT_SNAPSHOT_CATEGORY:
case LLFolderType::FT_LOST_AND_FOUND:
inv_type = LLInventoryType::IT_ROOT_CATEGORY;
break;*/
case LLAssetType::AT_LSL_TEXT:
case LLAssetType::AT_LSL_BYTECODE:
inv_type = LLInventoryType::IT_LSL;
break;
case LLAssetType::AT_BODYPART:
inv_type = LLInventoryType::IT_WEARABLE;
break;
case LLAssetType::AT_ANIMATION:
inv_type = LLInventoryType::IT_ANIMATION;
break;
case LLAssetType::AT_GESTURE:
inv_type = LLInventoryType::IT_GESTURE;
break;
//case LLAssetType::AT_SIMSTATE:
default:
//inv_type = LLInventoryType::IT_CALLINGCARD;
break;
}
if(inv_type == LLInventoryType::IT_NONE)
return;
LLPermissions* perms = new LLPermissions();
perms->init(creator_id, owner_id, LLUUID::null, LLUUID::null);
LLViewerInventoryItem* item = new LLViewerInventoryItem(
item_id,
gSystemFolderRoot,
*perms,
asset_id,
type,
inv_type,
name,
desc,
LLSaleInfo::DEFAULT,
0,
0);
LLLocalInventory::addItem(item);
if(floater->childGetValue("chk_open"))
{
LLLocalInventory::open(item_id);
}
LLFloaterNewLocalInventory::sLastCreatorId = creator_id;
floater->close();
}
// </edit>

View File

@@ -1,45 +0,0 @@
// <edit>
#ifndef LL_LLLOCALINVENTORY_H
#define LL_LLLOCALINVENTORY_H
#include "llviewerinventory.h"
#include "llfloater.h"
#include "llfolderview.h"
#include "llinventorymodel.h" // cat_array_t, item_array_t
class LLLocalInventory
{
public:
static LLUUID addItem(std::string name, int type, LLUUID asset_id, bool open);
static LLUUID addItem(std::string name, int type, LLUUID asset_id);
static void addItem(LLViewerInventoryItem* item);
static void open(LLUUID item_id);
static void loadInvCache(std::string filename);
static void saveInvCache(std::string filename, LLFolderView* folder);
static void climb(LLInventoryCategory* cat,
LLInventoryModel::cat_array_t& cats,
LLInventoryModel::item_array_t& items);
};
class LLFloaterNewLocalInventory
: public LLFloater
{
public:
LLFloaterNewLocalInventory();
BOOL postBuild(void);
static void onClickOK(void* user_data);
static LLUUID sLastCreatorId;
private:
virtual ~LLFloaterNewLocalInventory();
};
#endif
// </edit>

View File

@@ -2193,41 +2193,6 @@ bool idle_startup()
}
display_startup();
// <edit> testing adding a local inventory folder...
if (gSavedSettings.getBOOL("AscentUseSystemFolder"))
{
LLViewerInventoryCategory* system_folder = new LLViewerInventoryCategory(gAgent.getID());
system_folder->rename(std::string("System Inventory"));
LLUUID system_folder_id = LLUUID("00000000-0000-0000-0000-000000000001");//"FFFFFFFF-0000-F113-7357-000000000001");
system_folder->setUUID(system_folder_id);
gSystemFolderRoot = system_folder_id;
system_folder->setParent(LLUUID::null);
system_folder->setPreferredType(LLFolderType::FT_NONE);
gInventory.addCategory(system_folder);
LLViewerInventoryCategory* settings_folder = new LLViewerInventoryCategory(gAgent.getID());
settings_folder->rename(std::string("Settings"));
LLUUID settings_folder_id;
settings_folder_id.generate();
settings_folder->setUUID(settings_folder_id);
gSystemFolderSettings = settings_folder_id;
settings_folder->setParent(gSystemFolderRoot);
settings_folder->setPreferredType(LLFolderType::FT_NONE);
gInventory.addCategory(settings_folder);
LLViewerInventoryCategory* assets_folder = new LLViewerInventoryCategory(gAgent.getID());
assets_folder->rename(std::string("Assets"));
LLUUID assets_folder_id;
assets_folder_id.generate();
assets_folder->setUUID(assets_folder_id);
gSystemFolderAssets = assets_folder_id;
assets_folder->setParent(gSystemFolderRoot);
assets_folder->setPreferredType(LLFolderType::FT_NONE);
gInventory.addCategory(assets_folder);
}
display_startup();
// </edit>
LLSD buddy_list = response["buddy-list"];
if(buddy_list.isDefined())
{

View File

@@ -70,7 +70,6 @@
#include "lltrans.h"
// <edit>
#include "llmenugl.h"
#include "lllocalinventory.h"
// </edit>
// tag: vaa emerald local_asset_browser [begin]

View File

@@ -1512,10 +1512,9 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
if(!item || !obj) return ACCEPT_NO;
// HACK: downcast
LLViewerInventoryItem* vitem = (LLViewerInventoryItem*)item;
// <edit>
//if(!vitem->isFinished()) return ACCEPT_NO;
if(!vitem->isFinished() && !(gInventory.isObjectDescendentOf(vitem->getUUID(), gSystemFolderRoot))) return ACCEPT_NO;
// </edit>
if(!vitem->isFinished()) return ACCEPT_NO;
if (vitem->getIsLinkType()) return ACCEPT_NO; // No giving away links
// deny attempts to drop from an object onto itself. This is to
@@ -1980,10 +1979,9 @@ EAcceptance LLToolDragAndDrop::dad3dApplyToObject(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
// <edit>
//if(!item || !item->isFinished()) return ACCEPT_NO;
if( !item || (!item->isFinished() && !(gInventory.isObjectDescendentOf(item->getUUID(), gSystemFolderRoot))) ) return ACCEPT_NO;
// </edit>
if(!item || !item->isFinished()) return ACCEPT_NO;
EAcceptance rv = willObjectAcceptInventory(obj, item);
if((mask & MASK_CONTROL))
{

View File

@@ -293,9 +293,6 @@ void LLViewerInventoryItem::cloneViewerItem(LLPointer<LLViewerInventoryItem>& ne
void LLViewerInventoryItem::removeFromServer()
{
// <edit> this check is ghetto
if((mParentUUID == gSystemFolderRoot) || (gInventory.isObjectDescendentOf(mUUID, gSystemFolderRoot))) return;
// </edit>
lldebugs << "Removing inventory item " << mUUID << " from server."
<< llendl;
@@ -314,9 +311,6 @@ void LLViewerInventoryItem::removeFromServer()
void LLViewerInventoryItem::updateServer(BOOL is_new) const
{
// <edit>
if((mParentUUID == gSystemFolderRoot) || (gInventory.isObjectDescendentOf(mUUID, gSystemFolderRoot))) return;
// </edit>
if(!mIsComplete)
{
// *FIX: deal with this better.
@@ -492,9 +486,6 @@ bool LLViewerInventoryItem::exportFileLocal(LLFILE* fp) const
void LLViewerInventoryItem::updateParentOnServer(BOOL restamp) const
{
// <edit>
if(gInventory.isObjectDescendentOf(mUUID, gSystemFolderRoot)) return;
// </edit>
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_MoveInventoryItem);
msg->nextBlockFast(_PREHASH_AgentData);
@@ -564,9 +555,6 @@ void LLViewerInventoryCategory::copyViewerCategory(const LLViewerInventoryCatego
void LLViewerInventoryCategory::updateParentOnServer(BOOL restamp) const
{
// <edit>
if(gInventory.isObjectDescendentOf(mUUID, gSystemFolderRoot)) return;
// </edit>
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_MoveInventoryFolder);
msg->nextBlockFast(_PREHASH_AgentData);
@@ -631,9 +619,6 @@ void LLViewerInventoryCategory::removeFromServer( void )
bool LLViewerInventoryCategory::fetch()
{
// <edit>
if((mUUID == gSystemFolderRoot) || (gInventory.isObjectDescendentOf(mUUID, gSystemFolderRoot))) return false;
// </edit>
if((VERSION_UNKNOWN == getVersion()) &&
(!mDescendentsRequested.getStarted() ||
mDescendentsRequested.hasExpired())) //Expired check prevents multiple downloads.

View File

@@ -1,135 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater can_close="true" can_drag_on_left="false" can_minimize="true"
can_resize="false" height="160" min_height="160" min_width="100"
name="item properties"
title="Inventory Item Properties" width="350">
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-35" drop_shadow_visible="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10"
mouse_opaque="true" name="LabelItemNameTitle" v_pad="0" width="78">
Name:
</text>
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-41"
enabled="true" follows="left|top|right" font="SansSerifSmall" height="16"
is_unicode="false" left="88" max_length="63" mouse_opaque="true"
name="name_line" width="252" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-55" drop_shadow_visible="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10"
mouse_opaque="true" name="LabelItemDescTitle" v_pad="0" width="78">
Description:
</text>
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-61"
enabled="true" follows="left|top|right" font="SansSerifSmall" height="16"
is_unicode="false" left="88" max_length="127" mouse_opaque="true"
name="desc_line" width="252" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="LabelAssetTitle" v_pad="0" width="78">
Asset:
</text>
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="0"
enabled="true" follows="left|top|right" font="SansSerifSmall" height="16"
is_unicode="false" left="88" max_length="127" mouse_opaque="true"
name="asset_id_line" width="252" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="LabelCreatorTitle" v_pad="0" width="78">
Creator:
</text>
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="0"
enabled="true" follows="left|top|right" font="SansSerifSmall" height="16"
is_unicode="false" left="88" max_length="127" mouse_opaque="true"
name="creator_id_line" width="252" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="LabelOwnerTitle" v_pad="0" width="78">
Owner:
</text>
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="0"
enabled="true" follows="left|top|right" font="SansSerifSmall" height="16"
is_unicode="false" left="88" max_length="127" mouse_opaque="true"
name="owner_id_line" width="252" />
<combo_box allow_text_entry="false" bottom_delta="-25" follows="left|top" height="18"
left="10" max_chars="20" mouse_opaque="true" name="type_combo"
width="100">
<combo_item name="texture" value="texture">
texture
</combo_item>
<combo_item name="sound" value="sound">
sound
</combo_item>
<combo_item name="callcard" value="callcard">
callcard
</combo_item>
<combo_item name="landmark" value="landmark">
landmark
</combo_item>
<combo_item name="script" value="script">
script
</combo_item>
<combo_item name="clothing" value="clothing">
clothing
</combo_item>
<combo_item name="object" value="object">
object
</combo_item>
<combo_item name="notecard" value="notecard">
notecard
</combo_item>
<combo_item name="category" value="category">
category
</combo_item>
<combo_item name="root" value="root">
root
</combo_item>
<combo_item name="lsltext" value="lsltext">
lsltext
</combo_item>
<combo_item name="lslbyte" value="lslbyte">
lslbyte
</combo_item>
<combo_item name="txtr_tga" value="txtr_tga">
txtr_tga
</combo_item>
<combo_item name="bodypart" value="bodypart">
bodypart
</combo_item>
<combo_item name="trash" value="trash">
trash
</combo_item>
<combo_item name="snapshot" value="snapshot">
snapshot
</combo_item>
<combo_item name="lstndfnd" value="lstndfnd">
lstndfnd
</combo_item>
<combo_item name="snd_wav" value="snd_wav">
snd_wav
</combo_item>
<combo_item name="img_tga" value="img_tga">
img_tga
</combo_item>
<combo_item name="jpeg" value="jpeg">
jpeg
</combo_item>
<combo_item name="animatn" value="animatn">
animatn
</combo_item>
<combo_item name="gesture" value="gesture">
gesture
</combo_item>
<combo_item name="simstate" value="simstate">
simstate
</combo_item>
</combo_box>
<check_box bottom_delta="0" height="16" initial_value="true" label="Open immediately"
left="115" mouse_opaque="true" name="chk_open" width="120" />
<button bottom_delta="0" font="SansSerif"
height="20" label="OK" left="240"
mouse_opaque="true" name="ok_btn" width="100" />
</floater>

View File

@@ -28,10 +28,6 @@
label="Enable Power User functionality" tool_tip="Adds features deemed too dangerous for normal use. These features can wreak havoc or do bad things if misused - Mostly to yourself or your belongings. If you're sure, activate the checkbox below as well." name="power_user_check"/>
<check_box bottom_delta="-18" enabled="true" follows="top" left="20" initial_value="true"
label="Confirm Power User functionality" tool_tip="Confirms Power User activation. Turn this on at your own risk, and use any features it enables responsibly. Singularity devs won't replace anything you break. We recommend having a backup copy of anything to be victim to these powers. Unlike most checkboxes, you must click Apply or OK before this will activate." name="power_user_confirm_check"/>
<check_box bottom_delta="-18" control_name="AscentUseSystemFolder" follows="top" left="10" initial_value="true"
label="Enable Ascent System Inventory (Requires Restart)" tool_tip="Creates a new folder in the inventory for storing settings files and non-permanent assets." name="system_folder_check"/>
<check_box bottom_delta="-18" control_name="AscentSystemTemporary" follows="top" left="20" initial_value="false"
label="Temporary uploads go in the System Asset folder." tool_tip="Puts temporary uploads in the Asset folder which separates them from actual uploads, making them easier to find." name="temp_in_system_check"/>
<check_box bottom_delta="-18" control_name="FetchInventoryOnLogin" follows="top" left="10" initial_value="true"
label="Automatically fetch the inventory in the background after login" tool_tip="Inventory will preload when you log in, so you don't have to wait for it to load when doing an initial search." name="fetch_inventory_on_login_check"/>
<check_box bottom_delta="-18" control_name="WindEnabled" follows="left|top" initial_value="false" label="Enable Wind Effects" name="enable_wind"/>

View File

@@ -1,91 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="item properties" title="Propiedades de los Items del Inventario">
<text name="LabelItemNameTitle">
Nombre:
</text>
<text name="LabelItemDescTitle">
Descripción:
</text>
<text name="LabelAssetTitle">
Asset:
</text>
<text name="LabelCreatorTitle">
Creador:
</text>
<text name="LabelOwnerTitle">
Propietario:
</text>
<combo_box name="type_combo">
<combo_item name="texture">
Textura
</combo_item>
<combo_item name="sound">
Sonido
</combo_item>
<combo_item name="callcard">
Tarjeta de llamada
</combo_item>
<combo_item name="landmark">
Hito
</combo_item>
<combo_item name="script">
Script
</combo_item>
<combo_item name="clothing">
Ropa
</combo_item>
<combo_item name="object">
Objeto
</combo_item>
<combo_item name="notecard">
Nota
</combo_item>
<combo_item name="category">
Categoría
</combo_item>
<combo_item name="root">
Raíz
</combo_item>
<combo_item name="lsltext">
lsltext
</combo_item>
<combo_item name="lslbyte">
lslbyte
</combo_item>
<combo_item name="txtr_tga">
txtr_tga
</combo_item>
<combo_item name="bodypart">
Parte de cuerpo
</combo_item>
<combo_item name="trash">
Papelera
</combo_item>
<combo_item name="snapshot">
Foto
</combo_item>
<combo_item name="lstndfnd">
lstndfnd
</combo_item>
<combo_item name="snd_wav">
Sonido_wav
</combo_item>
<combo_item name="img_tga">
Imagen tga
</combo_item>
<combo_item name="jpeg">
jpeg
</combo_item>
<combo_item name="animatn">
Animación
</combo_item>
<combo_item name="gesture">
Gesto
</combo_item>
<combo_item name="simstate">
simstate
</combo_item>
</combo_box>
<check_box label="Abrir inmediatamente" name="chk_open"/>
<button label="OK" name="ok_btn"/>
</floater>

View File

@@ -16,8 +16,6 @@
<check_box label="Deshabilitar la Distancia Mínima de la Cámara" tool_tip="Permite a la cámara acercarse a los objetos." name="disable_camera_zoom_check"/>
<check_box label="Habilitar la funcionalidad Super Usuario" tool_tip="Agrega funciones consideradas demasiado peligrosas para un uso normal. Estas características pueden causar estragos, o hacer daño si son mal utilizadas - Principalmente para ti o tus pertenencias. Si estás seguro, activa la casilla de verificación a continuación." name="power_user_check"/>
<check_box label="Confirmar funcionalidad Super Usuario" tool_tip="Confirmar la activación de Super Usuario. Activalo bajo tu propio riesgo, y utiliza cualquier característica habilitada en forma responsable. Los desarrolladores de Singularity no reemplazarán nada que hayas arruinado. Te recomendamos hacer una copia de seguridad de todo aquello que será víctima de dichos poderes. A diferencia del resto de los items a marcar, debes hacer click en Aplicar o en OK después de activar esta función." name="power_user_confirm_check"/>
<check_box label="Activar Sistema Ascent de Inventario (Requiere Reinicio)" tool_tip="Crea una nueva carpeta en el inventario para almacenar archivos de configuración y assets no permanentes." name="system_folder_check"/>
<check_box label="Colocar las Subidas Temporales en la carpeta de asset del sistema." tool_tip="Coloca las subidas temporales en la carpeta de Assets, la cual está separada de las subidas actuales, haciendo que sean más fáciles de encontrar." name="temp_in_system_check"/>
<check_box label="Descargar automáticamente el inventario en segundo plano al de iniciar sesión" tool_tip="El inventario será precargado cuando inicies sesión, de esta manera no tienes que esperar que cargue cuando hagas una búsqueda por primera vez." name="fetch_inventory_on_login_check"/>
<check_box label="Activar Efectos del Viento" name="enable_wind"/>
<check_box label="Activar Nubes" name="enable_clouds"/>

View File

@@ -16,8 +16,6 @@
<check_box label="D&#xE9;sactiver la distance minimum de la cam&#xE9;ra" tool_tip="La cam&#xE9;ra zoome de tr&#xE9;s pr&#xE8;s." name="disable_camera_zoom_check"/>
<check_box label="Activer les fonctions Power User - &#xE0; vos risques et p&#xE9;rils !" tool_tip="Ajoute des fonctions consid&#xE9;r&#xE9;es trop dangereuses pour une utilisation normale. Ces fonctions peuvent faire des ravages si employ&#xE9;es improprement." name="power_user_check"/>
<check_box label="Confirmer les fonctions Power User" tool_tip="Confirme les fonctions Power User. A vos risques et p&#xE9;rils. Singularity n'est pas responsable de cette utilisation." name="power_user_confirm_check"/>
<check_box label="Activer l'Ascent System Inventory (Red&#xE9;marrage n&#xE9;cessaire)" tool_tip="Cr&#xE9;e un nouveau dossier dans l'inventaire afin de stocker les fichiers de settings et les assets non permanents." name="system_folder_check"/>
<check_box label="Les t&#xE9;l&#xE9;chargements temporaires vont dans le dossier : System Inventory &#x3E; Assets" tool_tip="Place les t&#xE9;l&#xE9;chargements temporaires dans le dossier : System Inventory &#x3E; Assets ce qui permet de les retrouver plus ais&#xE9;ment" name="temp_in_system_check"/>
<check_box label="Pr&#xE9;charger l'inventaire &#xE0; la connection" tool_tip="R&#xE9;duit l'attente lors de votre recherche initiale dans l'inventaire" name="fetch_inventory_on_login_check"/>
<check_box label="Activer les effets de vent" name="enable_wind"/>
<check_box label="Activer les nuages" name="enable_clouds"/>