master
Matthew Breindel (Falcon) 2010-07-13 17:16:36 -07:00
commit 37fc4e42dd
49 changed files with 308 additions and 183 deletions

View File

@ -517,6 +517,7 @@ Ringo Tuxing
Robin Cornelius
SNOW-108
SNOW-204
SNOW-484
VWR-2488
VWR-9557
VWR-11128

View File

@ -1248,6 +1248,12 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
return FALSE;
}
if(mJointMotionList->mEmoteName==mID.asString())
{
llwarns << "Malformed animation mEmoteName==mID" << llendl;
return FALSE;
}
//-------------------------------------------------------------------------
// get loop
//-------------------------------------------------------------------------

View File

@ -428,9 +428,11 @@ S32 LLQueuedThread::processNextRequest()
llassert_always(req->getStatus() == STATUS_QUEUED);
break;
}
U32 start_priority = 0 ;
if (req)
{
req->setStatus(STATUS_INPROGRESS);
start_priority = req->getPriority();
}
unlockData();
@ -439,8 +441,7 @@ S32 LLQueuedThread::processNextRequest()
// safe to access req.
if (req)
{
// process request
U32 start_priority = req->getPriority();
// process request
bool complete = req->processRequest();
if (complete)

View File

@ -40,8 +40,6 @@
#include "llfocusmgr.h"
#include "lllocalcliprect.h"
#include "lltrans.h"
#include "boost/bind.hpp"
static const S32 DRAGGER_BAR_MARGIN = 4;
@ -74,7 +72,6 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
{
initNoTabsWidget(params.no_matched_tabs_text);
mNoVisibleTabsOrigString = LLTrans::getString(params.no_visible_tabs_text.initial_value().asString());
mSingleExpansion = params.single_expansion;
if(mFitParent && !mSingleExpansion)
{
@ -389,7 +386,7 @@ void LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)
{
LLTextBox::Params tp = tb_params;
tp.rect(getLocalRect());
mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString());
mNoMatchedTabsOrigString = tp.initial_value().asString();
mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);
}

View File

@ -11857,5 +11857,16 @@
<key>Value</key>
<integer>1</integer>
</map>
<key>TipToastMessageLineCount</key>
<map>
<key>Comment</key>
<string>Max line count of text message on tip toast.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<integer>10</integer>
</map>
</map>
</llsd>

View File

@ -995,7 +995,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
{
removeCOFItemLinks(gAgentWearables.getWearableItemID(item_to_wear->getWearableType(), wearable_count-1), false);
}
addCOFItemLink(item_to_wear, do_update);
addCOFItemLink(item_to_wear, do_update, cb);
}
break;
case LLAssetType::AT_BODYPART:
@ -2179,17 +2179,19 @@ void LLAppearanceMgr::updateIsDirty()
}
else
{
LLIsOfAssetType collector = LLIsOfAssetType(LLAssetType::AT_LINK);
LLInventoryModel::cat_array_t cof_cats;
LLInventoryModel::item_array_t cof_items;
gInventory.collectDescendents(cof, cof_cats, cof_items,
LLInventoryModel::EXCLUDE_TRASH);
gInventory.collectDescendentsIf(cof, cof_cats, cof_items,
LLInventoryModel::EXCLUDE_TRASH, collector);
LLInventoryModel::cat_array_t outfit_cats;
LLInventoryModel::item_array_t outfit_items;
gInventory.collectDescendents(base_outfit, outfit_cats, outfit_items,
LLInventoryModel::EXCLUDE_TRASH);
gInventory.collectDescendentsIf(base_outfit, outfit_cats, outfit_items,
LLInventoryModel::EXCLUDE_TRASH, collector);
if(outfit_items.count() != cof_items.count() -1)
if(outfit_items.count() != cof_items.count())
{
// Current outfit folder should have one more item than the outfit folder.
// this one item is the link back to the outfit folder itself.
@ -2197,16 +2199,6 @@ void LLAppearanceMgr::updateIsDirty()
return;
}
//getting rid of base outfit folder link to simplify comparison
for (LLInventoryModel::item_array_t::iterator it = cof_items.begin(); it != cof_items.end(); ++it)
{
if (*it == base_outfit_item)
{
cof_items.erase(it);
break;
}
}
//"dirty" - also means a difference in linked UUIDs and/or a difference in wearables order (links' descriptions)
std::sort(cof_items.begin(), cof_items.end(), sort_by_linked_uuid);
std::sort(outfit_items.begin(), outfit_items.end(), sort_by_linked_uuid);

View File

@ -211,7 +211,7 @@ void LLAvatarList::setDirty(bool val /*= true*/, bool force_refresh /*= false*/)
void LLAvatarList::addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name)
{
LL_DEBUGS("Avaline") << "Adding avaline item into the list: " << item_name << "|" << item_id << ", session: " << session_id << LL_ENDL;
LLAvalineListItem* item = new LLAvalineListItem;
LLAvalineListItem* item = new LLAvalineListItem(/*hide_number=*/false);
item->setAvatarId(item_id, session_id, true, false);
item->setName(item_name);

View File

@ -1886,7 +1886,7 @@ void LLScriptChiclet::onMenuItemClicked(const LLSD& user_data)
if("end" == action)
{
LLScriptFloaterManager::instance().onRemoveNotification(getSessionId());
LLScriptFloaterManager::instance().removeNotification(getSessionId());
}
}
@ -1969,7 +1969,7 @@ void LLInvOfferChiclet::onMenuItemClicked(const LLSD& user_data)
if("end" == action)
{
LLScriptFloaterManager::instance().onRemoveNotification(getSessionId());
LLScriptFloaterManager::instance().removeNotification(getSessionId());
}
}

View File

@ -262,6 +262,7 @@ public:
BOOL needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; }
BOOL needsAutoRename() { return mNeedsAutoRename; }
void setNeedsAutoRename(BOOL val) { mNeedsAutoRename = val; }
void setAutoSelectOverride(BOOL val) { mAutoSelectOverride = val; }
void setCallbackRegistrar(LLUICtrl::CommitCallbackRegistry::ScopedRegistrar* registrar) { mCallbackRegistrar = registrar; }

View File

@ -1022,6 +1022,14 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
}
else
{
// IM_SESSION_INVITE means that this is an Ad-hoc incoming chat
// (it can be also Group chat but it is checked above)
// In this case mInitialTargetIDs contains Ad-hoc session ID and it should not be added
// to Recent People to prevent showing of an item with (???)(???). See EXT-8246.
// Concrete participants will be added into this list once they sent message in chat.
if (IM_SESSION_INVITE == dialog) return;
// implemented adding of all participants of an outgoing to Recent People List. See EXT-5694.
for(uuid_vec_t::iterator it = session->mInitialTargetIDs.begin();
it!=session->mInitialTargetIDs.end();++it)
{

View File

@ -507,6 +507,19 @@ bool LLIsNotType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
return TRUE;
}
bool LLIsOfAssetType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
if(mType == LLAssetType::AT_CATEGORY)
{
if(cat) return TRUE;
}
if(item)
{
if(item->getActualType() == mType) return TRUE;
}
return FALSE;
}
bool LLIsTypeWithPermissions::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
if(mType == LLAssetType::AT_CATEGORY)

View File

@ -174,6 +174,25 @@ protected:
LLAssetType::EType mType;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLIsOfAssetType
//
// Implementation of a LLInventoryCollectFunctor which returns TRUE if
// the item or category is of asset type passed in during construction.
// Link types are treated as links, not as the types they point to.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLIsOfAssetType : public LLInventoryCollectFunctor
{
public:
LLIsOfAssetType(LLAssetType::EType type) : mType(type) {}
virtual ~LLIsOfAssetType() {}
virtual bool operator()(LLInventoryCategory* cat,
LLInventoryItem* item);
protected:
LLAssetType::EType mType;
};
class LLIsTypeWithPermissions : public LLInventoryCollectFunctor
{
public:

View File

@ -1052,7 +1052,7 @@ void LLLocationInputCtrl::changeLocationPresentation()
//needs unescaped one
LLSLURL slurl;
LLAgentUI::buildSLURL(slurl, false);
mTextEntry->setText(slurl.getSLURLString());
mTextEntry->setText(LLURI::unescape(slurl.getSLURLString()));
mTextEntry->selectAll();
mMaturityButton->setVisible(FALSE);

View File

@ -35,6 +35,7 @@
#include "llpanelgenerictip.h"
#include "llnotifications.h"
#include "llviewercontrol.h" // for gSavedSettings
LLPanelGenericTip::LLPanelGenericTip(
@ -45,7 +46,8 @@ LLPanelGenericTip::LLPanelGenericTip(
childSetValue("message", notification->getMessage());
// set line max count to 3 in case of a very long name
snapToMessageHeight(getChild<LLTextBox> ("message"), 3);
S32 max_line_count = gSavedSettings.getS32("TipToastMessageLineCount");
snapToMessageHeight(getChild<LLTextBox> ("message"), max_line_count);
}

View File

@ -197,14 +197,15 @@ BOOL LLPanelMainInventory::postBuild()
mFilterEditor->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterEdit, this, _2));
}
initListCommandsHandlers();
// *TODO:Get the cost info from the server
const std::string upload_cost("10");
childSetLabelArg("Upload Image", "[COST]", upload_cost);
childSetLabelArg("Upload Sound", "[COST]", upload_cost);
childSetLabelArg("Upload Animation", "[COST]", upload_cost);
childSetLabelArg("Bulk Upload", "[COST]", upload_cost);
mMenuAdd->getChild<LLMenuItemGL>("Upload Image")->setLabelArg("[COST]", upload_cost);
mMenuAdd->getChild<LLMenuItemGL>("Upload Sound")->setLabelArg("[COST]", upload_cost);
mMenuAdd->getChild<LLMenuItemGL>("Upload Animation")->setLabelArg("[COST]", upload_cost);
mMenuAdd->getChild<LLMenuItemGL>("Bulk Upload")->setLabelArg("[COST]", upload_cost);
initListCommandsHandlers();
return TRUE;
}

View File

@ -34,6 +34,7 @@
#include "llnotifications.h"
#include "llpanelonlinestatus.h"
#include "llviewercontrol.h" // for gSavedSettings
LLPanelOnlineStatus::LLPanelOnlineStatus(
const LLNotificationPtr& notification) :
@ -54,7 +55,7 @@ LLPanelOnlineStatus::LLPanelOnlineStatus(
notification, notification->getResponseTemplate()));
}
// set line max count to 3 in case of a very long name
snapToMessageHeight(getChild<LLTextBox> ("message"), 3);
S32 max_line_count = gSavedSettings.getS32("TipToastMessageLineCount");
snapToMessageHeight(getChild<LLTextBox> ("message"), max_line_count);
}

View File

@ -582,7 +582,7 @@ void LLParticipantList::addAvatarIDExceptAgent(const LLUUID& avatar_id)
else
{
std::string display_name = LLVoiceClient::getInstance()->getDisplayName(avatar_id);
mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? display_name : LLTrans::getString("AvatarNameWaiting"));
mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? LLTrans::getString("AvatarNameWaiting") : display_name);
mAvalineUpdater->watchAvalineCaller(avatar_id);
}
adjustParticipant(avatar_id);

View File

@ -75,7 +75,8 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)
mLastWidth(0),
mAspectRatio(0.f),
mPreviewToSave(FALSE),
mImage(NULL)
mImage(NULL),
mImageOldBoostLevel(LLViewerTexture::BOOST_NONE)
{
updateImageID();
if (key.has("save_as"))
@ -93,7 +94,7 @@ LLPreviewTexture::~LLPreviewTexture()
{
getWindow()->decBusyCount();
}
mImage->setBoostLevel(mImageOldBoostLevel);
mImage = NULL;
}
@ -543,6 +544,7 @@ void LLPreviewTexture::onAspectRatioCommit(LLUICtrl* ctrl, void* userdata)
void LLPreviewTexture::loadAsset()
{
mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
mImageOldBoostLevel = mImage->getBoostLevel();
mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
mImage->forceToSaveRawImage(0) ;
mAssetStatus = PREVIEW_ASSET_LOADING;

View File

@ -82,9 +82,10 @@ private:
void updateDimensions();
LLUUID mImageID;
LLPointer<LLViewerFetchedTexture> mImage;
BOOL mLoadingFullImage;
S32 mImageOldBoostLevel;
std::string mSaveFileName;
LLFrameTimer mSavedFileTimer;
BOOL mLoadingFullImage;
BOOL mShowKeepDiscard;
BOOL mCopyToInv;
@ -94,11 +95,10 @@ private:
// This is stored off in a member variable, because the save-as
// button and drag and drop functionality need to know.
BOOL mIsCopyable;
BOOL mUpdateDimensions;
S32 mLastHeight;
S32 mLastWidth;
F32 mAspectRatio;
BOOL mUpdateDimensions;
F32 mAspectRatio;
LLLoadedCallbackEntry::source_callback_list_t mCallbackTextureList ;
};

View File

@ -176,7 +176,15 @@ void LLScriptFloater::onClose(bool app_quitting)
if(getNotificationId().notNull())
{
LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
// we shouldn't kill notification on exit since it may be used as persistent.
if (app_quitting)
{
LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
}
else
{
LLScriptFloaterManager::getInstance()->removeNotification(getNotificationId());
}
}
}
@ -352,7 +360,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
set_new_message |= !floater->hasFocus();
}
onRemoveNotification(it->first);
removeNotification(it->first);
}
}
@ -379,6 +387,17 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
toggleScriptFloater(notification_id, set_new_message);
}
void LLScriptFloaterManager::removeNotification(const LLUUID& notification_id)
{
LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
if (notification != NULL && !notification->isCancelled())
{
LLNotificationsUtil::cancel(notification);
}
onRemoveNotification(notification_id);
}
void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
{
if(notification_id.isNull())
@ -392,6 +411,8 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
mNotifications.erase(notification_id);
// close floater
LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
if(floater)
@ -400,8 +421,6 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
floater->setNotificationId(LLUUID::null);
floater->closeFloater();
}
mNotifications.erase(notification_id);
}
void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& notification_id, bool set_new_message)

View File

@ -64,6 +64,11 @@ public:
*/
void onAddNotification(const LLUUID& notification_id);
/**
* Removes notification.
*/
void removeNotification(const LLUUID& notification_id);
/**
* Handles notification removal.
* Removes script notification toast, removes script chiclet, closes script floater

View File

@ -371,7 +371,7 @@ LLIMWellWindow::ObjectRowPanel::~ObjectRowPanel()
//---------------------------------------------------------------------------------
void LLIMWellWindow::ObjectRowPanel::onClosePanel()
{
LLScriptFloaterManager::getInstance()->onRemoveNotification(mChiclet->getSessionId());
LLScriptFloaterManager::getInstance()->removeNotification(mChiclet->getSessionId());
}
void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& notification_id, bool new_message/* = false*/)
@ -832,7 +832,7 @@ void LLIMWellWindow::closeAllImpl()
ObjectRowPanel* obj_panel = dynamic_cast <ObjectRowPanel*> (panel);
if (obj_panel)
{
LLScriptFloaterManager::instance().onRemoveNotification(*iter);
LLScriptFloaterManager::instance().removeNotification(*iter);
}
}
}

View File

@ -423,6 +423,10 @@ BOOL LLFloaterTexturePicker::postBuild()
mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
mInventoryPanel->setAllowMultiSelect(FALSE);
// Disable auto selecting first filtered item because it takes away
// selection from the item set by LLTextureCtrl owning this floater.
mInventoryPanel->getRootFolder()->setAutoSelectOverride(TRUE);
// Commented out to scroll to currently selected texture. See EXT-5403.
// // store this filter as the default one
// mInventoryPanel->getRootFolder()->getFilter()->markDefault();

View File

@ -89,9 +89,10 @@ void LLURLLineEditor::copyEscapedURLToClipboard()
const std::string unescaped_text = wstring_to_utf8str(mText.getWString().substr(left_pos, length));
LLWString text_to_copy;
if (LLSLURL(unescaped_text).isValid())
// *HACK: Because LLSLURL is currently broken we cannot use it to check if unescaped_text is a valid SLURL (see EXT-8335).
if (LLStringUtil::startsWith(unescaped_text, "http://")) // SLURL
text_to_copy = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text));
else
else // human-readable location
text_to_copy = utf8str_to_wstring(unescaped_text);
gClipboard.copyFromString( text_to_copy );

View File

@ -302,7 +302,7 @@ private:
class LLInventoryCallbackManager : public LLDestroyClass<LLInventoryCallbackManager>
{
friend LLDestroyClass<LLInventoryCallbackManager>;
friend class LLDestroyClass<LLInventoryCallbackManager>;
public:
LLInventoryCallbackManager();
~LLInventoryCallbackManager();

View File

@ -495,6 +495,7 @@ LLViewerTexture::LLViewerTexture(const U32 width, const U32 height, const U8 com
mFullHeight = height ;
mUseMipMaps = usemipmaps ;
mComponents = components ;
setTexelsPerImage();
mID.generate();
sImageCount++;
@ -522,6 +523,7 @@ void LLViewerTexture::init(bool firstinit)
mFullWidth = 0;
mFullHeight = 0;
mTexelsPerImage = 0 ;
mUseMipMaps = FALSE ;
mComponents = 0 ;
@ -530,7 +532,7 @@ void LLViewerTexture::init(bool firstinit)
mMaxVirtualSize = 0.f;
mNeedsGLTexture = FALSE ;
mMaxVirtualSizeResetInterval = 1;
mMaxVirtualSizeResetCounter = 1 ;
mMaxVirtualSizeResetCounter = mMaxVirtualSizeResetInterval ;
mAdditionalDecodePriority = 0.f ;
mParcelMedia = NULL ;
mNumFaces = 0 ;
@ -838,7 +840,8 @@ BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* image
{
mFullWidth = mGLTexturep->getCurrentWidth() ;
mFullHeight = mGLTexturep->getCurrentHeight() ;
mComponents = mGLTexturep->getComponents() ;
mComponents = mGLTexturep->getComponents() ;
setTexelsPerImage();
}
return ret ;
@ -1056,9 +1059,16 @@ void LLViewerTexture::destroyGLTexture()
}
}
void LLViewerTexture::setTexelsPerImage()
{
S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT);
S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT);
mTexelsPerImage = (F32)fullwidth * fullheight;
}
BOOL LLViewerTexture::isLargeImage()
{
return mFullWidth * mFullHeight > LLViewerTexture::sMinLargeImageSize ;
return (S32)mTexelsPerImage > LLViewerTexture::sMinLargeImageSize ;
}
//virtual
@ -1415,6 +1425,7 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/)
mFullWidth = mRawImage->getWidth();
mFullHeight = mRawImage->getHeight();
setTexelsPerImage();
}
else
{
@ -1619,11 +1630,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
{
// priority range = 100,000 - 500,000
S32 desired_discard = mDesiredDiscardLevel;
if (getDontDiscard())
{
desired_discard -= 2;
}
else if (!isJustBound() && mCachedRawImageReady)
if (!isJustBound() && mCachedRawImageReady)
{
if(mBoostLevel < BOOST_HIGH)
{
@ -1639,7 +1646,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
S32 ddiscard = cur_discard - desired_discard;
ddiscard = llclamp(ddiscard, -1, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY);
priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;
priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;
}
// Priority Formula:
@ -1647,19 +1654,51 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
// [10,000,000] + [1,000,000-9,000,000] + [100,000-500,000] + [1-20,000] + [0-999]
if (priority > 0.0f)
{
bool large_enough = mCachedRawImageReady && ((S32)mTexelsPerImage > sMinLargeImageSize) ;
if(large_enough)
{
//Note:
//to give small, low-priority textures some chance to be fetched,
//cut the priority in half if the texture size is larger than 256 * 256 and has a 64*64 ready.
priority *= 0.5f ;
}
pixel_priority = llclamp(pixel_priority, 0.0f, MAX_PRIORITY_PIXEL);
priority += pixel_priority + PRIORITY_BOOST_LEVEL_FACTOR * mBoostLevel;
if ( mBoostLevel > BOOST_HIGH)
{
priority += PRIORITY_BOOST_HIGH_FACTOR;
if(mBoostLevel > BOOST_SUPER_HIGH)
{
//for very important textures, always grant the highest priority.
priority += PRIORITY_BOOST_HIGH_FACTOR;
}
else if(mCachedRawImageReady)
{
//Note:
//to give small, low-priority textures some chance to be fetched,
//if high priority texture has a 64*64 ready, lower its fetching priority.
setAdditionalDecodePriority(0.5f) ;
}
else
{
priority += PRIORITY_BOOST_HIGH_FACTOR;
}
}
if(mAdditionalDecodePriority > 0.0f)
{
// priority range += 1,000,000.f-9,000,000.f
priority += PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY);
F32 additional = PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY);
if(large_enough)
{
//Note:
//to give small, low-priority textures some chance to be fetched,
//cut the additional priority to a quarter if the texture size is larger than 256 * 256 and has a 64*64 ready.
additional *= 0.25f ;
}
priority += additional;
}
}
return priority;
@ -1702,11 +1741,6 @@ void LLViewerFetchedTexture::updateVirtualSize()
addTextureStats(0.f, FALSE) ;//reset
}
if(mForceToSaveRawImage)
{
setAdditionalDecodePriority(0.75f) ; //boost the fetching priority
}
for(U32 i = 0 ; i < mNumFaces ; i++)
{
LLFace* facep = mFaceList[i] ;
@ -1819,6 +1853,7 @@ bool LLViewerFetchedTexture::updateFetch()
{
mFullWidth = mRawImage->getWidth() << mRawDiscardLevel;
mFullHeight = mRawImage->getHeight() << mRawDiscardLevel;
setTexelsPerImage();
if(mFullWidth > MAX_IMAGE_SIZE || mFullHeight > MAX_IMAGE_SIZE)
{
@ -2887,10 +2922,6 @@ void LLViewerLODTexture::processTextureStats()
//static const F64 log_2 = log(2.0);
static const F64 log_4 = log(4.0);
S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT);
S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT);
mTexelsPerImage = (F32)fullwidth * fullheight;
F32 discard_level = 0.f;
// If we know the output width and height, we can force the discard

View File

@ -126,15 +126,16 @@ public:
BOOST_HIGH = 10,
BOOST_BUMP ,
BOOST_TERRAIN , // has to be high priority for minimap / low detail
BOOST_SELECTED ,
BOOST_HUD ,
BOOST_SELECTED ,
BOOST_AVATAR_BAKED_SELF ,
BOOST_AVATAR_SELF , // needed for baking avatar
BOOST_SUPER_HIGH , //textures higher than this need to be downloaded at the required resolution without delay.
BOOST_HUD ,
BOOST_ICON ,
BOOST_UI ,
BOOST_PREVIEW ,
BOOST_MAP ,
BOOST_MAP_VISIBLE ,
BOOST_AVATAR_SELF , // needed for baking avatar
BOOST_MAP_VISIBLE ,
BOOST_MAX_LEVEL,
//other texture Categories
@ -268,6 +269,7 @@ protected:
void init(bool firstinit) ;
void reorganizeFaceList() ;
void reorganizeVolumeList() ;
void setTexelsPerImage();
private:
//note: do not make this function public.
/*virtual*/ LLImageGL* getGLTexture() const ;
@ -280,6 +282,7 @@ protected:
S32 mFullHeight;
BOOL mUseMipMaps ;
S8 mComponents;
F32 mTexelsPerImage; // Texels per image.
mutable S8 mNeedsGLTexture;
mutable F32 mMaxVirtualSize; // The largest virtual size of the image, in pixels - how much data to we need?
mutable S32 mMaxVirtualSizeResetCounter ;
@ -598,8 +601,6 @@ private:
void scaleDown() ;
private:
F32 mTexelsPerImage; // Texels per image.
F32 mDiscardVirtualSize; // Virtual size used to calculate desired discard
F32 mCalculatedDiscardLevel; // Last calculated discard level
};

View File

@ -3189,29 +3189,26 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
{ // muted avatars update at 16 hz
mUpdatePeriod = 16;
}
else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible)
else if (mVisibilityRank <= LLVOAvatar::sMaxVisible)
{ //first 25% of max visible avatars are not impostored
mUpdatePeriod = 1;
}
else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 4)
else if (mVisibilityRank > LLVOAvatar::sMaxVisible * 4)
{ //background avatars are REALLY slow updating impostors
mUpdatePeriod = 16;
}
else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 3)
else if (mVisibilityRank > LLVOAvatar::sMaxVisible * 3)
{ //back 25% of max visible avatars are slow updating impostors
mUpdatePeriod = 8;
}
else if (visible && mImpostorPixelArea <= impostor_area)
else if (mImpostorPixelArea <= impostor_area)
{ // stuff in between gets an update period based on pixel area
mUpdatePeriod = llclamp((S32) sqrtf(impostor_area*4.f/mImpostorPixelArea), 2, 8);
}
else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible)
{ // force nearby impostors in ultra crowded areas
mUpdatePeriod = 2;
}
else
{ // not impostored
mUpdatePeriod = 1;
{
//nearby avatars, update the impostors more frequently.
mUpdatePeriod = 4;
}
visible = (LLDrawable::getCurrentFrame()+mID.mData[0])%mUpdatePeriod == 0 ? TRUE : FALSE;
@ -4274,10 +4271,12 @@ void LLVOAvatar::checkTextureLoading()
return ;
}
const F32 SELF_ADDITIONAL_PRI = 0.75f ;
const F32 ADDITIONAL_PRI = 0.5f;
void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel_area, F32 texel_area_ratio, S32 boost_level)
{
//if this function is not called for the last 512 frames, the texture pipeline will stop fetching this texture.
static const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 512 ; //frames
static const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 512 ; //frames
imagep->resetTextureStats();
imagep->setCanUseHTTP(false) ; //turn off http fetching for baked textures.
@ -4287,9 +4286,14 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
mMinPixelArea = llmin(pixel_area, mMinPixelArea);
imagep->addTextureStats(pixel_area / texel_area_ratio);
imagep->setBoostLevel(boost_level);
if(boost_level == LLViewerTexture::BOOST_AVATAR_BAKED_SELF)
if(boost_level != LLViewerTexture::BOOST_AVATAR_BAKED_SELF)
{
imagep->setAdditionalDecodePriority(1.0f) ;
imagep->setAdditionalDecodePriority(ADDITIONAL_PRI) ;
}
else
{
imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
}
}
@ -7300,7 +7304,7 @@ void LLVOAvatar::cullAvatarsByPixelArea()
std::sort(LLCharacter::sInstances.begin(), LLCharacter::sInstances.end(), CompareScreenAreaGreater());
// Update the avatars that have changed status
U32 rank = 0;
U32 rank = 2; //1 is reserved for self.
for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
iter != LLCharacter::sInstances.end(); ++iter)
{
@ -7324,7 +7328,7 @@ void LLVOAvatar::cullAvatarsByPixelArea()
if (inst->isSelf())
{
inst->setVisibilityRank(0);
inst->setVisibilityRank(1);
}
else if (inst->mDrawable.notNull() && inst->mDrawable->isVisible())
{

View File

@ -1048,5 +1048,6 @@ protected: // Shared with LLVOAvatarSelf
*******************************************************************************/
}; // LLVOAvatar
extern const F32 SELF_ADDITIONAL_PRI;
#endif // LL_VO_AVATAR_H

View File

@ -2034,7 +2034,7 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
imagep->resetTextureStats();
imagep->setMaxVirtualSizeResetInterval(16);
imagep->addTextureStats( desired_pixels / texel_area_ratio );
imagep->setAdditionalDecodePriority(1.0f) ;
imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
imagep->forceUpdateBindStats() ;
if (imagep->getDiscardLevel() < 0)
{

View File

@ -7111,7 +7111,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)
{
BOOL skip_avatar_update = FALSE;
if (gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)
if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)
{
skip_avatar_update = TRUE;
}

View File

@ -50,8 +50,13 @@
function="File.UploadBulk"
parameter="" />
</menu_item_call>
<menu_item_separator
layout="topleft" />
<menu_item_call
label="Set Default Upload Permissions"
name="perm prefs">
<menu_item_call.on_click
function="Floater.Toggle"
parameter="perm_prefs" />
</menu_item_call>
</menu>
<menu_item_call

View File

@ -707,13 +707,6 @@
label="Options"
name="Options"
tear_off="true">
<menu_item_call
label="Set Default Upload Permissions"
name="perm prefs">
<menu_item_call.on_click
function="Floater.Toggle"
parameter="perm_prefs" />
</menu_item_call>
<menu_item_check
label="Show Advanced Permissions"
name="DebugPermissions">
@ -873,8 +866,13 @@
function="File.UploadBulk"
parameter="" />
</menu_item_call>
<menu_item_separator
layout="topleft" />
<menu_item_call
label="Set Default Upload Permissions"
name="perm prefs">
<menu_item_call.on_click
function="Floater.Toggle"
parameter="perm_prefs" />
</menu_item_call>
</menu>
</menu>
<menu

View File

@ -104,6 +104,7 @@
follows="top|left"
font="SansSerif"
left="10"
name="nearby_media_title"
width="100">
Nearby Media
</text>
@ -114,6 +115,7 @@
font="SansSerif"
top_pad="15"
left="10"
name="show_text"
width="40">
Show:
</text>

View File

@ -14,9 +14,9 @@
background_visible="true"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
no_matched_tabs_text.value="NoOutfitsTabsMatched"
no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
no_matched_tabs_text.v_pad="10"
no_visible_tabs_text.value="NoOutfits"
no_visible_tabs_text.value="You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]"
follows="all"
height="400"
layout="topleft"

View File

@ -1956,6 +1956,9 @@ Clears (deletes) the media and all params from the given face.
<string name="InvFolder Animations">Animations</string>
<string name="InvFolder Gestures">Gestures</string>
<string name="InvFolder Favorite">Favorites</string>
<!-- historically default name of the Favorites folder can start from either "f" or "F" letter.
We should localize both of them with the same value -->
<string name="InvFolder favorite">Favorites</string>
<string name="InvFolder Current Outfit">Current Outfit</string>
<string name="InvFolder My Outfits">My Outfits</string>
<string name="InvFolder Accessories">Accessories</string>
@ -2194,10 +2197,6 @@ Clears (deletes) the media and all params from the given face.
<!-- panel preferences general -->
<string name="BusyModeResponseDefault">The Resident you messaged is in &apos;busy mode&apos; which means they have requested not to be disturbed. Your message will still be shown in their IM panel for later viewing.</string>
<!-- Outfits Panel -->
<string name="NoOutfits">You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]</string>
<string name="NoOutfitsTabsMatched">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string>
<!-- Mute -->
<string name="MuteByName">(By name)</string>
<string name="MuteAgent">(Resident)</string>

View File

@ -48,7 +48,7 @@ Faites glisser le pointeur de la souris sur les options pour en savoir plus.
<spinner label="L$" name="spin_enrollment_fee" tool_tip="Les nouveaux membres doivent payer ces frais pour rejoindre le groupe quand l&apos;option Frais d&apos;inscription est cochée."/>
<combo_box name="group_mature_check" tool_tip="Définit si votre groupe contient des informations de type Modéré" width="195">
<combo_item name="select_mature">
- Sélectionner une catégorie de contenu -
- Catégorie de contenu -
</combo_item>
<combo_box.item label="Contenu Modéré" name="mature"/>
<combo_box.item label="Contenu Général" name="pg"/>

View File

@ -320,7 +320,7 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
<text name="allow_label">
Permetti ad altri residenti di:
</text>
<check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntato, chiunque può terraformare il tuo terreno. E&apos; preferibile lasciare questo quadrato non spuntato, dato che sarai sempre in grado di modificare il tuo terreno."/>
<check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntata, chiunque può terraformare il tuo terreno. È preferibile lasciare questa opzione non spuntata, dato che sarai comunque in grado di modificare il tuo terreno."/>
<check_box label="Permetti il volo" name="check fly" tool_tip="Se spuntato, gli altri residenti potranno volare sul tuo terreno. Se non spuntato, potranno solamente arrivare in volo o sorvolare il terreno."/>
<text name="allow_label2">
Creare oggetti:
@ -328,7 +328,7 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
<check_box label="Tutti i residenti" name="edit objects check"/>
<check_box label="Gruppo" name="edit group objects check"/>
<text name="allow_label3">
Entrata oggetti:
Immissione oggetti:
</text>
<check_box label="Tutti i residenti" name="all object entry check"/>
<check_box label="Gruppo" name="group object entry check"/>
@ -340,9 +340,9 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
<text name="land_options_label">
Opzioni per il terreno:
</text>
<check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su &apos;sicuro&apos;, disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento a morte."/>
<check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su &apos;sicuro&apos;, disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento con danni."/>
<check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/>
<check_box label="Mostra luogo nella ricerca (30 L$/settimana)" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/>
<check_box label="Mostra luogo nella ricerca (30 L$/settimana)" name="ShowDirectoryCheck" tool_tip="Consenti che il lotto sia visto nei risultati di ricerca"/>
<combo_box name="land category with adult">
<combo_box.item label="Tutte le categorie" name="item0"/>
<combo_box.item label="Luogo dei Linden" name="item1"/>
@ -421,7 +421,7 @@ Texture:
<spinner left_delta="104" name="media_size_width" tool_tip="Aumenta larghezza per far vedere meglio i media web, lascia a 0 per impostare il default."/>
<spinner name="media_size_height" tool_tip="Aumenta altezza per far vedere meglio i media web, lascia a 0 per impostare il default."/>
<text name="pixels">
pixels
pixel
</text>
<text name="Options:">
Opzioni

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="buy currency" title="ACQUISTA L$">
<floater.string name="buy_currency">
Acquista [LINDENS] L$ per circa [LOCALAMOUNT]
acquistare [LINDENS] L$ per circa [LOCALAMOUNT]
</floater.string>
<text font="SansSerifLarge" left="5" name="info_need_more" right="-5">
Ti servono più L$
@ -57,8 +57,8 @@
<text bottom_delta="16" name="purchase_warning_notenough">
Non stai acquistando abbastanza L$. Aumenta l&apos;importo.
</text>
<button label="Acquista adesso" name="buy_btn"/>
<button label="Cancella" name="cancel_btn"/>
<button label="Acquista" name="buy_btn"/>
<button label="Annulla" name="cancel_btn"/>
<text left="5" name="info_cannot_buy" right="-5">
Non in grado di acquistare
</text>

View File

@ -3,7 +3,7 @@
<panel label="Persone" name="people_panel">
<string name="no_recent_people" value="Nessuna persona recente. Stai cercando persone da frequentare? Prova la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/>
<string name="no_filtered_recent_people" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca]."/>
<string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Try la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/>
<string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Prova a vedere la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/>
<string name="no_one_filtered_near" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca]."/>
<string name="no_friends_online" value="Nessun amico online"/>
<string name="no_friends" value="Nessun amico"/>

View File

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="gesture_preview">
<floater.string name="step_anim">
Selecionar animação:
Executar animação:
</floater.string>
<floater.string name="step_sound">
Selecionar animação:
Executar som:
</floater.string>
<floater.string name="step_chat">
Diga por bate-papo:
Executar bate-papo:
</floater.string>
<floater.string name="step_wait">
Espere:
Pausa
</floater.string>
<floater.string name="stop_txt">
Parar
@ -31,11 +31,11 @@
Gatilho:
</text>
<text name="replace_text" tool_tip="Substituir a(s) palavra(s) de gatilho por estas palavras. Por exemplo, o gatilho &apos;oi&apos; substituído por &apos;olá&apos;, mudará a conversa de &apos;Eu digo oi&apos; para &apos;Eu digo olá&apos; e também executando o gesto!">
Substituir por:
Trocar por:
</text>
<line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras.Por exemplo, o gatilho &apos;oi&apos; substituído por &apos;olá&apos;, mudará a conversa de &apos;Eu digo oi&apos; para &apos;Eu digo olá&apos; e também executando o gesto!"/>
<line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras. Por exemplo, o gatilho &apos;oi&apos; substituído por &apos;olá&apos;, mudará a conversa de &apos;Eu digo oi&apos; para &apos;Eu digo olá&apos; e também executando o gesto!"/>
<text name="key_label">
Tecla de Atalho:
Atalho:
</text>
<combo_box label="Nenhum" left="116" name="modifier_combo" width="76"/>
<combo_box label="Nenhum" left_delta="80" name="key_combo" width="76"/>
@ -55,16 +55,16 @@
(opções)
</text>
<radio_group name="animation_trigger_type">
<radio_item label="OK" name="start"/>
<radio_item label="Pare" name="stop"/>
<radio_item label="Iniciar" name="start"/>
<radio_item label="Parar" name="stop"/>
</radio_group>
<check_box bottom_delta="34" label="até que as animações estejam concluídas" name="wait_anim_check"/>
<check_box bottom_delta="-30" label="segundos:" name="wait_time_check"/>
<line_editor left_delta="130" name="wait_time_editor"/>
<text name="help_label">
Se não incluir etapas de espera, todas as etapas ocorrem ao mesmo tempo.
Se não incluir uma pausa, todas as etapas ocorrem ao mesmo tempo.
</text>
<check_box label="Ativar" name="active_check" tool_tip="Gestos ativos podem ser gatilhados escrevendo suas frases de gatilho no chat ou através de suas teclas de atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/>
<check_box label="Ativar" name="active_check" tool_tip="Gestos podem ser ativados escrevendo suas frases de gatilho no chat ou teclando o atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/>
<button label="Prévia" name="preview_btn"/>
<button label="Salvar" name="save_btn"/>
</floater>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="toolbox floater" short_title="BUILD TOOLS" title="" width="288">
<floater.string name="status_rotate">
Arrastar as bandas coloridas para girar o objeto
Arrastar as faixas coloridas para girar o objeto
</floater.string>
<floater.string name="status_scale">
Clicar e arrastar para esticar o lado selecionado
@ -13,13 +13,13 @@
Clicar e reter para modificar a terra
</floater.string>
<floater.string name="status_camera">
Clique e arraste para mexer a câmera
Clicar e arrastar para mover a câmera
</floater.string>
<floater.string name="status_grab">
Arraste para mexer, Ctrl para levantar, Ctrl+Shift para girar
Arrastar para mexer, Ctrl para levantar, Ctrl+Shift para girar
</floater.string>
<floater.string name="status_place">
Clique no mundo para construir
Clicar em um lugar para construir
</floater.string>
<floater.string name="status_selectland">
Clicar e arrastar para selecionar a terra
@ -45,7 +45,7 @@
<button label="" label_selected="" name="button create" tool_tip="Criar"/>
<button label="" label_selected="" name="button land" tool_tip="Terra"/>
<text name="text status" width="280">
Arraste para mover, shift+Arrastar para Copiar
Arrastar para mover, shift+Arrastar para copiar
</text>
<radio_group name="focus_radio_group">
<radio_item label="Zoom" name="radio zoom"/>
@ -58,10 +58,10 @@
<radio_item label="Spin (Ctrl+Shift)" name="radio spin"/>
</radio_group>
<radio_group name="edit_radio_group">
<radio_item label="Movimentar" name="radio position"/>
<radio_item label="Mover" name="radio position"/>
<radio_item label="Rotacionar (Ctrl)" name="radio rotate"/>
<radio_item label="Stretch (Ctrl+Shift)" name="radio stretch"/>
<radio_item label="Face selecionada" name="radio select face"/>
<radio_item label="Esticar (Ctrl+Shift)" name="radio stretch"/>
<radio_item label="Selecionar face" name="radio select face"/>
</radio_group>
<check_box label="Editar partes linkadas" name="checkbox edit linked parts"/>
<text name="RenderingCost" tool_tip="Mostra o cálculo do custo de renderização do objeto">
@ -73,10 +73,10 @@
</text>
<check_box initial_value="true" label="Esticar texturas" name="checkbox stretch textures"/>
<check_box initial_value="true" label="Mostrar na grade" name="checkbox snap to grid"/>
<combo_box name="combobox grid mode" tool_tip="Selecione o tipo de régua da grade onde o objeto será colocado">
<combo_box.item label="Grid SL" name="World"/>
<combo_box.item label="Grid local" name="Local"/>
<combo_box.item label="Grid de referência" name="Reference"/>
<combo_box name="combobox grid mode" tool_tip="Selecione a régua da grade onde o objeto será colocado">
<combo_box.item label="Grade SL" name="World"/>
<combo_box.item label="Local" name="Local"/>
<combo_box.item label="Referência" name="Reference"/>
</combo_box>
<button label="Opções..." label_selected="Opções..." name="Options..." tool_tip="Mais opções de grade"/>
<button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/>
@ -99,12 +99,12 @@
<check_box initial_value="true" label="Copiar parte central" name="checkbox copy centers"/>
<check_box label="Girar cópia" name="checkbox copy rotates"/>
<radio_group name="land_radio_group">
<radio_item label="Selecionar Terra" name="radio select land"/>
<radio_item label="Selecionar terra" name="radio select land"/>
<radio_item label="Aplainar" name="radio flatten"/>
<radio_item label="Subir" name="radio raise"/>
<radio_item label="Elevar" name="radio raise"/>
<radio_item label="Abaixar" name="radio lower"/>
<radio_item label="Suavizar" name="radio smooth"/>
<radio_item label="Endurecer" name="radio noise"/>
<radio_item label="Alisar" name="radio smooth"/>
<radio_item label="Irregularizar" name="radio noise"/>
<radio_item label="Reverter" name="radio revert"/>
</radio_group>
<text name="Bulldozer:">
@ -144,7 +144,7 @@
Você não pode modificar estes objetos
</panel.string>
<panel.string name="text modify warning">
Selecione o objeto intereiro para configurar as autorizações
Selecione o objeto inteiro para configurar as autorizações
</panel.string>
<panel.string name="Cost Default">
Preço: L$
@ -156,10 +156,10 @@
Preço unitário: L$
</panel.string>
<panel.string name="Cost Mixed">
Preço Misturado
Preço misto
</panel.string>
<panel.string name="Sale Mixed">
Venda Misturada
Venda mista
</panel.string>
<text name="Name:">
Nome:
@ -193,7 +193,7 @@
<combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/>
<combo_box.item label="Sentar no objeto" name="Sitonobject"/>
<combo_box.item label="Comprar objeto" name="Buyobject"/>
<combo_box.item label="Pagar Objeto" name="Payobject"/>
<combo_box.item label="Pagar objeto" name="Payobject"/>
<combo_box.item label="Abrir" name="Open"/>
<combo_box.item label="Zoom" name="Zoom"/>
</combo_box>
@ -358,7 +358,7 @@
</panel>
<panel label="Recursos" name="Features">
<text name="select_single" width="272">
Selecione apenas uma primitiva para editar suas características.
Selecione apenas um prim para editar suas características.
</text>
<text name="edit_object">
Editar características do Objeto:
@ -480,7 +480,7 @@
<button label="Sobre terrenos" label_selected="Sobre terrenos" name="button about land"/>
<check_box label="Mostrar donos" name="checkbox show owners" tool_tip="Colorir lotes de acordo com seus donos: Green = Sua terra Aqua = Terra do seu grupo Red = Possuída por outros Yellow = À venda Purple = A leilão Grey = Pública"/>
<text name="label_parcel_modify">
Modificar Lote
Modificar lote
</text>
<button label="Subdividir" label_selected="Subdividir" name="button subdivide land"/>
<button label="Juntar" label_selected="Juntar" name="button join land"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater label="Lugares" name="voice_effects" title="DISTORCENDO VOZ">
<floater label="Lugares" name="voice_effects" title="EFEITOS DE VOZ">
<string name="no_voice_effect">
(Não distorcer voz)
</string>

View File

@ -20,13 +20,13 @@
</text>
<check_box label="Terra à Venda" name="land_for_sale_chk"/>
<text name="land_sale_label">
Venda de terreno
Terreno à venda
</text>
<text name="by_owner_label">
o proprietário
pelo dono
</text>
<text name="auction_label">
leilão de terrenos
leilão
</text>
<button label="Voltar ao meu início" label_selected="Voltar ao meu início" name="Go Home" tool_tip="Teletransportar para meu início"/>
<text name="Home_label">
@ -37,7 +37,7 @@
</text>
<check_box label="PG" name="event_chk"/>
<text name="pg_label">
Público geral
Geral
</text>
<check_box label="Mature" name="events_mature_chk"/>
<text name="events_mature_label">

View File

@ -16,7 +16,7 @@
<menu label="Novas roupas" name="New Clothes">
<menu_item_call label="Nova camisa" name="New Shirt"/>
<menu_item_call label="Nova calça" name="New Pants"/>
<menu_item_call label="Novos calçados" name="New Shoes"/>
<menu_item_call label="Novos sapatos" name="New Shoes"/>
<menu_item_call label="Novas meias" name="New Socks"/>
<menu_item_call label="Nova jaqueta" name="New Jacket"/>
<menu_item_call label="Nova saia" name="New Skirt"/>
@ -47,8 +47,8 @@
<menu_item_call label="Teletransporte" name="Landmark Open"/>
<menu_item_call label="Abrir" name="Animation Open"/>
<menu_item_call label="Abrir" name="Sound Open"/>
<menu_item_call label="Substituir equipamento" name="Replace Outfit"/>
<menu_item_call label="Adicionar ao equipamento" name="Add To Outfit"/>
<menu_item_call label="Substituir look" name="Replace Outfit"/>
<menu_item_call label="Adicionar a look" name="Add To Outfit"/>
<menu_item_call label="Tirar do look atual" name="Remove From Outfit"/>
<menu_item_call label="Encontrar original" name="Find Original"/>
<menu_item_call label="Remover item" name="Purge Item"/>
@ -75,7 +75,7 @@
<menu_item_call label="Ativar" name="Activate"/>
<menu_item_call label="Desativar" name="Deactivate"/>
<menu_item_call label="Salvar como" name="Save As"/>
<menu_item_call label="Retirar de si mesmo" name="Detach From Yourself"/>
<menu_item_call label="Tirar de si mesmo" name="Detach From Yourself"/>
<menu_item_call label="Vestir" name="Wearable And Object Wear"/>
<menu label="Anexar a" name="Attach To"/>
<menu label="Anexar ao HUD" name="Attach To HUD"/>

View File

@ -1,25 +1,25 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="landmark_info">
<string name="title_create_landmark" value="Criar Landmark"/>
<string name="title_edit_landmark" value="Editar Landmark"/>
<string name="title_landmark" value="Landmark"/>
<string name="not_available" value="(N\A)"/>
<string name="title_create_landmark" value="Criar marco"/>
<string name="title_edit_landmark" value="Editar marco"/>
<string name="title_landmark" value="Marco"/>
<string name="not_available" value="(N/A)"/>
<string name="unknown" value="(desconhecido)"/>
<string name="public" value="(público)"/>
<string name="server_update_text">
Informação do lugar não disponível sem atualização do servidor.
</string>
<string name="server_error_text">
Informações sobre esta localização não está disponível neste momento, por favor, tente novamente mais tarde.
No momento não há informações sobre este lugar; por favor tente novamente mais tarde.
</string>
<string name="server_forbidden_text">
Informações sobre esta localização está indisponível devido a restrições de acesso. Por favor, verifique as permissões com o proprietário da parcela.
Os dados deste lugar não estão indisponíveis devido a restrições de acesso. Verifique as permissões com o proprietário do terreno ou parcela.
</string>
<string name="acquired_date">
[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
</string>
<button name="back_btn" tool_tip="Atrás"/>
<text name="title" value="Perfil do Lugar"/>
<text name="title" value="Perfil do lugar"/>
<scroll_container name="place_scroll">
<panel name="scrolling_panel">
<text name="maturity_value" value="desconhecido"/>
@ -31,7 +31,7 @@
<panel name="landmark_edit_panel">
<text name="title_label" value="Título:"/>
<text name="notes_label" value="Minhas notas:"/>
<text name="folder_label" value="Localização da Landmark:"/>
<text name="folder_label" value="Localização do marco:"/>
</panel>
</panel>
</scroll_container>

View File

@ -36,7 +36,7 @@
Dados sobre o local não disponíveis no momento. Favor tentar mais tarde.
</string>
<string name="server_forbidden_text">
Dados sobre o local controlados por lista de acesso. Verifique se você está autorizado a acessá-los com o dono do lote.
Dados sobre o local controlados por lista de acesso. Verifique se você está autorizado a acessá-los com o dono do lote.
</string>
<string name="acquired_date">
[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
@ -53,18 +53,18 @@
<text name="rating_label" value="Classificação:"/>
<text name="rating_value" value="desconhecido"/>
<text name="voice_label" value="Voz:"/>
<text name="voice_value" value="Ligar"/>
<text name="voice_value" value="Ligado"/>
<text name="fly_label" value="Voar:"/>
<text name="fly_value" value="Ligar"/>
<text name="fly_value" value="Ligado"/>
<text name="push_label" value="Empurrar:"/>
<text name="push_value" value="Desligar"/>
<text name="push_value" value="Desligado"/>
<text name="build_label" value="Construir:"/>
<text name="build_value" value="Ligar"/>
<text name="build_value" value="Ligado"/>
<text name="scripts_label" value="Scripts:"/>
<text name="scripts_value" value="Ligar"/>
<text name="scripts_value" value="Ligado"/>
<text name="damage_label" value="Dano:"/>
<text name="damage_value" value="Desligar"/>
<button label="Sobre terrenos" name="about_land_btn"/>
<text name="damage_value" value="Desligado"/>
<button label="Sobre o terreno" name="about_land_btn"/>
</panel>
</accordion_tab>
<accordion_tab name="region_information_tab" title="Região">

View File

@ -21,6 +21,6 @@
Localização dos logs:
</text>
<line_editor left="278" name="log_path_string" right="-20"/>
<button label="Navegar" label_selected="Navegar" name="log_path_button" width="120"/>
<button label="Lista dos bloqueados" name="block_list"/>
<button label="Procurar" label_selected="Procurar" name="log_path_button" width="120"/>
<button label="Lista de bloqueados" name="block_list"/>
</panel>

View File

@ -2,7 +2,7 @@
<role_actions>
<action_set description="Esta habilidades incluem poderes de adicionar ou remover membros do grupo e permitir que novos membros se juntem sem um convite." name="Membership">
<action description="Convidar pessoas para este grupo" longdescription="Em Membros &gt; Cargos, use o botão &apos;Convidar&apos; para convidar pessoas para entrar no grupo." name="member invite"/>
<action description="Expulsar membros deste grupo" longdescription="Em Membros &gt; Cargos, use o botão &apos;Ejetar&apos; para tirar pessoas do grupo. Proprietários podem expulsar qualquer pessoa, menos outro proprietário. Se você não é Proprietário, um membro só pode ser expulso se tiver cargo &apos;Todos&apos; e nenhum outro cargo. Para destituir um membro de seu cargo, você precisa ter a função &apos;Destituir membro com cargo&apos;." name="member eject"/>
<action description="Expulsar membros deste grupo" longdescription="Em Membros &gt; Cargos, use o botão &apos;Ejetar&apos; para tirar pessoas do grupo. Proprietários podem expulsar qualquer pessoa, menos outro proprietário. Se você não é Proprietário, um membro só pode ser expulso se tiver cargo &apos;Todos&apos; e nenhum outro cargo. Para destituir um membro de seu cargo, você precisa ter a função &apos;Destituir membro com cargo&apos;." name="member eject"/>
<action description="Alterna entre &apos;Inscrições abertas&apos; e &apos;Taxa de associação&apos;." longdescription="Ative &apos;Inscrições abertas&apos; para que novos membros entrem no grupo sem convite, mude a &apos;Taxa de associação&apos; na seção Geral." name="member options"/>
</action_set>
<action_set description="Estas habilidades incluem poderes de adicionar, remover e mudar funções do grupo; adicionar e remover membros em funções e designar habilidades a funções." name="Roles">
@ -18,7 +18,7 @@
<action description="Mudar apresentação, insígnia, &apos;Publicar na web&apos;, e quais membros estão publicamente visíveis em Informações do Grupo." longdescription="Modificar o estatuto, símbolo e exibição nos resultados de busca. Use a seção Geral." name="group change identity"/>
</action_set>
<action_set description="Estas funções incluem poderes de transferir, vender e modificar os terrenos do grupo. Para acessar a janela &apos;Sobre terrenos&apos;, clique no chão com o botão direito e selecione &apos;Sobre terrenos&apos;. Ou clique no ícone &apos;i&apos; da barra de navegação." name="Parcel Management">
<action description="Transferir e comprar terreno para o grupo" longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno &gt; aba Geral." name="land deed"/>
<action description="Transferir e comprar terreno para o grupo" longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno &gt; aba Geral." name="land deed"/>
<action description="Abandonar terreno para Governador Linden" longdescription="Abandone terreno para Governador Linden. *AVISO* Qualquer membro em uma função com esta habilidade pode abandonar o terreno pertencente ao grupo em Sobre o terreno &gt; aba Geral, revertendo à posse Linden sem uma venda! Certifique-se de saber o que está fazendo antes de designar esta habilidade." name="land release"/>
<action description="Definir terreno para informação de venda" longdescription="Defina informações de venda para terreno. *AVISO* Qualquer membro em uma função com esta habilidade pode vender terrenos pertencentes ao grupo em Sobre o terreno &gt; aba Geral como quiser! Certifique-se de sabe o que está fazendo antes de designar esta habilidade." name="land set sale info"/>
<action description="Subdividir e unir parcelas" longdescription="Juntar ou dividir lotes. Clique no chão com o botão direito, selecione &apos;Editar terreno&apos; e arraste o mouse sobre o terreno para ver as opções. Para dividir um terreno, selecione a área a ser dividida e clique em &apos;Dividir&apos;. Para juntar terrenos, selecione dois ou mais lotes adjacentes e clique em &apos;Juntar&apos;." name="land divide join"/>