From eda3831041a176ae11116bd0c33077d121dc62e2 Mon Sep 17 00:00:00 2001 From: James Cook Date: Fri, 28 Aug 2009 16:51:34 +0000 Subject: skinning-22 -> viewer-2 trunk to pick up bug fixes, including crash on script compile when cursor is at the end of the script editor window. Replaced panel_pick_info.xml and panel_profile_view.xml with our versions, which stomped some PE changes. Panels still work, however, and Kurt is still working on layout. CHANGES: minor layout change: "start location" and "remember password" weren't on the same horizontal line. DEV-35120 image_unselected art was "transparent.j2c" - switched it out for PushButton_Off I18N: more things are missing a.. you guessed it, a name= parameter. Breaks localization. forgot to check this in earlier...fixes off-by-one crash when editing a script DEV-36740 change the displayed string per Erica's request re 'You can only set your Home Location...' VIEWER-SIDE text change. This does not change the actual message coming from the server EXT-689 Odd spinner behaviour - For Sale Price -- reviewed by james DEV-26973 Internationalize the server msg Youcan'tset this place as home -- reviewed by james EXT-618 Low/Mid/High response is broken in Preferences > Graphics -- reviewed by james EXT-618 Low/Mid/High response is broken in Preferences > Graphics -- to be reviewed EXT-655 Cannot choose Both logging options in Preferences -- to be reviewed Changes to notifications.xml text to fit Style Guide and some renamed menu items EXT-147 Ongoing revisions to new gestures layout. DEV-35097 catch more instances of 'SLURL' and make them 'SLurl' Removed Info Displays and Buy Currency Test from top menus. Clean up code to use proper childGetFoo and childSetFoo calls, as well as setCommitCallback using slots. De-inlined LLAvatarIconCtrl paramblock constructor because I was doing a full rebuild anyhow. Commented about use of childSetCommitCallback(). De-inlined LocalizedString paramblock constructor. eliminated memory leak I18N: more things are missing a name= parameter, breaks localization. EXT-714 Updated panels in sidetray that were not using the scroll_container element to adjust for viewer heights. fix for llmessage_test crash in Windows Release builds DEV-11254 I18N: replace all string instances of "Second Life" - do this in the foreign languages too DEV-11254 I18N: replace all string instances of "Second Life" - found new instances from merged code potential fix for unit test crash on parabuild, moved statics into singleton member variables to get around potential dual instantation of statics on different modules DEV-36809 Click target for slider handles is too small -- reviewed by steve EXT-403 change getChild to LLUICtrl to make it generic -- reviewed by richard DEV-35938 Horizontal scroll thumb too high -- to be reviewed EXT-386 clean up warnings - initCommitCallback... Rename Product Engine's LLFloaterMiniInspector to LLInspectAvatar, clean up XUI XML, clean up construction code, move refresh method to postBuild() so widgets are constructed before refresh, fixed a member variable in llavatarlistitem.cpp. Reviewed with Leyla. Login menu > Debug > Avatar Inspector shows test avatar inspector. Also added to main menu > Debug > XUI > Avatar Inspector. Changed text/layout of dummy inspector. Not reviewed. Merging revisions 131558-131975 of svn+ssh://svn.lindenlab.com/svn/linden/branches/skinning/skinning-22 into D:\viewer-2.0.0-3, respecting ancestry --- indra/llui/llkeywords.cpp | 2 +- indra/llui/llpanel.cpp | 8 + indra/llui/llpanel.h | 9 +- indra/llui/llspinctrl.cpp | 73 +++-- indra/newview/CMakeLists.txt | 4 +- indra/newview/llavatariconctrl.cpp | 9 + indra/newview/llavatariconctrl.h | 8 +- indra/newview/llavatarlistitem.cpp | 17 +- indra/newview/llavatarlistitem.h | 4 +- indra/newview/llchatitemscontainerctrl.cpp | 2 +- indra/newview/llfloaterpreference.cpp | 20 +- indra/newview/llfloaterproperties.cpp | 11 +- indra/newview/llinspectavatar.cpp | 127 +++++++ indra/newview/llinspectavatar.h | 80 +++++ indra/newview/llpanelpeople.cpp | 2 +- indra/newview/llpanelplaces.cpp | 2 +- indra/newview/llviewerfloaterreg.cpp | 8 +- indra/newview/llviewermenu.cpp | 9 + indra/newview/llviewermessage.cpp | 12 +- indra/newview/skins/default/textures/textures.xml | 4 +- .../newview/skins/default/xui/da/floater_about.xml | 6 +- .../skins/default/xui/da/floater_postcard.xml | 2 +- indra/newview/skins/default/xui/da/floater_tos.xml | 3 +- indra/newview/skins/default/xui/da/menu_login.xml | 4 +- indra/newview/skins/default/xui/da/menu_viewer.xml | 364 ++++++++++----------- .../newview/skins/default/xui/da/notifications.xml | 28 +- .../skins/default/xui/da/panel_status_bar.xml | 6 +- indra/newview/skins/default/xui/da/strings.xml | 89 ++++- .../newview/skins/default/xui/de/floater_about.xml | 6 +- .../skins/default/xui/de/floater_postcard.xml | 2 +- indra/newview/skins/default/xui/de/floater_tos.xml | 2 +- indra/newview/skins/default/xui/de/menu_login.xml | 4 +- indra/newview/skins/default/xui/de/menu_viewer.xml | 8 +- .../newview/skins/default/xui/de/notifications.xml | 81 +++-- .../skins/default/xui/de/panel_status_bar.xml | 4 +- .../skins/default/xui/en/favorites_bar_button.xml | 5 +- .../default/xui/en/floater_preview_gesture.xml | 358 ++++---------------- .../xui/en/floater_preview_gesture_info.xml | 173 ++++++++++ .../xui/en/floater_preview_gesture_shortcut.xml | 86 +++++ .../xui/en/floater_preview_gesture_steps.xml | 148 +++++++++ .../skins/default/xui/en/inspect_avatar.xml | 84 +++++ .../skins/default/xui/en/menu_favorites.xml | 2 +- .../newview/skins/default/xui/en/menu_landmark.xml | 2 +- indra/newview/skins/default/xui/en/menu_login.xml | 14 +- indra/newview/skins/default/xui/en/menu_viewer.xml | 230 +------------ .../newview/skins/default/xui/en/notifications.xml | 40 ++- .../skins/default/xui/en/panel_edit_pick.xml | 33 +- .../skins/default/xui/en/panel_edit_profile.xml | 55 +++- indra/newview/skins/default/xui/en/panel_login.xml | 8 +- .../skins/default/xui/en/panel_pick_info.xml | 63 ++-- .../newview/skins/default/xui/en/panel_profile.xml | 48 ++- .../skins/default/xui/en/panel_profile_view.xml | 78 ++--- .../skins/default/xui/en/panel_region_estate.xml | 1 + .../skins/default/xui/en/panel_region_texture.xml | 2 + indra/newview/skins/default/xui/en/strings.xml | 11 +- .../newview/skins/default/xui/es/floater_about.xml | 6 +- .../skins/default/xui/es/floater_postcard.xml | 19 +- indra/newview/skins/default/xui/es/floater_tos.xml | 4 +- indra/newview/skins/default/xui/es/menu_login.xml | 4 +- indra/newview/skins/default/xui/es/menu_viewer.xml | 16 +- .../newview/skins/default/xui/es/notifications.xml | 80 ++--- .../skins/default/xui/es/panel_status_bar.xml | 4 +- .../newview/skins/default/xui/fr/floater_about.xml | 6 +- .../skins/default/xui/fr/floater_postcard.xml | 4 +- indra/newview/skins/default/xui/fr/floater_tos.xml | 2 +- indra/newview/skins/default/xui/fr/menu_login.xml | 4 +- indra/newview/skins/default/xui/fr/menu_viewer.xml | 4 +- .../newview/skins/default/xui/fr/notifications.xml | 76 ++--- .../skins/default/xui/fr/panel_status_bar.xml | 4 +- .../newview/skins/default/xui/it/floater_about.xml | 6 +- .../skins/default/xui/it/floater_postcard.xml | 10 +- indra/newview/skins/default/xui/it/floater_tos.xml | 2 +- indra/newview/skins/default/xui/it/menu_login.xml | 4 +- indra/newview/skins/default/xui/it/menu_viewer.xml | 8 +- .../newview/skins/default/xui/it/notifications.xml | 84 ++--- .../skins/default/xui/it/panel_status_bar.xml | 4 +- indra/newview/skins/default/xui/it/strings.xml | 2 +- .../newview/skins/default/xui/ja/floater_about.xml | 6 +- .../skins/default/xui/ja/floater_postcard.xml | 2 +- indra/newview/skins/default/xui/ja/menu_login.xml | 4 +- indra/newview/skins/default/xui/ja/menu_viewer.xml | 8 +- .../newview/skins/default/xui/ja/notifications.xml | 84 ++--- .../skins/default/xui/ja/panel_status_bar.xml | 4 +- .../newview/skins/default/xui/nl/floater_about.xml | 6 +- .../skins/default/xui/nl/floater_postcard.xml | 2 +- indra/newview/skins/default/xui/nl/floater_tos.xml | 3 +- indra/newview/skins/default/xui/nl/menu_login.xml | 4 +- indra/newview/skins/default/xui/nl/menu_viewer.xml | 8 +- .../newview/skins/default/xui/nl/notifications.xml | 80 ++--- .../skins/default/xui/nl/panel_status_bar.xml | 4 +- .../newview/skins/default/xui/pl/floater_about.xml | 9 +- .../skins/default/xui/pl/floater_postcard.xml | 4 +- indra/newview/skins/default/xui/pl/floater_tos.xml | 2 +- indra/newview/skins/default/xui/pl/menu_login.xml | 4 +- indra/newview/skins/default/xui/pl/menu_viewer.xml | 10 +- .../newview/skins/default/xui/pl/notifications.xml | 108 +++--- .../skins/default/xui/pl/panel_status_bar.xml | 4 +- .../newview/skins/default/xui/pt/floater_about.xml | 6 +- .../skins/default/xui/pt/floater_postcard.xml | 4 +- indra/newview/skins/default/xui/pt/floater_tos.xml | 3 +- indra/newview/skins/default/xui/pt/menu_login.xml | 4 +- indra/newview/skins/default/xui/pt/menu_viewer.xml | 16 +- .../newview/skins/default/xui/pt/notifications.xml | 84 ++--- .../skins/default/xui/pt/panel_status_bar.xml | 4 +- 104 files changed, 1860 insertions(+), 1431 deletions(-) create mode 100644 indra/newview/llinspectavatar.cpp create mode 100644 indra/newview/llinspectavatar.h create mode 100644 indra/newview/skins/default/xui/en/floater_preview_gesture_info.xml create mode 100644 indra/newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml create mode 100644 indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml create mode 100644 indra/newview/skins/default/xui/en/inspect_avatar.xml diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp index db1611abb5..ede32084d0 100644 --- a/indra/llui/llkeywords.cpp +++ b/indra/llui/llkeywords.cpp @@ -245,7 +245,7 @@ void LLKeywords::findSegments(std::vector* seg_list, const LLW return; } - S32 text_len = wtext.size(); + S32 text_len = wtext.size() + 1; seg_list->push_back( new LLNormalTextSegment( defaultColor, 0, text_len, editor ) ); diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 0b987bfcb5..c81be6086a 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -58,6 +58,11 @@ static LLDefaultChildRegistry::Register r1("panel", &LLPanel::fromXML); +LLPanel::LocalizedString::LocalizedString() +: name("name"), + value("value") +{} + const LLPanel::Params& LLPanel::getDefaultParams() { return LLUICtrlFactory::getDefaultParams(); @@ -675,6 +680,9 @@ BOOL LLPanel::childHasFocus(const std::string& id) } // *TODO: Deprecate; for backwards compatability only: +// Prefer getChild("foo")->setCommitCallback(boost:bind(...)), +// which takes a generic slot. Or use mCommitCallbackRegistrar.add() with +// a named callback and reference it in XML. void LLPanel::childSetCommitCallback(const std::string& id, boost::function cb, void* data) { LLUICtrl* child = findChild(id); diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index 28cd4d2799..3f1d1fdc5d 100644 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h @@ -63,10 +63,7 @@ public: Mandatory name; Mandatory value; - LocalizedString() - : name("name"), - value("value") - {} + LocalizedString(); }; struct Params @@ -185,7 +182,11 @@ public: BOOL childHasFocus(const std::string& id); // *TODO: Deprecate; for backwards compatability only: + // Prefer getChild("foo")->setCommitCallback(boost:bind(...)), + // which takes a generic slot. Or use mCommitCallbackRegistrar.add() with + // a named callback and reference it in XML. void childSetCommitCallback(const std::string& id, boost::function cb, void* data); + void childSetValidate(const std::string& id, boost::function cb ); void childSetColor(const std::string& id, const LLColor4& color); diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp index 7b96446fa1..3a96bc8f93 100644 --- a/indra/llui/llspinctrl.cpp +++ b/indra/llui/llspinctrl.cpp @@ -174,23 +174,33 @@ void LLSpinCtrl::onUpBtn( const LLSD& data ) { if( getEnabled() ) { - // use getValue()/setValue() to force reload from/to control - F32 val = (F32)getValue().asReal() + mIncrement; - val = clamp_precision(val, mPrecision); - val = llmin( val, mMaxValue ); - - F32 saved_val = (F32)getValue().asReal(); - setValue(val); - if( !mValidateSignal( this, val ) ) + std::string text = mEditor->getText(); + if( LLLineEditor::postvalidateFloat( text ) ) { - setValue( saved_val ); - reportInvalidData(); - updateEditor(); - return; - } + + LLLocale locale(LLLocale::USER_LOCALE); + F32 cur_val = (F32) atof(text.c_str()); + + // use getValue()/setValue() to force reload from/to control + F32 val = cur_val + mIncrement; + val = clamp_precision(val, mPrecision); + val = llmin( val, mMaxValue ); + if (val < mMinValue) val = mMinValue; + if (val > mMaxValue) val = mMaxValue; + + F32 saved_val = (F32)getValue().asReal(); + setValue(val); + if( !mValidateSignal( this, val ) ) + { + setValue( saved_val ); + reportInvalidData(); + updateEditor(); + return; + } updateEditor(); onCommit(); + } } } @@ -198,22 +208,33 @@ void LLSpinCtrl::onDownBtn( const LLSD& data ) { if( getEnabled() ) { - F32 val = (F32)getValue().asReal() - mIncrement; - val = clamp_precision(val, mPrecision); - val = llmax( val, mMinValue ); - - F32 saved_val = (F32)getValue().asReal(); - setValue(val); - if( !mValidateSignal( this, val ) ) + std::string text = mEditor->getText(); + if( LLLineEditor::postvalidateFloat( text ) ) { - setValue( saved_val ); - reportInvalidData(); + + LLLocale locale(LLLocale::USER_LOCALE); + F32 cur_val = (F32) atof(text.c_str()); + + F32 val = cur_val - mIncrement; + val = clamp_precision(val, mPrecision); + val = llmax( val, mMinValue ); + + if (val < mMinValue) val = mMinValue; + if (val > mMaxValue) val = mMaxValue; + + F32 saved_val = (F32)getValue().asReal(); + setValue(val); + if( !mValidateSignal( this, val ) ) + { + setValue( saved_val ); + reportInvalidData(); + updateEditor(); + return; + } + updateEditor(); - return; + onCommit(); } - - updateEditor(); - onCommit(); } } diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index ae3fa9a324..52df1dd241 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -181,7 +181,6 @@ set(viewer_SOURCE_FILES llfloaterlandholdings.cpp llfloatermap.cpp llfloatermemleak.cpp - llfloaterminiinspector.cpp llfloatermute.cpp llfloaternamedesc.cpp llfloaternotificationsconsole.cpp @@ -238,6 +237,7 @@ set(viewer_SOURCE_FILES llimpanel.cpp llimview.cpp llimcontrolpanel.cpp + llinspectavatar.cpp llinventorybridge.cpp llinventoryclipboard.cpp llinventoryfilter.cpp @@ -635,7 +635,6 @@ set(viewer_HEADER_FILES llfloaterlandholdings.h llfloatermap.h llfloatermemleak.h - llfloaterminiinspector.h llfloatermute.h llfloaternamedesc.h llfloaternotificationsconsole.h @@ -691,6 +690,7 @@ set(viewer_HEADER_FILES llimpanel.h llimview.h llimcontrolpanel.h + llinspectavatar.h llinventorybridge.h llinventoryclipboard.h llinventoryfilter.h diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index f6eb7f6494..05addf3f3a 100644 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -51,6 +51,15 @@ static LLDefaultChildRegistry::Register r("avatar_icon"); LLAvatarIconCtrl::avatar_image_map_t LLAvatarIconCtrl::sImagesCache; + +LLAvatarIconCtrl::Params::Params() +: avatar_id("avatar_id"), + draw_tooltip("draw_tooltip", true) +{ + name = "avatar_icon"; +} + + LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p) : LLIconCtrl(p), mDrawTooltip(p.draw_tooltip) diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h index 10ce827d6d..49e304a521 100644 --- a/indra/newview/llavatariconctrl.h +++ b/indra/newview/llavatariconctrl.h @@ -45,13 +45,9 @@ public: { Optional avatar_id; Optional draw_tooltip; - Params() - : avatar_id("avatar_id"), - draw_tooltip("draw_tooltip", true) - { - name = "avatar_icon"; - } + Params(); }; + protected: LLAvatarIconCtrl(const Params&); friend class LLUICtrlFactory; diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 80b80dc228..253c2ee9a6 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -48,7 +48,7 @@ LLAvatarListItem::LLAvatarListItem(const Params& p) : LLPanel() mStatus = NULL; mInfo = NULL; mProfile = NULL; - mini_inspector = NULL; + mInspector = NULL; mAvatar = getChild("avatar_icon"); //mAvatar->setValue(p.avatar_icon); @@ -242,9 +242,9 @@ void LLAvatarListItem::setAvatar(LLSD& data) //--------------------------------------------------------------------------------- void LLAvatarListItem::onInfoBtnClick() { - mini_inspector = LLFloaterReg::showInstance("mini_inspector", gAgent.getID()); + mInspector = LLFloaterReg::showInstance("inspect_avatar", gAgent.getID()); - if (!mini_inspector) + if (!mInspector) return; LLRect rect; @@ -252,16 +252,17 @@ void LLAvatarListItem::onInfoBtnClick() // *TODO Vadim: rewrite this. "+= -" looks weird. - S32 delta = mYPos - mini_inspector->getRect().getHeight(); + S32 delta = mYPos - mInspector->getRect().getHeight(); if(delta < 0) { mYPos += -delta; } - rect.setLeftTopAndSize(mXPos, mYPos, mini_inspector->getRect().getWidth(), mini_inspector->getRect().getHeight()); - mini_inspector->setRect(rect); - mini_inspector->setFrontmost(true); - mini_inspector->setVisible(true); + rect.setLeftTopAndSize(mXPos, mYPos, + mInspector->getRect().getWidth(), mInspector->getRect().getHeight()); + mInspector->setRect(rect); + mInspector->setFrontmost(true); + mInspector->setVisible(true); } diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index dc73f187a7..b41e0ff209 100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -38,7 +38,7 @@ #include #include -#include "llfloaterminiinspector.h" +//#include "llfloaterminiinspector.h" class LLAvatarListItem : public LLPanel { @@ -96,7 +96,7 @@ private: S32 mYPos; S32 mXPos; - LLFloater* mini_inspector; + LLFloater* mInspector; bool mNeedsArrange; // diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp index 05c574b154..f5dfbb2851 100644 --- a/indra/newview/llchatitemscontainerctrl.cpp +++ b/indra/newview/llchatitemscontainerctrl.cpp @@ -225,7 +225,7 @@ BOOL LLChatItemCtrl::handleMouseDown (S32 x, S32 y, MASK mask) S32 local_y = y - msg_inspector->getRect().mBottom - caption->getRect().mBottom; if(msg_inspector->pointInView(local_x, local_y)) { - LLFloaterReg::showInstance("mini_inspector", mOriginalMessage.mFromID); + LLFloaterReg::showInstance("inspect_avatar", mOriginalMessage.mFromID); } return LLPanel::handleMouseDown(x,y,mask); } diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 3e4065d5d0..c47c7b073c 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -516,6 +516,7 @@ void LLFloaterPreference::onOpen(const LLSD& key) { gAgent.sendAgentUserInfoRequest(); LLPanelLogin::setAlwaysRefresh(true); + refresh(); } void LLFloaterPreference::onVertexShaderEnable() @@ -604,6 +605,7 @@ void LLFloaterPreference::onBtnCancel() { cur_focus->onCommit(); } + refresh(); } closeFloater(); // side effect will also cancel any unsaved changes. } @@ -962,13 +964,13 @@ void LLFloaterPreference::refresh() // sliders and their text boxes // mPostProcess = gSavedSettings.getS32("RenderGlowResolutionPow"); // slider text boxes - updateSliderText(getChild("ObjectMeshDetail"), getChild("ObjectMeshDetailText")); - updateSliderText(getChild("FlexibleMeshDetail"), getChild("FlexibleMeshDetailText")); - updateSliderText(getChild("TreeMeshDetail"), getChild("TreeMeshDetailText")); - updateSliderText(getChild("AvatarMeshDetail"), getChild("AvatarMeshDetailText")); - updateSliderText(getChild("TerrainMeshDetail"), getChild("TerrainMeshDetailText")); - updateSliderText(getChild("RenderPostProcess"), getChild("PostProcessText")); - updateSliderText(getChild("SkyMeshDetail"), getChild("SkyMeshDetailText")); + updateSliderText(getChild("ObjectMeshDetail", true), getChild("ObjectMeshDetailText", true)); + updateSliderText(getChild("FlexibleMeshDetail", true), getChild("FlexibleMeshDetailText", true)); + updateSliderText(getChild("TreeMeshDetail", true), getChild("TreeMeshDetailText", true)); + updateSliderText(getChild("AvatarMeshDetail", true), getChild("AvatarMeshDetailText", true)); + updateSliderText(getChild("TerrainMeshDetail", true), getChild("TerrainMeshDetailText", true)); + updateSliderText(getChild("RenderPostProcess", true), getChild("PostProcessText", true)); + updateSliderText(getChild("SkyMeshDetail", true), getChild("SkyMeshDetailText", true)); refreshEnabledState(); } @@ -1168,7 +1170,9 @@ void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im void LLFloaterPreference::onUpdateSliderText(LLUICtrl* ctrl, const LLSD& name) { - if(name.asString() =="" || !hasChild("name")) + std::string ctrl_name = name.asString(); + + if((ctrl_name =="" )|| !hasChild(ctrl_name, true)) return; LLTextBox* text_box = getChild(name.asString()); diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp index ab281e9f9f..091debe95e 100644 --- a/indra/newview/llfloaterproperties.cpp +++ b/indra/newview/llfloaterproperties.cpp @@ -46,7 +46,7 @@ #include "llavataractions.h" #include "llinventorymodel.h" #include "lllineeditor.h" -#include "llspinctrl.h" +//#include "llspinctrl.h" #include "llradiogroup.h" #include "llresmgr.h" #include "roles_constants.h" @@ -793,14 +793,11 @@ void LLFloaterProperties::updateSaleInfo() sale_type = LLSaleInfo::FS_ORIGINAL; } - // LLLineEditor* EditPrice = getChild("EditPrice"); - LLSpinCtrl *EditPrice = getChild("Edit Cost"); + S32 price = -1; - if(EditPrice) - { - price = EditPrice->getValue().asInteger();; - } + price = getChild("Edit Cost")->getValue().asInteger();; + // Invalid data - turn off the sale if (price < 0) { diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp new file mode 100644 index 0000000000..5bb96f0469 --- /dev/null +++ b/indra/newview/llinspectavatar.cpp @@ -0,0 +1,127 @@ +/** + * @file llinspectavatar.cpp + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llinspectavatar.h" + +// viewer files +#include "llagentdata.h" +#include "llavataractions.h" +#include "llcallingcard.h" + +// linden libraries +#include "lluictrl.h" + + +LLInspectAvatar::LLInspectAvatar(const LLSD& avatar_id) +: LLFloater(avatar_id), + mAvatarID( avatar_id.asUUID() ), + mFirstName(), + mLastName() +{ +} + +LLInspectAvatar::~LLInspectAvatar() +{ +} + +/*virtual*/ +BOOL LLInspectAvatar::postBuild(void) +{ + getChild("add_friend_btn")->setCommitCallback( + boost::bind(&LLInspectAvatar::onClickAddFriend, this) ); + + getChild("view_profile_btn")->setCommitCallback( + boost::bind(&LLInspectAvatar::onClickViewProfile, this) ); + + // can't call from constructor as widgets are not built yet + refresh(); + + return TRUE; +} + +void LLInspectAvatar::setAvatarID(const LLUUID &avatar_id) +{ + mAvatarID = avatar_id; + refresh(); +} + +void LLInspectAvatar::refresh() +{ + // *HACK: Don't stomp data when spawning from login screen + if (mAvatarID.isNull()) return; + + // You can't re-add someone as a friend if they are already your friend + bool is_friend = LLAvatarTracker::instance().getBuddyInfo(mAvatarID) != NULL; + bool is_self = (mAvatarID == gAgentID); + childSetEnabled("add_friend_btn", !is_friend && !is_self); + + // *TODO: replace with generic + // LLAvatarPropertiesProcessor::getInstance()->addObserver() + // ->sendDataRequest() + childSetValue("avatar_icon", LLSD(mAvatarID) ); + + gCacheName->get(mAvatarID, FALSE, + boost::bind(&LLInspectAvatar::nameUpdatedCallback, + this, _1, _2, _3, _4)); +} + +void LLInspectAvatar::nameUpdatedCallback( + const LLUUID& id, + const std::string& first, + const std::string& last, + BOOL is_group) +{ + // Possibly a request for an older inspector + if (id != mAvatarID) return; + + mFirstName = first; + mLastName = last; + std::string name = first + " " + last; + + childSetValue("user_name", LLSD(name) ); +} + +void LLInspectAvatar::onClickAddFriend() +{ + std::string name; + name.assign(getFirstName()); + name.append(" "); + name.append(getLastName()); + + LLAvatarActions::requestFriendshipDialog(getAvatarID(), name); +} + +void LLInspectAvatar::onClickViewProfile() +{ + LLAvatarActions::showProfile(getAvatarID()); +} diff --git a/indra/newview/llinspectavatar.h b/indra/newview/llinspectavatar.h new file mode 100644 index 0000000000..05b0d6fe20 --- /dev/null +++ b/indra/newview/llinspectavatar.h @@ -0,0 +1,80 @@ +/** + * @file llinspectavatar.h + * @brief Avatar Inspector, a small information window used when clicking + * on avatar names in the 2D UI and in the ambient inspector widget for + * the 3D world. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LLINSPECTAVATAR_H +#define LLINSPECTAVATAR_H + +#include "llfloater.h" + +class LLInspectAvatar : public LLFloater +{ + friend class LLFloaterReg; + +public: + // key is the UUID of avatar for whom to show information + // *TODO: Needs to take a spawn location + LLInspectAvatar(const LLSD& avatar_id); + virtual ~LLInspectAvatar(); + + /*virtual*/ BOOL postBuild(void); + + void setAvatarID(const LLUUID &avatar_id); + + const LLUUID& getAvatarID() const { return mAvatarID; } + const std::string& getFirstName() const { return mFirstName; } + const std::string& getLastName() const { return mLastName; } + +private: + // Update widgets, including avatar name, buttons enabled, etc. + // Used after avatar id changes. + void refresh(); + + void onClickAddFriend(); + void onClickViewProfile(); + + void nameUpdatedCallback( + const LLUUID& id, + const std::string& first, + const std::string& last, + BOOL is_group); + +private: + LLUUID mAvatarID; + // Need avatar name information to spawn friend add request + std::string mFirstName; + std::string mLastName; +}; + + +#endif diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 698f442d7c..844e5122f4 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -46,7 +46,7 @@ #include "llavatarlist.h" #include "llcallingcard.h" // for LLAvatarTracker #include "llfloateravatarpicker.h" -#include "llfloaterminiinspector.h" +//#include "llfloaterminiinspector.h" #include "llavataractions.h" #include "llgroupactions.h" #include "llgrouplist.h" diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index a712c9b9cf..ad1dd74cc6 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -755,7 +755,7 @@ static std::string getFullFolderName(const LLViewerInventoryCategory* cat) // FIXME: it can throw notification about non existent string in strings.xml if (cat->getParentUUID().notNull() && cat->getParentUUID() == gInventory.getRootFolderID()) { - name = LLTrans::getString("InvFolder " + name); + LLTrans::findString(name, "InvFolder " + name); } // we don't want "My Inventory" to appear in the name diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 0a59ba8a50..b85dc30e72 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -106,20 +106,19 @@ #include "llfloaterwater.h" #include "llfloaterwindlight.h" #include "llfloaterworldmap.h" +#include "llinspectavatar.h" #include "llmediaremotectrl.h" #include "llmoveview.h" #include "llnearbychat.h" - #include "llpreviewanim.h" #include "llpreviewgesture.h" #include "llpreviewnotecard.h" #include "llpreviewscript.h" #include "llpreviewsound.h" #include "llpreviewtexture.h" -#include "llfloaterminiinspector.h" #include "llsyswellwindow.h" +// *NOTE: Please add files in alphabetical order to keep merges easy. -//class LLLLFloaterObjectIMInfo; void LLViewerFloaterReg::registerFloaters() { @@ -167,6 +166,8 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("impanel", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("inventory", "floater_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("inspect", "floater_inspect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); + LLFloaterReg::add("inspect_avatar", "inspect_avatar.xml", + &LLFloaterReg::build); LLFloaterReg::add("lagmeter", "floater_lagmeter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); @@ -179,7 +180,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("mute", "floater_mute.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("mute_object", "floater_mute_object.xml", &LLFloaterMute::buildFloaterMuteObjectUI); LLFloaterReg::add("mini_map", "floater_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); - LLFloaterReg::add("mini_inspector", "panel_mini_inspector.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("syswell_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("notifications_console", "floater_notifications_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 8220fff6b5..8a5928f4e9 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1517,6 +1517,14 @@ class LLAdvancedSendTestIms : public view_listener_t } }; +class LLAdvancedAvatarInspector : public view_listener_t +{ + bool handleEvent(const LLSD& avatar_id) + { + LLFloaterReg::showInstance("inspect_avatar", avatar_id); + return true; + } +}; /////////////// // XUI NAMES // @@ -7844,6 +7852,7 @@ void initialize_menus() view_listener_t::addMenu(new LLAdvancedToggleXUINames(), "Advanced.ToggleXUINames"); view_listener_t::addMenu(new LLAdvancedCheckXUINames(), "Advanced.CheckXUINames"); view_listener_t::addMenu(new LLAdvancedSendTestIms(), "Advanced.SendTestIMs"); + view_listener_t::addMenu(new LLAdvancedAvatarInspector(), "Advanced.AvatarInspector"); // Advanced > Character > Grab Baked Texture view_listener_t::addMenu(new LLAdvancedGrabBakedTexture(), "Advanced.GrabBakedTexture"); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 4503228cf2..abe5fd8ce8 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4409,23 +4409,23 @@ void process_alert_core(const std::string& message, BOOL modal) } else { - // *TODO: Translate - args["MESSAGE"] = text; + std::string new_msg =LLNotifications::instance().getGlobalString(text); + args["MESSAGE"] = new_msg; LLNotifications::instance().add("SystemMessage", args); } } else if (modal) { - // *TODO: Translate LLSD args; - args["ERROR_MESSAGE"] = message; + std::string new_msg =LLNotifications::instance().getGlobalString(message); + args["ERROR_MESSAGE"] = new_msg; LLNotifications::instance().add("ErrorMessage", args); } else { - // *TODO: Translate LLSD args; - args["MESSAGE"] = message; + std::string new_msg =LLNotifications::instance().getGlobalString(message); + args["MESSAGE"] = new_msg; LLNotifications::instance().add("SystemMessageTip", args); } } diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 0325e755eb..0bd5f114ed 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -133,10 +133,10 @@ - + - + diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index 5795053a14..6b52da04d0 100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -1,9 +1,9 @@ - + - Second Life er gjort muligt for dig af Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others. + Second Life er gjort muligt for dig af Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others. -Tak til følgende beboerne for at bidrage til at sikre, at dette er den bedste version til dato: afon shepherd, Aimee Trescothick, Alexandrea Fride, Alissa Sabre, Amber DeCuir, Asuka Neely, Auron Forcella, Blue Revolution, Bocan Undercroft, Boroondas Gupte, Brandon Shinobu, Bri Gufler, Buckaroo Mu, Celierra Darling, Christos Atlantis, Coder Kas, Cummere Mayo, dakota schwade, Dirk Talamasca, Dizzy Banjo, Drew Dwi, Duckling Kwak, Ellla McMahon, Erikah Jameson, Erinyse Planer, Eyana Yohkoh, Ezian Ecksol, Faron Karu, Fenoe Lowey, Fox Hwasung, Francisca Biedermann, Gally Young, Gellan Glenelg, Geneko Nemeth, Glenn Rotaru, Hagar Qinan, Harleen Gretzky, Holger Gilruth, hotrodjohnny gears, IAm Zabelin, Inigo Catteneo, Iustinian Tomsen, Jacek Antonell, James Benedek, Jim Kupferberg, Joeseph Albanese, JPT62089 Agnon, Kardargo Adamczyk, Kirstenlee Cinquetti, Latif Khalifa, lea Parnall, Lex Neva, Lillith Anatine, Lilly Zenovka, Lim Catteneo, Lindal Kidd, Mark Rosenbaum, MasterJ Chaplin, McCabe Maxsted, Melvin Starbrook, Meni Kaiousei, Mero Collas, Minakothegothicgeisha Kamachi, Moon Metty, neofilo aabye, Neutron Chesnokov, Nomad Ingwer, norritt Xi, Opensource Obscure, Oracle Weatherwax, Ourasi Ferraris, Pabl0 Roffo, Peyton Aleixandre, Phli Foxchase, Psi Merlin, r2d2 Wunderlich, Regi Yifu, Saijanai Kuhn, Sandor Balczo, Sarkan Dreamscape, Scree Raymaker, Sedona Mills, Selena Beale, Sheet Spotter, Shibari Twine, Silver Key, Simon Kline, SLB Wirefly, Stacy Wombat, Sugarcult Dagger, Tayra Dagostino, Tetsuryu Vlodovic, ThaBiGGDoGG Richez, Timo Gufler, tx Oh, wayfinder wishbringer, Wizzytoe McCullough, Wundur Primbee, Yann Dufaux, Yuu Nakamichi, Aminom Marvin, Andred Qinan, arminasx saiman, caroline apollo, Iskar Ariantho, Jenika Connolly, Maghnus Balogh, Nefertiti Nefarious, RodneyLee Jessop +Tak til følgende beboerne for at bidrage til at sikre, at dette er den bedste version til dato: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion APR Copyright (C) 2000-2004 The Apache Software Foundation diff --git a/indra/newview/skins/default/xui/da/floater_postcard.xml b/indra/newview/skins/default/xui/da/floater_postcard.xml index 6b02f43633..24d45062ae 100644 --- a/indra/newview/skins/default/xui/da/floater_postcard.xml +++ b/indra/newview/skins/default/xui/da/floater_postcard.xml @@ -25,7 +25,7 @@