Add InactiveFloaterTransparency and ActiveFloaterTransparency settings

Dear Users,
This removes FloaterUnfocusedBackgroundOpaque, to achieve the same effect,
modify InactiveFloaterTransparency, 1.5 should do the trick.

PS: The settings are in the Vanity tab at the bottom.

Now for developer nonsense:
Also sync a bunch of the UI code with upstream Alchemy for opts and shtuff.
Also let's translate the tooltips on the buttons on the top right of floaters
Translators note that not all new strings have been translated yet as not all are upstream.
This commit is contained in:
Lirusaito
2019-01-24 11:57:44 -05:00
parent 546422609a
commit 3bdf6e553d
19 changed files with 778 additions and 201 deletions

View File

@@ -35,8 +35,6 @@
#include "linden_common.h"
#include "llmultifloater.h"
#include "llfocusmgr.h"
#include "lluictrlfactory.h"
@@ -56,10 +54,13 @@
#include "llcontrol.h"
#include "lltabcontainer.h"
#include "v2math.h"
#include "lltrans.h"
#include "llmultifloater.h"
#include "llfasttimer.h"
#include "airecursive.h"
#include "llnotifications.h"
const S32 MINIMIZED_WIDTH = 160;
const S32 CLOSE_BOX_FROM_TOP = 1;
// use this to control "jumping" behavior when Ctrl-Tabbing
@@ -104,14 +105,14 @@ std::string LLFloater::sButtonNames[BUTTON_COUNT] =
std::string LLFloater::sButtonToolTips[BUTTON_COUNT] =
{
#ifdef LL_DARWIN
"Close (Cmd-W)", //BUTTON_CLOSE
"BUTTON_CLOSE_DARWIN", //"Close (Cmd-W)", //BUTTON_CLOSE
#else
"Close (Ctrl-W)", //BUTTON_CLOSE
"BUTTON_CLOSE_WIN", //"Close (Ctrl-W)", //BUTTON_CLOSE
#endif
"Restore", //BUTTON_RESTORE
"Minimize", //BUTTON_MINIMIZE
"Tear Off", //BUTTON_TEAR_OFF
"Edit", //BUTTON_EDIT
"BUTTON_RESTORE", //"Restore", //BUTTON_RESTORE
"BUTTON_MINIMIZE", //"Minimize", //BUTTON_MINIMIZE
"BUTTON_TEAR_OFF", //"Tear Off", //BUTTON_TEAR_OFF
"BUTTON_EDIT", //"Edit", //BUTTON_EDIT
};
@@ -130,6 +131,31 @@ LLFloater::handle_map_t LLFloater::sFloaterMap;
LLFloaterView* gFloaterView = NULL;
//static
void LLFloater::initClass()
{
// translate tooltips for floater buttons
for (S32 i = 0; i < BUTTON_COUNT; i++)
{
sButtonToolTips[i] = LLTrans::getString( sButtonToolTips[i] );
}
LLControlVariable* ctrl = LLUI::sConfigGroup->getControl("ActiveFloaterTransparency");
if (ctrl)
{
ctrl->getSignal()->connect(boost::bind(&LLFloater::updateActiveFloaterTransparency));
updateActiveFloaterTransparency();
}
ctrl = LLUI::sConfigGroup->getControl("InactiveFloaterTransparency");
if (ctrl)
{
ctrl->getSignal()->connect(boost::bind(&LLFloater::updateInactiveFloaterTransparency));
updateInactiveFloaterTransparency();
}
}
LLFloater::LLFloater() :
//FIXME: we should initialize *all* member variables here
LLPanel(), mAutoFocus(TRUE),
@@ -355,6 +381,18 @@ void LLFloater::initFloater(const std::string& title,
}
}
// static
void LLFloater::updateActiveFloaterTransparency()
{
sActiveControlTransparency = LLUI::sConfigGroup->getF32("ActiveFloaterTransparency");
}
// static
void LLFloater::updateInactiveFloaterTransparency()
{
sInactiveControlTransparency = LLUI::sConfigGroup->getF32("InactiveFloaterTransparency");
}
void LLFloater::addResizeCtrls()
{
// Resize bars (sides)
@@ -720,11 +758,6 @@ void LLFloater::applyRectControl()
void LLFloater::applyTitle()
{
if (gNoRender)
{
return;
}
if (!mDragHandle)
{
return;
@@ -753,7 +786,7 @@ void LLFloater::setTitle( const std::string& title )
applyTitle();
}
std::string LLFloater::getTitle()
std::string LLFloater::getTitle() const
{
if (mTitle.empty())
{
@@ -771,7 +804,7 @@ void LLFloater::setShortTitle( const std::string& short_title )
applyTitle();
}
std::string LLFloater::getShortTitle()
std::string LLFloater::getShortTitle() const
{
if (mShortTitle.empty())
{
@@ -783,8 +816,6 @@ std::string LLFloater::getShortTitle()
}
}
BOOL LLFloater::canSnapTo(const LLView* other_view)
{
if (NULL == other_view)
@@ -1023,7 +1054,8 @@ void LLFloater::setFocus( BOOL b )
if (b)
{
// only push focused floaters to front of stack if not in midst of ctrl-tab cycle
if (!getHost() && !((LLFloaterView*)getParent())->getCycleMode())
LLFloaterView * parent = dynamic_cast<LLFloaterView *>(getParent());
if (!getHost() && parent && !parent->getCycleMode())
{
if (!isFrontmost())
{
@@ -1040,6 +1072,7 @@ void LLFloater::setFocus( BOOL b )
last_focus->setFocus(TRUE);
}
}
updateTransparency(b ? TT_ACTIVE : TT_INACTIVE);
}
// virtual
@@ -1081,8 +1114,9 @@ void LLFloater::setForeground(BOOL front)
releaseFocus();
}
if (front || !LLUI::sConfigGroup->getBOOL("FloaterUnfocusedBackgroundOpaque")) // Singu Note: This can be removed when InactiveFloaterTransparency is added
setBackgroundOpaque( front );
setBackgroundOpaque( front );
// Singu Note: Upstream isn't doing this, I can't see where they were actually going inactive. Maybe setFocus(false) isn't being called, but we have parity there..
updateTransparency(front || getIsChrome() ? TT_ACTIVE : TT_INACTIVE);
}
}
@@ -1191,7 +1225,7 @@ void LLFloater::removeDependentFloater(LLFloater* floaterp)
floaterp->mDependeeHandle = LLHandle<LLFloater>();
}
BOOL LLFloater::offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButtons index)
BOOL LLFloater::offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index)
{
if( mButtonsEnabled[index] )
{
@@ -1297,7 +1331,14 @@ void LLFloater::setFrontmost(BOOL take_focus)
{
// there are more than one floater view
// so we need to query our parent directly
((LLFloaterView*)getParent())->bringToFront(this, take_focus);
LLFloaterView * parent = dynamic_cast<LLFloaterView*>( getParent() );
if (parent)
{
parent->bringToFront(this, take_focus);
}
// Make sure to set the appropriate transparency type (STORM-732).
updateTransparency(hasFocus() || getIsChrome() ? TT_ACTIVE : TT_INACTIVE);
}
}
@@ -1432,42 +1473,45 @@ void LLFloater::onClickClose()
// virtual
void LLFloater::draw()
{
const F32 alpha = getCurrentTransparency();
// draw background
if( isBackgroundVisible() )
{
drawShadow(this);
S32 left = LLPANEL_BORDER_WIDTH;
S32 top = getRect().getHeight() - LLPANEL_BORDER_WIDTH;
S32 right = getRect().getWidth() - LLPANEL_BORDER_WIDTH;
S32 bottom = LLPANEL_BORDER_WIDTH;
static LLColor4 shadow_color = LLUI::sColorsGroup->getColor("ColorDropShadow");
static F32 shadow_offset = (F32)LLUI::sConfigGroup->getS32("DropShadowFloater");
if (!isBackgroundOpaque())
{
shadow_offset *= 0.2f;
shadow_color.mV[VALPHA] *= 0.5f;
}
gl_drop_shadow(left, top, right, bottom,
shadow_color,
ll_round(shadow_offset));
// No transparent windows in simple UI
LLColor4 color;
if (isBackgroundOpaque())
{
gl_rect_2d( left, top, right, bottom, getBackgroundColor() );
color = getBackgroundColor();
}
else
{
gl_rect_2d( left, top, right, bottom, getTransparentColor() );
color = getTransparentColor();
}
if(gFocusMgr.childHasKeyboardFocus(this) && !getIsChrome() && !getCurrentTitle().empty())
{
// We're not using images, use old-school flat colors
gl_rect_2d( left, top, right, bottom, color % alpha );
// draw highlight on title bar to indicate focus. RDW
const LLFontGL* font = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF );
LLRect r = getRect();
gl_rect_2d_offset_local(0, r.getHeight(), r.getWidth(), r.getHeight() - (S32)font->getLineHeight() - 1,
LLUI::sColorsGroup->getColor("TitleBarFocusColor"), 0, TRUE);
if(gFocusMgr.childHasKeyboardFocus(this)
&& !getIsChrome()
&& !getCurrentTitle().empty())
{
static auto titlebar_focus_color = LLUI::sColorsGroup->getColor("TitleBarFocusColor");
const LLFontGL* font = LLFontGL::getFontSansSerif();
LLRect r = getRect();
gl_rect_2d_offset_local(0, r.getHeight(), r.getWidth(), r.getHeight() - (S32)font->getLineHeight() - 1,
titlebar_focus_color % alpha, 0, TRUE);
}
}
}
@@ -1524,6 +1568,49 @@ void LLFloater::draw()
}
}
void LLFloater::drawShadow(LLPanel* panel)
{
S32 left = LLPANEL_BORDER_WIDTH;
S32 top = panel->getRect().getHeight() - LLPANEL_BORDER_WIDTH;
S32 right = panel->getRect().getWidth() - LLPANEL_BORDER_WIDTH;
S32 bottom = LLPANEL_BORDER_WIDTH;
static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0);
static LLColor4 shadow_color = LLUI::sColorsGroup->getColor("ColorDropShadow");
F32 shadow_offset = (F32)shadow_offset_S32;
if (!panel->isBackgroundOpaque())
{
shadow_offset *= 0.2f;
shadow_color.mV[VALPHA] *= 0.5f;
}
gl_drop_shadow(left, top, right, bottom,
shadow_color % getCurrentTransparency(),
ll_round(shadow_offset));
}
void LLFloater::updateTransparency(LLView* view, ETypeTransparency transparency_type)
{
if (view)
{
if (view->isCtrl())
{
static_cast<LLUICtrl*>(view)->setTransparencyType(transparency_type);
}
for (LLView* pChild : *view->getChildList())
{
if ((pChild->getChildCount()) || (pChild->isCtrl()))
updateTransparency(pChild, transparency_type);
}
}
}
void LLFloater::updateTransparency(ETypeTransparency transparency_type)
{
updateTransparency(this, transparency_type);
}
void LLFloater::setCanMinimize(BOOL can_minimize)
{
// if removing minimize/restore button programmatically,
@@ -2319,7 +2406,7 @@ LLRect LLFloaterView::getSnapRect() const
return snap_rect;
}
LLFloater *LLFloaterView::getFocusedFloater()
LLFloater *LLFloaterView::getFocusedFloater() const
{
for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it)
{
@@ -2332,7 +2419,7 @@ LLFloater *LLFloaterView::getFocusedFloater()
return NULL;
}
LLFloater *LLFloaterView::getFrontmost()
LLFloater *LLFloaterView::getFrontmost() const
{
for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it)
{
@@ -2345,7 +2432,7 @@ LLFloater *LLFloaterView::getFrontmost()
return NULL;
}
LLFloater *LLFloaterView::getBackmost()
LLFloater *LLFloaterView::getBackmost() const
{
LLFloater* back_most = NULL;
for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it)
@@ -2380,7 +2467,7 @@ void LLFloaterView::syncFloaterTabOrder()
}
}
LLFloater* LLFloaterView::getParentFloater(LLView* viewp)
LLFloater* LLFloaterView::getParentFloater(LLView* viewp) const
{
LLView* parentp = viewp->getParent();

View File

@@ -94,16 +94,19 @@ class LLFloater : public LLPanel
friend class LLFloaterView;
friend class LLMultiFloater;
public:
enum EFloaterButtons
enum EFloaterButton
{
BUTTON_CLOSE,
BUTTON_CLOSE = 0,
BUTTON_RESTORE,
BUTTON_MINIMIZE,
BUTTON_TEAR_OFF,
BUTTON_EDIT,
BUTTON_COUNT
};
// Load translations for tooltips for standard buttons
static void initClass();
LLFloater();
LLFloater(const std::string& name); //simple constructor for data-driven initialization
LLFloater( const std::string& name, const LLRect& rect, const std::string& title,
@@ -164,9 +167,9 @@ public:
void applyTitle();
const std::string& getCurrentTitle() const;
void setTitle( const std::string& title);
std::string getTitle();
std::string getTitle() const;
void setShortTitle( const std::string& short_title );
std::string getShortTitle();
std::string getShortTitle() const;
void setTitleVisible(bool visible);
virtual void setMinimized(BOOL b);
void moveResizeHandlesToFront();
@@ -174,8 +177,8 @@ public:
void addDependentFloater(LLHandle<LLFloater> dependent_handle, BOOL reposition = TRUE);
LLFloater* getDependee() { return (LLFloater*)mDependeeHandle.get(); }
void removeDependentFloater(LLFloater* dependent);
BOOL isMinimized() { return mMinimized; }
BOOL isFrontmost();
BOOL isMinimized() const { return mMinimized; }
virtual BOOL isFrontmost();
BOOL isDependent() { return !mDependeeHandle.isDead(); }
void setCanMinimize(BOOL can_minimize);
void setCanClose(BOOL can_close);
@@ -199,6 +202,7 @@ public:
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
virtual BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask);
virtual void draw();
virtual void drawShadow(LLPanel* panel);
virtual void onOpen() {}
@@ -244,6 +248,8 @@ public:
static BOOL getEditModeEnabled() { return sEditModeEnabled; }
static LLMultiFloater* getFloaterHost() {return sHostp; }
void updateTransparency(ETypeTransparency transparency_type);
void enableResizeCtrls(bool enable, bool width = true, bool height = true);
protected:
@@ -259,21 +265,29 @@ protected:
void destroy() { die(); } // Don't call this directly. You probably want to call close(). JC
private:
void setForeground(BOOL b); // called only by floaterview
void cleanupHandles(); // remove handles to dead floaters
void createMinimizeButton();
void updateButtons();
void buildButtons();
BOOL offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButtons index);
BOOL offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index);
void addResizeCtrls();
void layoutResizeCtrls();
static void updateActiveFloaterTransparency();
static void updateInactiveFloaterTransparency();
void updateTransparency(LLView* view, ETypeTransparency transparency_type);
LLRect mExpandedRect;
protected:
LLDragHandle* mDragHandle;
LLResizeBar* mResizeBar[4];
LLResizeHandle* mResizeHandle[4];
LLButton *mMinimizeButton;
LLButton* mButtons[BUTTON_COUNT];
private:
BOOL mCanTearOff;
BOOL mMinimized;
BOOL mForeground;
@@ -294,10 +308,7 @@ private:
handle_set_t mDependents;
bool mDragOnLeft;
BOOL mButtonsEnabled[BUTTON_COUNT];
protected:
LLButton* mButtons[BUTTON_COUNT];
private:
bool mButtonsEnabled[BUTTON_COUNT];
F32 mButtonScale;
BOOL mAutoFocus;
LLHandle<LLFloater> mSnappedTo;
@@ -344,7 +355,7 @@ public:
/*virtual*/ void draw();
/*virtual*/ LLRect getSnapRect() const;
void refresh();
/*virtual*/ void refresh();
void getNewFloaterPosition( S32* left, S32* top );
void resetStartingFloaterPosition();
@@ -373,10 +384,10 @@ public:
void minimizeAllChildren();
// </edit>
LLFloater* getFrontmost();
LLFloater* getBackmost();
LLFloater* getParentFloater(LLView* viewp);
LLFloater* getFocusedFloater();
LLFloater* getFrontmost() const;
LLFloater* getBackmost() const;
LLFloater* getParentFloater(LLView* viewp) const;
LLFloater* getFocusedFloater() const;
void syncFloaterTabOrder();
// Returns z order of child provided. 0 is closest, larger numbers

View File

@@ -33,10 +33,10 @@
const F32 FOCUS_FADE_TIME = 0.3f;
LLFocusableElement::LLFocusableElement()
: mFocusLostCallback(NULL),
mFocusReceivedCallback(NULL),
mFocusChangedCallback(NULL),
mTopLostCallback(NULL)
: mFocusLostCallback(nullptr),
mFocusReceivedCallback(nullptr),
mFocusChangedCallback(nullptr),
mTopLostCallback(nullptr)
{
}
@@ -146,14 +146,14 @@ struct LLFocusMgr::Impl
LLFocusMgr gFocusMgr;
LLFocusMgr::LLFocusMgr()
: mLockedView( NULL ),
mMouseCaptor( NULL ),
mKeyboardFocus( NULL ),
mLastKeyboardFocus( NULL ),
mDefaultKeyboardFocus( NULL ),
mLastDefaultKeyboardFocus( NULL ),
: mLockedView(nullptr ),
mMouseCaptor(nullptr ),
mKeyboardFocus(nullptr ),
mLastKeyboardFocus(nullptr ),
mDefaultKeyboardFocus(nullptr ),
mLastDefaultKeyboardFocus(nullptr ),
mKeystrokesOnly(FALSE),
mTopCtrl( NULL ),
mTopCtrl(nullptr ),
mAppHasFocus(TRUE), // Macs don't seem to notify us that we've gotten focus, so default to true
mImpl(new LLFocusMgr::Impl)
{
@@ -163,22 +163,22 @@ LLFocusMgr::~LLFocusMgr()
{
mImpl->mFocusHistory.clear();
delete mImpl;
mImpl = NULL;
mImpl = nullptr;
}
void LLFocusMgr::releaseFocusIfNeeded( const LLView* view )
{
if( childHasMouseCapture( view ) )
{
setMouseCapture( NULL );
setMouseCapture(nullptr );
}
if( childHasKeyboardFocus( view ))
{
if (view == mLockedView)
{
mLockedView = NULL;
setKeyboardFocus( NULL );
mLockedView = nullptr;
setKeyboardFocus(nullptr );
}
else
{
@@ -188,7 +188,7 @@ void LLFocusMgr::releaseFocusIfNeeded( const LLView* view )
if( childIsTopCtrl( view ) )
{
setTopCtrl( NULL );
setTopCtrl(nullptr);
}
}
@@ -197,7 +197,7 @@ void LLFocusMgr::restoreDefaultKeyboardFocus(LLFocusableElement* current_default
if (current_default_focus && mDefaultKeyboardFocus == current_default_focus)
{
setDefaultKeyboardFocus(mLastDefaultKeyboardFocus);
mLastDefaultKeyboardFocus = NULL;
mLastDefaultKeyboardFocus = nullptr;
}
}
@@ -206,7 +206,7 @@ void LLFocusMgr::restoreKeyboardFocus(LLFocusableElement* current_focus)
if (current_focus && mKeyboardFocus == current_focus)
{
setKeyboardFocus(mLastKeyboardFocus);
mLastKeyboardFocus = NULL;
mLastKeyboardFocus = nullptr;
}
}
@@ -219,7 +219,7 @@ void LLFocusMgr::setKeyboardFocus(LLFocusableElement* new_focus, BOOL lock, BOOL
focus_dirty = false;
if (mLockedView &&
(new_focus == NULL ||
(new_focus == nullptr ||
(new_focus != mLockedView
&& dynamic_cast<LLView*>(new_focus)
&& !dynamic_cast<LLView*>(new_focus)->hasAncestor(mLockedView))))
@@ -291,7 +291,7 @@ void LLFocusMgr::setKeyboardFocus(LLFocusableElement* new_focus, BOOL lock, BOOL
// If we've got a default keyboard focus, and the caller is
// releasing keyboard focus, move to the default.
if (mDefaultKeyboardFocus != NULL && mKeyboardFocus == NULL)
if (mDefaultKeyboardFocus != nullptr && mKeyboardFocus == nullptr)
{
mDefaultKeyboardFocus->setFocus(TRUE);
}
@@ -343,7 +343,7 @@ BOOL LLFocusMgr::childHasKeyboardFocus(const LLView* parent ) const
// Returns TRUE is parent or any descedent of parent is the mouse captor.
BOOL LLFocusMgr::childHasMouseCapture( const LLView* parent ) const
{
if( mMouseCaptor && dynamic_cast<LLView*>(mMouseCaptor) != NULL )
if( mMouseCaptor && dynamic_cast<LLView*>(mMouseCaptor) != nullptr )
{
LLView* captor_view = (LLView*)mMouseCaptor;
while( captor_view )
@@ -364,23 +364,24 @@ void LLFocusMgr::removeKeyboardFocusWithoutCallback( const LLFocusableElement* f
// in order to unlock it
if (focus == mLockedView)
{
mLockedView = NULL;
mLockedView = nullptr;
}
if (mKeyboardFocus == focus)
{
mKeyboardFocus = NULL;
mKeyboardFocus = nullptr;
}
if (mLastKeyboardFocus == focus)
{
mLastKeyboardFocus = NULL;
mLastKeyboardFocus = nullptr;
}
if (mDefaultKeyboardFocus == focus)
{
mDefaultKeyboardFocus = NULL;
mDefaultKeyboardFocus = nullptr;
}
if (mLastDefaultKeyboardFocus == focus)
{
mLastDefaultKeyboardFocus = NULL;
mLastDefaultKeyboardFocus = nullptr;
}
}
@@ -430,7 +431,7 @@ void LLFocusMgr::removeMouseCaptureWithoutCallback( const LLMouseHandler* captor
{
if( mMouseCaptor == captor )
{
mMouseCaptor = NULL;
mMouseCaptor = nullptr;
}
}
@@ -470,7 +471,7 @@ void LLFocusMgr::removeTopCtrlWithoutCallback( const LLUICtrl* top_view )
{
if( mTopCtrl == top_view )
{
mTopCtrl = NULL;
mTopCtrl = nullptr;
}
}
@@ -481,7 +482,7 @@ void LLFocusMgr::lockFocus()
void LLFocusMgr::unlockFocus()
{
mLockedView = NULL;
mLockedView = nullptr;
}
F32 LLFocusMgr::getFocusFlashAmt() const
@@ -516,7 +517,7 @@ void LLFocusMgr::setAppHasFocus(BOOL focus)
// release focus from "top ctrl"s, which generally hides them
if (!focus && mTopCtrl)
{
setTopCtrl(NULL);
setTopCtrl(nullptr);
}
mAppHasFocus = focus;
}
@@ -532,7 +533,7 @@ LLUICtrl* LLFocusMgr::getLastFocusForGroup(LLView* subtree_root) const
return static_cast<LLUICtrl*>(found_it->second.get());
}
}
return NULL;
return nullptr;
}
void LLFocusMgr::clearLastFocusForGroup(LLView* subtree_root)

View File

@@ -196,14 +196,16 @@ void LLPanel::draw()
// draw background
if( mBgVisible )
{
LLRect local_rect = getLocalRect();
F32 alpha = getCurrentTransparency();
LLRect&& local_rect = getLocalRect();
if (mBgOpaque )
{
gl_rect_2d( local_rect, mBgColorOpaque );
gl_rect_2d( local_rect, mBgColorOpaque % alpha);
}
else
{
gl_rect_2d( local_rect, mBgColorAlpha );
gl_rect_2d( local_rect, mBgColorAlpha % alpha);
}
}

View File

@@ -38,6 +38,9 @@
static LLRegisterWidget<LLUICtrl> r("ui_ctrl");
F32 LLUICtrl::sActiveControlTransparency = 1.0f;
F32 LLUICtrl::sInactiveControlTransparency = 1.0f;
LLUICtrl::CallbackParam::CallbackParam()
: name("name"),
function_name("function"),
@@ -94,25 +97,26 @@ const LLUICtrl::Params& LLUICtrl::getDefaultParams()
LLUICtrl::LLUICtrl(const LLUICtrl::Params& p, const LLViewModelPtr& viewmodel)
: LLView(p),
mCommitSignal(nullptr),
mValidateSignal(nullptr),
mMouseEnterSignal(nullptr),
mMouseLeaveSignal(nullptr),
mMouseDownSignal(nullptr),
mMouseUpSignal(nullptr),
mRightMouseDownSignal(nullptr),
mRightMouseUpSignal(nullptr),
mDoubleClickSignal(nullptr),
mViewModel(viewmodel),
mEnabledControlVariable(nullptr),
mDisabledControlVariable(nullptr),
mMakeVisibleControlVariable(nullptr),
mMakeInvisibleControlVariable(nullptr),
mIsChrome(FALSE),
mRequestsFront(p.requests_front),
mTabStop(TRUE),
mTentative(FALSE),
mViewModel(viewmodel),
mEnabledControlVariable(NULL),
mDisabledControlVariable(NULL),
mMakeVisibleControlVariable(NULL),
mMakeInvisibleControlVariable(NULL),
mCommitSignal(NULL),
mValidateSignal(NULL),
mMouseEnterSignal(NULL),
mMouseLeaveSignal(NULL),
mMouseDownSignal(NULL),
mMouseUpSignal(NULL),
mRightMouseDownSignal(NULL),
mRightMouseUpSignal(NULL),
mDoubleClickSignal(NULL),
mCommitOnReturn(FALSE)
mCommitOnReturn(FALSE),
mTransparencyType(TT_DEFAULT)
{
}
@@ -210,20 +214,21 @@ LLUICtrl::LLUICtrl(const std::string& name, const LLRect rect, BOOL mouse_opaque
mTabStop( TRUE ),
mTentative( FALSE ),
mViewModel(LLViewModelPtr(new LLViewModel)),
mEnabledControlVariable(NULL),
mDisabledControlVariable(NULL),
mMakeVisibleControlVariable(NULL),
mMakeInvisibleControlVariable(NULL),
mCommitSignal(NULL),
mValidateSignal(NULL),
mMouseEnterSignal(NULL),
mMouseLeaveSignal(NULL),
mMouseDownSignal(NULL),
mMouseUpSignal(NULL),
mRightMouseDownSignal(NULL),
mRightMouseUpSignal(NULL),
mDoubleClickSignal(NULL),
mCommitOnReturn(FALSE)
mEnabledControlVariable(nullptr),
mDisabledControlVariable(nullptr),
mMakeVisibleControlVariable(nullptr),
mMakeInvisibleControlVariable(nullptr),
mCommitSignal(nullptr),
mValidateSignal(nullptr),
mMouseEnterSignal(nullptr),
mMouseLeaveSignal(nullptr),
mMouseDownSignal(nullptr),
mMouseUpSignal(nullptr),
mRightMouseDownSignal(nullptr),
mRightMouseUpSignal(nullptr),
mDoubleClickSignal(nullptr),
mCommitOnReturn(FALSE),
mTransparencyType(TT_DEFAULT)
{
if(commit_callback)
setCommitCallback(commit_callback);
@@ -338,6 +343,8 @@ BOOL LLUICtrl::handleMouseDown(S32 x, S32 y, MASK mask)
{
(*mMouseDownSignal)(this,x,y,mask);
}
LL_DEBUGS() << "LLUICtrl::handleMousedown - handled is returning as: " << handled << " " << LL_ENDL;
return handled;
}
@@ -349,6 +356,7 @@ BOOL LLUICtrl::handleMouseUp(S32 x, S32 y, MASK mask)
{
(*mMouseUpSignal)(this,x,y,mask);
}
return handled;
}
@@ -466,7 +474,7 @@ void LLUICtrl::setEnabledControlVariable(LLControlVariable* control)
if (mEnabledControlVariable)
{
mEnabledControlConnection.disconnect(); // disconnect current signal
mEnabledControlVariable = NULL;
mEnabledControlVariable = nullptr;
}
if (control)
{
@@ -481,7 +489,7 @@ void LLUICtrl::setDisabledControlVariable(LLControlVariable* control)
if (mDisabledControlVariable)
{
mDisabledControlConnection.disconnect(); // disconnect current signal
mDisabledControlVariable = NULL;
mDisabledControlVariable = nullptr;
}
if (control)
{
@@ -496,7 +504,7 @@ void LLUICtrl::setMakeVisibleControlVariable(LLControlVariable* control)
if (mMakeVisibleControlVariable)
{
mMakeVisibleControlConnection.disconnect(); // disconnect current signal
mMakeVisibleControlVariable = NULL;
mMakeVisibleControlVariable = nullptr;
}
if (control)
{
@@ -511,7 +519,7 @@ void LLUICtrl::setMakeInvisibleControlVariable(LLControlVariable* control)
if (mMakeInvisibleControlVariable)
{
mMakeInvisibleControlConnection.disconnect(); // disconnect current signal
mMakeInvisibleControlVariable = NULL;
mMakeInvisibleControlVariable = nullptr;
}
if (control)
{
@@ -526,7 +534,12 @@ bool LLUICtrl::controlListener(const LLSD& newvalue, LLHandle<LLUICtrl> handle,
LLUICtrl* ctrl = handle.get();
if (ctrl)
{
if (type == "enabled")
if (type == "value")
{
ctrl->setValue(newvalue);
return true;
}
else if (type == "enabled")
{
ctrl->setEnabled(newvalue.asBoolean());
return true;
@@ -565,19 +578,19 @@ BOOL LLUICtrl::setLabelArg( const std::string& key, const LLStringExplicit& text
// virtual
LLCtrlSelectionInterface* LLUICtrl::getSelectionInterface()
{
return NULL;
return nullptr;
}
// virtual
LLCtrlListInterface* LLUICtrl::getListInterface()
{
return NULL;
return nullptr;
}
// virtual
LLCtrlScrollInterface* LLUICtrl::getScrollInterface()
{
return NULL;
return nullptr;
}
BOOL LLUICtrl::hasFocus() const
@@ -603,7 +616,7 @@ void LLUICtrl::setFocus(BOOL b)
{
if( gFocusMgr.childHasKeyboardFocus(this))
{
gFocusMgr.setKeyboardFocus( NULL );
gFocusMgr.setKeyboardFocus(nullptr );
}
}
}
@@ -1008,11 +1021,11 @@ LLUICtrl* LLUICtrl::getParentUICtrl() const
}
// *TODO: Deprecate; for backwards compatability only:
boost::signals2::connection LLUICtrl::setCommitCallback( boost::function<void (LLUICtrl*,void*)> cb, void* data)
boost::signals2::connection LLUICtrl::setCommitCallback( std::function<void (LLUICtrl*,void*)> cb, void* data)
{
return setCommitCallback( boost::bind(cb, _1, data));
}
boost::signals2::connection LLUICtrl::setValidateBeforeCommit( boost::function<bool (const LLSD& data)> cb )
boost::signals2::connection LLUICtrl::setValidateBeforeCommit( std::function<bool (const LLSD& data)> cb )
{
if (!mValidateSignal) mValidateSignal = new enable_signal_t();
return mValidateSignal->connect(boost::bind(cb, _2));
@@ -1030,7 +1043,6 @@ BOOL LLUICtrl::getTentative() const
return mTentative;
}
// virtual
void LLUICtrl::setColor(const LLColor4& color)
{ }
@@ -1047,6 +1059,37 @@ void LLUICtrl::setMinValue(LLSD min_value)
void LLUICtrl::setMaxValue(LLSD max_value)
{ }
F32 LLUICtrl::getCurrentTransparency()
{
F32 alpha = 0;
switch(mTransparencyType)
{
case TT_DEFAULT:
alpha = getDrawContext().mAlpha;
break;
case TT_ACTIVE:
alpha = sActiveControlTransparency;
break;
case TT_INACTIVE:
alpha = sInactiveControlTransparency;
break;
case TT_FADING:
alpha = sInactiveControlTransparency / 2.f;
break;
}
return alpha;
}
void LLUICtrl::setTransparencyType(ETypeTransparency type)
{
mTransparencyType = type;
}
boost::signals2::connection LLUICtrl::setCommitCallback(const CommitCallbackParam& cb)
{
return setCommitCallback(initCommitCallback(cb));

View File

@@ -34,16 +34,11 @@
#ifndef LL_LLUICTRL_H
#define LL_LLUICTRL_H
//#include "llboost.h"
#include "llrect.h"
#include "llsd.h"
#include "llregistry.h"
#ifndef BOOST_FUNCTION_HPP_INCLUDED
#include <boost/function.hpp>
#define BOOST_FUNCTION_HPP_INCLUDED
#endif
#include <boost/signals2.hpp>
#include "llinitparam.h"
#include "llview.h"
#include "llviewmodel.h" // *TODO move dependency to .cpp file
@@ -128,6 +123,13 @@ public:
Params();
};
enum ETypeTransparency
{
TT_DEFAULT,
TT_ACTIVE, // focused floater
TT_INACTIVE, // other floaters
TT_FADING, // fading toast
};
/*virtual*/ ~LLUICtrl();
void initFromParams(const Params& p);
@@ -147,26 +149,26 @@ public:
// We shouldn't ever need to set this directly
//virtual void setViewModel(const LLViewModelPtr&);
virtual BOOL postBuild();
BOOL postBuild() override;
public:
// LLView interface
/*virtual*/ void initFromXML(LLXMLNodePtr node, LLView* parent);
/*virtual*/ LLXMLNodePtr getXML(bool save_children = true) const;
/*virtual*/ BOOL setLabelArg( const std::string& key, const LLStringExplicit& text );
/*virtual*/ BOOL isCtrl() const;
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL canFocusChildren() const;
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL setLabelArg( const std::string& key, const LLStringExplicit& text ) override;
/*virtual*/ BOOL isCtrl() const override;
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask) override;
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL canFocusChildren() const override;
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask) override;
// From LLFocusableElement
/*virtual*/ void setFocus( BOOL b );
/*virtual*/ BOOL hasFocus() const;
/*virtual*/ void setFocus( BOOL b ) override;
/*virtual*/ BOOL hasFocus() const override;
// New virtuals
@@ -207,11 +209,17 @@ public:
// Clear any user-provided input (text in a text editor, checked checkbox,
// selected radio button, etc.). Defaults to no-op.
virtual void clear();
virtual void setColor(const LLColor4& color);
virtual void setAlpha(F32 alpha);
virtual void setMinValue(LLSD min_value);
virtual void setMaxValue(LLSD max_value);
F32 getCurrentTransparency();
void setTransparencyType(ETypeTransparency type);
ETypeTransparency getTransparencyType() const {return mTransparencyType;}
BOOL focusNextItem(BOOL text_entry_only);
BOOL focusPrevItem(BOOL text_entry_only);
virtual // Singu Note: focusFirstItem is overridden for our old chat ui to prevent focusing on topmost uictrls.
@@ -248,8 +256,8 @@ public:
boost::signals2::connection setDoubleClickCallback( const mouse_signal_t::slot_type& cb );
// *TODO: Deprecate; for backwards compatability only:
boost::signals2::connection setCommitCallback( boost::function<void (LLUICtrl*,void*)> cb, void* data);
boost::signals2::connection setValidateBeforeCommit( boost::function<bool (const LLSD& data)> cb );
boost::signals2::connection setCommitCallback( std::function<void (LLUICtrl*,void*)> cb, void* data);
boost::signals2::connection setValidateBeforeCommit( std::function<bool (const LLSD& data)> cb );
static LLView* fromXML(LLXMLNodePtr node, LLView* parent, class LLUICtrlFactory* factory);
@@ -266,9 +274,13 @@ public:
template <typename F, typename DERIVED> class CallbackRegistry : public LLRegistrySingleton<std::string, F, DERIVED >
{};
class CommitCallbackRegistry : public CallbackRegistry<commit_callback_t, CommitCallbackRegistry>{};
class CommitCallbackRegistry : public CallbackRegistry<commit_callback_t, CommitCallbackRegistry>
{
};
// the enable callback registry is also used for visiblity callbacks
class EnableCallbackRegistry : public CallbackRegistry<enable_callback_t, EnableCallbackRegistry>{};
class EnableCallbackRegistry : public CallbackRegistry<enable_callback_t, EnableCallbackRegistry>
{
};
protected:
@@ -297,6 +309,10 @@ protected:
boost::signals2::connection mMakeVisibleControlConnection;
LLControlVariable* mMakeInvisibleControlVariable;
boost::signals2::connection mMakeInvisibleControlConnection;
static F32 sActiveControlTransparency;
static F32 sInactiveControlTransparency;
private:
BOOL mIsChrome;
@@ -304,6 +320,8 @@ private:
BOOL mTabStop;
BOOL mTentative;
ETypeTransparency mTransparencyType;
bool mCommitOnReturn;
class DefaultTabGroupFirstSorter;

View File

@@ -1176,17 +1176,6 @@ Found in Advanced->Rendering->Info Displays</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>FloaterUnfocusedBackgroundOpaque</key>
<map>
<key>Comment</key>
<string>Disables floaters going transparent when not in focus, may conflict with some skins, though.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>FSSynchronizeTextureMaps</key>
<map>
<key>Comment</key>
@@ -2577,6 +2566,17 @@ This should be as low as possible, but too low may break functionality</string>
<key>Value</key>
<real>300.0</real>
</map>
<key>ActiveFloaterTransparency</key>
<map>
<key>Comment</key>
<string>Transparency of active floaters (floaters that have focus)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>1</real>
</map>
<key>AdvanceSnapshot</key>
<map>
<key>Comment</key>
@@ -9312,6 +9312,17 @@ This should be as low as possible, but too low may break functionality</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>InactiveFloaterTransparency</key>
<map>
<key>Comment</key>
<string>Transparency of inactive floaters (floaters that have no focus)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>1</real>
</map>
<key>InBandwidth</key>
<map>
<key>Comment</key>

View File

@@ -128,7 +128,8 @@ void LLPrefsAscentVan::refreshValues()
mCustomizeAnim = gSavedSettings.getBOOL("LiruCustomizeAnim");
mAnnounceSnapshots = gSavedSettings.getBOOL("AnnounceSnapshots");
mAnnounceStreamMetadata = gSavedSettings.getBOOL("AnnounceStreamMetadata");
mUnfocusedFloatersOpaque = gSavedSettings.getBOOL("FloaterUnfocusedBackgroundOpaque");
mInactiveFloaterTransparency = gSavedSettings.getF32("InactiveFloaterTransparency");
mActiveFloaterTransparency = gSavedSettings.getF32("ActiveFloaterTransparency");
mCompleteNameProfiles = gSavedSettings.getBOOL("SinguCompleteNameProfiles");
mScriptErrorsStealFocus = gSavedSettings.getBOOL("LiruScriptErrorsStealFocus");
mConnectToNeighbors = gSavedSettings.getBOOL("AlchemyConnectToNeighbors");
@@ -202,7 +203,8 @@ void LLPrefsAscentVan::cancel()
gSavedSettings.setBOOL("LiruCustomizeAnim", mCustomizeAnim);
gSavedSettings.setBOOL("AnnounceSnapshots", mAnnounceSnapshots);
gSavedSettings.setBOOL("AnnounceStreamMetadata", mAnnounceStreamMetadata);
gSavedSettings.setBOOL("FloaterUnfocusedBackgroundOpaque", mUnfocusedFloatersOpaque);
gSavedSettings.setF32("InactiveFloaterTransparency", mInactiveFloaterTransparency);
gSavedSettings.setF32("ActiveFloaterTransparency", mActiveFloaterTransparency);
gSavedSettings.setBOOL("SinguCompleteNameProfiles", mCompleteNameProfiles);
gSavedSettings.setBOOL("LiruScriptErrorsStealFocus", mScriptErrorsStealFocus);
gSavedSettings.setBOOL("AlchemyConnectToNeighbors", mConnectToNeighbors);

View File

@@ -62,7 +62,7 @@ private:
bool mCustomizeAnim;
bool mAnnounceSnapshots;
bool mAnnounceStreamMetadata;
bool mUnfocusedFloatersOpaque;
F32 mInactiveFloaterTransparency, mActiveFloaterTransparency;
bool mCompleteNameProfiles;
bool mScriptErrorsStealFocus;
bool mConnectToNeighbors;

View File

@@ -773,7 +773,6 @@ bool LLAppViewer::init()
writeSystemInfo();
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
@@ -818,7 +817,14 @@ bool LLAppViewer::init()
LLUrlAction::setOpenURLInternalCallback(boost::bind(&LLWeb::loadURLInternal, _1, LLStringUtil::null, LLStringUtil::null));
LLUrlAction::setOpenURLExternalCallback(boost::bind(&LLWeb::loadURLExternal, _1, true, LLStringUtil::null));
LLUrlAction::setExecuteSLURLCallback(&LLURLDispatcher::dispatchFromTextEditor);
LL_INFOS("InitInfo") << "UI initialization is done." << LL_ENDL ;
// Load translations for tooltips
LLFloater::initClass();
/////////////////////////////////////////////////
LLToolMgr::getInstance(); // Initialize tool manager if not already instantiated
/////////////////////////////////////////////////
@@ -884,7 +890,7 @@ bool LLAppViewer::init()
std::ostringstream msg;
msg << LLTrans::getString("MBUnableToAccessFile");
OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK);
return 1;
return true;
}
LL_INFOS("InitInfo") << "Cache initialization is done." << LL_ENDL ;
@@ -923,10 +929,9 @@ bool LLAppViewer::init()
msg,
LLStringUtil::null,
OSMB_OK);
return 0;
return false;
}
#if (_M_IX86_FP > 1 || defined(__SSE2__))
// Without SSE2 support we will crash almost immediately, warn here.
if (!gSysCPU.hasSSE2())
{
@@ -938,23 +943,8 @@ bool LLAppViewer::init()
msg,
LLStringUtil::null,
OSMB_OK);
return 0;
return false;
}
#elif (_M_IX86_FP == 1 || defined(__SSE__))
// Without SSE support we will crash almost immediately, warn here.
if (!gSysCPU.hasSSE())
{
// can't use an alert here since we're exiting and
// all hell breaks lose.
std::string msg = LNotificationTemplates::instance().getGlobalString("UnsupportedCPUSSE2");
LLStringUtil::format(msg,LLTrans::getDefaultArgs());
OSMessageBox(
msg,
LLStringUtil::null,
OSMB_OK);
return 0;
}
#endif
// alert the user if they are using unsupported hardware
if(!gSavedSettings.getBOOL("AlertedUnsupportedHardware"))

View File

@@ -11,7 +11,6 @@
<check_box label="Turn around when walking backwards" tool_tip="Certain AOs may turn you around even with this disabled." name="turn_around"/>
<check_box label="Announce when someone takes a snapshot" tool_tip="Won't announce for people who hide the fact that they are taking a snapshot." name="announce_snapshots"/>
<check_box label="Announce music stream's metadata in local chat when tuned in" tool_tip="When a new song comes on, a message will be displayed in local chat with available information about the track." name="announce_stream_metadata"/>
<check_box label="Make unfocused floaters opaque (requires refocusing each floater to take effect)" tool_tip="When a floater loses focus, it won't turn transparent with this enabled. This may conflict with some skins." name="unfocused_floaters_opaque"/>
<check_box label="Zeige komplette Namen (Display Namen und Benutzernamen) in Profilen" tool_tip="Disregards the global name display settings, will not work if display names are switched off." name="complete_name_profiles"/>
<check_box label="Let scripts steal focus when they can't compile due to errors" name="script_errors_steal_focus"/>
</panel>

View File

@@ -140,6 +140,33 @@
<string name="SLappAgentPay">Bezahlen</string>
<string name="SLappAgentOfferTeleport">Teleportangebot an</string>
<string name="SLappAgentRequestFriend">Freundschaftsangebot</string>
<string name="SLappAgentRemoveFriend">
Entfernen von Freunden
</string>
<string name="BUTTON_CLOSE_DARWIN">
Schließen (⌘W)
</string>
<string name="BUTTON_CLOSE_WIN">
Schließen (Strg+W)
</string>
<string name="BUTTON_CLOSE_CHROME">
Schließen
</string>
<string name="BUTTON_RESTORE">
Wiederherstellen
</string>
<string name="BUTTON_MINIMIZE">
Minimieren
</string>
<string name="BUTTON_TEAR_OFF">
Abnehmen
</string>
<string name="BUTTON_DOCK">
Andocken
</string>
<string name="BUTTON_HELP">
Hilfe anzeigen
</string>
<!-- searching - generic -->
<string name="Searching">Suchen...</string>

View File

@@ -12,13 +12,14 @@
<check_box bottom_delta="-20" control_name="TurnAroundWhenWalkingBackwards" follows="top" height="16" label="Turn around when walking backwards" tool_tip="Certain AOs may turn you around even with this disabled." name="turn_around"/>
<check_box bottom_delta="-20" control_name="AnnounceSnapshots" follows="top" height="16" label="Announce when someone takes a snapshot" tool_tip="Won't announce for people who hide the fact that they are taking a snapshot." name="announce_snapshots"/>
<check_box bottom_delta="-20" control_name="AnnounceStreamMetadata" follows="top" height="16" label="Announce music stream's metadata in local chat when tuned in" tool_tip="When a new song comes on, a message will be displayed in local chat with available information about the track." name="announce_stream_metadata"/>
<check_box bottom_delta="-20" control_name="FloaterUnfocusedBackgroundOpaque" follows="top" height="16" label="Make unfocused floaters opaque (requires refocusing each floater to take effect)" tool_tip="When a floater loses focus, it won't turn transparent with this enabled. This may conflict with some skins." name="unfocused_floaters_opaque"/>
<check_box bottom_delta="-20" control_name="SinguCompleteNameProfiles" follows="top" height="16" label="Show complete names (display name and username) in profiles" tool_tip="Disregards the global name display settings, will not work if display names are switched off." name="complete_name_profiles"/>
<check_box bottom_delta="-20" control_name="LiruScriptErrorsStealFocus" follows="top" height="16" label="Let scripts steal focus when they can't compile due to errors" name="script_errors_steal_focus"/>
<check_box bottom_delta="-20" control_name="AlchemyConnectToNeighbors" follows="top" height="16" label="Connect to neighboring regions" name="connect_to_neighbors"/>
<check_box bottom_delta="-20" follows="top" label="Auto-minimize region restart notice" name="region_restart_minimized" control_name="LiruRegionRestartMinimized" tool_tip="Useful for sim owners and people who need to pack up before leaving"/>
<text bottom_delta="-16" follows="top" name="UISndRestartText">Sound played when regions will restart:</text>
<line_editor bottom_delta="-6" left_delta="222" follows="top" width="209" height="16" name="UISndRestart" tool_tip="Empty for no sound to play"/>
<spinner bottom_delta="-20" left_delta="-222" decimal_digits="3" follows="top" height="16" increment="0.05" label="Inactive Transparency" tool_tip="When a floater loses focus, this controls how much its opacity changes." label_width="120" max_val="5" min_val="0" name="Inactive Transparency" width="200" control_name="InactiveFloaterTransparency"/>
<spinner bottom_delta="0" left_delta="220" decimal_digits="3" follows="top" height="16" increment="0.05" label="Active Transparency" tool_tip="When a floater is in focus, this controls how much its opacity changes." label_width="110" max_val="5" min_val="0" name="Active Transparency" width="190" control_name="ActiveFloaterTransparency"/>
</panel>
<panel border="true" left="1" bottom="-190" height="180" width="500" label="Tags/Colors" name="TagsColors">
<!-- Client tag options -->

View File

@@ -154,6 +154,18 @@ Make sure you entered the correct Login URI. An example of a Login URI is: \"htt
<string name="SLappAgentPay">Pay</string>
<string name="SLappAgentOfferTeleport">Offer Teleport to </string>
<string name="SLappAgentRequestFriend">Friend Request </string>
<string name="SLappAgentRemoveFriend">Friend Removal</string>
<!-- ButtonToolTips, llfloater.cpp -->
<string name="BUTTON_CLOSE_DARWIN">Close (&#8984;W)</string>
<string name="BUTTON_CLOSE_WIN">Close (Ctrl+W)</string>
<string name="BUTTON_CLOSE_CHROME">Close</string>
<string name="BUTTON_RESTORE">Restore</string>
<string name="BUTTON_MINIMIZE">Minimize</string>
<string name="BUTTON_TEAR_OFF">Tear Off</string>
<string name="BUTTON_DOCK">Dock</string>
<string name="BUTTON_HELP">Show Help</string>
<string name="BUTTON_EDIT">Edit</string>
<!-- searching - generic -->
<string name="Searching">Searching...</string>

View File

@@ -12,7 +12,6 @@
<check_box label="Dar la vuelta al caminar hacía atrás" tool_tip="Es posible que algunos AOs puedan darte vuelta incluso con esta opción deshabilitada." name="turn_around"/>
<check_box label="Anunciar cuando alguien toma una foto" tool_tip="No avisa si el usuario ha deshabilitado en su visor el no anunciar que está tomando fotografías." name="announce_snapshots"/>
<check_box label="Mostrar los metadatos de la música en stream en el chat local cuando es activada" tool_tip="Cuando comienza una nueva canción, se mostrará un mensaje en el chat local con la información disponible del tema." name="announce_stream_metadata"/>
<check_box label="Mostrar opacas las ventanas flotantes sin foco (requiere que se active en foco cada flotante para tener efecto)" tool_tip="Cuando un flotante pierde el foco, no se volverá transparente con esta opción habilitada. Esto puede causar conflictos con algunas pieles del visor." name="unfocused_floaters_opaque"/>
<check_box label="Mostrar nombres completos (Nombres mostrados y nombres de usuario) en perfiles" tool_tip="Sin importar la configuración global del mostrado de nombres, no funcionará si los nombres mostrados están desactivados." name="complete_name_profiles"/>
<check_box label="Permitir a los scripts apropiarse del foco cuando no se puedan compilar debido a errores" name="script_errors_steal_focus"/>
<check_box label="Conectarse con regiones contiguas" name="connect_to_neighbors"/>

View File

@@ -148,6 +148,33 @@ Asegurate que has ingresado el URI de inicio de sesión correcto. Un ejemplo de
<string name="SLappAgentPay">Pagar</string>
<string name="SLappAgentOfferTeleport">Ofrecer Teleporte a</string>
<string name="SLappAgentRequestFriend">Ofrecer Amistad</string>
<string name="SLappAgentRemoveFriend">
Eliminación de amigos
</string>
<string name="BUTTON_CLOSE_DARWIN">
Cerrar (⌘W)
</string>
<string name="BUTTON_CLOSE_WIN">
Cerrar (Ctrl+W)
</string>
<string name="BUTTON_CLOSE_CHROME">
Cerrar
</string>
<string name="BUTTON_RESTORE">
Maximizar
</string>
<string name="BUTTON_MINIMIZE">
Minimizar
</string>
<string name="BUTTON_TEAR_OFF">
Separar la ventana
</string>
<string name="BUTTON_DOCK">
Fijar
</string>
<string name="BUTTON_HELP">
Ver la Ayuda
</string>
<!-- searching - generic -->
<string name="Searching">Buscando...</string>

View File

@@ -12,7 +12,6 @@
<check_box label="Pivote l'avatar quand on marche en arriere" tool_tip="Certains AO peuvent empecher la fontion." name="turn_around"/>
<check_box label="Préviens quand quelqu'un prend une photo" tool_tip="Sauf si la personne a elle même choisi le mode silencieux." name="announce_snapshots"/>
<check_box label="Annonce les titres des chansons dans le chat local" tool_tip="" name="announce_stream_metadata"/>
<check_box label="Garder les menus flottants opaques en arrière plan (Cliquer une fois en 1er plan pour activer)" tool_tip="peux poser des conflits avec certains thèmes (skin viewers)." name="unfocused_floaters_opaque"/>
<check_box label="Montrer les noms complets : display + ancient names dans les profils" tool_tip="Ne fonctionnera pas si les display sont désactivés dans le menu général." name="complete_name_profiles"/>
<check_box label="Garder les scripts en premier plan quand ils ne peuvent pas être compilés suite a une erreur" name="script_errors_steal_focus"/>
<check_box label="Se connecter aux régions voisines" name="connect_to_neighbors"/>

View File

@@ -133,6 +133,176 @@
<string name="TooltipMustSingleDrop">
Solo un singolo oggetto può essere creato qui
</string>
<string name="TooltipTooManyWearables">
Non puoi indossare una cartella che contiene più di [AMOUNT] elementi. Per modificare questo limite, accedi ad Avanzate &gt; Mostra impostazioni di debug &gt; WearFolderLimit.
</string>
<string name="TooltipPrice" value="L$ [AMOUNT]:"/>
<string name="TooltipSLIcon">
Questo link porta a una pagina nel dominio ufficiale SecondLife.com o LindenLab.com.
</string>
<string name="TooltipOutboxDragToWorld">
Non puoi rezzare articoli dalla cartella degli annunci di Marketplace
</string>
<string name="TooltipOutboxWorn">
Non puoi inserire nella cartella degli annunci in Marketplace gli articoli che indossi
</string>
<string name="TooltipOutboxFolderLevels">
La profondità delle caselle nidificate è maggiore di [AMOUNT]. Diminuisci la profondità delle cartelle nidificate; se necessario, raggruppa gli articoli.
</string>
<string name="TooltipOutboxTooManyFolders">
Il numero di sottocartelle è maggiore di [AMOUNT]. Diminuisci il numero delle cartelle nel tuo annuncio; se necessario, raggruppa gli articoli.
</string>
<string name="TooltipOutboxTooManyObjects">
Il numero di articoli è maggiore di [AMOUNT]. Per vendere più di [AMOUNT] articoli in un annuncio, devi raggruppare alcuni di essi.
</string>
<string name="TooltipOutboxTooManyStockItems">
Il numero di articoli in magazzino è maggiore di [AMOUNT].
</string>
<string name="TooltipOutboxCannotDropOnRoot">
Puoi trascinare elementi o cartelle solo nelle schede TUTTI o NON ASSOCIATO. Seleziona una di quelle schede e sposta nuovamente gli elementi o le cartelle.
</string>
<string name="TooltipOutboxNoTransfer">
Almeno uno di questi oggetti non può essere venduto o trasferito
</string>
<string name="TooltipOutboxNotInInventory">
Puoi aggiungere a Marketplace solo gli articoli nel tuo inventario
</string>
<string name="TooltipOutboxLinked">
Non puoi inserire cartelle o articoli collegati tramite link nel Marketplace
</string>
<string name="TooltipOutboxCallingCard">
Non puoi inserire biglietti da visita in Marketplace
</string>
<string name="TooltipOutboxDragActive">
non puoi muovere un annuncio attivo
</string>
<string name="TooltipOutboxCannotMoveRoot">
Non puoi spostare la cartella principale degli annunci di Marketplace
</string>
<string name="TooltipOutboxMixedStock">
Tutti gli articoli in una cartella di magazzino devono essere dello stesso tipo e con le stesse autorizzazioni
</string>
<string name="TooltipDragOntoOwnChild">
Non puoi spostare una cartella nella relativa cartella secondaria
</string>
<string name="TooltipDragOntoSelf">
Non puoi spostare una cartella in se stessa
</string>
<string name="TooltipHttpUrl">
Clicca per visitare questa pagina web
</string>
<string name="TooltipSLURL">
Clicca per avere maggiori informazioni sul luogo
</string>
<string name="TooltipAgentUrl">
Clicca per vedere il profilo di questo residente
</string>
<string name="TooltipAgentInspect">
Ulteriori informazioni su questo Residente
</string>
<string name="TooltipAgentMute">
Clicca per disattivare l&apos;audio di questo residente
</string>
<string name="TooltipAgentUnmute">
Clicca per attivare l&apos;audio del residente
</string>
<string name="TooltipAgentIM">
Clicca per inviare un IM a questo residente
</string>
<string name="TooltipAgentPay">
Clicca per pagare il residente
</string>
<string name="TooltipAgentOfferTeleport">
Fai clic per inviare un&apos;offerta di teleport al residente
</string>
<string name="TooltipAgentRequestFriend">
Fai clic per inviare una richiesta di amicizia al residente
</string>
<string name="TooltipGroupUrl">
Clicca per vedere la descrizione del gruppo
</string>
<string name="TooltipEventUrl">
Clicca per vedere la descrizione dell&apos;evento
</string>
<string name="TooltipClassifiedUrl">
Clicca per vedere questa inserzione
</string>
<string name="TooltipParcelUrl">
Clicca per vedere la descrizione del lotto
</string>
<string name="TooltipTeleportUrl">
Clicca per effettuare il teleport a questa destinazione
</string>
<string name="TooltipObjectIMUrl">
Clicca per vedere la descrizione dell&apos;oggetto
</string>
<string name="TooltipMapUrl">
Clicca per vedere questo posto sulla mappa
</string>
<string name="TooltipSLAPP">
Clicca per avviare il comando secondlife://
</string>
<string name="CurrentURL" value="URL attuale: [CurrentURL]"/>
<string name="TooltipEmail">
Fai clic per comporre un&apos;email
</string>
<string name="SLurlLabelTeleport">
Teleportati a
</string>
<string name="SLurlLabelShowOnMap">
Mostra la mappa per
</string>
<string name="SLappAgentMute">
Disattiva audio
</string>
<string name="SLappAgentUnmute">
Riattiva audio
</string>
<string name="SLappAgentIM">
IM
</string>
<string name="SLappAgentPay">
Paga
</string>
<string name="SLappAgentOfferTeleport">
Offri teleport a
</string>
<string name="SLappAgentRequestFriend">
Richiesta di amicizia
</string>
<string name="SLappAgentRemoveFriend">
Rimozione amico
</string>
<string name="BUTTON_CLOSE_DARWIN">
Chiudi (⌘W)
</string>
<string name="BUTTON_CLOSE_WIN">
Chiudi (Ctrl+W)
</string>
<string name="BUTTON_CLOSE_CHROME">
Chiudi
</string>
<string name="BUTTON_RESTORE">
Ripristina
</string>
<string name="BUTTON_MINIMIZE">
Minimizza
</string>
<string name="BUTTON_TEAR_OFF">
Distacca
</string>
<string name="BUTTON_DOCK">
Àncora
</string>
<string name="BUTTON_HELP">
Mostra Aiuto
</string>
<string name="Searching">
Ricerca in corso...
</string>
<string name="NoneFound">
Nessun risultato.
</string>
<string name="RetrievingData">
Recupero dati in corso...
</string>

View File

@@ -910,11 +910,27 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
<string name="ControlYourCamera">
Controle sua camera
</string>
<string name="TeleportYourAgent">
Teletransportá-lo
</string>
<string name="ForceSitAvatar">
Forçar o avatar a sentar
</string>
<string name="AgentNameSubst">
(Você)
</string>
<string name="TeleportYourAgent">
Teletransportá-lo
<string name="JoinAnExperience"/>
<string name="SilentlyManageEstateAccess">
Suprimir alertas ao gerenciar listas de acesso ao terreno
</string>
<string name="OverrideYourAnimations">
Substituir suas animações padrão
</string>
<string name="ScriptReturnObjects">
Retornar objetos em seu nome
</string>
<string name="UnknownScriptPermission">
(desconhecido)!
</string>
<string name="SIM_ACCESS_PG">
Público geral
@@ -1204,6 +1220,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
<string name="BodyPartsRightLeg">
Perna direita
</string>
<string name="BodyPartsEnhancedSkeleton">
Esqueleto aprimorado
</string>
<string name="GraphicsQualityLow">
Baixo
</string>
@@ -1225,6 +1244,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
<string name="FavoritesNoMatchingItems">
Arraste um marco para adicioná-lo aos seus favoritos.
</string>
<string name="MarketplaceNoMatchingItems">
Nenhum item correspondente encontrado. Verifique a ortografia de sua cadeia de pesquisa e tente novamente.
</string>
<string name="InventoryNoTexture">
Você não possui uma cópia desta textura no seu inventário
</string>
@@ -4327,6 +4349,15 @@ Denunciar abuso
<string name="texture_load_dimensions_error">
A imagem excede o limite [WIDTH]*[HEIGHT]
</string>
<string name="outfit_photo_load_dimensions_error">
O tamanho máx. do look é [WIDTH]*[HEIGHT]. Redimensione ou use outra imagem
</string>
<string name="outfit_photo_select_dimensions_error">
O tamanho máx. do look é [WIDTH]*[HEIGHT]. Selecione outra textura
</string>
<string name="outfit_photo_verify_dimensions_error">
Não foi possível confirmar as dimensões da foto. Aguarde até que o tamanho da foto seja exibido no seletor
</string>
<string name="words_separator" value=","/>
<string name="server_is_down">
Aconteceu algo inesperado, apesar de termos tentado impedir isso.
@@ -4358,6 +4389,9 @@ Denunciar abuso
<string name="LocalEstimateUSD">
US$ [AMOUNT]
</string>
<string name="Group Ban">
Banimento do grupo
</string>
<string name="Membership">
Plano
</string>
@@ -4780,9 +4814,18 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Destinations_Label">
Destinos
</string>
<string name="Command_Facebook_Label">
Facebook
</string>
<string name="Command_Flickr_Label">
Flickr
</string>
<string name="Command_Gestures_Label">
Gestos
</string>
<string name="Command_Grid_Status_Label">
Status da grade
</string>
<string name="Command_HowTo_Label">
Como
</string>
@@ -4795,6 +4838,9 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Marketplace_Label">
Mercado
</string>
<string name="Command_MarketplaceListings_Label">
Marketplace
</string>
<string name="Command_MiniMap_Label">
Mini Mapa
</string>
@@ -4819,6 +4865,9 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Profile_Label">
Perfil
</string>
<string name="Command_Report_Abuse_Label">
Relatar abuso
</string>
<string name="Command_Search_Label">
Buscar
</string>
@@ -4828,6 +4877,9 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Speak_Label">
Falar
</string>
<string name="Command_Twitter_Label">
Twitter
</string>
<string name="Command_View_Label">
Controles da câmera
</string>
@@ -4858,9 +4910,18 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Destinations_Tooltip">
Destinos de interesse
</string>
<string name="Command_Facebook_Tooltip">
Publicar no Facebook
</string>
<string name="Command_Flickr_Tooltip">
Carregar no Flickr
</string>
<string name="Command_Gestures_Tooltip">
Gestos para seu avatar
</string>
<string name="Command_Grid_Status_Tooltip">
Mostrar status da grade atual
</string>
<string name="Command_HowTo_Tooltip">
Como executar tarefas comuns
</string>
@@ -4873,6 +4934,9 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Marketplace_Tooltip">
Faça compras
</string>
<string name="Command_MarketplaceListings_Tooltip">
Venda suas criações
</string>
<string name="Command_MiniMap_Tooltip">
Mostrar quem está aqui
</string>
@@ -4897,6 +4961,9 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Profile_Tooltip">
Edite ou visualize seu perfil
</string>
<string name="Command_Report_Abuse_Tooltip">
Relatar abuso
</string>
<string name="Command_Search_Tooltip">
Encontre lugares, eventos, pessoas
</string>
@@ -4906,6 +4973,9 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Speak_Tooltip">
Fale com pessoas próximas usando seu microfone
</string>
<string name="Command_Twitter_Tooltip">
Twitter
</string>
<string name="Command_View_Tooltip">
Alterar o ângulo da câmera
</string>
@@ -4981,6 +5051,87 @@ Tente colocar o caminho do editor entre aspas.
<string name="UserDictionary">
[Usuário]
</string>
<string name="experience_tools_experience">
Experiência
</string>
<string name="ExperienceNameNull">
(nenhuma experiência)
</string>
<string name="ExperienceNameUntitled">
(experiência sem título)
</string>
<string name="Land-Scope">
Dentro do terreno
</string>
<string name="Grid-Scope">
Dentro da grade
</string>
<string name="Allowed_Experiences_Tab">
PERMITIDO
</string>
<string name="Blocked_Experiences_Tab">
BLOQUEADO
</string>
<string name="Contrib_Experiences_Tab">
COLABORADOR
</string>
<string name="Admin_Experiences_Tab">
ADMINISTRADOR
</string>
<string name="Recent_Experiences_Tab">
RECENTE
</string>
<string name="Owned_Experiences_Tab">
PRÓPRIAS
</string>
<string name="ExperiencesCounter">
([EXPERIENCES], máx. [MAXEXPERIENCES])
</string>
<string name="ExperiencePermission1">
assumir seus controles
</string>
<string name="ExperiencePermission3">
acionar animações no seu avatar
</string>
<string name="ExperiencePermission4">
anexar ao avatar
</string>
<string name="ExperiencePermission9">
rastrear sua câmera
</string>
<string name="ExperiencePermission10">
controlar sua câmera
</string>
<string name="ExperiencePermission11">
teletransportar você
</string>
<string name="ExperiencePermission12">
aceitar automaticamente permissões de experiência
</string>
<string name="ExperiencePermissionShortUnknown">
realizar uma operação desconhecida: [Permission]
</string>
<string name="ExperiencePermissionShort1">
Assumir o controle
</string>
<string name="ExperiencePermissionShort3">
Acionar animações
</string>
<string name="ExperiencePermissionShort4">
Anexar
</string>
<string name="ExperiencePermissionShort9">
Rastrear câmera
</string>
<string name="ExperiencePermissionShort10">
Controlar câmera
</string>
<string name="ExperiencePermissionShort11">
Teletransportar
</string>
<string name="ExperiencePermissionShort12">
Autorização
</string>
<string name="logging_calls_disabled_log_empty">
As conversas não estão sendo registradas. Para começar a manter um registro, selecione &quot;Salvar: apenas registro&quot; ou &quot;Salvar: registro e transcrições&quot; em Preferências&gt; Bate-papo.
</string>
@@ -4990,4 +5141,31 @@ Tente colocar o caminho do editor entre aspas.
<string name="logging_calls_enabled_log_empty">
Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui.
</string>
<string name="loading_chat_logs">
Carregando...
</string>
<string name="na">
n/d
</string>
<string name="preset_combo_label">
-Lista vazia-
</string>
<string name="Default">
Padrão
</string>
<string name="none_paren_cap">
(nenhum)
</string>
<string name="no_limit">
Sem limite
</string>
<string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">
A forma física contém triângulos muito pequenos. Tente simplificar o modelo físico.
</string>
<string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">
A forma física contém dados de confirmação ruins. Tente consertar o modelo físico.
</string>
<string name="Mav_Details_MAV_UNKNOWN_VERSION">
A forma física não tem a versão correta. Defina a versão correta para o modelo físico.
</string>
</strings>