summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llaudio/llaudioengine.cpp2
-rw-r--r--indra/llcommon/llsys.cpp27
-rw-r--r--indra/llcommon/llsys.h16
-rw-r--r--indra/llui/llcombobox.cpp33
-rw-r--r--indra/llui/llcombobox.h3
-rw-r--r--indra/llui/llflatlistview.cpp6
-rw-r--r--indra/llwindow/llwindow.cpp27
-rw-r--r--indra/llwindow/llwindow.h15
-rw-r--r--indra/llwindow/llwindowmacosx-objc.h3
-rw-r--r--indra/llwindow/llwindowmacosx-objc.mm19
-rw-r--r--indra/llwindow/llwindowmacosx.cpp48
-rw-r--r--indra/llwindow/llwindowmacosx.h2
-rw-r--r--indra/llwindow/llwindowsdl.cpp202
-rw-r--r--indra/llwindow/llwindowsdl.h3
-rw-r--r--indra/llwindow/llwindowwin32.cpp11
-rw-r--r--indra/llwindow/llwindowwin32.h3
-rw-r--r--indra/newview/llappearancemgr.cpp5
-rw-r--r--indra/newview/llappviewer.cpp6
-rw-r--r--indra/newview/llfloaterland.cpp98
-rw-r--r--indra/newview/llfolderview.cpp9
-rw-r--r--indra/newview/llfolderviewitem.cpp82
-rw-r--r--indra/newview/llfolderviewitem.h10
-rw-r--r--indra/newview/llgrouplist.cpp2
-rw-r--r--indra/newview/llloginhandler.cpp8
-rw-r--r--indra/newview/llmediactrl.cpp17
-rw-r--r--indra/newview/llmediactrl.h1
-rw-r--r--indra/newview/llpanelclassified.cpp233
-rw-r--r--indra/newview/llpanelclassified.h44
-rw-r--r--indra/newview/llpanelobjectinventory.cpp6
-rw-r--r--indra/newview/llpanelpicks.cpp175
-rw-r--r--indra/newview/llpanelpicks.h50
-rw-r--r--indra/newview/llpanelprofile.cpp10
-rw-r--r--indra/newview/llpopupview.cpp4
-rw-r--r--indra/newview/llscriptfloater.cpp7
-rw-r--r--indra/newview/lltexturecache.cpp78
-rw-r--r--indra/newview/lltexturecache.h6
-rw-r--r--indra/newview/lltextureview.cpp20
-rw-r--r--indra/newview/lltoastnotifypanel.cpp15
-rw-r--r--indra/newview/lltoastnotifypanel.h12
-rw-r--r--indra/newview/llviewermedia.cpp12
-rw-r--r--indra/newview/llviewermedia.h4
-rw-r--r--indra/newview/llviewertexture.cpp14
-rw-r--r--indra/newview/llviewertexture.h3
-rw-r--r--indra/newview/skins/default/xui/da/floater_tools.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_about_land.xml15
-rw-r--r--indra/newview/skins/default/xui/de/floater_buy_land.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_customize.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_god_tools.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_im.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_publish_classified.xml15
-rw-r--r--indra/newview/skins/default/xui/de/floater_report_abuse.xml8
-rw-r--r--indra/newview/skins/default/xui/de/floater_texture_ctrl.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_tools.xml16
-rw-r--r--indra/newview/skins/default/xui/de/floater_world_map.xml17
-rw-r--r--indra/newview/skins/default/xui/de/notifications.xml32
-rw-r--r--indra/newview/skins/default/xui/de/panel_classified_info.xml36
-rw-r--r--indra/newview/skins/default/xui/de/panel_edit_classified.xml27
-rw-r--r--indra/newview/skins/default/xui/de/panel_edit_jacket.xml4
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_invite.xml8
-rw-r--r--indra/newview/skins/default/xui/de/panel_people.xml10
-rw-r--r--indra/newview/skins/default/xui/de/panel_place_profile.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/de/panel_region_estate.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_region_general.xml24
-rw-r--r--indra/newview/skins/default/xui/de/panel_region_general_layout.xml4
-rw-r--r--indra/newview/skins/default/xui/de/panel_region_texture.xml24
-rw-r--r--indra/newview/skins/default/xui/de/sidepanel_task_info.xml7
-rw-r--r--indra/newview/skins/default/xui/de/strings.xml10
-rw-r--r--indra/newview/skins/default/xui/de/teleport_strings.xml5
-rw-r--r--indra/newview/skins/default/xui/en/floater_about_land.xml19
-rw-r--r--indra/newview/skins/default/xui/en/floater_script.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml34
-rw-r--r--indra/newview/skins/default/xui/en/menu_picks.xml15
-rw-r--r--indra/newview/skins/default/xui/en/panel_classified_info.xml26
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_classified.xml50
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_pick.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_invite.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_place_profile.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_estate.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_general.xml3
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_task_info.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/slider_bar.xml3
-rw-r--r--indra/newview/skins/default/xui/es/notifications.xml8
-rw-r--r--indra/newview/skins/default/xui/es/panel_login.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_general.xml4
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml21
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_sound.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about_land.xml17
-rw-r--r--indra/newview/skins/default/xui/fr/floater_god_tools.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_im.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_publish_classified.xml15
-rw-r--r--indra/newview/skins/default/xui/fr/floater_snapshot.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_world_map.xml36
-rw-r--r--indra/newview/skins/default/xui/fr/menu_attachment_other.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_avatar_other.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_profile_overflow.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/notifications.xml30
-rw-r--r--indra/newview/skins/default/xui/fr/panel_classified_info.xml36
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_classified.xml27
-rw-r--r--indra/newview/skins/default/xui/fr/panel_people.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/panel_place_profile.xml52
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_estate.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_general.xml28
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_general_layout.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_texture.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/role_actions.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/sidepanel_task_info.xml39
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/teleport_strings.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/floater_about_land.xml15
-rw-r--r--indra/newview/skins/default/xui/ja/floater_buy_land.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_god_tools.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_im.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_gesture.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_publish_classified.xml15
-rw-r--r--indra/newview/skins/default/xui/ja/floater_snapshot.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_world_map.xml29
-rw-r--r--indra/newview/skins/default/xui/ja/notifications.xml22
-rw-r--r--indra/newview/skins/default/xui/ja/panel_classified_info.xml36
-rw-r--r--indra/newview/skins/default/xui/ja/panel_edit_classified.xml27
-rw-r--r--indra/newview/skins/default/xui/ja/panel_people.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/panel_place_profile.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_estate.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_general.xml26
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_general_layout.xml14
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_texture.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_status_bar.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/sidepanel_task_info.xml7
-rw-r--r--indra/newview/skins/default/xui/ja/strings.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/teleport_strings.xml5
-rw-r--r--indra/test/llpermissions_tut.cpp108
136 files changed, 1731 insertions, 844 deletions
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp
index ed06c85e1a..b92ccd1d77 100644
--- a/indra/llaudio/llaudioengine.cpp
+++ b/indra/llaudio/llaudioengine.cpp
@@ -592,7 +592,7 @@ LLAudioBuffer * LLAudioEngine::getFreeBuffer()
if (buffer_id >= 0)
{
- llinfos << "Taking over unused buffer " << buffer_id << llendl;
+ lldebugs << "Taking over unused buffer " << buffer_id << llendl;
//llinfos << "Flushing unused buffer!" << llendl;
mBuffers[buffer_id]->mAudioDatap->mBufferp = NULL;
delete mBuffers[buffer_id];
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 0ed700b9da..0272c55db2 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -775,33 +775,6 @@ void LLMemoryInfo::stream(std::ostream& s) const
#endif
}
-S32 LLDisplayInfo::getDisplayWidth() const
-{
-#if LL_WINDOWS
- return ::GetSystemMetrics(SM_CXVIRTUALSCREEN);
-#elif LL_DARWIN
- return 1024; //*FIXME
-#elif LL_SOLARIS
- return 1024; //*FIXME
-#else
- return 1024; //*FIXME
-#endif
-}
-
-S32 LLDisplayInfo::getDisplayHeight() const
-{
-#if LL_WINDOWS
- return ::GetSystemMetrics(SM_CYVIRTUALSCREEN);
-#elif LL_DARWIN
- return 768; //*FIXME
-#elif LL_SOLARIS
- return 768; //*FIXME
-#else
- return 768; //*FIXME
-#endif
-}
-
-
std::ostream& operator<<(std::ostream& s, const LLOSInfo& info)
{
info.stream(s);
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h
index aa3fdd485b..f1dda1b2e2 100644
--- a/indra/llcommon/llsys.h
+++ b/indra/llcommon/llsys.h
@@ -122,22 +122,6 @@ public:
U32 getPhysicalMemoryClamped() const; ///< Memory size in clamped bytes
};
-//=============================================================================
-//
-// CLASS LLDisplayInfo
-class LL_COMMON_API LLDisplayInfo
-
-/*! @brief Class to query the information about some display settings
-*/
-{
-public:
- LLDisplayInfo(){}; ///< Default constructor
-
- S32 getDisplayWidth() const; ///< display width
- S32 getDisplayHeight() const; ///< display height
-
-};
-
LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLOSInfo& info);
LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLCPUInfo& info);
LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLMemoryInfo& info);
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index ce25ee32b3..c1d512e148 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -323,15 +323,19 @@ void LLComboBox::setValue(const LLSD& value)
LLScrollListItem* item = mList->getFirstSelected();
if (item)
{
- setLabel( mList->getSelectedItemLabel() );
+ setLabel(getSelectedItemLabel());
}
mLastSelectedIndex = mList->getFirstSelectedIndex();
}
+ else
+ {
+ mLastSelectedIndex = -1;
+ }
}
const std::string LLComboBox::getSimple() const
{
- const std::string res = mList->getSelectedItemLabel();
+ const std::string res = getSelectedItemLabel();
if (res.empty() && mAllowTextEntry)
{
return mTextEntry->getText();
@@ -410,7 +414,7 @@ BOOL LLComboBox::remove(S32 index)
if (index < mList->getItemCount())
{
mList->deleteSingleItem(index);
- setLabel(mList->getSelectedItemLabel());
+ setLabel(getSelectedItemLabel());
return TRUE;
}
return FALSE;
@@ -451,7 +455,7 @@ BOOL LLComboBox::setCurrentByIndex( S32 index )
BOOL found = mList->selectNthItem( index );
if (found)
{
- setLabel(mList->getSelectedItemLabel());
+ setLabel(getSelectedItemLabel());
mLastSelectedIndex = index;
}
return found;
@@ -904,7 +908,7 @@ void LLComboBox::updateSelection()
}
else if (mList->selectItemByPrefix(left_wstring, FALSE))
{
- LLWString selected_item = utf8str_to_wstring(mList->getSelectedItemLabel());
+ LLWString selected_item = utf8str_to_wstring(getSelectedItemLabel());
LLWString wtext = left_wstring + selected_item.substr(left_wstring.size(), selected_item.size());
mTextEntry->setText(wstring_to_utf8str(wtext));
mTextEntry->setSelection(left_wstring.size(), mTextEntry->getWText().size());
@@ -1006,7 +1010,7 @@ BOOL LLComboBox::setCurrentByID(const LLUUID& id)
if (found)
{
- setLabel(mList->getSelectedItemLabel());
+ setLabel(getSelectedItemLabel());
mLastSelectedIndex = mList->getFirstSelectedIndex();
}
@@ -1022,7 +1026,7 @@ BOOL LLComboBox::setSelectedByValue(const LLSD& value, BOOL selected)
BOOL found = mList->setSelectedByValue(value, selected);
if (found)
{
- setLabel(mList->getSelectedItemLabel());
+ setLabel(getSelectedItemLabel());
}
return found;
}
@@ -1084,10 +1088,19 @@ void LLIconsComboBox::setValue(const LLSD& value)
LLScrollListItem* item = mList->getFirstSelected();
if (item)
{
- mButton->setImageOverlay(mList->getSelectedItemLabel(mIconColumnIndex), mButton->getImageOverlayHAlign());
-
- setLabel(mList->getSelectedItemLabel(mLabelColumnIndex));
+ setLabel(getSelectedItemLabel());
}
mLastSelectedIndex = mList->getFirstSelectedIndex();
}
+ else
+ {
+ mLastSelectedIndex = -1;
+ }
+}
+
+const std::string LLIconsComboBox::getSelectedItemLabel(S32 column) const
+{
+ mButton->setImageOverlay(LLComboBox::getSelectedItemLabel(mIconColumnIndex), mButton->getImageOverlayHAlign());
+
+ return LLComboBox::getSelectedItemLabel(mLabelColumnIndex);
}
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index c694724248..965061ead2 100644
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
@@ -150,7 +150,7 @@ public:
// Get name of current item. Returns an empty string if not found.
const std::string getSimple() const;
// Get contents of column x of selected row
- const std::string getSelectedItemLabel(S32 column = 0) const;
+ virtual const std::string getSelectedItemLabel(S32 column = 0) const;
// Sets the label, which doesn't have to exist in the label.
// This is probably a UI abuse.
@@ -248,6 +248,7 @@ public:
};
/*virtual*/ void setValue(const LLSD& value);
+ /*virtual*/ const std::string getSelectedItemLabel(S32 column = 0) const;
private:
enum EColumnIndex
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 2481249f91..2e5aeec41d 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -492,6 +492,12 @@ void LLFlatListView::onItemMouseClick(item_pair_t* item_pair, MASK mask)
{
if (!item_pair) return;
+ if (!item_pair->first)
+ {
+ llwarning("Attempt to selet an item pair containing null panel item", 0);
+ return;
+ }
+
setFocus(TRUE);
bool select_item = !isSelected(item_pair);
diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp
index 1c6c9e6e9d..b77deb003f 100644
--- a/indra/llwindow/llwindow.cpp
+++ b/indra/llwindow/llwindow.cpp
@@ -407,3 +407,30 @@ BOOL LLWindowManager::isWindowValid(LLWindow *window)
{
return sWindowList.find(window) != sWindowList.end();
}
+
+S32 LLDisplayInfo::getDisplayWidth() const
+{
+#if LL_WINDOWS
+ return LLWindowWin32::getDisplayWidth();
+#elif LL_DARWIN
+ return LLWindowMacOSX::getDisplayWidth();
+#elif LL_SDL
+ return LLWindowSDL::getDisplayWidth();
+#else
+ return 1024; //*FIXME
+#endif
+}
+
+S32 LLDisplayInfo::getDisplayHeight() const
+{
+#if LL_WINDOWS
+ return LLWindowWin32::getDisplayHeight();
+#elif LL_DARWIN
+ return LLWindowMacOSX::getDisplayHeight();
+#elif LL_SDL
+ return LLWindowSDL::getDisplayHeight();
+#else
+ return 768; //*FIXME
+#endif
+}
+
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
index 55b221e716..b769f5071b 100644
--- a/indra/llwindow/llwindow.h
+++ b/indra/llwindow/llwindow.h
@@ -281,4 +281,19 @@ extern const std::string gURLProtocolWhitelistHandler[];
void simpleEscapeString ( std::string& stringIn );
+//=============================================================================
+//
+// CLASS LLDisplayInfo
+class LLDisplayInfo
+
+/*! @brief Class to query the information about some display settings
+*/
+{
+public:
+ LLDisplayInfo(){}; ///< Default constructor
+
+ S32 getDisplayWidth() const; ///< display width
+ S32 getDisplayHeight() const; ///< display height
+};
+
#endif // _LL_window_h_
diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h
index ed5d7b1e74..ed8c874dcb 100644
--- a/indra/llwindow/llwindowmacosx-objc.h
+++ b/indra/llwindow/llwindowmacosx-objc.h
@@ -40,4 +40,5 @@ void setupCocoa();
CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY);
OSErr releaseImageCursor(CursorRef ref);
OSErr setImageCursor(CursorRef ref);
-
+void getScreenSize(int* width, int* height);
+void getVisibleScreen(int *x, int *y, int* width, int* height);
diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm
index 59b25e1726..5cab2619fd 100644
--- a/indra/llwindow/llwindowmacosx-objc.mm
+++ b/indra/llwindow/llwindowmacosx-objc.mm
@@ -116,3 +116,22 @@ OSErr setImageCursor(CursorRef ref)
return noErr;
}
+void getScreenSize(int* width, int* height)
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ NSRect screen_rect = [[NSScreen mainScreen] frame];
+ if (width) *width = (int)(screen_rect.size.width);
+ if (height) *height = (int)(screen_rect.size.height);
+ [pool release];
+}
+
+void getVisibleScreen(int *x, int *y, int* width, int* height)
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ NSRect visible_rect = [[NSScreen mainScreen] visibleFrame];
+ if (width) *width = (int)(visible_rect.size.width);
+ if (height) *height = (int)(visible_rect.size.height);
+ if (x) *x = (int)(visible_rect.origin.x);
+ if (y) *y = (int)(visible_rect.origin.y);
+ [pool release];
+}
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index ad97bc45fc..924acaf148 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -1122,7 +1122,33 @@ BOOL LLWindowMacOSX::getMaximized()
BOOL LLWindowMacOSX::maximize()
{
- // TODO
+ if (mWindow)
+ {
+ // *HACK: Because Mac OSX doesn't have a concept of a "maximized" window, we just
+ // stretch it out to the visible screen size.
+ Rect win_rect;
+
+ int visible_x;
+ int visible_y;
+ int visible_width;
+ int visible_height;
+ int screen_width;
+ int screen_height;
+
+ getScreenSize(&screen_width, &screen_height);
+ getVisibleScreen(&visible_x, &visible_y, &visible_width, &visible_height);
+
+ int mac_os_menu_bar_height = screen_height - (visible_height + visible_y);
+ ::SetRect(&win_rect,
+ visible_x,
+ mac_os_menu_bar_height,
+ visible_width + visible_x,
+ visible_height + mac_os_menu_bar_height);
+
+ ::SetWindowBounds(mWindow, kWindowStructureRgn, &win_rect);
+
+ return TRUE;
+ }
return FALSE;
}
@@ -3464,6 +3490,26 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers)
return mask;
}
+// static
+S32 LLWindowMacOSX::getDisplayWidth()
+{
+ S32 width = 1024;
+ // Need to invoke cocoa before use getScreenSize()
+ setupCocoa();
+ getScreenSize(&width, NULL);
+ return width;
+}
+
+// static
+S32 LLWindowMacOSX::getDisplayHeight()
+{
+ S32 height = 768;
+ // Need to invoke cocoa before use getScreenSize()
+ setupCocoa();
+ getScreenSize(NULL, &height);
+ return height;
+}
+
#if LL_OS_DRAGDROP_ENABLED
OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow,
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 7c6b324029..86036a261c 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -123,6 +123,8 @@ public:
// Provide native key event data
/*virtual*/ LLSD getNativeKeyData();
+ static S32 getDisplayWidth();
+ static S32 getDisplayHeight();
protected:
LLWindowMacOSX(LLWindowCallbacks* callbacks,
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 1f705f9e60..cb4e04511c 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -187,6 +187,47 @@ Display* LLWindowSDL::get_SDL_Display(void)
}
#endif // LL_X11
+// static
+S32 LLWindowSDL::getDisplayWidth()
+{
+#if LL_GTK
+ if (LLWindowSDL::ll_try_gtk_init())
+ {
+ return gdk_screen_width();
+ }
+#endif // LL_GTK
+
+#if LL_X11
+ Display *display = XOpenDisplay(NULL);
+ int screen_num = DefaultScreen(display);
+ S32 width = DisplayWidth(display, screen_num);
+ XCloseDisplay(display);
+ return width;
+#endif //LL_X11
+
+ return 1024;
+}
+
+// static
+S32 LLWindowSDL::getDisplayHeight()
+{
+#if LL_GTK
+ if (LLWindowSDL::ll_try_gtk_init())
+ {
+ return gdk_screen_height();
+ }
+#endif // LL_GTK
+
+#if LL_X11
+ Display *display = XOpenDisplay(NULL);
+ int screen_num = DefaultScreen(display);
+ S32 height = DisplayHeight(display, screen_num);
+ XCloseDisplay(display);
+ return height;
+#endif //LL_X11
+
+ return 768;
+}
LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
const std::string& title, S32 x, S32 y, S32 width,
@@ -909,7 +950,68 @@ BOOL LLWindowSDL::getMaximized()
if (mWindow)
{
- // TODO
+#if LL_X11
+ if (mSDL_Display)
+ {
+ maybe_lock_display();
+
+ // Return data in the specified format, XA_ATOM.
+ U8* prop;
+ // Actual format of the property.
+ int format;
+ // Actual number of items stored in the prop return data.
+ unsigned long nitems;
+ // Number of bytes remaining to be read in the property if a partial read was performed.
+ unsigned long bytes_after;
+ // Atom identifier that defines the actual type of the property.
+ Atom type;
+
+ // Atom used to obtain list of hints describing the window state.
+ Atom wm_state = XInternAtom(mSDL_Display, "_NET_WM_STATE", False);
+
+ // Atoms indicates that the window is vertically/horizontally maximized.
+ Atom max_vert = XInternAtom(mSDL_Display, "_NET_WM_STATE_MAXIMIZED_VERT", False);
+ Atom max_horz = XInternAtom(mSDL_Display, "_NET_WM_STATE_MAXIMIZED_HORZ", False);
+
+ // How many atoms in which we interested are present in list of hints.
+ U32 pass = 0;
+
+ do
+ {
+ nitems = 0;
+ bytes_after = 0;
+ type = None;
+ if ( (XGetWindowProperty (mSDL_Display,
+ mSDL_XWindowID,
+ wm_state,
+ 0, UINT_MAX,
+ False, XA_ATOM,
+ &type, &format,
+ &nitems, &bytes_after,
+ &prop) == Success)
+ && type != None )
+ {
+ Atom *atoms = (Atom *)prop;
+ for (unsigned long i=0; i<nitems; ++i)
+ {
+ if (atoms[i] == max_horz)
+ ++pass;
+ else if (atoms[i] == max_vert)
+ ++pass;
+ }
+ XFree (atoms);
+ }
+ else
+ {
+ break;
+ }
+ } while (bytes_after > 0);
+
+ result = (pass == 2);
+
+ maybe_unlock_display();
+ }
+#endif // LL_X11
}
return(result);
@@ -917,7 +1019,103 @@ BOOL LLWindowSDL::getMaximized()
BOOL LLWindowSDL::maximize()
{
- // TODO
+#if LL_X11
+ if (mSDL_Display && !mFullscreen)
+ {
+ maybe_lock_display();
+
+ BOOL is_maximize_allowed = FALSE;
+
+ // Check if maximize is allowed
+ {
+ // Return data in the specified format, XA_ATOM.
+ U8* prop;
+ // Actual format of the property.
+ int format;
+ // Actual number of items stored in the prop return data.
+ unsigned long nitems;
+ // Number of bytes remaining to be read in the property if a partial read was performed.
+ unsigned long bytes_after;
+ // Atom identifier that defines the actual type of the property.
+ Atom type;
+
+ // Atom used to obtain a list of atoms indicating user operations that the Window Manager supports for this window.
+ Atom allowed_act = XInternAtom(mSDL_Display, "_NET_WM_ALLOWED_ACTIONS", False);
+
+ // Atoms that indicates that the window may be vertically/horizontally maximized.
+ Atom max_vert_act = XInternAtom(mSDL_Display, "_NET_WM_ACTION_MAXIMIZE_HORZ", False);
+ Atom max_horz_act = XInternAtom(mSDL_Display, "_NET_WM_ACTION_MAXIMIZE_VERT", False);
+
+ // How many atoms in which we interested are present in list of hints.
+ U32 pass = 0;
+
+ do
+ {
+ nitems = 0;
+ bytes_after = 0;
+ type = None;
+ if ( (XGetWindowProperty (mSDL_Display,
+ mSDL_XWindowID,
+ allowed_act,
+ 0, UINT_MAX,
+ False, XA_ATOM,
+ &type, &format,
+ &nitems, &bytes_after,
+ &prop) == Success)
+ && type != None )
+ {
+ Atom *atoms = (Atom *)prop;
+ for (unsigned long i=0; i<nitems; ++i)
+ {
+ if (atoms[i] == max_vert_act)
+ ++pass;
+ else if (atoms[i] == max_horz_act)
+ ++pass;
+ }
+ XFree (atoms);
+ }
+ else
+ {
+ break;
+ }
+ } while (bytes_after > 0);
+
+ is_maximize_allowed = (pass == 2);
+ }
+
+ // Send maximize event to X11 system
+ if (is_maximize_allowed)
+ {
+ XEvent xev;
+
+ // Atom describing the window state.
+ Atom wm_state = XInternAtom(mSDL_Display, "_NET_WM_STATE", False);
+
+ // Atoms indicates that the window is vertically/horizontally maximized.
+ Atom max_vert = XInternAtom(mSDL_Display, "_NET_WM_STATE_MAXIMIZED_VERT", False);
+ Atom max_horz = XInternAtom(mSDL_Display, "_NET_WM_STATE_MAXIMIZED_HORZ", False);
+
+ memset(&xev, 0, sizeof(xev));
+ xev.type = ClientMessage;
+ xev.xclient.window = mSDL_XWindowID;
+ xev.xclient.message_type = wm_state;
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = 1; // add/set property
+ xev.xclient.data.l[1] = max_vert;
+ xev.xclient.data.l[2] = max_horz;
+ xev.xclient.data.l[3] = 0;
+ xev.xclient.data.l[4] = 0;
+
+ XSendEvent(mSDL_Display,
+ DefaultRootWindow(mSDL_Display),
+ False,
+ SubstructureNotifyMask, &xev);
+ }
+
+ maybe_unlock_display();
+ return is_maximize_allowed;
+ }
+#endif // LL_X11
return FALSE;
}
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index e6bdd46a77..2311a361fa 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -148,6 +148,9 @@ public:
static Display* get_SDL_Display(void);
#endif // LL_X11
+ static S32 getDisplayWidth();
+ static S32 getDisplayHeight();
+
protected:
LLWindowSDL(LLWindowCallbacks* callbacks,
const std::string& title, int x, int y, int width, int height, U32 flags,
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index c80392ad45..4be5d06c2b 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -3714,5 +3714,16 @@ std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList()
return std::vector<std::string>();
}
+// static
+S32 LLWindowWin32::getDisplayWidth()
+{
+ return ::GetSystemMetrics(SM_CXVIRTUALSCREEN);
+}
+
+// static
+S32 LLWindowWin32::getDisplayHeight()
+{
+ return ::GetSystemMetrics(SM_CYVIRTUALSCREEN);
+}
#endif // LL_WINDOWS
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index 9d57735772..c221ec0192 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -120,6 +120,9 @@ public:
static std::vector<std::string> getDynamicFallbackFontList();
+ static S32 getDisplayWidth();
+ static S32 getDisplayHeight();
+
protected:
LLWindowWin32(LLWindowCallbacks* callbacks,
const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags,
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index f08d8decfe..f686eccf37 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -494,11 +494,12 @@ bool LLWearableHoldingPattern::pollFetchCompletion()
bool completed = isFetchCompleted();
bool timed_out = isTimedOut();
bool done = completed || timed_out;
-
- llinfos << "polling, done status: " << completed << " timed out " << timed_out << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl;
if (done)
{
+ llinfos << "polling, done status: " << completed << " timed out " << timed_out
+ << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl;
+
mFired = true;
if (timed_out)
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index e3bfb823d0..abac1164f9 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -307,7 +307,7 @@ static std::string gLaunchFileOnQuit;
// Used on Win32 for other apps to identify our window (eg, win_setup)
const char* const VIEWER_WINDOW_CLASSNAME = "Second Life";
static const S32 FIRST_RUN_WINDOW_WIDTH = 1024;
-static const S32 FIRST_RUN_WINDOW_HRIGHT = 768;
+static const S32 FIRST_RUN_WINDOW_HIGHT = 768;
//----------------------------------------------------------------------------
// List of entries from strings.xml to always replace
@@ -2407,12 +2407,12 @@ bool LLAppViewer::initWindow()
if (first_run)//for first login
{
window_width = FIRST_RUN_WINDOW_WIDTH;//yep hardcoded
- window_height = FIRST_RUN_WINDOW_HRIGHT;
+ window_height = FIRST_RUN_WINDOW_HIGHT;
//if screen resolution is lower then 1024*768 then show maximized
LLDisplayInfo display_info;
if(display_info.getDisplayWidth() <= FIRST_RUN_WINDOW_WIDTH
- || display_info.getDisplayHeight()<=FIRST_RUN_WINDOW_HRIGHT)
+ || display_info.getDisplayHeight()<=FIRST_RUN_WINDOW_HIGHT)
{
show_maximized = true;
}
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 26c6db9652..26a179074d 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -86,6 +86,7 @@
static std::string OWNER_ONLINE = "0";
static std::string OWNER_OFFLINE = "1";
static std::string OWNER_GROUP = "2";
+static std::string MATURITY = "[MATURITY]";
// constants used in callbacks below - syntactic sugar.
static const BOOL BUY_GROUP_LAND = TRUE;
@@ -102,6 +103,22 @@ public:
virtual void changed() { LLFloaterLand::refreshAll(); }
};
+// class needed to get full access to textbox inside checkbox, because LLCheckBoxCtrl::setLabel() has string as its argument.
+// It was introduced while implementing EXT-4706
+class LLCheckBoxWithTBAcess : public LLCheckBoxCtrl
+{
+public:
+ LLTextBox* getTextBox()
+ {
+ return mLabel;
+ }
+};
+
+// inserts maturity info(icon and text) into target textbox
+// names_floater - pointer to floater which contains strings with maturity icons filenames
+// str_to_parse is string in format "txt1[MATURITY]txt2" where maturity icon and text will be inserted instead of [MATURITY]
+void insert_maturity_into_textbox(LLTextBox* target_textbox, LLFloater* names_floater, std::string str_to_parse);
+
//---------------------------------------------------------------------------
// LLFloaterLand
//---------------------------------------------------------------------------
@@ -554,7 +571,7 @@ void LLPanelLandGeneral::refresh()
if (regionp)
{
- mContentRating->setText(regionp->getSimAccessString());
+ insert_maturity_into_textbox(mContentRating, gFloaterView->getParentFloater(this), MATURITY);
mLandType->setText(regionp->getSimProductName());
}
@@ -2058,8 +2075,14 @@ void LLPanelLandOptions::refresh()
{
// not teen so fill in the data for the maturity control
mMatureCtrl->setVisible(TRUE);
- mMatureCtrl->setLabel(getString("mature_check_mature"));
- mMatureCtrl->setToolTip(getString("mature_check_mature_tooltip"));
+ LLStyle::Params style;
+ style.image(LLUI::getUIImage(gFloaterView->getParentFloater(this)->getString("maturity_icon_moderate")));
+ LLCheckBoxWithTBAcess* fullaccess_mature_ctrl = (LLCheckBoxWithTBAcess*)mMatureCtrl;
+ fullaccess_mature_ctrl->getTextBox()->setText(std::string("icon"),style);
+ fullaccess_mature_ctrl->getTextBox()->appendText(getString("mature_check_mature"), false);
+ fullaccess_mature_ctrl->setToolTip(getString("mature_check_mature_tooltip"));
+ fullaccess_mature_ctrl->reshape(fullaccess_mature_ctrl->getRect().getWidth(), fullaccess_mature_ctrl->getRect().getHeight(), FALSE);
+
// they can see the checkbox, but its disposition depends on the
// state of the region
LLViewerRegion* regionp = LLViewerParcelMgr::getInstance()->getSelectionRegion();
@@ -2460,19 +2483,26 @@ void LLPanelLandAccess::refresh()
}
}
+ LLCheckBoxWithTBAcess* maturity_checkbox = (LLCheckBoxWithTBAcess*) getChild<LLCheckBoxCtrl>( "public_access");
LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
if(region)
{
- std::string region_access = "(";
- region_access += region->getSimAccessString();
- region_access += ")";
- childSetLabelArg( "public_access", "[MATURITY]", region_access );
+ LLTextBox* maturity_textbox = maturity_checkbox->getTextBox();
+ insert_maturity_into_textbox(maturity_textbox, gFloaterView->getParentFloater(this), getString("allow_public_access"));
+ maturity_checkbox->reshape(maturity_checkbox->getRect().getWidth(), maturity_checkbox->getRect().getHeight(), FALSE);
}
else
{
- childSetLabelArg( "public_access", "[MATURITY]", std::string() );
- }
+ std::string maturity_string = getString("allow_public_access");
+ size_t maturity_pos = maturity_string.find(MATURITY);
+ if (maturity_pos != std::string::npos)
+ {
+ maturity_string.replace(maturity_pos, MATURITY.length(), std::string(""));
+ }
+
+ maturity_checkbox->setLabel(maturity_string);
+ }
if(parcel->getRegionDenyAnonymousOverride())
{
@@ -2858,7 +2888,7 @@ void LLPanelLandCovenant::refresh()
LLTextBox* region_maturity = getChild<LLTextBox>("region_maturity_text");
if (region_maturity)
{
- region_maturity->setText(region->getSimAccessString());
+ insert_maturity_into_textbox(region_maturity, gFloaterView->getParentFloater(this), MATURITY);
}
LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause");
@@ -2939,3 +2969,51 @@ void LLPanelLandCovenant::updateEstateOwnerName(const std::string& name)
if (editor) editor->setText(name);
}
}
+
+// inserts maturity info(icon and text) into target textbox
+// names_floater - pointer to floater which contains strings with maturity icons filenames
+// str_to_parse is string in format "txt1[MATURITY]txt2" where maturity icon and text will be inserted instead of [MATURITY]
+void insert_maturity_into_textbox(LLTextBox* target_textbox, LLFloater* names_floater, std::string str_to_parse)
+{
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if (!region)
+ return;
+
+ LLStyle::Params style;
+
+ U8 sim_access = region->getSimAccess();
+
+ switch(sim_access)
+ {
+ case SIM_ACCESS_PG:
+ style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_general")));
+ break;
+
+ case SIM_ACCESS_ADULT:
+ style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_adult")));
+ break;
+
+ case SIM_ACCESS_MATURE:
+ style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_moderate")));
+ break;
+
+ default:
+ break;
+ }
+
+ size_t maturity_pos = str_to_parse.find(MATURITY);
+
+ if (maturity_pos == std::string::npos)
+ {
+ return;
+ }
+
+ std::string text_before_rating = str_to_parse.substr(0, maturity_pos);
+ std::string text_after_rating = str_to_parse.substr(maturity_pos + MATURITY.length());
+
+ target_textbox->setText(text_before_rating);
+ // any text may be here instead of "icon" except ""
+ target_textbox->appendText(std::string("icon"), false, style);
+ target_textbox->appendText(LLViewerParcelMgr::getInstance()->getSelectionRegion()->getSimAccessString(), false);
+ target_textbox->appendText(text_after_rating, false);
+}
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index cc807c2370..23062bafec 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -837,11 +837,14 @@ void LLFolderView::sanitizeSelection()
void LLFolderView::clearSelection()
{
- if (mSelectedItems.size() > 0)
+ for (selected_items_t::const_iterator item_it = mSelectedItems.begin();
+ item_it != mSelectedItems.end();
+ ++item_it)
{
- recursiveDeselect(FALSE);
- mSelectedItems.clear();
+ (*item_it)->setUnselected();
}
+
+ mSelectedItems.clear();
mSelectThisID.setNull();
}
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 76607e4874..d3e3d2b57b 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -121,7 +121,6 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p)
mHasVisibleChildren(FALSE),
mIndentation(0),
mItemHeight(p.item_height),
- mNumDescendantsSelected(0),
mPassedFilter(FALSE),
mLastFilterGeneration(-1),
mStringMatchOffset(std::string::npos),
@@ -497,22 +496,6 @@ BOOL LLFolderViewItem::changeSelection(LLFolderViewItem* selection, BOOL selecte
return FALSE;
}
-void LLFolderViewItem::recursiveDeselect(BOOL deselect_self)
-{
- if (mIsSelected && deselect_self)
- {
- mIsSelected = FALSE;
-
- // update ancestors' count of selected descendents
- LLFolderViewFolder* parent_folder = getParentFolder();
- while(parent_folder)
- {
- parent_folder->mNumDescendantsSelected--;
- parent_folder = parent_folder->getParentFolder();
- }
- }
-}
-
BOOL LLFolderViewItem::isMovable()
{
@@ -1459,7 +1442,6 @@ BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem
{
rv = TRUE;
child_selected = TRUE;
- mNumDescendantsSelected++;
}
}
for (items_t::iterator iter = mItems.begin();
@@ -1470,7 +1452,6 @@ BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem
{
rv = TRUE;
child_selected = TRUE;
- mNumDescendantsSelected++;
}
}
if(openitem && child_selected)
@@ -1503,14 +1484,6 @@ BOOL LLFolderViewFolder::changeSelection(LLFolderViewItem* selection,
folders_t::iterator fit = iter++;
if((*fit)->changeSelection(selection, selected))
{
- if (selected)
- {
- mNumDescendantsSelected++;
- }
- else
- {
- mNumDescendantsSelected--;
- }
rv = TRUE;
}
}
@@ -1520,14 +1493,6 @@ BOOL LLFolderViewFolder::changeSelection(LLFolderViewItem* selection,
items_t::iterator iit = iter++;
if((*iit)->changeSelection(selection, selected))
{
- if (selected)
- {
- mNumDescendantsSelected++;
- }
- else
- {
- mNumDescendantsSelected--;
- }
rv = TRUE;
}
}
@@ -1544,7 +1509,6 @@ S32 LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderVie
{
folders_t::iterator fit = iter++;
num_selected += (*fit)->extendSelection(selection, last_selected, selected_items);
- mNumDescendantsSelected += num_selected;
}
// handle selection of our immediate children...
@@ -1637,7 +1601,6 @@ S32 LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderVie
if (item->changeSelection(item, TRUE))
{
selected_items.put(item);
- mNumDescendantsSelected++;
num_selected++;
}
}
@@ -1648,7 +1611,6 @@ S32 LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderVie
if (selection->changeSelection(selection, TRUE))
{
selected_items.put(selection);
- mNumDescendantsSelected++;
num_selected++;
}
}
@@ -1656,47 +1618,6 @@ S32 LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderVie
return num_selected;
}
-void LLFolderViewFolder::recursiveDeselect(BOOL deselect_self)
-{
- // make sure we don't have negative values
- llassert(mNumDescendantsSelected >= 0);
-
- if (mIsSelected && deselect_self)
- {
- mIsSelected = FALSE;
-
- // update ancestors' count of selected descendents
- LLFolderViewFolder* parent_folder = getParentFolder();
- while(parent_folder)
- {
- parent_folder->mNumDescendantsSelected--;
- parent_folder = parent_folder->getParentFolder();
- }
- }
-
- if (0 == mNumDescendantsSelected)
- {
- return;
- }
-
- for (items_t::iterator iter = mItems.begin();
- iter != mItems.end();)
- {
- items_t::iterator iit = iter++;
- LLFolderViewItem* item = (*iit);
- item->recursiveDeselect(TRUE);
- }
-
- for (folders_t::iterator iter = mFolders.begin();
- iter != mFolders.end();)
- {
- folders_t::iterator fit = iter++;
- LLFolderViewFolder* folder = (*fit);
- folder->recursiveDeselect(TRUE);
- }
-
-}
-
void LLFolderViewFolder::destroyView()
{
for (items_t::iterator iter = mItems.begin();
@@ -1730,8 +1651,6 @@ BOOL LLFolderViewFolder::removeItem(LLFolderViewItem* item)
{
if(item->remove())
{
- //RN: this seem unneccessary as remove() moves to trash
- //removeView(item);
return TRUE;
}
return FALSE;
@@ -1746,7 +1665,6 @@ void LLFolderViewFolder::removeView(LLFolderViewItem* item)
return;
}
// deselect without traversing hierarchy
- item->recursiveDeselect(TRUE);
getRoot()->removeFromSelectionList(item);
extractItem(item);
delete item;
diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h
index be8e73a5a9..655ad89e99 100644
--- a/indra/newview/llfolderviewitem.h
+++ b/indra/newview/llfolderviewitem.h
@@ -150,7 +150,6 @@ protected:
BOOL mHasVisibleChildren;
S32 mIndentation;
S32 mItemHeight;
- S32 mNumDescendantsSelected;
BOOL mPassedFilter;
S32 mLastFilterGeneration;
std::string::size_type mStringMatchOffset;
@@ -231,9 +230,6 @@ public:
// this method is used to group select items
virtual S32 extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items){ return FALSE; }
- // this method is used to group select items
- virtual void recursiveDeselect(BOOL deselect_self);
-
// gets multiple-element selection
virtual BOOL getSelectionList(std::set<LLUUID> &selection) const {return TRUE;}
@@ -246,10 +242,10 @@ public:
// destroys this item recursively
virtual void destroyView();
- S32 getNumSelectedDescendants() { return mNumDescendantsSelected; }
-
BOOL isSelected() { return mIsSelected; }
+ void setUnselected() { mIsSelected = FALSE; }
+
void setIsCurSelection(BOOL select) { mIsCurSelection = select; }
BOOL getIsCurSelection() { return mIsCurSelection; }
@@ -441,8 +437,6 @@ public:
// this method is used to group select items
virtual S32 extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items);
- virtual void recursiveDeselect(BOOL deselect_self);
-
// Returns true is this object and all of its children can be removed.
virtual BOOL isRemovable();
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index bcfb516b81..8a056f836f 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -127,7 +127,7 @@ BOOL LLGroupList::handleRightMouseDown(S32 x, S32 y, MASK mask)
BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
LLMenuGL* context_menu = (LLMenuGL*)mContextMenuHandle.get();
- if (context_menu)
+ if (context_menu && size() > 0)
{
context_menu->buildDrawLabels();
context_menu->updateParent(LLMenuGL::sMenuContainer);
diff --git a/indra/newview/llloginhandler.cpp b/indra/newview/llloginhandler.cpp
index 1be3430e07..e3817eecc4 100644
--- a/indra/newview/llloginhandler.cpp
+++ b/indra/newview/llloginhandler.cpp
@@ -35,6 +35,7 @@
#include "llloginhandler.h"
// viewer includes
+#include "lllogininstance.h" // to check if logged in yet
#include "llpanellogin.h" // save_password_to_disk()
#include "llstartup.h" // getStartupState()
#include "llurlsimstring.h"
@@ -169,6 +170,13 @@ bool LLLoginHandler::handle(const LLSD& tokens,
const LLSD& query_map,
LLMediaCtrl* web)
{
+ // do nothing if we are already logged in
+ if (LLLoginInstance::getInstance()->authSuccess())
+ {
+ LL_WARNS_ONCE("SLURL") << "Already logged in! Ignoring login SLapp." << LL_ENDL;
+ return true;
+ }
+
if (tokens.size() == 1
&& tokens[0].asString() == "show")
{
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index bf33d8527e..05cb6ddc4a 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -80,8 +80,8 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
mForceUpdate( false ),
mOpenLinksInExternalBrowser( false ),
mOpenLinksInInternalBrowser( false ),
- mTrusted( false ),
mHomePageUrl( "" ),
+ mTrusted(false),
mIgnoreUIScale( true ),
mAlwaysRefresh( false ),
mMediaSource( 0 ),
@@ -183,6 +183,10 @@ void LLMediaCtrl::setOpenInInternalBrowser( bool valIn )
////////////////////////////////////////////////////////////////////////////////
void LLMediaCtrl::setTrusted( bool valIn )
{
+ if(mMediaSource)
+ {
+ mMediaSource->setTrustedBrowser(valIn);
+ }
mTrusted = valIn;
}
@@ -632,6 +636,7 @@ bool LLMediaCtrl::ensureMediaSourceExists()
mMediaSource->setVisible( getVisible() );
mMediaSource->addObserver( this );
mMediaSource->setBackgroundColor( getBackgroundColor() );
+ mMediaSource->setTrustedBrowser(mTrusted);
if(mClearCache)
{
mMediaSource->clearCache();
@@ -946,7 +951,6 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
case MEDIA_EVENT_CLICK_LINK_NOFOLLOW:
{
LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is " << self->getClickURL() << LL_ENDL;
- onClickLinkNoFollow(self);
};
break;
@@ -1064,15 +1068,6 @@ void LLMediaCtrl::clickLinkWithTarget(const std::string& url, const S32& target_
////////////////////////////////////////////////////////////////////////////////
//
-void LLMediaCtrl::onClickLinkNoFollow( LLPluginClassMedia* self )
-{
- // let the dispatcher handle blocking/throttling of SLURLs
- std::string url = self->getClickURL();
- LLURLDispatcher::dispatch(url, this, mTrusted);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
std::string LLMediaCtrl::getCurrentNavUrl()
{
return mCurrentNavUrl;
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index 60e0c4073b..e55d2f7cd0 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -164,7 +164,6 @@ public:
// handlers for individual events (could be done inside the switch in handleMediaEvent, they're just individual functions for clarity)
void onClickLinkHref( LLPluginClassMedia* self );
- void onClickLinkNoFollow( LLPluginClassMedia* self );
protected:
void convertInputCoords(S32& x, S32& y);
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 9f24ddc799..021e1f5159 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -114,6 +114,23 @@ public:
};
static LLDispatchClassifiedClickThrough sClassifiedClickThrough;
+// Just to debug errors. Can be thrown away later.
+class LLClassifiedClickMessageResponder : public LLHTTPClient::Responder
+{
+ LOG_CLASS(LLClassifiedClickMessageResponder);
+
+public:
+ // If we get back an error (not found, etc...), handle it here
+ virtual void errorWithContent(
+ U32 status,
+ const std::string& reason,
+ const LLSD& content)
+ {
+ llwarns << "Sending click message failed (" << status << "): [" << reason << "]" << llendl;
+ llwarns << "Content: [" << content << "]" << llendl;
+ }
+};
+
/* Re-expose this if we need to have classified ad HTML detail
pages. JC
@@ -1237,7 +1254,7 @@ void LLPanelClassifiedInfo::reshape(S32 width, S32 height, BOOL called_from_pare
void LLPanelClassifiedInfo::onOpen(const LLSD& key)
{
- LLUUID avatar_id = key["avatar_id"];
+ LLUUID avatar_id = key["classified_creator_id"];
if(avatar_id.isNull())
{
return;
@@ -1255,9 +1272,12 @@ void LLPanelClassifiedInfo::onOpen(const LLSD& key)
scrollToTop();
setClassifiedId(key["classified_id"]);
- setClassifiedName(key["name"]);
- setDescription(key["desc"]);
- setSnapshotId(key["snapshot_id"]);
+ setClassifiedName(key["classified_name"]);
+ setDescription(key["classified_desc"]);
+ setSnapshotId(key["classified_snapshot_id"]);
+ setFromSearch(key["from_search"]);
+
+ llinfos << "Opening classified [" << getClassifiedName() << "] (" << getClassifiedId() << ")" << llendl;
LLAvatarPropertiesProcessor::getInstance()->addObserver(getAvatarId(), this);
LLAvatarPropertiesProcessor::getInstance()->sendClassifiedInfoRequest(getClassifiedId());
@@ -1274,6 +1294,10 @@ void LLPanelClassifiedInfo::onOpen(const LLSD& key)
LLHTTPClient::post(url, body, new LLClassifiedStatsResponder(getClassifiedId()));
}
+ // Update classified click stats.
+ // *TODO: Should we do this when opening not from search?
+ sendClickMessage("profile");
+
setInfoLoaded(false);
}
@@ -1289,6 +1313,8 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t
setSnapshotId(c_info->snapshot_id);
setParcelId(c_info->parcel_id);
setPosGlobal(c_info->pos_global);
+ setSimName(c_info->sim_name);
+
setClassifiedLocation(createLocationText(c_info->parcel_name, c_info->sim_name, c_info->pos_global));
childSetValue("category", LLClassifiedInfo::sCategories[c_info->category]);
@@ -1299,6 +1325,8 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t
bool mature = is_cf_mature(c_info->flags);
childSetValue("content_type", mature ? mature_str : pg_str);
+ getChild<LLIconCtrl>("content_type_moderate")->setVisible(mature);
+ getChild<LLIconCtrl>("content_type_general")->setVisible(!mature);
std::string auto_renew_str = is_cf_auto_renew(c_info->flags) ?
getString("auto_renew_on") : getString("auto_renew_off");
@@ -1323,7 +1351,19 @@ void LLPanelClassifiedInfo::resetData()
setClassifiedLocation(LLStringUtil::null);
setClassifiedId(LLUUID::null);
setSnapshotId(LLUUID::null);
- mPosGlobal.clearVec();
+ setPosGlobal(LLVector3d::zero);
+ setParcelId(LLUUID::null);
+ setSimName(LLStringUtil::null);
+ setFromSearch(false);
+
+ // reset click stats
+ mTeleportClicksOld = 0;
+ mMapClicksOld = 0;
+ mProfileClicksOld = 0;
+ mTeleportClicksNew = 0;
+ mMapClicksNew = 0;
+ mProfileClicksNew = 0;
+
childSetText("category", LLStringUtil::null);
childSetText("content_type", LLStringUtil::null);
childSetText("click_through_text", LLStringUtil::null);
@@ -1331,6 +1371,8 @@ void LLPanelClassifiedInfo::resetData()
childSetText("auto_renew", LLStringUtil::null);
childSetText("creation_date", LLStringUtil::null);
childSetText("click_through_text", LLStringUtil::null);
+ getChild<LLIconCtrl>("content_type_moderate")->setVisible(FALSE);
+ getChild<LLIconCtrl>("content_type_general")->setVisible(FALSE);
}
void LLPanelClassifiedInfo::resetControls()
@@ -1368,6 +1410,11 @@ void LLPanelClassifiedInfo::setClassifiedLocation(const std::string& location)
childSetValue("classified_location", location);
}
+std::string LLPanelClassifiedInfo::getClassifiedLocation()
+{
+ return childGetValue("classified_location").asString();
+}
+
void LLPanelClassifiedInfo::setSnapshotId(const LLUUID& id)
{
mSnapshotCtrl->setValue(id);
@@ -1444,6 +1491,13 @@ void LLPanelClassifiedInfo::setClickThrough(
ct_str.setArg("[PROFILE]", llformat("%d", self->mProfileClicksNew + self->mProfileClicksOld));
self->childSetText("click_through_text", ct_str.getString());
+ // *HACK: remove this when there is enough room for click stats in the info panel
+ self->childSetToolTip("click_through_text", ct_str.getString());
+
+ llinfos << "teleport: " << llformat("%d", self->mTeleportClicksNew + self->mTeleportClicksOld)
+ << ", map: " << llformat("%d", self->mMapClicksNew + self->mMapClicksOld)
+ << ", profile: " << llformat("%d", self->mProfileClicksNew + self->mProfileClicksOld)
+ << llendl;
}
}
@@ -1532,8 +1586,46 @@ void LLPanelClassifiedInfo::scrollToTop()
scrollContainer->goToTop();
}
+// static
+// *TODO: move out of the panel
+void LLPanelClassifiedInfo::sendClickMessage(
+ const std::string& type,
+ bool from_search,
+ const LLUUID& classified_id,
+ const LLUUID& parcel_id,
+ const LLVector3d& global_pos,
+ const std::string& sim_name)
+{
+ // You're allowed to click on your own ads to reassure yourself
+ // that the system is working.
+ LLSD body;
+ body["type"] = type;
+ body["from_search"] = from_search;
+ body["classified_id"] = classified_id;
+ body["parcel_id"] = parcel_id;
+ body["dest_pos_global"] = global_pos.getValue();
+ body["region_name"] = sim_name;
+
+ std::string url = gAgent.getRegion()->getCapability("SearchStatTracking");
+ llinfos << "Sending click msg via capability (url=" << url << ")" << llendl;
+ llinfos << "body: [" << body << "]" << llendl;
+ LLHTTPClient::post(url, body, new LLClassifiedClickMessageResponder());
+}
+
+void LLPanelClassifiedInfo::sendClickMessage(const std::string& type)
+{
+ sendClickMessage(
+ type,
+ fromSearch(),
+ getClassifiedId(),
+ getParcelId(),
+ getPosGlobal(),
+ getSimName());
+}
+
void LLPanelClassifiedInfo::onMapClick()
{
+ sendClickMessage("map");
LLFloaterWorldMap::getInstance()->trackLocation(getPosGlobal());
LLFloaterReg::showInstance("world_map", "center");
}
@@ -1542,6 +1634,7 @@ void LLPanelClassifiedInfo::onTeleportClick()
{
if (!getPosGlobal().isExactlyZero())
{
+ sendClickMessage("teleport");
gAgent.teleportViaLocation(getPosGlobal());
LLFloaterWorldMap::getInstance()->trackLocation(getPosGlobal());
}
@@ -1563,6 +1656,7 @@ static const S32 CB_ITEM_PG = 1;
LLPanelClassifiedEdit::LLPanelClassifiedEdit()
: LLPanelClassifiedInfo()
, mIsNew(false)
+ , mIsNewWithErrors(false)
, mCanClose(false)
, mPublishFloater(NULL)
{
@@ -1621,21 +1715,12 @@ BOOL LLPanelClassifiedEdit::postBuild()
return TRUE;
}
-void LLPanelClassifiedEdit::onOpen(const LLSD& key)
+void LLPanelClassifiedEdit::fillIn(const LLSD& key)
{
- LLUUID classified_id = key["classified_id"];
+ setAvatarId(gAgent.getID());
- mIsNew = classified_id.isNull();
-
- scrollToTop();
-
- if(mIsNew)
+ if(key.isUndefined())
{
- setAvatarId(gAgent.getID());
-
- resetData();
- resetControls();
-
setPosGlobal(gAgent.getPositionGlobal());
LLUUID snapshot_id = LLUUID::null;
@@ -1658,25 +1743,55 @@ void LLPanelClassifiedEdit::onOpen(const LLSD& key)
childSetValue("classified_name", makeClassifiedName());
childSetValue("classified_desc", desc);
setSnapshotId(snapshot_id);
-
setClassifiedLocation(createLocationText(getLocationNotice(), region_name, getPosGlobal()));
-
// server will set valid parcel id
setParcelId(LLUUID::null);
+ }
+ else
+ {
+ setClassifiedId(key["classified_id"]);
+ setClassifiedName(key["name"]);
+ setDescription(key["desc"]);
+ setSnapshotId(key["snapshot_id"]);
+ setCategory((U32)key["category"].asInteger());
+ setContentType((U32)key["content_type"].asInteger());
+ setClassifiedLocation(key["location_text"]);
+ childSetValue("auto_renew", key["auto_renew"]);
+ childSetValue("price_for_listing", key["price_for_listing"].asInteger());
+ }
+}
- enableVerbs(true);
- enableEditing(true);
+void LLPanelClassifiedEdit::onOpen(const LLSD& key)
+{
+ mIsNew = key.isUndefined();
+
+ scrollToTop();
+
+ // classified is not created yet
+ bool is_new = isNew() || isNewWithErrors();
+
+ if(is_new)
+ {
+ resetData();
+ resetControls();
+
+ fillIn(key);
+
+ if(isNew())
+ {
+ LLAvatarPropertiesProcessor::getInstance()->addObserver(getAvatarId(), this);
+ }
}
else
{
LLPanelClassifiedInfo::onOpen(key);
- enableVerbs(false);
- enableEditing(false);
}
- std::string save_btn_label = isNew() ? getString("publish_label") : getString("save_label");
+ std::string save_btn_label = is_new ? getString("publish_label") : getString("save_label");
childSetLabelArg("save_changes_btn", "[LABEL]", save_btn_label);
+ enableVerbs(is_new);
+ enableEditing(is_new);
resetDirty();
setInfoLoaded(false);
}
@@ -1688,6 +1803,14 @@ void LLPanelClassifiedEdit::processProperties(void* data, EAvatarProcessorType t
LLAvatarClassifiedInfo* c_info = static_cast<LLAvatarClassifiedInfo*>(data);
if(c_info && getClassifiedId() == c_info->classified_id)
{
+ // see LLPanelClassifiedEdit::sendUpdate() for notes
+ mIsNewWithErrors = false;
+ // for just created classified - panel will probably be closed when we get here.
+ if(!getVisible())
+ {
+ return;
+ }
+
enableEditing(true);
setClassifiedName(c_info->name);
@@ -1697,19 +1820,22 @@ void LLPanelClassifiedEdit::processProperties(void* data, EAvatarProcessorType t
setClassifiedLocation(createLocationText(c_info->parcel_name, c_info->sim_name, c_info->pos_global));
// *HACK see LLPanelClassifiedEdit::sendUpdate()
- getChild<LLComboBox>("category")->setCurrentByIndex(c_info->category - 1);
- getChild<LLComboBox>("category")->resetDirty();
+ setCategory(c_info->category - 1);
bool mature = is_cf_mature(c_info->flags);
bool auto_renew = is_cf_auto_renew(c_info->flags);
- getChild<LLComboBox>("content_type")->setCurrentByIndex(mature ? CB_ITEM_MATURE : CB_ITEM_PG);
+ setContentType(mature ? CB_ITEM_MATURE : CB_ITEM_PG);
childSetValue("auto_renew", auto_renew);
childSetValue("price_for_listing", c_info->price_for_listing);
childSetEnabled("price_for_listing", isNew());
resetDirty();
setInfoLoaded(true);
+ enableVerbs(false);
+
+ // for just created classified - in case user opened edit panel before processProperties() callback
+ childSetLabelArg("save_changes_btn", "[LABEL]", getString("save_label"));
}
}
}
@@ -1740,7 +1866,12 @@ void LLPanelClassifiedEdit::resetDirty()
LLPanelClassifiedInfo::resetDirty();
getChild<LLUICtrl>("classified_snapshot")->resetDirty();
getChild<LLUICtrl>("classified_name")->resetDirty();
- getChild<LLUICtrl>("classified_desc")->resetDirty();
+
+ LLTextEditor* desc = getChild<LLTextEditor>("classified_desc");
+ // call blockUndo() to really reset dirty(and make isDirty work as intended)
+ desc->blockUndo();
+ desc->resetDirty();
+
getChild<LLUICtrl>("category")->resetDirty();
getChild<LLUICtrl>("content_type")->resetDirty();
getChild<LLUICtrl>("auto_renew")->resetDirty();
@@ -1762,7 +1893,7 @@ void LLPanelClassifiedEdit::resetControls()
LLPanelClassifiedInfo::resetControls();
getChild<LLComboBox>("category")->setCurrentByIndex(0);
- getChild<LLComboBox>("content_type")->setCurrentByIndex(0);
+ getChild<LLIconsComboBox>("content_type")->setCurrentByIndex(0);
childSetValue("auto_renew", false);
childSetValue("price_for_listing", MINIMUM_PRICE_FOR_LISTING);
childSetEnabled("price_for_listing", TRUE);
@@ -1789,15 +1920,31 @@ void LLPanelClassifiedEdit::stretchSnapshot()
getChild<LLUICtrl>("edit_icon")->setShape(mSnapshotCtrl->getRect());
}
+U32 LLPanelClassifiedEdit::getContentType()
+{
+ LLComboBox* ct_cb = getChild<LLComboBox>("content_type");
+ return ct_cb->getCurrentIndex();
+}
+
+void LLPanelClassifiedEdit::setContentType(U32 content_type)
+{
+ LLIconsComboBox* ct_cb = getChild<LLIconsComboBox>("content_type");
+ ct_cb->setCurrentByIndex(content_type);
+ ct_cb->resetDirty();
+}
+
+bool LLPanelClassifiedEdit::getAutoRenew()
+{
+ return childGetValue("auto_renew").asBoolean();
+}
+
void LLPanelClassifiedEdit::sendUpdate()
{
LLAvatarClassifiedInfo c_data;
if(getClassifiedId().isNull())
{
- LLUUID id;
- id.generate();
- setClassifiedId(id);
+ setClassifiedId(LLUUID::generateNewID());
}
c_data.agent_id = gAgent.getID();
@@ -1814,6 +1961,14 @@ void LLPanelClassifiedEdit::sendUpdate()
c_data.price_for_listing = getPriceForListing();
LLAvatarPropertiesProcessor::getInstance()->sendClassifiedInfoUpdate(&c_data);
+
+ if(isNew())
+ {
+ // Lets assume there will be some error.
+ // Successful sendClassifiedInfoUpdate will trigger processProperties and
+ // let us know there was no error.
+ mIsNewWithErrors = true;
+ }
}
U32 LLPanelClassifiedEdit::getCategory()
@@ -1822,11 +1977,18 @@ U32 LLPanelClassifiedEdit::getCategory()
return cat_cb->getCurrentIndex();
}
+void LLPanelClassifiedEdit::setCategory(U32 category)
+{
+ LLComboBox* cat_cb = getChild<LLComboBox>("category");
+ cat_cb->setCurrentByIndex(category);
+ cat_cb->resetDirty();
+}
+
U8 LLPanelClassifiedEdit::getFlags()
{
bool auto_renew = childGetValue("auto_renew").asBoolean();
- LLComboBox* content_cb = getChild<LLComboBox>("content_type");
+ LLComboBox* content_cb = getChild<LLIconsComboBox>("content_type");
bool mature = content_cb->getCurrentIndex() == CB_ITEM_MATURE;
return pack_classified_flags_request(auto_renew, false, mature, false);
@@ -1917,17 +2079,14 @@ void LLPanelClassifiedEdit::onSaveClick()
notifyInvalidName();
return;
}
- if(isNew())
+ if(isNew() || isNewWithErrors())
{
if(gStatusBar->getBalance() < getPriceForListing())
{
LLNotificationsUtil::add("ClassifiedInsufficientFunds");
return;
}
- }
- if(isNew())
- {
mPublishFloater = LLFloaterReg::findTypedInstance<LLPublishClassifiedFloater>(
"publish_classified", LLSD());
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
index 78f095a9bb..1157649a16 100644
--- a/indra/newview/llpanelclassified.h
+++ b/indra/newview/llpanelclassified.h
@@ -221,6 +221,7 @@ private:
class LLPanelClassifiedInfo : public LLPanel, public LLAvatarPropertiesObserver
{
+ LOG_CLASS(LLPanelClassifiedInfo);
public:
static LLPanelClassifiedInfo* create();
@@ -255,6 +256,8 @@ public:
void setClassifiedLocation(const std::string& location);
+ std::string getClassifiedLocation();
+
void setPosGlobal(const LLVector3d& pos) { mPosGlobal = pos; }
LLVector3d& getPosGlobal() { return mPosGlobal; }
@@ -263,6 +266,14 @@ public:
LLUUID getParcelId() { return mParcelId; }
+ void setSimName(const std::string& sim_name) { mSimName = sim_name; }
+
+ std::string getSimName() { return mSimName; }
+
+ void setFromSearch(bool val) { mFromSearch = val; }
+
+ bool fromSearch() { return mFromSearch; }
+
bool getInfoLoaded() { return mInfoLoaded; }
void setInfoLoaded(bool loaded) { mInfoLoaded = loaded; }
@@ -274,6 +285,14 @@ public:
S32 profile,
bool from_new_table);
+ static void sendClickMessage(
+ const std::string& type,
+ bool from_search,
+ const LLUUID& classified_id,
+ const LLUUID& parcel_id,
+ const LLVector3d& global_pos,
+ const std::string& sim_name);
+
void setExitCallback(const commit_callback_t& cb);
void setEditClassifiedCallback(const commit_callback_t& cb);
@@ -296,6 +315,7 @@ protected:
const LLVector3d& pos_global);
void stretchSnapshot();
+ void sendClickMessage(const std::string& type);
LLRect getDefaultSnapshotRect();
@@ -315,6 +335,8 @@ private:
LLUUID mClassifiedId;
LLVector3d mPosGlobal;
LLUUID mParcelId;
+ std::string mSimName;
+ bool mFromSearch;
bool mInfoLoaded;
LLScrollContainer* mScrollContainer;
@@ -337,6 +359,7 @@ private:
class LLPanelClassifiedEdit : public LLPanelClassifiedInfo
{
+ LOG_CLASS(LLPanelClassifiedEdit);
public:
static LLPanelClassifiedEdit* create();
@@ -345,6 +368,8 @@ public:
/*virtual*/ BOOL postBuild();
+ void fillIn(const LLSD& key);
+
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
@@ -361,28 +386,38 @@ public:
bool isNew() { return mIsNew; }
+ bool isNewWithErrors() { return mIsNewWithErrors; }
+
bool canClose();
void draw();
void stretchSnapshot();
+ U32 getCategory();
+
+ void setCategory(U32 category);
+
+ U32 getContentType();
+
+ void setContentType(U32 content_type);
+
+ bool getAutoRenew();
+
+ S32 getPriceForListing();
+
protected:
LLPanelClassifiedEdit();
void sendUpdate();
- U32 getCategory();
-
void enableVerbs(bool enable);
void enableEditing(bool enable);
std::string makeClassifiedName();
- S32 getPriceForListing();
-
void setPriceForListing(S32 price);
U8 getFlags();
@@ -408,6 +443,7 @@ protected:
private:
bool mIsNew;
+ bool mIsNewWithErrors;
bool mCanClose;
LLPublishClassifiedFloater* mPublishFloater;
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 13697cb8ba..ae310e5a79 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -770,8 +770,8 @@ BOOL LLTaskCategoryBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
LLViewerObject* object = gObjectList.findObject(mPanel->getTaskUUID());
if(object)
{
- LLInventoryItem* inv = NULL;
- if((inv = (LLInventoryItem*)object->getInventoryObject(mUUID)))
+ const LLInventoryItem *inv = dynamic_cast<LLInventoryItem*>(object->getInventoryObject(mUUID));
+ if (inv)
{
const LLPermissions& perm = inv->getPermissions();
bool can_copy = gAgent.allowOperation(PERM_COPY, perm,
@@ -1759,7 +1759,7 @@ void LLPanelObjectInventory::updateInventory()
// We're still interested in this task's inventory.
std::set<LLUUID> selected_items;
BOOL inventory_has_focus = FALSE;
- if (mHaveInventory && mFolders->getNumSelectedDescendants())
+ if (mHaveInventory)
{
mFolders->getSelectionList(selected_items);
inventory_has_focus = gFocusMgr.childHasKeyboardFocus(mFolders);
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index 2ff2597f08..0a7c39db46 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -140,10 +140,11 @@ public:
params["open_tab_name"] = "panel_picks";
params["show_tab_panel"] = "classified_details";
params["classified_id"] = c_info->classified_id;
- params["classified_avatar_id"] = c_info->creator_id;
+ params["classified_creator_id"] = c_info->creator_id;
params["classified_snapshot_id"] = c_info->snapshot_id;
params["classified_name"] = c_info->name;
params["classified_desc"] = c_info->description;
+ params["from_search"] = true;
LLSideTray::getInstance()->showPanel("panel_profile_view", params);
}
@@ -174,31 +175,6 @@ LLClassifiedHandler gClassifiedHandler;
//////////////////////////////////////////////////////////////////////////
-/**
- * Copy&Pasted from old LLPanelClassified. This class does nothing at the moment.
- * Subscribing to "classifiedclickthrough" removes a few warnings.
- */
-class LLClassifiedClickThrough : public LLDispatchHandler
-{
-public:
-
- // "classifiedclickthrough"
- // strings[0] = classified_id
- // strings[1] = teleport_clicks
- // strings[2] = map_clicks
- // strings[3] = profile_clicks
- virtual bool operator()(
- const LLDispatcher* dispatcher,
- const std::string& key,
- const LLUUID& invoice,
- const sparam_t& strings)
- {
- if (strings.size() != 4)
- return false;
-
- return true;
- }
-};
//-----------------------------------------------------------------------------
// LLPanelPicks
@@ -216,13 +192,9 @@ LLPanelPicks::LLPanelPicks()
mPicksAccTab(NULL),
mClassifiedsAccTab(NULL),
mPanelClassifiedInfo(NULL),
- mPanelClassifiedEdit(NULL),
- mClickThroughDisp(NULL),
mNoClassifieds(false),
mNoPicks(false)
{
- mClickThroughDisp = new LLClassifiedClickThrough();
- gGenericDispatcher.addHandler("classifiedclickthrough", mClickThroughDisp);
}
LLPanelPicks::~LLPanelPicks()
@@ -231,8 +203,6 @@ LLPanelPicks::~LLPanelPicks()
{
LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this);
}
-
- delete mClickThroughDisp;
}
void* LLPanelPicks::create(void* data /* = NULL */)
@@ -414,6 +384,9 @@ BOOL LLPanelPicks::postBuild()
registar.add("Pick.Teleport", boost::bind(&LLPanelPicks::onClickTeleport, this));
registar.add("Pick.Map", boost::bind(&LLPanelPicks::onClickMap, this));
registar.add("Pick.Delete", boost::bind(&LLPanelPicks::onClickDelete, this));
+ LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registar;
+ enable_registar.add("Pick.Enable", boost::bind(&LLPanelPicks::onEnableMenuItem, this, _2));
+
mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>("menu_picks.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar plus_registar;
@@ -450,6 +423,22 @@ bool LLPanelPicks::isActionEnabled(const LLSD& userdata) const
return true;
}
+bool LLPanelPicks::isClassifiedPublished(LLClassifiedItem* c_item)
+{
+ if(c_item)
+ {
+ LLPanelClassifiedEdit* panel = mEditClassifiedPanels[c_item->getClassifiedId()];
+ if(panel)
+ {
+ return !panel->isNewWithErrors();
+ }
+
+ // we've got this classified from server - it's published
+ return true;
+ }
+ return false;
+}
+
void LLPanelPicks::onAccordionStateChanged(const LLAccordionCtrlTab* acc_tab)
{
if(!mPicksAccTab->getDisplayChildren())
@@ -607,7 +596,11 @@ void LLPanelPicks::onClickTeleport()
if(pick_item)
pos = pick_item->getPosGlobal();
else if(c_item)
+ {
pos = c_item->getPosGlobal();
+ LLPanelClassifiedInfo::sendClickMessage("teleport", false,
+ c_item->getClassifiedId(), LLUUID::null, pos, LLStringUtil::null);
+ }
if (!pos.isExactlyZero())
{
@@ -626,7 +619,11 @@ void LLPanelPicks::onClickMap()
if (pick_item)
pos = pick_item->getPosGlobal();
else if(c_item)
+ {
+ LLPanelClassifiedInfo::sendClickMessage("map", false,
+ c_item->getClassifiedId(), LLUUID::null, pos, LLStringUtil::null);
pos = c_item->getPosGlobal();
+ }
LLFloaterWorldMap::getInstance()->trackLocation(pos);
LLFloaterReg::showInstance("world_map", "center");
@@ -678,6 +675,12 @@ void LLPanelPicks::updateButtons()
childSetEnabled(XML_BTN_INFO, has_selected);
childSetEnabled(XML_BTN_TELEPORT, has_selected);
childSetEnabled(XML_BTN_SHOW_ON_MAP, has_selected);
+
+ LLClassifiedItem* c_item = dynamic_cast<LLClassifiedItem*>(mClassifiedsList->getSelectedItem());
+ if(c_item)
+ {
+ childSetEnabled(XML_BTN_INFO, isClassifiedPublished(c_item));
+ }
}
void LLPanelPicks::setProfilePanel(LLPanelProfile* profile_panel)
@@ -714,9 +717,10 @@ void LLPanelPicks::createNewPick()
void LLPanelPicks::createNewClassified()
{
- createClassifiedEditPanel();
+ LLPanelClassifiedEdit* panel = NULL;
+ createClassifiedEditPanel(&panel);
- getProfilePanel()->openPanel(mPanelClassifiedEdit, LLSD());
+ getProfilePanel()->openPanel(panel, LLSD());
}
void LLPanelPicks::onClickInfo()
@@ -756,26 +760,20 @@ void LLPanelPicks::openClassifiedInfo()
if (selected_value.isUndefined()) return;
LLClassifiedItem* c_item = getSelectedClassifiedItem();
+ LLSD params;
+ params["classified_id"] = c_item->getClassifiedId();
+ params["classified_creator_id"] = c_item->getAvatarId();
+ params["classified_snapshot_id"] = c_item->getSnapshotId();
+ params["classified_name"] = c_item->getClassifiedName();
+ params["classified_desc"] = c_item->getDescription();
+ params["from_search"] = false;
- openClassifiedInfo(c_item->getClassifiedId(), c_item->getAvatarId(),
- c_item->getSnapshotId(), c_item->getClassifiedName(),
- c_item->getDescription());
+ openClassifiedInfo(params);
}
-void LLPanelPicks::openClassifiedInfo(const LLUUID &classified_id,
- const LLUUID &avatar_id,
- const LLUUID &snapshot_id,
- const std::string &name, const std::string &desc)
+void LLPanelPicks::openClassifiedInfo(const LLSD &params)
{
createClassifiedInfoPanel();
-
- LLSD params;
- params["classified_id"] = classified_id;
- params["avatar_id"] = avatar_id;
- params["snapshot_id"] = snapshot_id;
- params["name"] = name;
- params["desc"] = desc;
-
getProfilePanel()->openPanel(mPanelClassifiedInfo, params);
}
@@ -807,11 +805,10 @@ void LLPanelPicks::onPanelClassifiedSave(LLPanelClassifiedEdit* panel)
if(panel->isNew())
{
+ mEditClassifiedPanels[panel->getClassifiedId()] = panel;
+
LLClassifiedItem* c_item = new LLClassifiedItem(getAvatarId(), panel->getClassifiedId());
-
- c_item->setClassifiedName(panel->getClassifiedName());
- c_item->setDescription(panel->getDescription());
- c_item->setSnapshotId(panel->getSnapshotId());
+ c_item->fillIn(panel);
LLSD c_value;
c_value.insert(CLASSIFIED_ID, c_item->getClassifiedId());
@@ -827,6 +824,11 @@ void LLPanelPicks::onPanelClassifiedSave(LLPanelClassifiedEdit* panel)
mClassifiedsAccTab->changeOpenClose(false);
showAccordion("tab_classifieds", true);
}
+ else if(panel->isNewWithErrors())
+ {
+ LLClassifiedItem* c_item = dynamic_cast<LLClassifiedItem*>(mClassifiedsList->getSelectedItem());
+ c_item->fillIn(panel);
+ }
else
{
onPanelClassifiedClose(panel);
@@ -887,15 +889,16 @@ void LLPanelPicks::createClassifiedInfoPanel()
}
}
-void LLPanelPicks::createClassifiedEditPanel()
+void LLPanelPicks::createClassifiedEditPanel(LLPanelClassifiedEdit** panel)
{
- if(!mPanelClassifiedEdit)
+ if(panel)
{
- mPanelClassifiedEdit = LLPanelClassifiedEdit::create();
- mPanelClassifiedEdit->setExitCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, mPanelClassifiedEdit));
- mPanelClassifiedEdit->setSaveCallback(boost::bind(&LLPanelPicks::onPanelClassifiedSave, this, mPanelClassifiedEdit));
- mPanelClassifiedEdit->setCancelCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, mPanelClassifiedEdit));
- mPanelClassifiedEdit->setVisible(FALSE);
+ LLPanelClassifiedEdit* new_panel = LLPanelClassifiedEdit::create();
+ new_panel->setExitCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, new_panel));
+ new_panel->setSaveCallback(boost::bind(&LLPanelPicks::onPanelClassifiedSave, this, new_panel));
+ new_panel->setCancelCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, new_panel));
+ new_panel->setVisible(FALSE);
+ *panel = new_panel;
}
}
@@ -968,16 +971,26 @@ void LLPanelPicks::onPanelClassifiedEdit()
LLClassifiedItem* c_item = dynamic_cast<LLClassifiedItem*>(mClassifiedsList->getSelectedItem());
- createClassifiedEditPanel();
-
LLSD params;
params["classified_id"] = c_item->getClassifiedId();
- params["avatar_id"] = c_item->getAvatarId();
+ params["classified_creator_id"] = c_item->getAvatarId();
params["snapshot_id"] = c_item->getSnapshotId();
params["name"] = c_item->getClassifiedName();
params["desc"] = c_item->getDescription();
-
- getProfilePanel()->openPanel(mPanelClassifiedEdit, params);
+ params["category"] = (S32)c_item->getCategory();
+ params["content_type"] = (S32)c_item->getContentType();
+ params["auto_renew"] = c_item->getAutoRenew();
+ params["price_for_listing"] = c_item->getPriceForListing();
+ params["location_text"] = c_item->getLocationText();
+
+ LLPanelClassifiedEdit* panel = mEditClassifiedPanels[c_item->getClassifiedId()];
+ if(!panel)
+ {
+ createClassifiedEditPanel(&panel);
+ mEditClassifiedPanels[c_item->getClassifiedId()] = panel;
+ }
+ getProfilePanel()->openPanel(panel, params);
+ panel->setPosGlobal(c_item->getPosGlobal());
}
void LLPanelPicks::onClickMenuEdit()
@@ -992,6 +1005,20 @@ void LLPanelPicks::onClickMenuEdit()
}
}
+bool LLPanelPicks::onEnableMenuItem(const LLSD& user_data)
+{
+ std::string param = user_data.asString();
+
+ LLClassifiedItem* c_item = dynamic_cast<LLClassifiedItem*>(mClassifiedsList->getSelectedItem());
+ if(c_item && "info" == param)
+ {
+ // dont show Info panel if classified was not created
+ return isClassifiedPublished(c_item);
+ }
+
+ return true;
+}
+
inline LLPanelProfile* LLPanelPicks::getProfilePanel()
{
llassert_always(NULL != mProfilePanel);
@@ -1180,6 +1207,24 @@ void LLClassifiedItem::setValue(const LLSD& value)
childSetVisible("selected_icon", value["selected"]);
}
+void LLClassifiedItem::fillIn(LLPanelClassifiedEdit* panel)
+{
+ if(!panel)
+ {
+ return;
+ }
+
+ setClassifiedName(panel->getClassifiedName());
+ setDescription(panel->getDescription());
+ setSnapshotId(panel->getSnapshotId());
+ setCategory(panel->getCategory());
+ setContentType(panel->getContentType());
+ setAutoRenew(panel->getAutoRenew());
+ setPriceForListing(panel->getPriceForListing());
+ setPosGlobal(panel->getPosGlobal());
+ setLocationText(panel->getClassifiedLocation());
+}
+
void LLClassifiedItem::setClassifiedName(const std::string& name)
{
childSetValue("name", name);
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
index 3f757e482e..a98b8c413e 100644
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -55,7 +55,6 @@ class LLPanelPickEdit;
class LLToggleableMenu;
class LLPanelClassifiedInfo;
class LLPanelClassifiedEdit;
-class LLClassifiedClickThrough;
// *TODO
// Panel Picks has been consolidated with Classifieds (EXT-2095), give LLPanelPicks
@@ -99,6 +98,8 @@ private:
void onPlusMenuItemClicked(const LLSD& param);
bool isActionEnabled(const LLSD& userdata) const;
+ bool isClassifiedPublished(LLClassifiedItem* c_item);
+
void onListCommit(const LLFlatListView* f_list);
void onAccordionStateChanged(const LLAccordionCtrlTab* acc_tab);
@@ -115,14 +116,14 @@ private:
void onPanelClassifiedEdit();
void onClickMenuEdit();
+ bool onEnableMenuItem(const LLSD& user_data);
+
void createNewPick();
void createNewClassified();
void openPickInfo();
void openClassifiedInfo();
- void openClassifiedInfo(const LLUUID &classified_id, const LLUUID &avatar_id,
- const LLUUID &snapshot_id, const std::string &name,
- const std::string &desc);
+ void openClassifiedInfo(const LLSD& params);
friend class LLPanelProfile;
void showAccordion(const std::string& name, bool show);
@@ -143,7 +144,7 @@ private:
void createPickInfoPanel();
void createPickEditPanel();
void createClassifiedInfoPanel();
- void createClassifiedEditPanel();
+ void createClassifiedEditPanel(LLPanelClassifiedEdit** panel);
LLMenuGL* mPopupMenu;
LLPanelProfile* mProfilePanel;
@@ -152,15 +153,19 @@ private:
LLFlatListView* mClassifiedsList;
LLPanelPickInfo* mPanelPickInfo;
LLPanelClassifiedInfo* mPanelClassifiedInfo;
- LLPanelClassifiedEdit* mPanelClassifiedEdit;
LLPanelPickEdit* mPanelPickEdit;
LLToggleableMenu* mPlusMenu;
+ // <classified_id, edit_panel>
+ typedef std::map<LLUUID, LLPanelClassifiedEdit*> panel_classified_edit_map_t;
+
+ // This map is needed for newly created classifieds. The purpose of panel is to
+ // sit in this map and listen to LLPanelClassifiedEdit::processProperties callback.
+ panel_classified_edit_map_t mEditClassifiedPanels;
+
LLAccordionCtrlTab* mPicksAccTab;
LLAccordionCtrlTab* mClassifiedsAccTab;
- LLClassifiedClickThrough* mClickThroughDisp;
-
//true if picks list is empty after processing picks
bool mNoPicks;
//true if classifieds list is empty after processing classifieds
@@ -250,6 +255,8 @@ public:
/*virtual*/ void setValue(const LLSD& value);
+ void fillIn(LLPanelClassifiedEdit* panel);
+
LLUUID getAvatarId() {return mAvatarId;}
void setAvatarId(const LLUUID& avatar_id) {mAvatarId = avatar_id;}
@@ -260,7 +267,11 @@ public:
void setPosGlobal(const LLVector3d& pos) { mPosGlobal = pos; }
- const LLVector3d& getPosGlobal() { return mPosGlobal; }
+ const LLVector3d getPosGlobal() { return mPosGlobal; }
+
+ void setLocationText(const std::string location) { mLocationText = location; }
+
+ std::string getLocationText() { return mLocationText; }
void setClassifiedName (const std::string& name);
@@ -274,10 +285,31 @@ public:
LLUUID getSnapshotId();
+ void setCategory(U32 cat) { mCategory = cat; }
+
+ U32 getCategory() { return mCategory; }
+
+ void setContentType(U32 ct) { mContentType = ct; }
+
+ U32 getContentType() { return mContentType; }
+
+ void setAutoRenew(U32 renew) { mAutoRenew = renew; }
+
+ bool getAutoRenew() { return mAutoRenew; }
+
+ void setPriceForListing(S32 price) { mPriceForListing = price; }
+
+ S32 getPriceForListing() { return mPriceForListing; }
+
private:
LLUUID mAvatarId;
LLUUID mClassifiedId;
LLVector3d mPosGlobal;
+ std::string mLocationText;
+ U32 mCategory;
+ U32 mContentType;
+ bool mAutoRenew;
+ S32 mPriceForListing;
};
#endif // LL_LLPANELPICKS_H
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index b5d85dfd4b..18da8dd48c 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -171,15 +171,13 @@ void LLPanelProfile::onOpen(const LLSD& key)
}
else if (panel == "classified_details")
{
- LLUUID classified_id = key["classified_id"].asUUID();
- LLUUID avatar_id = key["classified_avatar_id"].asUUID();
- LLUUID snapshot_id = key["classified_snapshot_id"].asUUID();
- std::string name = key["classified_name"].asString();
- std::string desc = key["classified_desc"].asString();
LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]);
if (picks)
{
- picks->openClassifiedInfo(classified_id, avatar_id, snapshot_id, name, desc);
+ LLSD params = key;
+ params.erase("show_tab_panel");
+ params.erase("open_tab_name");
+ picks->openClassifiedInfo(params);
}
}
}
diff --git a/indra/newview/llpopupview.cpp b/indra/newview/llpopupview.cpp
index 1668a91eed..d8ad59c90c 100644
--- a/indra/newview/llpopupview.cpp
+++ b/indra/newview/llpopupview.cpp
@@ -220,10 +220,6 @@ void LLPopupView::removePopup(LLView* popup)
{
if (popup)
{
- if (gFocusMgr.childHasKeyboardFocus(popup))
- {
- gFocusMgr.setKeyboardFocus(NULL);
- }
popup_list_t::iterator iter = std::find(mPopups.begin(), mPopups.end(), popup->getHandle());
if(iter != mPopups.end())
{
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index eb71cc52c8..f35cb3516a 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -154,14 +154,17 @@ void LLScriptFloater::createForm(const LLUUID& notification_id)
}
// create new form
- mScriptForm = new LLToastNotifyPanel(notification);
+ LLRect toast_rect = getRect();
+ // LLToastNotifyPanel will fit own content in vertical direction,
+ // but it needs an initial rect to properly calculate its width
+ // Use an initial rect of the script floater to make the floater window more configurable.
+ mScriptForm = new LLToastNotifyPanel(notification, toast_rect);
addChild(mScriptForm);
// position form on floater
mScriptForm->setOrigin(0, 0);
// make floater size fit form size
- LLRect toast_rect = getRect();
LLRect panel_rect = mScriptForm->getRect();
toast_rect.setLeftTopAndSize(toast_rect.mLeft, toast_rect.mTop, panel_rect.getWidth(), panel_rect.getHeight() + getHeaderHeight());
setShape(toast_rect);
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 3116c8feb0..4649b9cbef 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -751,6 +751,7 @@ LLTextureCache::LLTextureCache(bool threaded)
LLTextureCache::~LLTextureCache()
{
clearDeleteList() ;
+ writeUpdatedEntries() ;
}
//////////////////////////////////////////////////////////////////////////////
@@ -758,6 +759,9 @@ LLTextureCache::~LLTextureCache()
//virtual
S32 LLTextureCache::update(U32 max_time_ms)
{
+ static LLFrameTimer timer ;
+ static const F32 MAX_TIME_INTERVAL = 300.f ; //seconds.
+
S32 res;
res = LLWorkerThread::update(max_time_ms);
@@ -793,6 +797,12 @@ S32 LLTextureCache::update(U32 max_time_ms)
responder->completed(success);
}
+ if(!res && timer.getElapsedTimeF32() > MAX_TIME_INTERVAL)
+ {
+ timer.reset() ;
+ writeUpdatedEntries() ;
+ }
+
return res;
}
@@ -1083,6 +1093,8 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create
entry.init(id, time(NULL));
// Update Header
writeEntriesHeader();
+
+ //the new entry, write immediately.
// Write Entry
S32 offset = sizeof(EntriesInfo) + idx * sizeof(Entry);
LLAPRFile* aprfile = openHeaderEntriesFile(false, offset);
@@ -1098,12 +1110,20 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create
// Remove this entry from the LRU if it exists
mLRU.erase(id);
// Read the entry
- S32 offset = sizeof(EntriesInfo) + idx * sizeof(Entry);
- LLAPRFile* aprfile = openHeaderEntriesFile(true, offset);
- S32 bytes_read = aprfile->read((void*)&entry, (S32)sizeof(Entry));
- llassert_always(bytes_read == sizeof(Entry));
+ idx_entry_map_t::iterator iter = mUpdatedEntryMap.find(idx) ;
+ if(iter != mUpdatedEntryMap.end())
+ {
+ entry = iter->second ;
+ }
+ else
+ {
+ S32 offset = sizeof(EntriesInfo) + idx * sizeof(Entry);
+ LLAPRFile* aprfile = openHeaderEntriesFile(true, offset);
+ S32 bytes_read = aprfile->read((void*)&entry, (S32)sizeof(Entry));
+ llassert_always(bytes_read == sizeof(Entry));
+ closeHeaderEntriesFile();
+ }
llassert_always(entry.mImageSize == 0 || entry.mImageSize == -1 || entry.mImageSize > entry.mBodySize);
- closeHeaderEntriesFile();
}
return idx;
}
@@ -1121,12 +1141,8 @@ void LLTextureCache::writeEntryAndClose(S32 idx, Entry& entry)
mTexturesSizeMap[entry.mID] = entry.mBodySize;
}
// llinfos << "Updating TE: " << idx << ": " << id << " Size: " << entry.mBodySize << " Time: " << entry.mTime << llendl;
- S32 offset = sizeof(EntriesInfo) + idx * sizeof(Entry);
- LLAPRFile* aprfile = openHeaderEntriesFile(false, offset);
- S32 bytes_written = aprfile->write((void*)&entry, (S32)sizeof(Entry));
- llassert_always(bytes_written == sizeof(Entry));
mHeaderEntriesMaxWriteIdx = llmax(mHeaderEntriesMaxWriteIdx, idx);
- closeHeaderEntriesFile();
+ mUpdatedEntryMap[idx] = entry ;
}
}
}
@@ -1141,6 +1157,7 @@ U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries)
mTexturesSizeTotal = 0;
LLAPRFile* aprfile = openHeaderEntriesFile(false, (S32)sizeof(EntriesInfo));
+ updatedHeaderEntriesFile() ;
for (U32 idx=0; idx<num_entries; idx++)
{
Entry entry;
@@ -1191,6 +1208,47 @@ void LLTextureCache::writeEntriesAndClose(const std::vector<Entry>& entries)
}
}
+void LLTextureCache::writeUpdatedEntries()
+{
+ lockHeaders() ;
+ if (!mReadOnly && !mUpdatedEntryMap.empty())
+ {
+ openHeaderEntriesFile(false, 0);
+ updatedHeaderEntriesFile() ;
+ closeHeaderEntriesFile();
+ }
+ unlockHeaders() ;
+}
+
+//mHeaderMutex is locked and mHeaderAPRFile is created before calling this.
+void LLTextureCache::updatedHeaderEntriesFile()
+{
+ if (!mReadOnly && !mUpdatedEntryMap.empty() && mHeaderAPRFile)
+ {
+ //entriesInfo
+ mHeaderAPRFile->seek(APR_SET, 0);
+ S32 bytes_written = mHeaderAPRFile->write((U8*)&mHeaderEntriesInfo, sizeof(EntriesInfo)) ;
+ llassert_always(bytes_written == sizeof(EntriesInfo));
+
+ //write each updated entry
+ S32 entry_size = (S32)sizeof(Entry) ;
+ S32 prev_idx = -1 ;
+ S32 delta_idx ;
+ for (idx_entry_map_t::iterator iter = mUpdatedEntryMap.begin(); iter != mUpdatedEntryMap.end(); ++iter)
+ {
+ delta_idx = iter->first - prev_idx - 1;
+ prev_idx = iter->first ;
+ if(delta_idx)
+ {
+ mHeaderAPRFile->seek(APR_CUR, delta_idx * entry_size);
+ }
+
+ bytes_written = mHeaderAPRFile->write((void*)(&iter->second), entry_size);
+ llassert_always(bytes_written == entry_size);
+ }
+ mUpdatedEntryMap.clear() ;
+ }
+}
//----------------------------------------------------------------------------
// Called from either the main thread or the worker thread
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index 64ec881fc3..b840619c1f 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -68,6 +68,7 @@ private:
Entry(const LLUUID& id, S32 imagesize, S32 bodysize, U32 time) :
mID(id), mImageSize(imagesize), mBodySize(bodysize), mTime(time) {}
void init(const LLUUID& id, U32 time) { mID = id, mImageSize = 0; mBodySize = 0; mTime = time; }
+ Entry& operator=(const Entry& entry) {mID = entry.mID, mImageSize = entry.mImageSize; mBodySize = entry.mBodySize; mTime = entry.mTime; return *this;}
LLUUID mID; // 16 bytes
S32 mImageSize; // total size of image if known
S32 mBodySize; // size of body file in body cache
@@ -166,6 +167,8 @@ private:
S32 getHeaderCacheEntry(const LLUUID& id, S32& imagesize);
S32 setHeaderCacheEntry(const LLUUID& id, S32 imagesize);
bool removeHeaderCacheEntry(const LLUUID& id);
+ void writeUpdatedEntries() ;
+ void updatedHeaderEntriesFile() ;
void lockHeaders() { mHeaderMutex.lock(); }
void unlockHeaders() { mHeaderMutex.unlock(); }
@@ -204,6 +207,9 @@ private:
S64 mTexturesSizeTotal;
LLAtomic32<BOOL> mDoPurge;
+ typedef std::map<S32, Entry> idx_entry_map_t;
+ idx_entry_map_t mUpdatedEntryMap;
+
// Statics
static F32 sHeaderCacheVersion;
static U32 sCacheMaxEntries;
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index 98731f90f4..6cd8a78b25 100644
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -658,6 +658,14 @@ struct compare_decode_pair
}
};
+struct KillView
+{
+ void operator()(LLView* viewp) const
+ {
+ viewp->die();
+ }
+};
+
void LLTextureView::draw()
{
if (!mFreezeView)
@@ -665,12 +673,12 @@ void LLTextureView::draw()
// LLViewerObject *objectp;
// S32 te;
- for_each(mTextureBars.begin(), mTextureBars.end(), DeletePointer());
+ for_each(mTextureBars.begin(), mTextureBars.end(), KillView());
mTextureBars.clear();
-
- delete mGLTexMemBar;
+
+ delete mGLTexMemBar;
mGLTexMemBar = 0;
-
+
typedef std::multiset<decode_pair_t, compare_decode_pair > display_list_t;
display_list_t display_image_list;
@@ -683,6 +691,10 @@ void LLTextureView::draw()
iter != gTextureList.mImageList.end(); )
{
LLPointer<LLViewerFetchedTexture> imagep = *iter++;
+ if(!imagep->hasFetcher())
+ {
+ continue ;
+ }
S32 cur_discard = imagep->getDiscardLevel();
S32 desired_discard = imagep->mDesiredDiscardLevel;
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index c47c017143..e6d13a7613 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -53,7 +53,7 @@ S32 BUTTON_WIDTH = 90;
const LLFontGL* LLToastNotifyPanel::sFont = NULL;
const LLFontGL* LLToastNotifyPanel::sFontSmall = NULL;
-LLToastNotifyPanel::LLToastNotifyPanel(LLNotificationPtr& notification) :
+LLToastNotifyPanel::LLToastNotifyPanel(LLNotificationPtr& notification, const LLRect& rect) :
LLToastPanel(notification),
mTextBox(NULL),
mInfoPanel(NULL),
@@ -63,6 +63,10 @@ mNumButtons(0),
mAddedDefaultBtn(false)
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_notification.xml");
+ if(rect != LLRect::null)
+ {
+ this->setShape(rect);
+ }
mInfoPanel = getChild<LLPanel>("info_panel");
mControlPanel = getChild<LLPanel>("control_panel");
BUTTON_WIDTH = gSavedSettings.getS32("ToastButtonWidth");
@@ -159,7 +163,12 @@ mAddedDefaultBtn(false)
* for a scriptdialog toast h_pad can be < 2*HPAD if we have a lot of buttons.
* In last case set default h_pad to avoid heaping of buttons
*/
- h_pad = 2*HPAD;
+ S32 button_per_row = button_panel_width / BUTTON_WIDTH;
+ h_pad = (button_panel_width % BUTTON_WIDTH) / (button_per_row - 1);// -1 because we do not need space after last button in a row
+ if(h_pad < 2*HPAD) // still not enough space between buttons ?
+ {
+ h_pad = 2*HPAD;
+ }
}
if (mIsScriptDialog)
{
@@ -224,7 +233,7 @@ LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, BOOL is_opt
p.click_callback.function(boost::bind(&LLToastNotifyPanel::onClickButton, userdata));
p.rect.width = BUTTON_WIDTH;
p.auto_resize = false;
- p.follows.flags(FOLLOWS_RIGHT | FOLLOWS_LEFT | FOLLOWS_BOTTOM);
+ p.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM);
if (mIsCaution)
{
p.image_color(LLUIColorTable::instance().getColor("ButtonCautionImageColor"));
diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h
index e791eea469..152975e7de 100644
--- a/indra/newview/lltoastnotifypanel.h
+++ b/indra/newview/lltoastnotifypanel.h
@@ -53,7 +53,15 @@ class LLNotificationForm;
class LLToastNotifyPanel: public LLToastPanel
{
public:
- LLToastNotifyPanel(LLNotificationPtr&);
+ /**
+ * Constructor for LLToastNotifyPanel.
+ *
+ * @param pNotification a shared pointer to LLNotification
+ * @param rect an initial rectangle of the toast panel.
+ * If it is null then a loaded from xml rectangle will be used.
+ * @see LLNotification
+ */
+ LLToastNotifyPanel(LLNotificationPtr& pNotification, const LLRect& rect = LLRect::null);
virtual ~LLToastNotifyPanel();
LLPanel * getControlPanel() { return mControlPanel; }
@@ -77,7 +85,7 @@ private:
/*
* It lays out buttons of the notification in mControlPanel.
* Buttons will be placed from BOTTOM to TOP.
- * @param h_pad horizontal space between buttons. It is depent on number of buttons.
+ * @param h_pad horizontal space between buttons. It is depend on number of buttons.
* @param buttons vector of button to be added.
*/
void updateButtonsLayout(const std::vector<index_button_pair_t>& buttons, S32 h_pad);
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 8acd343cf5..85efe2724e 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -50,6 +50,7 @@
#include "llcallbacklist.h"
#include "llparcel.h"
#include "llaudioengine.h" // for gAudiop
+#include "llurldispatcher.h"
#include "llvoavatar.h"
#include "llvoavatarself.h"
#include "llviewerregion.h"
@@ -1090,7 +1091,8 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id,
mBackgroundColor(LLColor4::white),
mNavigateSuspended(false),
mNavigateSuspendedDeferred(false),
- mIsUpdated(false)
+ mIsUpdated(false),
+ mTrustedBrowser(false)
{
// Set up the mute list observer if it hasn't been set up already.
@@ -2353,6 +2355,14 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
{
switch(event)
{
+ case MEDIA_EVENT_CLICK_LINK_NOFOLLOW:
+ {
+ LL_DEBUGS("Media") << "MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is: " << plugin->getClickURL() << LL_ENDL;
+ std::string url = plugin->getClickURL();
+ LLURLDispatcher::dispatch(url, NULL, mTrustedBrowser);
+
+ }
+ break;
case MEDIA_EVENT_PLUGIN_FAILED_LAUNCH:
{
// The plugin failed to load properly. Make sure the timer doesn't retry.
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 9dbffa78b3..bc51e713a1 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -322,6 +322,9 @@ public:
void setLowPrioritySizeLimit(int size);
void setTextureID(LLUUID id = LLUUID::null);
+
+ bool isTrustedBrowser() { return mTrustedBrowser; }
+ void setTrustedBrowser(bool trusted) { mTrustedBrowser = trusted; }
typedef enum
{
@@ -405,6 +408,7 @@ private:
LLColor4 mBackgroundColor;
bool mNavigateSuspended;
bool mNavigateSuspendedDeferred;
+ bool mTrustedBrowser;
private:
BOOL mIsUpdated ;
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index d0c3768b34..0eb7ac9cb2 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -82,7 +82,7 @@ LLTexturePipelineTester* LLViewerTextureManager::sTesterp = NULL ;
S32 LLViewerTexture::sImageCount = 0;
S32 LLViewerTexture::sRawCount = 0;
S32 LLViewerTexture::sAuxCount = 0;
-LLTimer LLViewerTexture::sEvaluationTimer;
+LLFrameTimer LLViewerTexture::sEvaluationTimer;
F32 LLViewerTexture::sDesiredDiscardBias = 0.f;
F32 LLViewerTexture::sDesiredDiscardScale = 1.1f;
S32 LLViewerTexture::sBoundTextureMemoryInBytes = 0;
@@ -102,7 +102,7 @@ F32 LLViewerTexture::sCurrentTime = 0.0f ;
BOOL LLViewerTexture::sUseTextureAtlas = FALSE ;
const F32 desired_discard_bias_min = -2.0f; // -max number of levels to improve image quality by
-const F32 desired_discard_bias_max = 1.5f; // max number of levels to reduce image quality by
+const F32 desired_discard_bias_max = (F32)MAX_DISCARD_LEVEL; // max number of levels to reduce image quality by
const F64 log_2 = log(2.0);
//----------------------------------------------------------------------------------------------
@@ -369,7 +369,7 @@ S32 LLViewerTexture::getCategoryFromIndex(S32 index)
}
// tuning params
-const F32 discard_bias_delta = .05f;
+const F32 discard_bias_delta = .25f;
const F32 discard_delta_time = 0.5f;
const S32 min_non_tex_system_mem = (128<<20); // 128 MB
// non-const (used externally
@@ -1424,9 +1424,8 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/)
if (!mForceToSaveRawImage)
{
mNeedsAux = FALSE;
- }
destroyRawImage();
-
+ }
return res;
}
@@ -2749,7 +2748,7 @@ void LLViewerLODTexture::processTextureStats()
mCalculatedDiscardLevel = discard_level;
}
}
- if (mBoostLevel < LLViewerTexture::BOOST_HIGH)
+ if (mBoostLevel < LLViewerTexture::BOOST_SCULPTED)
{
discard_level += sDesiredDiscardBias;
discard_level *= sDesiredDiscardScale; // scale
@@ -2775,8 +2774,7 @@ void LLViewerLODTexture::processTextureStats()
//
S32 current_discard = getDiscardLevel();
- if ((sDesiredDiscardBias > 0.0f) &&
- (current_discard >= 0 && mDesiredDiscardLevel >= current_discard))
+ if (sDesiredDiscardBias > 0.0f && mBoostLevel < LLViewerTexture::BOOST_SCULPTED && current_discard >= 0)
{
// Limit the amount of GL memory bound each frame
if ( BYTES_TO_MEGA_BYTES(sBoundTextureMemoryInBytes) > sMaxBoundTextureMemInMegaBytes * texmem_middle_bound_scale &&
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 84377198eb..a09a711cc7 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -300,7 +300,7 @@ public:
static S32 sImageCount;
static S32 sRawCount;
static S32 sAuxCount;
- static LLTimer sEvaluationTimer;
+ static LLFrameTimer sEvaluationTimer;
static F32 sDesiredDiscardBias;
static F32 sDesiredDiscardScale;
static S32 sBoundTextureMemoryInBytes;
@@ -455,6 +455,7 @@ public:
F32 getElapsedLastReferencedSavedRawImageTime() const ;
BOOL isFullyLoaded() const;
+ BOOL hasFetcher() const { return mHasFetcher;}
protected:
/*virtual*/ void switchToCachedImage();
S32 getCurrentDiscardLevelForFetching() ;
diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml
index 77459aca67..2e35811133 100644
--- a/indra/newview/skins/default/xui/da/floater_tools.xml
+++ b/indra/newview/skins/default/xui/da/floater_tools.xml
@@ -212,8 +212,8 @@
Næste ejer:
</text>
<check_box label="Redigére" name="checkbox next owner can modify"/>
- <check_box label="Kopiére" left_delta="80" name="checkbox next owner can copy"/>
- <check_box label="Sælge/give væk" left_delta="67" name="checkbox next owner can transfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/>
+ <check_box label="Kopiére" name="checkbox next owner can copy"/>
+ <check_box label="Sælge/give væk" name="checkbox next owner can transfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/>
<text name="B:">
B:
</text>
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index 05e2d4d754..186c2932c3 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floaterland" title="LAND-INFO">
+ <floater.string name="maturity_icon_general">
+ &quot;Parcel_PG_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_moderate">
+ &quot;Parcel_M_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_adult">
+ &quot;Parcel_R_Dark&quot;
+ </floater.string>
<floater.string name="Minutes">
[MINUTES] Minuten
</floater.string>
@@ -15,7 +24,7 @@
<tab_container name="landtab" tab_min_width="40" width="489">
<panel label="ALLGEMEIN" name="land_general_panel">
<panel.string name="new users only">
- Nur neue Benutzer
+ Nur neue Einwohner
</panel.string>
<panel.string name="anyone">
Jeder
@@ -388,10 +397,6 @@ Nur große Parzellen können in der Suche aufgeführt werden.
Homepage:
</text>
<button label="Festlegen" label_selected="Einstellen..." name="set_media_url"/>
- <text name="CurrentURL:">
- Aktuelle Seite:
- </text>
- <button label="Zurücksetzen..." label_selected="Zurücksetzen..." name="reset_media_url" tool_tip="URL aktualisieren"/>
<check_box label="URL ausblenden" name="hide_media_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Medien-URL sehen können. Diese Option ist für HTML-Medien nicht verfügbar."/>
<text name="Description:">
Inhalt:
diff --git a/indra/newview/skins/default/xui/de/floater_buy_land.xml b/indra/newview/skins/default/xui/de/floater_buy_land.xml
index 7426e97d9e..f380393163 100644
--- a/indra/newview/skins/default/xui/de/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_buy_land.xml
@@ -41,8 +41,8 @@ Verkleinern Sie Ihre Auswahl.
Das ausgewählte Land beinhaltet kein öffentliches Land.
</floater.string>
<floater.string name="not_owned_by_you">
- Sie haben Land ausgewählt, das einer anderen Person gehört.
-Verkleinern Sie Ihre Auswahl.
+ Sie haben Land ausgewählt, das einem anderen Einwohner gehört.
+Wählen Sie ein kleineres Gebiet aus.
</floater.string>
<floater.string name="processing">
Kauf wird abgewickelt...
diff --git a/indra/newview/skins/default/xui/de/floater_customize.xml b/indra/newview/skins/default/xui/de/floater_customize.xml
index f45ae53e99..f284d7cd6b 100644
--- a/indra/newview/skins/default/xui/de/floater_customize.xml
+++ b/indra/newview/skins/default/xui/de/floater_customize.xml
@@ -311,8 +311,8 @@
<text name="Item Action Label" right="100">
Jacke:
</text>
- <texture_picker label="Oberstoff" name="Upper Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
- <texture_picker label="Unterstoff" name="Lower Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
+ <texture_picker label="Stoff: oben" name="Upper Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
+ <texture_picker label="Stoff: unten" name="Lower Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
diff --git a/indra/newview/skins/default/xui/de/floater_god_tools.xml b/indra/newview/skins/default/xui/de/floater_god_tools.xml
index 2bb123ad51..108baee4a4 100644
--- a/indra/newview/skins/default/xui/de/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_god_tools.xml
@@ -2,7 +2,7 @@
<floater name="godtools floater" title="GOTT-WERKZEUGE">
<tab_container name="GodTools Tabs">
<panel label="Raster" name="grid">
- <button label="Alle Benutzer hinauswerfen" label_selected="Alle Benutzer hinauswerfen" name="Kick all users" width="175"/>
+ <button label="Alle Einwohner hinauswerfen" label_selected="Alle Einwohner hinauswerfen" name="Kick all users" width="175"/>
<button label="Sichtbarkeits-Cache dieser Regionskarte leeren" label_selected="Sichtbarkeits-Cache dieser Regionskarte leeren" name="Flush This Region&apos;s Map Visibility Caches" width="285"/>
</panel>
<panel label="Region" name="region">
@@ -35,8 +35,8 @@
<text name="Redirect to Grid: " width="110">
Auf Raster umleiten:
</text>
- <line_editor left_delta="110" name="redirectx" width="35" left_pad="0"/>
- <line_editor left_delta="45" name="redirecty" width="35" />
+ <line_editor left_delta="110" left_pad="0" name="redirectx" width="35"/>
+ <line_editor left_delta="45" name="redirecty" width="35"/>
<text font="SansSerifSmall" name="billable factor text">
Abrechnungsfaktor:
</text>
diff --git a/indra/newview/skins/default/xui/de/floater_im.xml b/indra/newview/skins/default/xui/de/floater_im.xml
index 6aa35f2900..8ae8f120cf 100644
--- a/indra/newview/skins/default/xui/de/floater_im.xml
+++ b/indra/newview/skins/default/xui/de/floater_im.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="im_floater" title="Instant Message">
<string name="only_user_message">
- Sie sind der einzige Benutzer in dieser Sitzung.
+ Sie sind der einzige Einwohner in dieser Sitzung.
</string>
<string name="offline_message">
[FIRST] [LAST] ist offline.
@@ -32,7 +32,7 @@
</string>
<!-- ALL of the event strings should have [RECIPIENT] in them -->
<string name="add_session_event">
- Es konnten keine Benutzer zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden.
+ Es konnten keine Einwohner zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden.
</string>
<string name="message_session_event">
Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.
diff --git a/indra/newview/skins/default/xui/de/floater_publish_classified.xml b/indra/newview/skins/default/xui/de/floater_publish_classified.xml
new file mode 100644
index 0000000000..993382727b
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_publish_classified.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="publish_classified" title="Anzeige wird veröffentlicht">
+ <text name="explanation_text">
+ Ihr Anzeige wird für eine Woche veröffentlicht.
+
+Anzeigengebühren werden nicht zurückerstattet.
+ </text>
+ <spinner label="Anzeigenpreis:" name="price_for_listing" tool_tip="Preis für Anzeige." value="50"/>
+ <text name="l$_text" value="L$"/>
+ <text name="more_info_text">
+ Weitere Infos (Link zur Hilfe)
+ </text>
+ <button label="Veröffentlichen" name="publish_btn"/>
+ <button label="Abbrechen" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
index 49e6d031d6..e37e298478 100644
--- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
@@ -41,11 +41,11 @@ Objekt:
</text>
<combo_box name="category_combo" tool_tip="Kategorie -- wählen Sie die Kategorie aus, die am besten auf diesen Bericht zutrifft">
<combo_box.item label="Kategorie auswählen" name="Select_category"/>
- <combo_box.item label="Alter&gt; Age-Play" name="Age__Age_play"/>
+ <combo_box.item label="Alter &gt; Age-Play" name="Age__Age_play"/>
<combo_box.item label="Alter &gt; Erwachsener Einwohner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
<combo_box.item label="Alter &gt; Minderjähriger Einwohner außerhalb Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
- <combo_box.item label="Angriff&gt; Kampf-Sandbox / unsichere Region" name="Assault__Combat_sandbox___unsafe_area"/>
- <combo_box.item label="Angriff&gt; Sichere Region" name="Assault__Safe_area"/>
+ <combo_box.item label="Angriff &gt; Kampf-Sandbox / unsichere Region" name="Assault__Combat_sandbox___unsafe_area"/>
+ <combo_box.item label="Angriff &gt; Sichere Region" name="Assault__Safe_area"/>
<combo_box.item label="Angriff &gt; Sandbox für Waffentest" name="Assault__Weapons_testing_sandbox"/>
<combo_box.item label="Handel &gt; Produkt nicht geliefert oder Dienstleistung nicht erbracht" name="Commerce__Failure_to_deliver_product_or_service"/>
<combo_box.item label="Offenlegung &gt; Informationen aus realer Welt" name="Disclosure__Real_world_information"/>
@@ -57,7 +57,7 @@ Objekt:
<combo_box.item label="Ruhestörung &gt; Ständige Spam-Wiederholung" name="Disturbing_the_peace__Repetitive_spam"/>
<combo_box.item label="Ruhestörung &gt; Unerwünschte Spam-Werbung" name="Disturbing_the_peace__Unwanted_advert_spam"/>
<combo_box.item label="Betrug &gt; L$" name="Fraud__L$"/>
- <combo_box.item label="Betrug&gt; Land" name="Fraud__Land"/>
+ <combo_box.item label="Betrug &gt; Land" name="Fraud__Land"/>
<combo_box.item label="Betrug &gt; Schneeballsystem oder Kettenbrief" name="Fraud__Pyramid_scheme_or_chain_letter"/>
<combo_box.item label="Betrug &gt; US$" name="Fraud__US$"/>
<combo_box.item label="Belästigung &gt; Werbefarmen / visueller Spam" name="Harassment__Advert_farms___visual_spam"/>
diff --git a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
index d20ab8d1c3..8944c79c7d 100644
--- a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="texture picker" title="AUSWÄHLEN: TEXTUR">
+<floater name="texture picker" title="TEXTUR AUSWÄHLEN">
<string name="choose_picture">
Zum Auswählen eines Bildes hier klicken
</string>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 4efe0dd7f3..7091e35a6e 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -364,14 +364,14 @@
Objekteigenschaften bearbeiten:
</text>
<check_box label="Flexibler Pfad" name="Flexible1D Checkbox Ctrl" tool_tip="Bewirkt, dass sich das Objekt um die Z-Achse biegen kann. (Nur Client-Seite)"/>
- <spinner label="Weichheit" name="FlexNumSections" width="140"/>
- <spinner label="Schwerkraft" name="FlexGravity" width="140"/>
- <spinner label="Ziehen" name="FlexFriction" width="140"/>
- <spinner label="Wind" name="FlexWind" width="140"/>
- <spinner label="Spannung" name="FlexTension" width="140"/>
- <spinner label="Erzwingen X" name="FlexForceX" width="140"/>
- <spinner label="Erzwingen Y" name="FlexForceY" width="140"/>
- <spinner label="Erzwingen Z" name="FlexForceZ" width="140"/>
+ <spinner label="Weichheit" name="FlexNumSections"/>
+ <spinner label="Schwerkraft" name="FlexGravity"/>
+ <spinner label="Ziehen" name="FlexFriction"/>
+ <spinner label="Wind" name="FlexWind"/>
+ <spinner label="Spannung" name="FlexTension"/>
+ <spinner label="Kraft X" name="FlexForceX"/>
+ <spinner label="Kraft Y" name="FlexForceY"/>
+ <spinner label="Kraft Z" name="FlexForceZ"/>
<check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Verursacht, dass Objekt Licht emittiert"/>
<color_swatch label="" name="colorswatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
<texture_picker label="" name="light texture control" tool_tip="Klicken, um eine Bild auszuwählen (dieser Effekt funktioniert nur, wenn zeitversetzte Wiedergabe aktiviert ist)"/>
diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml
index a80be2b594..008a9d63b7 100644
--- a/indra/newview/skins/default/xui/de/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_world_map.xml
@@ -5,8 +5,7 @@
Legende
</text>
</panel>
- <panel
- name="layout_panel_2">
+ <panel name="layout_panel_2">
<button label="Meine Position" label_selected="Wo bin ich?" name="Show My Location" tool_tip="Karte auf Position meines Avatars zentrieren"/>
<text name="me_label">
Ich
@@ -40,7 +39,7 @@
<text name="pg_label">
Generell
</text>
- <check_box initial_value="true" label="Mature" name="event_mature_chk"/>
+ <check_box initial_value="wahr" label="Mature" name="event_mature_chk"/>
<text name="mature_label">
Moderat
</text>
@@ -49,14 +48,12 @@
Adult
</text>
</panel>
- <panel
- name="layout_panel_3">
+ <panel name="layout_panel_3">
<text name="find_on_map_label">
Auf Karte anzeigen
</text>
</panel>
- <panel
- name="layout_panel_4">
+ <panel name="layout_panel_4">
<combo_box label="Online-Freunde" name="friend combo" tool_tip="Freunde auf Karte anzeigen">
<combo_box.item label="Meine Freunde: Online" name="item1"/>
</combo_box>
@@ -74,14 +71,12 @@
<button font="SansSerifSmall" label="SLurl kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web."/>
<button label="Auswahl anzeigen" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/>
</panel>
- <panel
- name="layout_panel_5">
+ <panel name="layout_panel_5">
<text name="zoom_label">
Zoom
</text>
</panel>
- <panel
- name="layout_panel_6">
+ <panel name="layout_panel_6">
<slider label="Zoom" name="zoom slider"/>
</panel>
</floater>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index acfbee7f36..2db126bcb0 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -107,7 +107,7 @@ Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
</notification>
<notification name="FriendsAndGroupsOnly">
Leute, die nicht auf Ihrer Freundesliste stehen, werden nicht wissen, dass Sie deren Anrufe oder Sofortnachrichten ignoriert haben.
- <usetemplate name="okbutton" yestext="Ja"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="GrantModifyRights">
Wenn Sie einem anderen Einwohner, das die Erlaubnis zum Bearbeiten erteilen, dann kann dieser JEDES Objekt, das Sie inworld besitzen, verändern, löschen oder nehmen. Seien Sie SEHR vorsichtig, wenn Sie diese Erlaubnis gewähren!
@@ -185,7 +185,7 @@ Fortfahren?
<notification name="JoinGroupNoCost">
Sie treten der Gruppe [NAME] bei.
Fortfahren?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Zusammenlegen"/>
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Beitreten"/>
</notification>
<notification name="JoinGroupCannotAfford">
Der Beitritt zu dieser Gruppe kostet [COST] L$.
@@ -920,13 +920,13 @@ Dies ist ein temporärer Fehler. Bitte passen Sie das Kleidungsstück in einigen
Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen.
</notification>
<notification label="Freund hinzufügen" name="AddFriend">
- Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen.
+ Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu sehen und den Online-Status anzuzeigen.
[NAME] Freundschaft anbieten?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
</notification>
<notification label="Freund hinzufügen" name="AddFriendWithMessage">
- Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen.
+ Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu sehen und den Online-Status anzuzeigen.
[NAME] Freundschaft anbieten?
<form name="form">
@@ -1314,8 +1314,8 @@ Diese Gruppe verlassen?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
</notification>
<notification name="ConfirmKick">
- Möchten Sie WIRKLICH alle Benutzer aus dem Grid werfen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Alle Benutzer hinauswerfen"/>
+ Möchten Sie WIRKLICH alle Einwohner aus dem Grid werfen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Alle Einwohner hinauswerfen"/>
</notification>
<notification name="MuteLinden">
Lindens können nicht ignoriert werden.
@@ -1355,7 +1355,7 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="KickUser">
- Beim Hinauswerfen dieses Benutzers welche Meldung anzeigen?
+ Beim Hinauswerfen dieses Einwohners welche Meldung anzeigen?
<form name="form">
<input name="message">
Sie wurden von einem Administrator abgemeldet.
@@ -1375,7 +1375,7 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht
</form>
</notification>
<notification name="FreezeUser">
- Beim Einfrieren dieses Benutzers welche Meldung anzeigen?
+ Beim Einfrieren dieses Einwohners welche Meldung anzeigen?
<form name="form">
<input name="message">
Sie wurden eingefroren. Bewegen oder Chatten ist nicht mehr möglich. Ein Administrator wird sich über IM an Sie wenden
@@ -1385,7 +1385,7 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht
</form>
</notification>
<notification name="UnFreezeUser">
- Beim Auftauen dieses Benutzers welche Meldung anzeigen?
+ Beim Auftauen dieses Einwohners welche Meldung anzeigen?
<form name="form">
<input name="message">
Sie sind nicht mehr eingefroren.
@@ -1405,7 +1405,7 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht
</form>
</notification>
<notification name="OfferTeleportFromGod">
- Benutzer an Ihrem Standort herbeirufen?
+ Einwohner an Ihrem Standort herbeirufen?
<form name="form">
<input name="message">
Triff mich in [REGION]
@@ -1435,9 +1435,9 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht
</form>
</notification>
<notification label="Linden-Grundstück ändern" name="ChangeLindenEstate">
- Sie sind im Begriff, ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern.
+ Sie sind im Begriff, ein Grundstück in Linden-Besitz (Mainland, Teen-Grid, Orientation, usw.) zu verändern.
-Dies ist ÄUSSERST GEFÄHRLICH, da es grundlegende Auswirkungen auf das Benutzererlebnis hat. Auf dem Mainland werden tausende Regionen geändert, was den Spaceserver stark belastet.
+Dies hat EXTREME KONSEQUENZEN und wirkt sich auf die Einwohner aus! Auf dem Mainland kann dies zu Veränderungen in Tausenden von Regionen und zu Problemen mit dem Spaceserver führen!
Fortfahren?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
@@ -2200,10 +2200,10 @@ Bitte besuchen Sie unsere Knowledgebase, um mehr Details über Zugang zu Regione
Die für den Zutritt zu dieser Region erforderlichen Zahlungsinformationen liegen nicht vor.
</notification>
<notification name="MustGetAgeRgion">
- Sie müssen alterüberprüft sein, um diese Region betreten zu können.
+ Sie müssen altersüberprüft sein, um diese Region betreten zu können.
</notification>
<notification name="MustGetAgeParcel">
- Sie müssen alterüberprüft sein, um diese Parzelle betreten zu können.
+ Sie müssen altersüberprüft sein, um diese Parzelle betreten zu können.
</notification>
<notification name="NoDestRegion">
Keine Zielregion gefunden.
@@ -2367,7 +2367,7 @@ Ihrem Inventar wird ein Lesezeichen erstellt, damit Sie diesem Einwohner einfach
</form>
</notification>
<notification name="RegionRestartMinutes">
- Diese Region wird in [Minuten] neu gestartet.
+ Diese Region wird in [MINUTES] neu gestartet.
Wenn Sie in dieser Region bleiben, werden Sie abgemeldet.
</notification>
<notification name="RegionRestartSeconds">
@@ -2433,7 +2433,7 @@ Anfrage gestatten?
</form>
</notification>
<notification name="ScriptToast">
- [FIRST] [LAST]s &apos;[TITLE]&apos; fordert Eingaben vom Benutzer an.
+ [FIRST] [LAST]s &apos;[TITLE]&apos; fordert Eingaben vom Einwohner an.
<form name="form">
<button name="Open" text="Dialog öffnen"/>
<button name="Ignore" text="Ignorieren"/>
diff --git a/indra/newview/skins/default/xui/de/panel_classified_info.xml b/indra/newview/skins/default/xui/de/panel_classified_info.xml
index 2bbbaf2537..6480b640cd 100644
--- a/indra/newview/skins/default/xui/de/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/de/panel_classified_info.xml
@@ -9,16 +9,46 @@
<panel.string name="l$_price">
[PRICE] L$
</panel.string>
+ <panel.string name="click_through_text_fmt">
+ [TELEPORT] teleportieren, [MAP] Karte, [PROFILE] Profil
+ </panel.string>
+ <panel.string name="date_fmt">
+ [mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]
+ </panel.string>
+ <panel.string name="auto_renew_on">
+ Aktiviert
+ </panel.string>
+ <panel.string name="auto_renew_off">
+ Deaktiviert
+ </panel.string>
<text name="title" value="Anzeigen-Info"/>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
<text_editor name="classified_name" value="[name]"/>
+ <text name="classified_location_label" value="Standort:"/>
<text_editor name="classified_location" value="[wird geladen...]"/>
+ <text name="content_type_label" value="Inhaltsart:"/>
<text_editor name="content_type" value="[Inhalts-Art]"/>
+ <text name="category_label" value="Kategorie:"/>
<text_editor name="category" value="[Kategorie]"/>
- <check_box label="Jede Woche automatisch erneuern" name="auto_renew"/>
- <text_editor name="price_for_listing" tool_tip="Preis für Anzeige."/>
- <text_editor name="classified_desc" value="[description]"/>
+ <text name="creation_date_label" value="Erstellungsdatum:"/>
+ <text_editor name="creation_date" tool_tip="Erstellungsdatum" value="[date]"/>
+ <text name="price_for_listing_label" value="Preis für Anzeige:"/>
+ <text_editor name="price_for_listing" tool_tip="Preis für Anzeige." value="[price]"/>
+ <layout_stack name="descr_stack">
+ <layout_panel name="clickthrough_layout_panel">
+ <text name="click_through_label" value="Klicks:"/>
+ <text_editor name="click_through_text" tool_tip="Click-Through-Daten" value="[clicks]"/>
+ </layout_panel>
+ <layout_panel name="price_layout_panel">
+ <text name="auto_renew_label" value="Autom. erneuern:"/>
+ <text name="auto_renew" value="Aktiviert"/>
+ </layout_panel>
+ <layout_panel name="descr_layout_panel">
+ <text name="classified_desc_label" value="Beschreibung:"/>
+ <text_editor name="classified_desc" value="[description]"/>
+ </layout_panel>
+ </layout_stack>
</panel>
</scroll_container>
<panel name="buttons">
diff --git a/indra/newview/skins/default/xui/de/panel_edit_classified.xml b/indra/newview/skins/default/xui/de/panel_edit_classified.xml
index 2e0370c579..0d9487e895 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_classified.xml
@@ -3,12 +3,20 @@
<panel.string name="location_notice">
(wird nach Speichern aktualisiert)
</panel.string>
+ <string name="publish_label">
+ Veröffentlichen
+ </string>
+ <string name="save_label">
+ Speichern
+ </string>
<text name="title">
Anzeige bearbeiten
</text>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
- <icon label="" name="edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/>
+ <panel name="snapshot_panel">
+ <icon label="" name="edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/>
+ </panel>
<text name="Name:">
Titel:
</text>
@@ -22,20 +30,19 @@
wird geladen...
</text>
<button label="Aktuellen Standort verwenden" name="set_to_curr_location_btn"/>
- <combo_box name="content_type">
- <combo_item name="mature_ci">
- Moderater Inhalt
- </combo_item>
- <combo_item name="pg_ci">
- Allgemeiner Inhalt
- </combo_item>
- </combo_box>
+ <text name="category_label" value="Kategorie:"/>
+ <text name="content_type_label" value="Inhaltsart:"/>
+ <icons_combo_box label="Genereller Inhalt" name="content_type">
+ <icons_combo_box.item label="Moderater Inhalt" name="mature_ci" value="Moderat"/>
+ <icons_combo_box.item label="Genereller Inhalt" name="pg_ci" value="G"/>
+ </icons_combo_box>
+ <text name="price_for_listing_label" value="Preis für Anzeige:"/>
<spinner label="L$" name="price_for_listing" tool_tip="Preis für Anzeige." value="50"/>
<check_box label="Jede Woche automatisch erneuern" name="auto_renew"/>
</panel>
</scroll_container>
<panel label="bottom_panel" name="bottom_panel">
- <button label="Speichern" name="save_changes_btn"/>
+ <button label="[LABEL]" name="save_changes_btn"/>
<button label="Abbrechen" name="cancel_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_jacket.xml b/indra/newview/skins/default/xui/de/panel_edit_jacket.xml
index 3752faf48a..950c9023fe 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_jacket.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="edit_jacket_panel">
<panel name="avatar_jacket_color_panel">
- <texture_picker label="Oberstoff" name="Upper Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Unterstoff" name="Lower Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Stoff: oben" name="Upper Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Stoff: unten" name="Lower Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
</panel>
<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml
index dfc1e26750..4e3a304609 100644
--- a/indra/newview/skins/default/xui/de/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml
@@ -9,18 +9,18 @@
<panel.string name="already_in_group">
Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten.
</panel.string>
- <text name="help_text" top="10">
+ <text name="help_text">
Sie können mehrere Einwohner Ihre Gruppe einladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“.
</text>
- <button label="Einwohnerliste öffnen" name="add_button" tool_tip="" top_delta="62"/>
+ <button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/>
<name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Namen."/>
<button label="Auswahl aus Liste löschen" name="remove_button" tool_tip="Die oben ausgewählten Einwohner von der Einladungsliste entfernen."/>
<text name="role_text">
Wählen Sie eine Rolle aus:
</text>
<combo_box name="role_name" tool_tip="Wählen Sie aus der Liste der Rollen, die Sie an Mitglieder vergeben dürfen."/>
- <button label="Einladungen versenden" name="ok_button" width="136"/>
- <button label="Abbrechen" name="cancel_button" width="66"/>
+ <button label="Einladungen versenden" name="ok_button"/>
+ <button label="Abbrechen" name="cancel_button"/>
<string name="GroupInvitation">
Gruppeneinladung
</string>
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
index cf61f0870d..cc45f25c82 100644
--- a/indra/newview/skins/default/xui/de/panel_people.xml
+++ b/indra/newview/skins/default/xui/de/panel_people.xml
@@ -7,6 +7,8 @@
<string name="no_friends" value="Keine Freunde"/>
<string name="people_filter_label" value="Nach Leuten filtern"/>
<string name="groups_filter_label" value="Nach Gruppen filtern"/>
+ <string name="no_filtered_groups_msg" value="[secondlife:///app/search/groups Suche verwenden, um die Gruppe zu finden?]"/>
+ <string name="no_groups_msg" value="[secondlife:///app/search/groups Suche verwenden, um Gruppen zu finden?]"/>
<filter_editor label="Filter" name="filter_input"/>
<tab_container name="tabs">
<panel label="IN DER NÄHE" name="nearby_panel">
@@ -20,15 +22,15 @@
<accordion_tab name="tab_online" title="Online"/>
<accordion_tab name="tab_all" title="Alle"/>
</accordion>
- <text name="no_friends_msg">
- Verwenden Sie [secondlife:///app/search/people die globale Suche], um Freunde hinzuzufügen. Oder klicken Sie mit rechts auf einen Einwohner und fügen Sie diesen als Freund hinzu.
-Wenn Sie nach Orten suchen, an denen sich Leute befinden, verwenden Sie [secondlife:///app/worldmap die Karte].
- </text>
<panel label="bottom_panel" name="bottom_panel">
<button name="friends_viewsort_btn" tool_tip="Optionen"/>
<button name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/>
<button name="del_btn" tool_tip="Ausgewählte Person von Ihrer Freundesliste entfernen"/>
</panel>
+ <text name="no_friends_msg">
+ Verwenden Sie [secondlife:///app/search/people die globale Suche], um Freunde hinzuzufügen. Oder klicken Sie mit rechts auf einen Einwohner und fügen Sie diesen als Freund hinzu.
+Wenn Sie nach Orten suchen, an denen sich Leute befinden, verwenden Sie [secondlife:///app/worldmap die Karte].
+ </text>
</panel>
<panel label="MEINE GRUPPEN" name="groups_panel">
<panel label="bottom_panel" name="bottom_panel">
diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml
index 3af4ee5a1e..82e5febf8d 100644
--- a/indra/newview/skins/default/xui/de/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml
@@ -83,7 +83,7 @@
<text name="scripts_value" value="Ein"/>
<text name="damage_label" value="Schaden:"/>
<text name="damage_value" value="Aus"/>
- <button label="Über Land" name="about_land_btn"/>
+ <button label="Land-Info" name="about_land_btn"/>
</panel>
</accordion_tab>
<accordion_tab name="region_information_tab" title="Region">
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
index 626e35dd0b..45b560c759 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -9,7 +9,7 @@
<radio_item label="Groß" name="radio3" value="2"/>
</radio_group>
<text name="font_colors">
- Schriftfarbe:
+ Schriftfarben:
</text>
<color_swatch label="Sie" name="user"/>
<text name="text_box1">
@@ -45,7 +45,7 @@
</text>
<check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
<check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
- <check_box label="Text-Chatverlauf aktivieren" name="plain_text_chat_history"/>
+ <check_box label="Kompakten Text-Chatverlauf aktivieren" name="plain_text_chat_history"/>
<radio_group name="chat_window" tool_tip="Zeigen Sie Ihre Sofortnachrichten (Instant Messages) in einem anderen Fenster oder in einem einzigen Fenster mit viele Registerkarten an (Neustart erforderlich).">
<radio_item label="Getrennte Fenster" name="radio" value="0"/>
<radio_item label="Registerkarten" name="radio2" value="1"/>
diff --git a/indra/newview/skins/default/xui/de/panel_region_estate.xml b/indra/newview/skins/default/xui/de/panel_region_estate.xml
index 59a4c148a8..92ad9741bc 100644
--- a/indra/newview/skins/default/xui/de/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_estate.xml
@@ -70,5 +70,5 @@
<button label="Hinzufügen..." name="add_banned_avatar_btn"/>
<button label="Entfernen..." name="remove_banned_avatar_btn"/>
<button label="Nachricht an Grundstück" name="message_estate_btn"/>
- <button label="Einwohner hinauswerfen" name="kick_user_from_estate_btn"/>
+ <button label="Einwohner hinauswerfen..." name="kick_user_from_estate_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml
index 2885e5bd3a..2bf8721c86 100644
--- a/indra/newview/skins/default/xui/de/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_general.xml
@@ -19,35 +19,25 @@
unbekannt
</text>
<check_box label="Terraformen blockieren" name="block_terraform_check"/>
- <button label="?" name="terraform_help"/>
<check_box label="Fliegen blockieren" name="block_fly_check"/>
- <button label="?" name="fly_help"/>
<check_box label="Schaden zulassen" name="allow_damage_check"/>
- <button label="?" name="damage_help"/>
<check_box label="Stoßen beschränken" name="restrict_pushobject"/>
- <button label="?" name="restrict_pushobject_help"/>
<check_box label="Landwiederverkauf zulassen" name="allow_land_resell_check"/>
- <button label="?" name="land_resell_help"/>
<check_box label="Landumverteilung zulassen" name="allow_parcel_changes_check"/>
- <button label="?" name="parcel_changes_help"/>
<check_box label="Landanzeige in Suche blockieren" name="block_parcel_search_check" tool_tip="Diese Region und ihre Parzellen in Suchergebnissen anzeigen"/>
- <button label="?" name="parcel_search_help"/>
<spinner label="Avatar-Limit" name="agent_limit_spin"/>
- <button label="?" name="agent_limit_help"/>
<spinner label="Objektbonus" name="object_bonus_spin"/>
- <button label="?" name="object_bonus_help"/>
<text label="Inhaltseinstufung" name="access_text">
Einstufung:
</text>
- <combo_box label="Moderat" name="access_combo">
- <combo_box.item label="Adult" name="Adult"/>
- <combo_box.item label="Moderat" name="Mature"/>
- <combo_box.item label="Allgemein" name="PG"/>
- </combo_box>
- <button label="?" name="access_help"/>
+ <icons_combo_box label="Moderat" name="access_combo">
+ <icons_combo_box.item label="Adult" name="Adult" value="42"/>
+ <icons_combo_box.item label="Moderat" name="Mature" value="21"/>
+ <icons_combo_box.item label="Allgemein" name="PG" value="13"/>
+ </icons_combo_box>
<button label="Übernehmen" name="apply_btn"/>
- <button label="Einen Benutzer nach Hause teleportieren..." name="kick_btn"/>
- <button label="Alle Benutzer nach Hause teleportieren..." name="kick_all_btn"/>
+ <button label="Einen Einwohner nach Hause teleportieren..." name="kick_btn"/>
+ <button label="Alle Einwohner nach Hause teleportieren..." name="kick_all_btn"/>
<button label="Nachricht an Region senden..." name="im_btn"/>
<button label="Telehub verwalten..." name="manage_telehub_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_region_general_layout.xml b/indra/newview/skins/default/xui/de/panel_region_general_layout.xml
index 732249df35..09142ada6f 100644
--- a/indra/newview/skins/default/xui/de/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_general_layout.xml
@@ -36,8 +36,8 @@
<combo_box.item label="Allgemein" name="PG"/>
</combo_box>
<button label="Übernehmen" name="apply_btn"/>
- <button label="Einen Benutzer nach Hause teleportieren..." name="kick_btn"/>
- <button label="Alle Benutzer nach Hause teleportieren..." name="kick_all_btn"/>
+ <button label="Einen Einwohner nach Hause teleportieren..." name="kick_btn"/>
+ <button label="Alle Einwohner nach Hause teleportieren..." name="kick_all_btn"/>
<button label="Nachricht an Region senden..." name="im_btn"/>
<button label="Telehub verwalten..." name="manage_telehub_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_region_texture.xml b/indra/newview/skins/default/xui/de/panel_region_texture.xml
index f9997f300a..2f4904730b 100644
--- a/indra/newview/skins/default/xui/de/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_texture.xml
@@ -25,25 +25,25 @@
Texturhöhenbereich
</text>
<text name="height_text_lbl6">
- Südwest
+ Nordwest
</text>
<text name="height_text_lbl7">
- Nordwest
+ Nordost
</text>
<text name="height_text_lbl8">
- Südost
+ Südwest
</text>
<text name="height_text_lbl9">
- Nordost
+ Südost
</text>
- <spinner label="Niedrig" name="height_start_spin_0" label_width="40"/>
- <spinner label="Niedrig" name="height_start_spin_1" label_width="40"/>
- <spinner label="Niedrig" name="height_start_spin_2" label_width="40"/>
- <spinner label="Niedrig" name="height_start_spin_3" label_width="40"/>
- <spinner label="Hoch" name="height_range_spin_0" label_width="40"/>
- <spinner label="Hoch" name="height_range_spin_1" label_width="40"/>
- <spinner label="Hoch" name="height_range_spin_2" label_width="40"/>
- <spinner label="Hoch" name="height_range_spin_3" label_width="40"/>
+ <spinner label="Niedrig" label_width="40" name="height_start_spin_0"/>
+ <spinner label="Niedrig" label_width="40" name="height_start_spin_1"/>
+ <spinner label="Niedrig" label_width="40" name="height_start_spin_2"/>
+ <spinner label="Niedrig" label_width="40" name="height_start_spin_3"/>
+ <spinner label="Hoch" label_width="40" name="height_range_spin_0"/>
+ <spinner label="Hoch" label_width="40" name="height_range_spin_1"/>
+ <spinner label="Hoch" label_width="40" name="height_range_spin_2"/>
+ <spinner label="Hoch" label_width="40" name="height_range_spin_3"/>
<text name="height_text_lbl10">
Diese Werte geben den Mischungsgrad für die obigen Texturen an.
</text>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
index 81f1ebdf91..990543b725 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
@@ -38,7 +38,7 @@
</panel.string>
<text name="title" value="Objektprofil"/>
<text name="where" value="(inworld)"/>
- <panel name="properties_panel" label="">
+ <panel label="" name="properties_panel">
<text name="Name:">
Name:
</text>
@@ -85,7 +85,7 @@
<text name="GroupLabel">
Gruppe:
</text>
- <check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/>
+ <check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern, teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/>
<text name="NextOwnerLabel">
Nächster Eigentümer:
</text>
@@ -96,7 +96,7 @@
<check_box label="Zum Verkauf" name="checkbox for sale"/>
<combo_box name="sale type">
<combo_box.item label="Kopieren" name="Copy"/>
- <combo_box.item label="Inhalte" name="Contents"/>
+ <combo_box.item label="Inhalt" name="Contents"/>
<combo_box.item label="Original" name="Original"/>
</combo_box>
<spinner label="Preis: L$" name="Edit Cost"/>
@@ -124,5 +124,6 @@
<button label="Öffnen" name="open_btn"/>
<button label="Bezahlen" name="pay_btn"/>
<button label="Kaufen" name="buy_btn"/>
+ <button label="Details" name="details_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index c4b540d08a..fc01b69461 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -753,11 +753,14 @@
Alpha
</string>
<string name="tattoo">
- Taetowierung
+ Tätowierung
</string>
<string name="invalid">
ungültig
</string>
+ <string name="NewWearable">
+ Neue/r/s [WEARABLE_ITEM]
+ </string>
<string name="next">
Weiter
</string>
@@ -1256,7 +1259,7 @@
(unbekannt)
</string>
<string name="SummaryForTheWeek" value="Zusammenfassung für diese Woche, beginnend am "/>
- <string name="NextStipendDay" value="Der nächste Stipendium-Tag ist "/>
+ <string name="NextStipendDay" value=". Der nächste Stipendium-Tag ist "/>
<string name="GroupIndividualShare" value=" Gruppenanteil Einzelanteil"/>
<string name="Balance">
Kontostand
@@ -1468,6 +1471,9 @@
<string name="PanelContentsNewScript">
Neues Skript
</string>
+ <string name="BusyModeResponseDefault">
+ Der Einwohner/Die Einwohnerin ist „beschäftigt&quot;, d.h. er/sie möchte im Moment nicht gestört werden. Ihre Nachricht wird dem Einwohner/der Einwohnerin als IM angezeigt, und kann später beantwortet werden.
+ </string>
<string name="MuteByName">
(nach Namen)
</string>
diff --git a/indra/newview/skins/default/xui/de/teleport_strings.xml b/indra/newview/skins/default/xui/de/teleport_strings.xml
index 2c56eff0a3..69c952c532 100644
--- a/indra/newview/skins/default/xui/de/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/de/teleport_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<teleport_messages name="">
+<teleport_messages>
<message_set name="errors">
<message name="invalid_tport">
Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen sich zum Teleportieren eventuell neu anmelden.
@@ -62,6 +62,9 @@ Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in e
<message name="completing">
Teleport wird abgeschlossen.
</message>
+ <message name="completed_from">
+ Teleport aus [T_SLURL] wurde erfolgreich abgeschlossen.
+ </message>
<message name="resolving">
Ziel wird ermittelt.
</message>
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 3297150c7f..2764befeac 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -9,6 +9,18 @@
title="ABOUT LAND"
width="490">
<floater.string
+ name="maturity_icon_general">
+ "Parcel_PG_Dark"
+ </floater.string>
+ <floater.string
+ name="maturity_icon_moderate">
+ "Parcel_M_Dark"
+ </floater.string>
+ <floater.string
+ name="maturity_icon_adult">
+ "Parcel_R_Dark"
+ </floater.string>
+ <floater.string
name="Minutes">
[MINUTES] minutes
</floater.string>
@@ -1107,7 +1119,7 @@ Leyla Linden </text>
label="Type"
name="type"
sort_column="online_status"
- width="24" />
+ width="50" />
<name_list.columns
name="online_status"
width="-1" />
@@ -1874,6 +1886,10 @@ Only large parcels can be listed in search.
name="access_estate_defined">
(Defined by the Estate)
</panel.string>
+ <panel.string
+ name="allow_public_access">
+ Allow Public Access ([MATURITY])
+ </panel.string>
<panel.string
name="estate_override">
One or more of these options is set at the estate level
@@ -1894,7 +1910,6 @@ Only large parcels can be listed in search.
<check_box
follows="top|left"
height="16"
- label="Allow Public Access [MATURITY]"
layout="topleft"
left_delta="0"
name="public_access"
diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml
index 663899d4b3..12ade86b5f 100644
--- a/indra/newview/skins/default/xui/en/floater_script.xml
+++ b/indra/newview/skins/default/xui/en/floater_script.xml
@@ -3,7 +3,7 @@
legacy_header_height="18"
background_visible="true"
follows="left|top|right|bottom"
- height="369"
+ height="250"
layout="topleft"
left="0"
name="script_floater"
@@ -11,8 +11,8 @@
can_dock="true"
can_minimize="true"
visible="false"
- width="520"
+ width="350"
can_resize="false"
min_width="350"
- min_height="369">
+ min_height="200">
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 0aa05ea572..aec03b8053 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -290,11 +290,11 @@
width="134" />
<check_box
control_name="SnapEnabled"
- height="20"
+ height="18"
initial_value="true"
label="Snap to grid"
layout="topleft"
- top_pad="0"
+ top_pad="7"
name="checkbox snap to grid"
width="134" />
<combo_box
@@ -990,11 +990,11 @@
label="For Sale:"
layout="topleft"
name="checkbox for sale"
- left="10"
- width="90" />
+ left="7"
+ width="93" />
<!-- NEW SALE TYPE COMBO BOX -->
<combo_box
- left_pad="0"
+ left_pad="3"
layout="topleft"
follows="left|top"
allow_text_entry="false"
@@ -1104,9 +1104,9 @@ even though the user gets a free copy.
follows="left|top|right"
label="Modify"
layout="topleft"
- left="15"
+ left="5"
name="checkbox next owner can modify"
- width="85" />
+ width="80" />
<check_box
follows="left|top|right"
height="19"
@@ -1114,7 +1114,7 @@ even though the user gets a free copy.
layout="topleft"
left_pad="0"
name="checkbox next owner can copy"
- width="90" />
+ width="80" />
<check_box
follows="left|top|right"
height="19"
@@ -1124,7 +1124,7 @@ even though the user gets a free copy.
left_pad="0"
top_delta="0"
tool_tip="Next owner can give away or resell this object"
- width="90" />
+ width="100" />
<text
type="string"
text_color="EmphasisColor"
@@ -2054,7 +2054,7 @@ even though the user gets a free copy.
increment="1"
initial_value="2"
label="Softness"
- label_width="65"
+ label_width="70"
layout="topleft"
left_delta="0"
max_val="3"
@@ -2067,7 +2067,7 @@ even though the user gets a free copy.
increment="0.5"
initial_value="0.3"
label="Gravity"
- label_width="65"
+ label_width="70"
layout="topleft"
left_delta="0"
max_val="10"
@@ -2081,7 +2081,7 @@ even though the user gets a free copy.
increment="0.5"
initial_value="2"
label="Drag"
- label_width="65"
+ label_width="70"
layout="topleft"
left_delta="0"
max_val="10"
@@ -2094,7 +2094,7 @@ even though the user gets a free copy.
increment="0.5"
initial_value="0"
label="Wind"
- label_width="65"
+ label_width="70"
layout="topleft"
left_delta="0"
max_val="10"
@@ -2107,7 +2107,7 @@ even though the user gets a free copy.
increment="0.5"
initial_value="1"
label="Tension"
- label_width="65"
+ label_width="70"
layout="topleft"
left_delta="0"
max_val="10"
@@ -2120,7 +2120,7 @@ even though the user gets a free copy.
increment="0.01"
initial_value="0"
label="Force X"
- label_width="65"
+ label_width="70"
layout="topleft"
left_delta="0"
max_val="10"
@@ -2134,7 +2134,7 @@ even though the user gets a free copy.
increment="0.01"
initial_value="0"
label="Force Y"
- label_width="65"
+ label_width="70"
layout="topleft"
left_delta="0"
max_val="10"
@@ -2148,7 +2148,7 @@ even though the user gets a free copy.
increment="0.01"
initial_value="0"
label="Force Z"
- label_width="65"
+ label_width="70"
layout="topleft"
left_delta="0"
max_val="10"
diff --git a/indra/newview/skins/default/xui/en/menu_picks.xml b/indra/newview/skins/default/xui/en/menu_picks.xml
index 7e07a97016..ebb49c9004 100644
--- a/indra/newview/skins/default/xui/en/menu_picks.xml
+++ b/indra/newview/skins/default/xui/en/menu_picks.xml
@@ -8,6 +8,9 @@
name="pick_info">
<menu_item_call.on_click
function="Pick.Info" />
+ <menu_item_call.on_enable
+ function="Pick.Enable"
+ parameter="info" />
</menu_item_call>
<menu_item_call
label="Edit"
@@ -16,6 +19,9 @@
visible="false">
<menu_item_call.on_click
function="Pick.Edit" />
+ <menu_item_call.on_enable
+ function="Pick.Enable"
+ parameter="edit" />
</menu_item_call>
<menu_item_call
label="Teleport"
@@ -23,6 +29,9 @@
name="pick_teleport">
<menu_item_call.on_click
function="Pick.Teleport" />
+ <menu_item_call.on_enable
+ function="Pick.Enable"
+ parameter="teleport" />
</menu_item_call>
<menu_item_call
label="Map"
@@ -30,6 +39,9 @@
name="pick_map">
<menu_item_call.on_click
function="Pick.Map" />
+ <menu_item_call.on_enable
+ function="Pick.Enable"
+ parameter="map" />
</menu_item_call>
<menu_item_separator
layout="topleft"
@@ -42,5 +54,8 @@
visible="false">
<menu_item_call.on_click
function="Pick.Delete" />
+ <menu_item_call.on_enable
+ function="Pick.Enable"
+ parameter="delete" />
</menu_item_call>
</context_menu>
diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml
index 1535ce2978..e3b331799c 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -24,7 +24,7 @@
</panel.string>
<panel.string
name="click_through_text_fmt">
- [TELEPORT] teleport, [MAP] map, [MAP] profile
+ [TELEPORT] teleport, [MAP] map, [PROFILE] profile
</panel.string>
<panel.string
name="date_fmt">
@@ -156,6 +156,24 @@
top_pad="10"
value="Content Type:"
width="140" />
+ <icon
+ follows="top|left"
+ height="16"
+ image_name="Parcel_M_Light"
+ layout="topleft"
+ left_pad="0"
+ name="content_type_moderate"
+ top_pad="-11"
+ width="18" />
+ <icon
+ follows="top|left"
+ height="16"
+ image_name="Parcel_PG_Light"
+ layout="topleft"
+ left_delta="0"
+ name="content_type_general"
+ top_delta="0"
+ width="18" />
<text_editor
allow_scroll="false"
bg_visible="false"
@@ -163,11 +181,11 @@
h_pad="0"
height="18"
layout="topleft"
- left_pad="0"
+ left_pad="2"
name="content_type"
read_only="true"
- width="150"
- top_pad="-10"
+ width="130"
+ top_delta="1"
v_pad="0"
value="[content type]" />
<text
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
index c1b352031f..7383edf63d 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
@@ -186,7 +186,7 @@
left="10"
top_pad="5"
name="set_to_curr_location_btn"
- width="156" />
+ width="200" />
<text
follows="left|top"
font.style="BOLD"
@@ -217,25 +217,41 @@
top_pad="15"
value="Content type:"
width="250" />
- <combo_box
- allow_text_entry="false"
- follows="left|top"
- height="23"
+ <icons_combo_box
+ follows="left|top"
+ height="23"
+ label="General Content"
+ layout="topleft"
left="10"
- name="content_type"
+ name="content_type"
top_pad="5"
width="156">
- <combo_item
- name="mature_ci"
- value="Mature">
- Moderate Content
- </combo_item>
- <combo_item
- name="pg_ci"
- value="PG">
- General Content
- </combo_item>
- </combo_box>
+ <icons_combo_box.drop_down_button
+ image_overlay="Parcel_PG_Light"
+ image_overlay_alignment="left"
+ imgoverlay_label_space="3"
+ pad_left="3"/>
+ <icons_combo_box.item
+ label="Moderate Content"
+ name="mature_ci"
+ value="Mature">
+ <item.columns
+ halign="center"
+ type="icon"
+ value="Parcel_M_Light"
+ width="20"/>
+ </icons_combo_box.item>
+ <icons_combo_box.item
+ label="General Content"
+ name="pg_ci"
+ value="PG">
+ <item.columns
+ halign="center"
+ type="icon"
+ value="Parcel_PG_Light"
+ width="20"/>
+ </icons_combo_box.item>
+ </icons_combo_box>
<text
follows="left|top"
font.style="BOLD"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index 657e369beb..7445bb339d 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -164,7 +164,7 @@
left="8"
top_pad="0"
name="set_to_curr_location_btn"
- width="156" />
+ width="200" />
</panel>
</scroll_container>
<panel
diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml
index 48083b7677..15a3191bdf 100644
--- a/indra/newview/skins/default/xui/en/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml
@@ -86,7 +86,7 @@
left="4"
name="ok_button"
top="356"
- width="130" />
+ width="135" />
<button
height="20"
label="Cancel"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 01a27a08c7..1e7c51259c 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -325,6 +325,7 @@
top_pad="10"
width="313">
<accordion_tab
+ height="170"
layout="topleft"
name="parcel_characteristics_tab"
title="Parcel">
@@ -537,6 +538,7 @@
</accordion_tab>
<accordion_tab
expanded="false"
+ height="150"
layout="topleft"
name="region_information_tab"
title="Region">
@@ -664,6 +666,7 @@
</accordion_tab>
<accordion_tab
expanded="false"
+ height="190"
layout="topleft"
name="estate_information_tab"
title="Estate">
@@ -753,6 +756,7 @@
</accordion_tab>
<accordion_tab
expanded="false"
+ height="320"
layout="topleft"
name="sales_tab"
title="For Sale">
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index f20526b491..c74de043e9 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -635,7 +635,7 @@
left_delta="-230"
name="LightingDetailText"
top_pad="8"
- width="128">
+ width="140">
Lighting detail:
</text>
<radio_group
@@ -672,10 +672,10 @@
follows="left|top"
height="12"
layout="topleft"
- left="360"
+ left="358"
name="TerrainDetailText"
top="465"
- width="128">
+ width="155">
Terrain detail:
</text>
<radio_group
diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml
index 3913b6d709..c5b2512fba 100644
--- a/indra/newview/skins/default/xui/en/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml
@@ -20,7 +20,7 @@
name="estate_help_text"
top="14"
word_wrap="true"
- width="275">
+ width="250">
Changes to settings on this tab will affect all regions in the estate.
</text>
<text
diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml
index 4acfa42c23..ca9579284b 100644
--- a/indra/newview/skins/default/xui/en/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_general.xml
@@ -187,6 +187,7 @@
pad_left="3"/>
<icons_combo_box.item
label="Adult"
+ name="Adult"
value="42">
<item.columns
halign="center"
@@ -196,6 +197,7 @@
</icons_combo_box.item>
<icons_combo_box.item
label="Moderate"
+ name="Mature"
value="21">
<item.columns
halign="center"
@@ -205,6 +207,7 @@
</icons_combo_box.item>
<icons_combo_box.item
label="General"
+ name="PG"
value="13">
<item.columns
halign="center"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index 86739b24c8..433b7691fa 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -77,7 +77,7 @@
top="0"
use_ellipses="true"
value="Object Profile"
- width="275" />
+ width="290" />
<text
follows="top|left"
height="13"
diff --git a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml
index 89d5950e98..ea63cac790 100644
--- a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<!--All horizontal sliders are configured to have no highlighted track. See EXT-5939. -->
<slider_bar track_color="SliderTrackColor"
thumb_outline_color="SliderThumbOutlineColor"
thumb_center_color="SliderThumbCenterColor"
@@ -7,6 +8,6 @@
thumb_image_disabled="SliderThumb_Disabled"
track_image_horizontal="SliderTrack_Horiz"
track_image_vertical="SliderTrack_Vert"
- track_highlight_horizontal_image="SliderTrack_Horiz"
+ track_highlight_horizontal_image="transparent.j2c"
track_highlight_vertical_image="SliderTrack_Vert"
font="SansSerif" />
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index d7f7fc4987..f99bb277cb 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -144,7 +144,7 @@ Asegúrate de que tu conexión a internet está funcionando adecuadamente.
Va a añadir miembros al rol de [ROLE_NAME].
No podrá removérseles de ese rol, sino que deberán renunciar a él por sí mismos.
¿Está seguro de que quiere seguir?
- <usetemplate ignoretext="Confirma que vas a añadir un nuevo Propietario al grupo" name="okcancelignore" notext="No" yestext="Sí"/>
+ <usetemplate ignoretext="Confirmar que vas a añadir un nuevo propietario al grupo" name="okcancelignore" notext="No" yestext="Sí"/>
</notification>
<notification name="AssignDangerousActionWarning">
Va a añadir la capacidad &apos;[ACTION_NAME]&apos; al rol &apos;[ROLE_NAME]&apos;.
@@ -1526,7 +1526,7 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C
<url name="url">
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es
</url>
- <usetemplate ignoretext="No puedo reclamar este terreno, dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
+ <usetemplate ignoretext="No puedo reclamar este terreno dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
</notification>
<notification name="LandClaimAccessBlocked_Notify">
Por su nivel de calificación, usted no puede reclamar este terreno.
@@ -1550,7 +1550,7 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C
<url name="url">
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es
</url>
- <usetemplate ignoretext="No puedo comprar este terreno, dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
+ <usetemplate ignoretext="No puedo comprar este terreno dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
</notification>
<notification name="LandBuyAccessBlocked_Notify">
No puede comprar este terreno por su nivel de calificación.
@@ -1731,7 +1731,7 @@ Dado que estos objetos tienen scripts, moverlos a su inventario puede provocar u
<usetemplate ignoretext="Abrir mi navegador para ver el historial de mi cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
</notification>
<notification name="ConfirmQuit">
- ¿Está seguro de que quiere salir?
+ ¿Estás seguro de que quieres salir?
<usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/>
</notification>
<notification name="HelpReportAbuseEmailLL">
diff --git a/indra/newview/skins/default/xui/es/panel_login.xml b/indra/newview/skins/default/xui/es/panel_login.xml
index 8313306cf9..c5494d8199 100644
--- a/indra/newview/skins/default/xui/es/panel_login.xml
+++ b/indra/newview/skins/default/xui/es/panel_login.xml
@@ -24,7 +24,7 @@
</layout_panel>
<layout_panel name="links">
<text name="create_new_account_text">
- Registrarse
+ Registrarme
</text>
<text name="login_help">
¿Necesitas ayuda para conectarte?
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
index ed24ccacd7..8993fa139f 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
@@ -20,7 +20,7 @@
(requiere reiniciar)
</text>
<text name="maturity_desired_prompt">
- Quiero acceder a contenido calificado:
+ Quiero acceder a contenido:
</text>
<text name="maturity_desired_textbox"/>
<combo_box name="maturity_desired_combobox">
@@ -62,6 +62,6 @@
<combo_box.item label="nunca" name="item4"/>
</combo_box>
<text name="text_box3">
- Respuesta cuando estoy en el modo ocupado:
+ Respuesta cuando estoy en modo ocupado:
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
index c5ecffc026..6ec3a04a02 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
@@ -6,11 +6,11 @@
<text name="QualitySpeed">
Calidad y velocidad:
</text>
- <text left="95" name="FasterText">
- El más rápido
+ <text name="FasterText">
+ Más rápido
</text>
<text name="BetterText">
- Mejor
+ Más calidad
</text>
<text name="ShadersPrefText">
Bajo
@@ -83,24 +83,23 @@
<text name="SkyMeshDetailText">
Bajo
</text>
- <text name="LightingDetailText" width="135">
- Detalles de la iluminación:
+ <text name="LightingDetailText">
+ Detalles de iluminación:
</text>
<radio_group name="LightingDetailRadio">
- <radio_item label="Sólo el Sol y la Luna" name="SunMoon" value="0"/>
- <radio_item label="Puntos de luz cercanos" name="LocalLights" value="1"/>
+ <radio_item label="Sólo el Sol y la Luna" name="SunMoon"/>
+ <radio_item label="Puntos de luz cercanos" name="LocalLights"/>
</radio_group>
<text name="TerrainDetailText">
- Nivel de detalle del
- terreno:
+ Detalle del terreno:
</text>
- <radio_group left_delta="60" name="TerrainDetailRadio">
+ <radio_group name="TerrainDetailRadio">
<radio_item label="Bajo" name="0"/>
<radio_item label="Alto" name="2"/>
</radio_group>
</panel>
<button label="Aplicar" label_selected="Aplicar" name="Apply"/>
- <button label="Por defecto" left="110" name="Defaults" width="195"/>
+ <button label="Por defecto" name="Defaults"/>
<button label="Avanzado" name="Advanced"/>
<button label="Hardware" label_selected="Hardware" left="315" name="GraphicsHardwareButton"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
index 9e6cf49247..1e8b0c736c 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
@@ -7,10 +7,10 @@
<slider label="Efectos de sonido" name="SFX Volume"/>
<slider label="Música en streaming" name="Music Volume"/>
<check_box label="Activada" name="music_enabled"/>
- <slider label="Medios de comunicación" name="Media Volume"/>
- <check_box label="Activados" name="enable_media"/>
+ <slider label="Multimedia" name="Media Volume"/>
+ <check_box label="Activada" name="enable_media"/>
<slider label="Chat de voz" name="Voice Volume"/>
- <check_box label="Activada" name="enable_voice_check"/>
+ <check_box label="Activado" name="enable_voice_check"/>
<check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marcar esto para permitir la ejecución automática de los media" value="Sí"/>
<check_box label="Ejecutar para otros avatares los media anexados" name="media_show_on_others_btn" tool_tip="Al desmarcar esto se esconderán los media anexados a otros avatares cercanos" value="Sí"/>
<text name="voice_chat_settings">
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index d0e96583f0..ac3bd17c85 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floaterland" title="À PROPOS DES TERRAINS">
+ <floater.string name="maturity_icon_general">
+ &quot;Parcel_PG_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_moderate">
+ &quot;Parcel_M_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_adult">
+ &quot;Parcel_R_Dark&quot;
+ </floater.string>
<floater.string name="Minutes">
[MINUTES] minutes
</floater.string>
@@ -15,7 +24,7 @@
<tab_container name="landtab" tab_min_width="60">
<panel label="GÉNÉRAL" name="land_general_panel">
<panel.string name="new users only">
- Nouveaux utilisateurs uniquement
+ Nouveaux résidents uniquement
</panel.string>
<panel.string name="anyone">
Tout le monde
@@ -380,7 +389,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
<combo_box.item label="Lieu d&apos;arrivée fixe" name="LandingPoint"/>
<combo_box.item label="Lieu d&apos;arrivée libre" name="Anywhere"/>
</combo_box>
- </panel>
+ </panel>
<panel label="MÉDIA" name="land_media_panel">
<text name="with media:" width="85">
Type :
@@ -392,10 +401,6 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
</text>
<line_editor left="97" name="media_url"/>
<button label="Choisir" label_selected="Définir..." name="set_media_url"/>
- <text name="CurrentURL:">
- Page actuelle :
- </text>
- <button label="Réinitialiser..." label_selected="Réinitialiser..." name="reset_media_url" tool_tip="Actualiser l&apos;URL"/>
<check_box label="Masquer l&apos;URL" left="97" name="hide_media_url" tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l&apos;URL du média. Cette option n&apos;est pas disponible pour les fichiers HTML."/>
<text name="Description:">
Description :
diff --git a/indra/newview/skins/default/xui/fr/floater_god_tools.xml b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
index 187814eba2..e20da40bcf 100644
--- a/indra/newview/skins/default/xui/fr/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
@@ -2,7 +2,7 @@
<floater name="godtools floater" title="OUTILS DIVINS">
<tab_container name="GodTools Tabs">
<panel label="Grille" name="grid">
- <button label="Éjecter tous" label_selected="Éjecter tous" name="Kick all users" width="175"/>
+ <button label="Éjecter tous les résidents" label_selected="Éjecter tous les résidents" name="Kick all users" width="175"/>
<button label="Vider le cache cartographique de la région" label_selected="Vider le cache cartographique de la région" name="Flush This Region&apos;s Map Visibility Caches" width="285"/>
</panel>
<panel label="Région" name="region">
diff --git a/indra/newview/skins/default/xui/fr/floater_im.xml b/indra/newview/skins/default/xui/fr/floater_im.xml
index 0e4039d3af..15b01dbf12 100644
--- a/indra/newview/skins/default/xui/fr/floater_im.xml
+++ b/indra/newview/skins/default/xui/fr/floater_im.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="im_floater" title="Message instantané">
<text name="only_user_message">
- Vous êtes le seul participant à cette session.
+ Vous êtes le seul résident participant à cette session.
</text>
<text name="offline_message">
[FIRST] [LAST] est déconnecté(e).
@@ -31,7 +31,7 @@
Un modérateur de groupe a désactivé votre chat écrit.
</string>
<string name="add_session_event">
- Impossible d&apos;ajouter des participants à la session de chat avec [RECIPIENT].
+ Impossible d&apos;ajouter des résidents à la session de chat avec [RECIPIENT].
</string>
<string name="message_session_event">
Impossible d&apos;envoyer votre message à la session de chat avec [RECIPIENT].
diff --git a/indra/newview/skins/default/xui/fr/floater_publish_classified.xml b/indra/newview/skins/default/xui/fr/floater_publish_classified.xml
new file mode 100644
index 0000000000..39a2b086f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_publish_classified.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="publish_classified" title="Publication de l&apos;annonce">
+ <text name="explanation_text">
+ Votre petite annonce sera visible pendant une semaine à partir de sa date de publication.
+
+Rappel : les frais liés aux annonces passées ne sont pas remboursables.
+ </text>
+ <spinner label="Coût de l&apos;annonce :" name="price_for_listing" tool_tip="Coût de l’annonce." value="50"/>
+ <text name="l$_text" value="L$"/>
+ <text name="more_info_text">
+ En savoir plus (lien vers l&apos;aide sur les annonces)
+ </text>
+ <button label="Publier" name="publish_btn"/>
+ <button label="Annuler" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
index f01d865f29..ccb862acac 100644
--- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
@@ -63,7 +63,7 @@
<check_box label="HUD" name="hud_check"/>
<check_box label="Garder ouvert après enregistrement" name="keep_open_check"/>
<check_box label="Conserver les proportions" name="keep_aspect_check"/>
- <check_box label="Figer l'image (plein écran)" name="freeze_frame_check"/>
+ <check_box label="Figer l&apos;image (plein écran)" name="freeze_frame_check"/>
<button label="Rafraîchir" name="new_snapshot_btn"/>
<check_box label="Rafraîchissement automatique" name="auto_snapshot_check"/>
<button label="Enregistrer ([AMOUNT] L$)" name="upload_btn" width="118"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml
index addbaf2199..f8e1926586 100644
--- a/indra/newview/skins/default/xui/fr/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_world_map.xml
@@ -5,20 +5,17 @@
Légende
</text>
</panel>
- <panel>
- <button label="Afficher mon emplacement" label_selected="Afficher mon emplacement" name="Show My Location" tool_tip="Centrer la carte sur l&apos;emplacement de mon avatar"/>
+ <panel name="layout_panel_2">
+ <button name="Show My Location" tool_tip="Centrer la carte sur l’emplacement de mon avatar"/>
<text name="me_label">
Moi
</text>
- <check_box label="Résident" name="people_chk"/>
<text name="person_label">
Résident
</text>
- <check_box label="Infohub" name="infohub_chk"/>
<text name="infohub_label">
Infohub
</text>
- <check_box label="Terrain à vendre" name="land_for_sale_chk"/>
<text name="land_sale_label">
Vente de terrains
</text>
@@ -28,55 +25,46 @@
<text name="auction_label">
enchères
</text>
- <button label="Aller chez moi" label_selected="Aller chez moi" name="Go Home" tool_tip="Me téléporter jusqu&apos;à mon domicile"/>
+ <button name="Go Home" tool_tip="Me téléporter jusqu’à mon domicile"/>
<text name="Home_label">
Domicile
</text>
<text name="events_label">
Événements :
</text>
- <check_box label="PG" name="event_chk"/>
<text name="pg_label">
Général
</text>
- <check_box initial_value="true" label="Mature" name="event_mature_chk"/>
+ <check_box initial_value="true" name="event_mature_chk"/>
<text name="mature_label">
Modéré
</text>
- <check_box label="Adult" name="event_adult_chk"/>
<text name="adult_label">
Adulte
</text>
</panel>
- <panel>
+ <panel name="layout_panel_3">
<text name="find_on_map_label">
Situer sur la carte
</text>
</panel>
- <panel>
+ <panel name="layout_panel_4">
<combo_box label="Amis connectés" name="friend combo" tool_tip="Afficher les amis sur la carte">
<combo_box.item label="Mes amis connectés" name="item1"/>
</combo_box>
<combo_box label="Mes repères" name="landmark combo" tool_tip="Repère à afficher sur la carte">
<combo_box.item label="Mes repères" name="item1"/>
</combo_box>
- <search_editor label="Régions par nom" name="location" tool_tip="Saisissez le nom d&apos;une région"/>
- <button label="Trouver" label_selected="&gt;" name="DoSearch" tool_tip="Recherchez sur la carte"/>
+ <search_editor label="Régions par nom" name="location" tool_tip="Tapez le nom d&apos;une région"/>
+ <button label="Trouver" name="DoSearch" tool_tip="Rechercher une région"/>
<button name="Clear" tool_tip="Effacer les lignes de suivi et réinitialiser la carte"/>
- <scroll_list name="search_results">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="sim_name"/>
- </scroll_list>
- <button label="Téléporter" label_selected="Téléporter" name="Teleport" tool_tip="Téléporter à l&apos;endroit sélectionné"/>
- <button label="Copier la SLurl" name="copy_slurl" tool_tip="Copie l&apos;emplacement actuel sous la forme d&apos;une SLurl à utiliser sur le Web."/>
- <button label="Afficher la sélection" label_selected="Afficher la destination" name="Show Destination" tool_tip="Centrer la carte sur l&apos;endroit sélectionné"/>
+ <button label="Téléporter" name="Teleport" tool_tip="Me téléporter à l&apos;emplacement sélectionné"/>
+ <button label="Copier la SLurl" name="copy_slurl" tool_tip="Copie l’emplacement actuel sous la forme d’une SLurl à utiliser sur le Web."/>
+ <button label="Afficher la sélection" name="Show Destination" tool_tip="Centrer la carte sur l&apos;emplacement sélectionné"/>
</panel>
- <panel>
+ <panel name="layout_panel_5">
<text name="zoom_label">
Zoomer
</text>
</panel>
- <panel>
- <slider label="Zoom" name="zoom slider"/>
- </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
index ccb93f129e..8d51c1b4e3 100644
--- a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
@@ -8,7 +8,7 @@
<menu_item_call label="Inviter dans le groupe" name="Invite..."/>
<menu_item_call label="Ignorer" name="Avatar Mute"/>
<menu_item_call label="Signaler" name="abuse"/>
- <menu_item_call label="Geler" name="Freeze..."/>
+ <menu_item_call label="Figer" name="Freeze..."/>
<menu_item_call label="Expulser" name="Eject..."/>
<menu_item_call label="Débogage" name="Debug..."/>
<menu_item_call label="Zoomer en avant" name="Zoom In"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
index 289912cd05..b42271e969 100644
--- a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
@@ -8,7 +8,7 @@
<menu_item_call label="Inviter dans le groupe" name="Invite..."/>
<menu_item_call label="Ignorer" name="Avatar Mute"/>
<menu_item_call label="Signaler" name="abuse"/>
- <menu_item_call label="Geler" name="Freeze..."/>
+ <menu_item_call label="Figer" name="Freeze..."/>
<menu_item_call label="Expulser" name="Eject..."/>
<menu_item_call label="Débogage" name="Debug..."/>
<menu_item_call label="Zoomer en avant" name="Zoom In"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
index e5746dd4c2..0da9a1806d 100644
--- a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
@@ -9,7 +9,7 @@
<menu_item_call label="Ignorer" name="block"/>
<menu_item_call label="Ne plus ignorer" name="unblock"/>
<menu_item_call label="Signaler" name="report"/>
- <menu_item_call label="Geler" name="freeze"/>
+ <menu_item_call label="Figer" name="freeze"/>
<menu_item_call label="Expulser" name="eject"/>
<menu_item_call label="Débogage" name="debug"/>
<menu_item_call label="Situer sur la carte" name="find_on_map"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
index ab5016465d..58bd16064a 100644
--- a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
@@ -5,7 +5,7 @@
<menu_item_call label="Ignorer" name="block"/>
<menu_item_call label="Ne plus ignorer" name="unblock"/>
<menu_item_call label="Éjecter" name="kick"/>
- <menu_item_call label="Geler" name="freeze"/>
- <menu_item_call label="Dégeler" name="unfreeze"/>
+ <menu_item_call label="Figer" name="freeze"/>
+ <menu_item_call label="Libérer" name="unfreeze"/>
<menu_item_call label="Représentant du service consommateur" name="csr"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 7d2a33509b..0fb609d653 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -107,7 +107,7 @@ Veuillez ne sélectionner qu&apos;un seul objet.
</notification>
<notification name="FriendsAndGroupsOnly">
Les résidents qui ne sont pas vos amis ne sauront pas que vous avez choisi d&apos;ignorer leurs appels et leurs messages instantanés.
- <usetemplate name="okbutton" yestext="Oui"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="GrantModifyRights">
Lorsque vous accordez des droits d&apos;édition à un autre résident, vous lui permettez de changer, supprimer ou prendre n&apos;importe lequel de vos objets dans le Monde. Réfléchissez bien avant d&apos;accorder ces droits.
@@ -495,14 +495,14 @@ Souhaitez-vous vraiment donner ces objets ?
Vous n&apos;êtes pas autorisé à transférer le dossier sélectionné.
</notification>
<notification name="FreezeAvatar">
- Geler cet avatar ?
+ Figer cet avatar ?
Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde.
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Dégeler" yestext="Geler"/>
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Libérer" yestext="Figer"/>
</notification>
<notification name="FreezeAvatarFullname">
- Geler [AVATAR_NAME] ?
+ Figer [AVATAR_NAME] ?
Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde.
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Dégeler" yestext="Geler"/>
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Libérer" yestext="Figerf"/>
</notification>
<notification name="EjectAvatarFullname">
Expulser [AVATAR_NAME] de votre terrain ?
@@ -1295,8 +1295,8 @@ Quitter le groupe ?
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
</notification>
<notification name="ConfirmKick">
- Souhaitez-vous vraiment éjecter tous les utilisateurs de la grille ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Éjecter tous"/>
+ Souhaitez-vous vraiment éjecter tous les résidents de la grille ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Éjecter tous les résidents"/>
</notification>
<notification name="MuteLinden">
Désolé, vous ne pouvez pas ignorer un Linden.
@@ -1336,7 +1336,7 @@ Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages i
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="KickUser">
- Éjecter cet utilisateur avec quel message ?
+ Éjecter ce résident avec quel message ?
<form name="form">
<input name="message">
Un administrateur vous a déconnecté.
@@ -1356,20 +1356,20 @@ Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages i
</form>
</notification>
<notification name="FreezeUser">
- Geler cet utilisateur avec quel message ?
+ Figer ce résident avec quel message ?
<form name="form">
<input name="message">
- Vous avez été gelé. Vous ne pouvez ni bouger ni chatter. Un administrateur va vous envoyer un message instantané (IM).
+ Vous avez été figé. Vous ne pouvez ni bouger ni chatter. Un administrateur va vous envoyer un message instantané (IM).
</input>
<button name="OK" text="OK"/>
<button name="Cancel" text="Annuler"/>
</form>
</notification>
<notification name="UnFreezeUser">
- Dégeler cet utilisateur avec quel message ?
+ Libérer ce résident avec quel message ?
<form name="form">
<input name="message">
- Vous n&apos;êtes plus gelé.
+ Vous n&apos;êtes plus figé.
</input>
<button name="OK" text="OK"/>
<button name="Cancel" text="Annuler"/>
@@ -1386,7 +1386,7 @@ Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages i
</form>
</notification>
<notification name="OfferTeleportFromGod">
- Demander au résident de venir vous rejoindre ?
+ Exiger du résident qu&apos;il vienne vous rejoindre ?
<form name="form">
<input name="message">
On se rejoint à [REGION] ?
@@ -1418,7 +1418,7 @@ Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages i
<notification label="Modifier un domaine Linden" name="ChangeLindenEstate">
Vous vous apprêtez à modifier un domaine appartenant aux Lindens (continent, zone réservée aux ados, orientation etc.).
-Cela est extrêmement délicat car l&apos;expérience des résidents est en jeu. Sur le continent, cela modifiera des milliers de régions et sera difficile à digérer pour le serveur.
+Cela est extrêmement délicat car l&apos;expérience des résidents est en jeu. Sur le continent, cette action modifiera des milliers de régions et sera difficile à digérer pour le serveur.
Continuer ?
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
@@ -2415,7 +2415,7 @@ Accepter cette requête ?
</form>
</notification>
<notification name="ScriptToast">
- [FIRST] [LAST]&apos;s &apos;[TITLE]&apos; demande la participation de l&apos;utilisateur.
+ Le/La [TITLE] de [FIRST] [LAST] demande la participation du résident.
<form name="form">
<button name="Open" text="Ouvrir la boîte de dialogue"/>
<button name="Ignore" text="Ignorer"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_classified_info.xml b/indra/newview/skins/default/xui/fr/panel_classified_info.xml
index 784c6baae9..e064846c48 100644
--- a/indra/newview/skins/default/xui/fr/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/fr/panel_classified_info.xml
@@ -9,16 +9,46 @@
<panel.string name="l$_price">
[PRICE] L$
</panel.string>
+ <panel.string name="click_through_text_fmt">
+ [TELEPORT] téléporter, [MAP] carte, [PROFILE] profil
+ </panel.string>
+ <panel.string name="date_fmt">
+ [day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]
+ </panel.string>
+ <panel.string name="auto_renew_on">
+ Activé
+ </panel.string>
+ <panel.string name="auto_renew_off">
+ Désactivé
+ </panel.string>
<text name="title" value="Infos sur la petite annonce"/>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
<text_editor name="classified_name" value="[name]"/>
+ <text name="classified_location_label" value="Emplacement :"/>
<text_editor name="classified_location" value="[loading...]"/>
+ <text name="content_type_label" value="Type de contenu :"/>
<text_editor name="content_type" value="[content type]"/>
+ <text name="category_label" value="Catégorie :"/>
<text_editor name="category" value="[category]"/>
- <check_box label="Renouvellement automatique toutes les semaines" name="auto_renew"/>
- <text_editor name="price_for_listing" tool_tip="Coût de l&apos;annonce."/>
- <text_editor name="classified_desc" value="[description]"/>
+ <text name="creation_date_label" value="Date de création :"/>
+ <text_editor name="creation_date" tool_tip="Date de création" value="[date]"/>
+ <text name="price_for_listing_label" value="Coût de l&apos;annonce :"/>
+ <text_editor name="price_for_listing" tool_tip="Coût de l&apos;annonce." value="[prix]"/>
+ <layout_stack name="descr_stack">
+ <layout_panel name="clickthrough_layout_panel">
+ <text name="click_through_label" value="Clics :"/>
+ <text_editor name="click_through_text" tool_tip="Parcourir les données en cliquant" value="[clics]"/>
+ </layout_panel>
+ <layout_panel name="price_layout_panel">
+ <text name="auto_renew_label" value="Renouvellement automatique :"/>
+ <text name="auto_renew" value="Activé"/>
+ </layout_panel>
+ <layout_panel name="descr_layout_panel">
+ <text name="classified_desc_label" value="Description :"/>
+ <text_editor name="classified_desc" value="[description]"/>
+ </layout_panel>
+ </layout_stack>
</panel>
</scroll_container>
<panel name="buttons">
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml
index 1f44f2fe09..9ea7ff8122 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml
@@ -3,12 +3,20 @@
<panel.string name="location_notice">
(mise à jour après l&apos;enregistrement)
</panel.string>
+ <string name="publish_label">
+ Publier
+ </string>
+ <string name="save_label">
+ Enregistrer
+ </string>
<text name="title">
Modifier la petite annonce
</text>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
- <icon label="" name="edit_icon" tool_tip="Cliquez pour sélectionner une image"/>
+ <panel name="snapshot_panel">
+ <icon label="" name="edit_icon" tool_tip="Cliquer pour sélectionner une image"/>
+ </panel>
<text name="Name:">
Titre :
</text>
@@ -22,20 +30,19 @@
en cours de chargement...
</text>
<button label="Définir sur l&apos;emplacement actuel" name="set_to_curr_location_btn"/>
- <combo_box name="content_type">
- <combo_item name="mature_ci">
- Contenu Modéré
- </combo_item>
- <combo_item name="pg_ci">
- Contenu Général
- </combo_item>
- </combo_box>
+ <text name="category_label" value="Catégorie :"/>
+ <text name="content_type_label" value="Type de contenu :"/>
+ <icons_combo_box label="Contenu Général" name="content_type">
+ <icons_combo_box.item label="Contenu Modéré" name="mature_ci" value="Mature"/>
+ <icons_combo_box.item label="Contenu Général" name="pg_ci" value="PG"/>
+ </icons_combo_box>
+ <text name="price_for_listing_label" value="Coût de l&apos;annonce :"/>
<spinner label="L$" name="price_for_listing" tool_tip="Coût de l&apos;annonce." value="50"/>
<check_box label="Renouvellement automatique toutes les semaines" name="auto_renew"/>
</panel>
</scroll_container>
<panel label="bottom_panel" name="bottom_panel">
- <button label="Enregistrer" name="save_changes_btn"/>
+ <button label="[LABEL]" name="save_changes_btn"/>
<button label="Annuler" name="cancel_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
index 39885e1e12..8d17d9ffdf 100644
--- a/indra/newview/skins/default/xui/fr/panel_people.xml
+++ b/indra/newview/skins/default/xui/fr/panel_people.xml
@@ -7,6 +7,8 @@
<string name="no_friends" value="Pas d&apos;amis"/>
<string name="people_filter_label" value="Filtrer les personnes"/>
<string name="groups_filter_label" value="Filtrer les groupes"/>
+ <string name="no_filtered_groups_msg" value="[secondlife:///app/search/groups Trouver le groupe via la recherche ?]"/>
+ <string name="no_groups_msg" value="[secondlife:///app/search/groups Rechercher des groupes à rejoindre.]"/>
<filter_editor label="Filtre" name="filter_input"/>
<tab_container name="tabs">
<panel label="PRÈS DE VOUS" name="nearby_panel">
@@ -20,15 +22,15 @@
<accordion_tab name="tab_online" title="En ligne"/>
<accordion_tab name="tab_all" title="Tout"/>
</accordion>
- <text name="no_friends_msg">
- Pour ajouter des amis, utilisez la [secondlife:///app/search/people recherche] ou cliquez sur un résident pour l&apos;ajouter à vos amis.
-Si vous souhaitez rencontrer d&apos;autres résidents, cliquez sur [secondlife:///app/worldmap la carte].
- </text>
<panel label="bottom_panel" name="bottom_panel">
<button name="friends_viewsort_btn" tool_tip="Options"/>
<button name="add_btn" tool_tip="Proposer à un résident de devenir votre ami"/>
<button name="del_btn" tool_tip="Supprimer le résident sélectionné de votre liste d&apos;amis"/>
</panel>
+ <text name="no_friends_msg">
+ Pour ajouter des amis, utilisez la [secondlife:///app/search/people recherche] ou cliquez-droit sur le résident à ajouter comme ami.
+Si vous souhaitez rencontrer d&apos;autres résidents, cliquez sur [secondlife:///app/worldmap la carte].
+ </text>
</panel>
<panel label="MES GROUPES" name="groups_panel">
<panel label="bottom_panel" name="bottom_panel">
diff --git a/indra/newview/skins/default/xui/fr/panel_place_profile.xml b/indra/newview/skins/default/xui/fr/panel_place_profile.xml
index 2cd8744ae5..f2bdb3d745 100644
--- a/indra/newview/skins/default/xui/fr/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_place_profile.xml
@@ -69,58 +69,58 @@
<accordion name="advanced_info_accordion">
<accordion_tab name="parcel_characteristics_tab" title="Parcelle">
<panel name="parcel_characteristics_panel">
- <text name="rating_label" value="Catégorie :"/>
- <text name="rating_value" value="(inconnu)"/>
- <text name="voice_label" value="Voix :"/>
- <text name="voice_value" value="Activée"/>
- <text name="fly_label" value="Voler :"/>
+ <text name="rating_label" value="Catégorie :"/>
+ <text name="rating_value" value="inconnu"/>
+ <text name="voice_label" value="Voix :"/>
+ <text name="voice_value" value="Activé"/>
+ <text name="fly_label" value="Voler :"/>
<text name="fly_value" value="Activé"/>
- <text name="push_label" value="Appuyer :"/>
+ <text name="push_label" value="Pousser :"/>
<text name="push_value" value="Désactivé"/>
- <text name="build_label" value="Construire :"/>
+ <text name="build_label" value="Construire :"/>
<text name="build_value" value="Activé"/>
- <text name="scripts_label" value="Scripts :"/>
- <text name="scripts_value" value="Activés"/>
- <text name="damage_label" value="Dégâts :"/>
- <text name="damage_value" value="Désactivés"/>
- <button label="À propos des terrains" name="about_land_btn"/>
+ <text name="scripts_label" value="Scripts :"/>
+ <text name="scripts_value" value="Activé"/>
+ <text name="damage_label" value="Dégâts :"/>
+ <text name="damage_value" value="Désactivé"/>
+ <button label="À propos du terrain" name="about_land_btn"/>
</panel>
</accordion_tab>
<accordion_tab name="region_information_tab" title="Région">
<panel name="region_information_panel">
<text name="region_name_label" value="Région :"/>
<text name="region_name" value="Pays des orignaux"/>
- <text name="region_type_label" value="Type :"/>
+ <text name="region_type_label" value="Type :"/>
<text name="region_type" value="Orignal"/>
- <text name="region_rating_label" value="Catégorie :"/>
+ <text name="region_rating_label" value="Catégorie :"/>
<text name="region_rating" value="Adulte"/>
- <text name="region_owner_label" value="Propriétaire :"/>
+ <text name="region_owner_label" value="Propriétaire :"/>
<text name="region_owner" value="orignal Van Orignal"/>
- <text name="region_group_label" value="Groupe :"/>
+ <text name="region_group_label" value="Groupe :"/>
<text name="region_group">
- Le puissant orignal d&apos;Orignalville
+ Le puissant orignal d’Orignalville
</text>
<button label="Région/Domaine" name="region_info_btn"/>
</panel>
</accordion_tab>
<accordion_tab name="estate_information_tab" title="Domaine">
<panel name="estate_information_panel">
- <text name="estate_name_label" value="Domaine :"/>
- <text name="estate_rating_label" value="Catégorie :"/>
- <text name="estate_owner_label" value="Propriétaire :"/>
- <text name="covenant_label" value="Règlement :"/>
+ <text name="estate_name_label" value="Domaine :"/>
+ <text name="estate_rating_label" value="Catégorie :"/>
+ <text name="estate_owner_label" value="Propriétaire :"/>
+ <text name="covenant_label" value="Règlement :"/>
</panel>
</accordion_tab>
<accordion_tab name="sales_tab" title="À vendre">
<panel name="sales_panel">
- <text name="sales_price_label" value="Prix :"/>
+ <text name="sales_price_label" value="Prix :"/>
<text name="area_label" value="Surface :"/>
<text name="traffic_label" value="Trafic :"/>
<text name="primitives_label" value="Prims :"/>
- <text name="parcel_scripts_label" value="Scripts :"/>
- <text name="terraform_limits_label" value="Limites de terraformage :"/>
- <text name="subdivide_label" value="Possibilité de division/fusion :"/>
- <text name="resale_label" value="Possibilité de revente :"/>
+ <text name="parcel_scripts_label" value="Scripts :"/>
+ <text name="terraform_limits_label" value="Limites de terraformage :"/>
+ <text name="subdivide_label" value="Possibilité de sous-division/fusion :"/>
+ <text name="resale_label" value="Possibilité de revente :"/>
<text name="sale_to_label" value="À vendre à :"/>
</panel>
</accordion_tab>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index 71f7990073..087bba79ec 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Chat écrit" name="chat">
<text name="font_size">
- Font size:
+ Taille de la police :
</text>
<radio_group name="chat_font_size">
<radio_item label="Moins" name="radio" value="0"/>
@@ -9,7 +9,7 @@
<radio_item label="Plus" name="radio3" value="2"/>
</radio_group>
<text name="font_colors">
- Font colors:
+ Couleurs de police :
</text>
<color_swatch label="Vous" name="user"/>
<text name="text_box1">
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
index aa004d2c84..450ad64ae4 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
@@ -17,7 +17,7 @@
<text name="QualitySpeed">
Qualité et vitesse :
</text>
- <text left="35" name="FasterText">
+ <text name="FasterText">
Plus rapide
</text>
<text name="BetterText">
diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
index e1acbe3817..2c12547d61 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
@@ -5,7 +5,7 @@
onglet affecteront toutes les régions du
domaine.
</text>
- <text top_pad="8" bottom_delta="-34" name="estate_text">
+ <text bottom_delta="-34" name="estate_text" top_pad="8">
Domaine :
</text>
<text name="estate_name">
@@ -21,7 +21,7 @@ domaine.
Limiter l&apos;accès aux comptes vérifiés par :
</text>
<check_box label="Infos de paiement enregistrées" name="limit_payment" tool_tip="Bannir les résidents non identifiés"/>
- <check_box label="Vérification de l'âge" name="limit_age_verified" tool_tip="Bannir les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
+ <check_box label="Vérification de l&apos;âge" name="limit_age_verified" tool_tip="Bannir les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
<check_box label="Autoriser les chats vocaux" name="voice_chat_check"/>
<button label="?" name="voice_chat_help"/>
<text name="abuse_email_text">
@@ -74,5 +74,5 @@ domaine.
<button label="Ajouter..." name="add_banned_avatar_btn"/>
<button label="Supprimer..." name="remove_banned_avatar_btn"/>
<button label="Envoyer un message au domaine..." name="message_estate_btn"/>
- <button label="Éjecter le résident du domaine..." name="kick_user_from_estate_btn"/>
+ <button label="Éjecter un résident du domaine..." name="kick_user_from_estate_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml
index 711278d614..925f4375da 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml
@@ -19,35 +19,25 @@
(inconnu)
</text>
<check_box label="Interdire le terraformage" name="block_terraform_check"/>
- <button label="?" name="terraform_help"/>
<check_box label="Interdire le vol" name="block_fly_check"/>
- <button label="?" name="fly_help"/>
<check_box label="Autoriser les dégâts" name="allow_damage_check"/>
- <button label="?" name="damage_help"/>
<check_box label="Interdire les bousculades" name="restrict_pushobject"/>
- <button label="?" name="restrict_pushobject_help"/>
<check_box label="Autoriser la revente" name="allow_land_resell_check"/>
- <button label="?" name="land_resell_help"/>
<check_box label="Autoriser la fusion/division" name="allow_parcel_changes_check"/>
- <button label="?" name="parcel_changes_help"/>
<check_box label="Ne pas afficher dans la recherche" name="block_parcel_search_check" tool_tip="Afficher cette région et ses parcelles dans les résultats de recherche"/>
- <button label="?" name="parcel_search_help"/>
- <spinner label="Nombre maximum d&apos;avatars" name="agent_limit_spin" label_width="160" width="240"/>
- <button label="?" name="agent_limit_help"/>
- <spinner label="Bonus objet" name="object_bonus_spin" label_width="160" width="240"/>
- <button label="?" name="object_bonus_help"/>
+ <spinner label="Nombre maximum d&apos;avatars" label_width="160" name="agent_limit_spin" width="240"/>
+ <spinner label="Bonus objet" label_width="160" name="object_bonus_spin" width="240"/>
<text label="Maturité" name="access_text">
Catégorie :
</text>
- <combo_box label="Modéré" name="access_combo">
- <combo_box.item label="Adult" name="Adult"/>
- <combo_box.item label="Modéré" name="Mature"/>
- <combo_box.item label="Général" name="PG"/>
- </combo_box>
- <button label="?" name="access_help"/>
+ <icons_combo_box label="Modéré" name="access_combo">
+ <icons_combo_box.item label="Adult" name="Adult" value="42"/>
+ <icons_combo_box.item label="Modéré" name="Mature" value="21"/>
+ <icons_combo_box.item label="Général" name="PG" value="13"/>
+ </icons_combo_box>
<button label="Appliquer" name="apply_btn"/>
- <button label="Téléporter un résident chez lui..." name="kick_btn"/>
- <button label="Téléporter tous les résidents chez eux..." name="kick_all_btn"/>
+ <button label="Téléporter un résident chez lui…" name="kick_btn"/>
+ <button label="Téléporter tous les résidents chez eux…" name="kick_all_btn"/>
<button label="Envoyer un message à la région..." name="im_btn"/>
<button label="Gérer le Téléhub..." name="manage_telehub_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
index e709100fa2..663ae55134 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
@@ -3,19 +3,19 @@
<text name="region_text_lbl">
Région :
</text>
- <text name="region_text" left_delta="56">
+ <text left_delta="56" name="region_text">
inconnu
</text>
<text name="version_channel_text_lbl">
Version :
</text>
- <text name="version_channel_text" left_delta="56">
+ <text left_delta="56" name="version_channel_text">
inconnu
</text>
<text name="region_type_lbl">
Type :
</text>
- <text name="region_type" left_delta="56">
+ <text left_delta="56" name="region_type">
inconnu
</text>
<check_box label="Interdire le terraformage" name="block_terraform_check"/>
@@ -25,8 +25,8 @@
<check_box label="Autoriser la revente de terrains" name="allow_land_resell_check"/>
<check_box label="Autoriser la fusion/division de terrains" name="allow_parcel_changes_check"/>
<check_box label="Interdire l&apos;affichage du terrain dans les recherches" name="block_parcel_search_check" tool_tip="Permettre aux autres résidents de voir cette région et ses parcelles dans les résultats de recherche"/>
- <spinner label="Nombre maximum d&apos;avatars" name="agent_limit_spin" label_width="160" width="240"/>
- <spinner label="Bonus objet" name="object_bonus_spin" label_width="160" width="240"/>
+ <spinner label="Nombre maximum d&apos;avatars" label_width="160" name="agent_limit_spin" width="240"/>
+ <spinner label="Bonus objet" label_width="160" name="object_bonus_spin" width="240"/>
<text label="Accès" name="access_text">
Catégorie :
</text>
@@ -36,8 +36,8 @@
<combo_box.item label="Général" name="PG"/>
</combo_box>
<button label="Appliquer" name="apply_btn"/>
- <button label="Téléporter un résident chez lui..." name="kick_btn"/>
- <button label="Téléporter tous les résidents chez eux..." name="kick_all_btn"/>
+ <button label="Téléporter un résident chez lui…" name="kick_btn"/>
+ <button label="Téléporter tous les résidents chez eux…" name="kick_all_btn"/>
<button label="Envoyer un message à la région..." name="im_btn"/>
<button label="Gérer le téléhub..." name="manage_telehub_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_texture.xml b/indra/newview/skins/default/xui/fr/panel_region_texture.xml
index e95d911c01..be7ca456f1 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_texture.xml
@@ -28,16 +28,16 @@
Limites d&apos;élévation de texture
</text>
<text name="height_text_lbl6">
- Sud-ouest
+ Nord-ouest
</text>
<text name="height_text_lbl7">
- Nord-ouest
+ Nord-est
</text>
<text name="height_text_lbl8">
- Sud-est
+ Sud-ouest
</text>
<text name="height_text_lbl9">
- Nord-est
+ Sud-est
</text>
<text name="height_text_lbl10" width="460">
Ces valeurs représentent les limites de mélange pour les textures ci-dessus.
diff --git a/indra/newview/skins/default/xui/fr/role_actions.xml b/indra/newview/skins/default/xui/fr/role_actions.xml
index 3367353b28..495810289d 100644
--- a/indra/newview/skins/default/xui/fr/role_actions.xml
+++ b/indra/newview/skins/default/xui/fr/role_actions.xml
@@ -40,11 +40,11 @@
<action description="Toujours autoriser à créer des repères" longdescription="Vous pouvez créer un repère sur une parcelle du groupe, même si l&apos;option est désactivée à partir du menu À propos du terrain &gt; Options." name="land allow landmark" value="26"/>
<action description="Autoriser à définir un domicile sur le terrain du groupe" longdescription="Un membre dans un rôle avec ce pouvoir peut utiliser le menu Monde &gt; Repères &gt; Définir le domicile ici sur une parcelle cédée à ce groupe." name="land allow set home" value="28"/>
</action_set>
- <action_set description="Ces pouvoirs permettent d&apos;autoriser ou d&apos;interdire l&apos;accès à des parcelles du groupe et de geler ou d&apos;expulser des résidents." name="Parcel Access">
+ <action_set description="Ces pouvoirs permettent d&apos;autoriser ou d&apos;interdire l&apos;accès à des parcelles du groupe et de figer ou d&apos;expulser des résidents." name="Parcel Access">
<action description="Gérer la liste d&apos;accès à la parcelle" longdescription="Gérez la liste des résidents autorisés sur la parcelle à partir du menu À propos du terrain &gt; Accès." name="land manage allowed" value="29"/>
<action description="Gérer la liste noire de cette parcelle" longdescription="Gérez les listes des résidents bannis des parcelles dans l&apos;onglet À propos des terrains &gt; Accès." name="land manage banned" value="30"/>
<action description="Modifiez les paramètres Vendre des pass à" longdescription="Modifiez les paramètres Vendre des pass à dans l&apos;onglet À propos des terrains &gt; Accès." name="land manage passes" value="31"/>
- <action description="Expulser et geler des résidents" longdescription="Les membres dans un rôle avec ce pouvoir peuvent se charger des résidents indésirables sur une parcelle appartenant au groupe en cliquant dessus, puis en sélectionnant Expulser ou Geler." name="land admin" value="32"/>
+ <action description="Expulser et figer des résidents" longdescription="Les membres dans un rôle avec ce pouvoir peuvent se charger des résidents indésirables sur une parcelle appartenant au groupe en cliquant dessus, puis en sélectionnant Expulser ou Figer." name="land admin" value="32"/>
</action_set>
<action_set description="Ces pouvoirs permettent de renvoyer des objets du groupe et de placer ou déplacer des plantes Linden pour aménager le paysage. Utilisez ce pouvoir avec précaution car les objets renvoyés le sont définitivement." name="Parcel Content">
<action description="Renvoyer les objets transférés au groupe" longdescription="Vous pouvez renvoyer des objets appartenant au groupe à partir du menu À propos du terrain &gt; Objets." name="land return group owned" value="48"/>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
index def71d96b4..cc99b1a07c 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
@@ -38,33 +38,33 @@
</panel.string>
<text name="title" value="Profil de l&apos;objet"/>
<text name="where" value="(dans Second Life)"/>
- <panel name="properties_panel" label="">
+ <panel label="" name="properties_panel">
<text name="Name:">
- Nom :
+ Nom :
</text>
<text name="Description:">
Description :
</text>
<text name="CreatorNameLabel">
- Créateur :
+ Créateur :
</text>
<text name="Creator Name">
Erica Linden
</text>
<text name="Owner:">
- Propriétaire :
+ Propriétaire :
</text>
<text name="Owner Name">
Erica Linden
</text>
<text name="Group_label">
- Groupe :
+ Groupe :
</text>
- <button name="button set group" tool_tip="Choisissez un groupe pour partager les droits de cet objet"/>
- <name_box initial_value="Chargement..." name="Group Name Proxy"/>
- <button label="Céder" label_selected="Céder" name="button deed" tool_tip="En cédant un objet, vous donnez aussi les droits au prochain propriétaire. Seul un officier peut céder les objets d&apos;un groupe."/>
+ <button name="button set group" tool_tip="Choisir un groupe pour partager les droits relatifs à cet objet"/>
+ <name_box initial_value="Chargement…" name="Group Name Proxy"/>
+ <button label="Céder" label_selected="Céder" name="button deed" tool_tip="En cédant un objet, vous donnez aussi les droits au prochain propriétaire. Seul un officier peut céder les objets partagés d&apos;un groupe."/>
<text name="label click action">
- Cliquer pour :
+ Cliquer pour :
</text>
<combo_box name="clickaction">
<combo_box.item label="Toucher (défaut)" name="Touch/grab(default)"/>
@@ -78,16 +78,16 @@
Vous pouvez modifier cet objet
</text>
<text name="Anyone can:">
- N&apos;importe qui :
+ N&apos;importe qui :
</text>
<check_box label="Copier" name="checkbox allow everyone copy"/>
<check_box label="Bouger" name="checkbox allow everyone move"/>
<text name="GroupLabel">
- Groupe :
+ Groupe :
</text>
- <check_box label="Partager" name="checkbox share with group" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d&apos;abord cliquer sur Transférer."/>
+ <check_box label="Partager" name="checkbox share with group" tool_tip="Autoriser tous les membres du groupe choisi à partager vos droits de modification pour cet objet. Pour activer les restrictions de rôles, vous devez d&apos;abord cliquer sur Céder."/>
<text name="NextOwnerLabel">
- Le prochain propriétaire :
+ Le prochain propriétaire :
</text>
<check_box label="Modifier" name="checkbox next owner can modify"/>
<check_box label="Copier" name="checkbox next owner can copy"/>
@@ -99,30 +99,31 @@
<combo_box.item label="Contenus" name="Contents"/>
<combo_box.item label="Original" name="Original"/>
</combo_box>
- <spinner label="Prix : L$" name="Edit Cost"/>
+ <spinner label="Prix : L$" name="Edit Cost"/>
<check_box label="Afficher dans les résultats de recherche" name="search_check" tool_tip="Permettre aux autres résidents de voir cet objet dans les résultats de recherche"/>
<text name="B:">
- B :
+ B :
</text>
<text name="O:">
- O :
+ O :
</text>
<text name="G:">
G :
</text>
<text name="E:">
- E :
+ E :
</text>
<text name="N:">
- N :
+ N :
</text>
<text name="F:">
- F :
+ F :
</text>
</panel>
<panel name="button_panel">
<button label="Ouvrir" name="open_btn"/>
<button label="Payer" name="pay_btn"/>
<button label="Acheter" name="buy_btn"/>
+ <button label="Détails" name="details_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index d78b78f7d0..f759f5f41a 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -758,6 +758,9 @@
<string name="invalid">
non valide
</string>
+ <string name="NewWearable">
+ Nouv. [WEARABLE_ITEM]
+ </string>
<string name="next">
Suivant
</string>
@@ -1468,6 +1471,9 @@
<string name="PanelContentsNewScript">
Nouveau script
</string>
+ <string name="BusyModeResponseDefault">
+ Le résident auquel vous avez envoyé un message est en mode Occupé, ce qui signifie qu&apos;il a demandé à ne pas être dérangé. Votre message restera affiché dans son panneau IM afin qu&apos;il puisse le lire ultérieurement.
+ </string>
<string name="MuteByName">
(par nom)
</string>
diff --git a/indra/newview/skins/default/xui/fr/teleport_strings.xml b/indra/newview/skins/default/xui/fr/teleport_strings.xml
index b76ae370fd..7c291c0984 100644
--- a/indra/newview/skins/default/xui/fr/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/fr/teleport_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<teleport_messages name="">
+<teleport_messages>
<message_set name="errors">
<message name="invalid_tport">
Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir vous téléporter.
@@ -61,6 +61,9 @@ Veuillez réessayer dans un moment.
<message name="completing">
Téléportation sur le point d&apos;aboutir.
</message>
+ <message name="completed_from">
+ Téléportation depuis [T_SLURL] terminée
+ </message>
<message name="resolving">
Destination en cours de résolution.
</message>
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index a16348529b..ceda48109e 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floaterland" title="土地情報">
+ <floater.string name="maturity_icon_general">
+ &quot;Parcel_PG_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_moderate">
+ &quot;Parcel_M_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_adult">
+ &quot;Parcel_R_Dark&quot;
+ </floater.string>
<floater.string name="Minutes">
[MINUTES] 分
</floater.string>
@@ -15,7 +24,7 @@
<tab_container name="landtab">
<panel label="一般" name="land_general_panel">
<panel.string name="new users only">
- 新規ユーザーのみ
+ 新規住人専用
</panel.string>
<panel.string name="anyone">
誰でも
@@ -387,10 +396,6 @@
ホームページ:
</text>
<button label="設定" label_selected="設定..." name="set_media_url"/>
- <text name="CurrentURL:">
- 現在のページ:
- </text>
- <button label="リセット..." label_selected="リセット..." name="reset_media_url" tool_tip="URL を更新"/>
<check_box label="URL を非表示" name="hide_media_url" tool_tip="このオプションをオンにすると、許可なしでこの区画情報にアクセスしているユーザーにはメディア URL が表示されません。 これは HTML タイプには使用できませんのでご注意ください。"/>
<text name="Description:">
説明:
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_land.xml b/indra/newview/skins/default/xui/ja/floater_buy_land.xml
index a50f36b6f3..a274e25326 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_land.xml
@@ -41,8 +41,8 @@
選択された地域に、公共の土地はありません
</floater.string>
<floater.string name="not_owned_by_you">
- 他の使用者に所有された土地が選択されています。
-これより小さな範囲を選択してください。
+ 他の住人が所有する土地を選択しています。
+もっと狭い範囲を選択してみてください。
</floater.string>
<floater.string name="processing">
購入処理中...
diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
index 075cde8dec..6ccd6b9293 100644
--- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
@@ -2,7 +2,7 @@
<floater name="godtools floater" title="ゴッド・ツール">
<tab_container name="GodTools Tabs">
<panel label="グリッド" name="grid">
- <button label="すべてのユーザーを追い出す" label_selected="すべてのユーザーを追い出す" name="Kick all users" width="160"/>
+ <button label="住人全員を追い出す" label_selected="住人全員を追い出す" name="Kick all users" width="160"/>
<button label="この地域の地図の表示キャッシュを消去" label_selected="この地域の地図の表示キャッシュを消去" name="Flush This Region&apos;s Map Visibility Caches"/>
</panel>
<panel label="地域" name="region">
diff --git a/indra/newview/skins/default/xui/ja/floater_im.xml b/indra/newview/skins/default/xui/ja/floater_im.xml
index 9c323f25e6..2e8993ec21 100644
--- a/indra/newview/skins/default/xui/ja/floater_im.xml
+++ b/indra/newview/skins/default/xui/ja/floater_im.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="im_floater" title="インスタント・メッセージ">
<string name="only_user_message">
- このセッションにいるユーザーはあなただけです。
+ このセッションには、あなたしかいません。
</string>
<string name="offline_message">
[FIRST] [LAST]はオフラインです。
@@ -32,7 +32,7 @@
</string>
<!-- ALL of the event strings should have [RECIPIENT] in them -->
<string name="add_session_event">
- [RECIPIENT] とのチャット・セッションにユーザーを追加することができません
+ [RECIPIENT] とのチャットセッションに住人を追加できません。
</string>
<string name="message_session_event">
[RECIPIENT] とのチャット・セッションにメッセージを送ることができません
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
index c437e8c02a..64c577b879 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
@@ -62,7 +62,7 @@
<text name="help_label">
待機ステップを入れない限りは、すべてのステップが同時に起こります。
</text>
- <check_box label="アクティブ" left="120" name="active_check" tool_tip="アクティブなジェスチャーは、トリガーフレーズを使うか、ホットキーを押すと切り替わります。 1つのショートカットキーに2つ以上のジェスチャーが割り当てられた場合、そのジェスチャーは両方ともアクティブではなくなります。"/>
+ <check_box label="アクティブ" name="active_check" tool_tip="アクティブなジェスチャーは、トリガーフレーズを使うか、ホットキーを押すと切り替わります。 1つのショートカットキーに2つ以上のジェスチャーが割り当てられた場合、そのジェスチャーは両方ともアクティブではなくなります。"/>
<button label="プレビュー" name="preview_btn"/>
<button label="保存" name="save_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_publish_classified.xml b/indra/newview/skins/default/xui/ja/floater_publish_classified.xml
new file mode 100644
index 0000000000..ca6204424e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_publish_classified.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="publish_classified" title="クラシファイド広告掲載">
+ <text name="explanation_text">
+ あなたのクラシファイド広告は、掲載された日から1週間有効です。
+
+クラシファイド広告は返金できませんのでご了承ください。
+ </text>
+ <spinner label="広告費:" name="price_for_listing" tool_tip="掲載価格" value="50"/>
+ <text name="l$_text" value="L$"/>
+ <text name="more_info_text">
+ 詳しい情報(クラシファイドヘルプへのリンク)
+ </text>
+ <button label="掲載" name="publish_btn"/>
+ <button label="キャンセル" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
index e51e63999a..153b4068ad 100644
--- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
@@ -16,7 +16,7 @@
<button label="保存(L$[AMOUNT])" name="upload_btn"/>
<flyout_button label="保存" name="save_btn" tool_tip="画像をファイルに保存">
<flyout_button.item label="保存" name="save_item"/>
- <flyout_button.item label="名前を付けて保存" name="saveas_item"/>
+ <flyout_button.item label="別名で保存..." name="saveas_item"/>
</flyout_button>
<button label="キャンセル" name="discard_btn"/>
<button label="全表示" name="more_btn" tool_tip="詳しい設定"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml
index 04120b4bea..0e489be9a8 100644
--- a/indra/newview/skins/default/xui/ja/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml
@@ -5,8 +5,7 @@
表記・記号
</text>
</panel>
- <panel
- name="layout_panel_2">
+ <panel name="layout_panel_2">
<button label="現在地を表示" label_selected="現在地を表示" name="Show My Location" tool_tip="アバターの位置を地図の中心に表示します"/>
<text name="me_label">
自分
@@ -24,7 +23,7 @@
土地販売
</text>
<text name="by_owner_label">
- 所有者の販売
+ 所有者にて
</text>
<text name="auction_label">
土地オークション
@@ -49,39 +48,35 @@
Adult
</text>
</panel>
- <panel
- name="layout_panel_3">
+ <panel name="layout_panel_3">
<text name="find_on_map_label">
- 地図上で探す
+ 地図上で見つける
</text>
</panel>
- <panel
- name="layout_panel_4">
- <combo_box label="オンラインのフレンド" name="friend combo" tool_tip="フレンドを地図上に表示します">
+ <panel name="layout_panel_4">
+ <combo_box label="オンラインのフレンド" name="friend combo" tool_tip="フレンドを地図に表示">
<combo_box.item label="オンラインのフレンド" name="item1"/>
</combo_box>
<combo_box label="マイ ランドマーク" name="landmark combo" tool_tip="地図上に表示するランドマーク">
<combo_box.item label="マイ ランドマーク" name="item1"/>
</combo_box>
- <search_editor label="リージョン名" name="location" tool_tip="地域名を入力してください。"/>
- <button label="検索" name="DoSearch" tool_tip="地域検索"/>
+ <search_editor label="リージョン名" name="location" tool_tip="リージョン名を入力します"/>
+ <button label="検索" name="DoSearch" tool_tip="リージョン検索"/>
<button name="Clear" tool_tip="追跡ラインをクリアして地図をリセットします"/>
<scroll_list name="search_results">
<scroll_list.columns label="" name="icon"/>
<scroll_list.columns label="" name="sim_name"/>
</scroll_list>
<button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択した場所にテレポートします"/>
- <button label="SLurl をコピー" name="copy_slurl" tool_tip="現在地を SLurl でコピーして Web で使用します。"/>
- <button label="選択をを表示する" label_selected="目的地を表示" name="Show Destination" tool_tip="選択した場所を地図の中心に表示します"/>
+ <button label="SLurl をコピー" name="copy_slurl" tool_tip="現在地の SLurl をコピーして Web で使用します。"/>
+ <button label="選択を表示する" label_selected="目的地を表示" name="Show Destination" tool_tip="選択した場所を地図の中心に表示します"/>
</panel>
- <panel
- name="layout_panel_5">
+ <panel name="layout_panel_5">
<text name="zoom_label">
ズーム
</text>
</panel>
- <panel
- name="layout_panel_6">
+ <panel name="layout_panel_6">
<slider label="ズーム" name="zoom slider"/>
</panel>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index 4fc3f1d46f..ddb2ae49f7 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -111,7 +111,7 @@
</notification>
<notification name="FriendsAndGroupsOnly">
フレンド以外からのコールやインスタントメッセージを無視する設定にしたことを、相手に知られることはありません。
- <usetemplate name="okbutton" yestext="はい"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="GrantModifyRights">
他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。 この権限を与える際には十分に注意してください。
@@ -1343,8 +1343,8 @@ F1 キーを押してください。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="ConfirmKick">
- すべてのユーザーをグリッドの外にキックしようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="全てのユーザーを追い出す"/>
+ 本当に住人全員をグリッドから追い出しますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="住人全員を追い出す"/>
</notification>
<notification name="MuteLinden">
リンデンをブロックすることはできません。
@@ -1385,7 +1385,7 @@ F1 キーを押してください。
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="KickUser">
- どのようなメッセージをつけてこのユーザーを追い出しますか?
+ どのようなメッセージを添えてこの住人を追い出しますか?
<form name="form">
<input name="message">
あなたは管理者によりログオフされました。
@@ -1405,7 +1405,7 @@ F1 キーを押してください。
</form>
</notification>
<notification name="FreezeUser">
- どのようなメッセージをつけてこのユーザーをフリーズしますか?
+ どのようなメッセージを添えてこの住人をフリーズしますか?
<form name="form">
<input name="message">
あなたはフリーズされています。 動くこともチャットすることもできません。 管理者が IM であなたに連絡します。
@@ -1415,7 +1415,7 @@ F1 キーを押してください。
</form>
</notification>
<notification name="UnFreezeUser">
- どのようなメッセージをつけてこのユーザーのフリーズを解除しますか?
+ どのようなメッセージを添えてこの住人のフリーズを解除しますか?
<form name="form">
<input name="message">
もうフリーズされていません。
@@ -1435,7 +1435,7 @@ F1 キーを押してください。
</form>
</notification>
<notification name="OfferTeleportFromGod">
- ユーザーをゴッドサモンで呼び寄せますか?
+ 現在地に住人をゴッドサモンしますか?
<form name="form">
<input name="message">
[REGION] に来ませんか?
@@ -1465,11 +1465,11 @@ F1 キーを押してください。
</form>
</notification>
<notification label="Lindenの不動産を変更" name="ChangeLindenEstate">
- あなたはリンデン所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。
+ リンデンが所有するエステート(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。
-これはユーザーの経験を根本から揺るがしかねない「非常に危険な行為」です。これにより、メインランドで多数のリージョン(地域)が変更され、スペースサーバーに悪影響が生じます。
+住人の体験に根本的に影響を与えるため、非常に危険な行為です。 メインランドでは、何千というリージョンが変更による影響を受け、そのためスペースサーバーに負担をかけることになります。
-操作を続行しますか?
+それでも続けますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification label="Lindenの不動産へのアクセスを変更" name="ChangeLindenAccess">
@@ -2477,7 +2477,7 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
</form>
</notification>
<notification name="ScriptToast">
- [FIRST] [LAST] の「 [TITLE] 」は、ユーザーインプットをリクエストしています。
+ [FIRST] [LAST] の「 [TITLE] 」は、住人インプットをリクエストしています。
<form name="form">
<button name="Open" text="ダイアログを開く"/>
<button name="Ignore" text="無視"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_classified_info.xml b/indra/newview/skins/default/xui/ja/panel_classified_info.xml
index f3c68c9f59..0aa0e8a8a9 100644
--- a/indra/newview/skins/default/xui/ja/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/ja/panel_classified_info.xml
@@ -9,16 +9,46 @@
<panel.string name="l$_price">
L$ [PRICE]
</panel.string>
+ <panel.string name="click_through_text_fmt">
+ [TELEPORT] テレポート、 [MAP] 地図、 [PROFILE] プロフィール
+ </panel.string>
+ <panel.string name="date_fmt">
+ [year,datetime,slt]/[mthnum,datetime,slt]/[day,datetime,slt]
+ </panel.string>
+ <panel.string name="auto_renew_on">
+ 有効
+ </panel.string>
+ <panel.string name="auto_renew_off">
+ 無効
+ </panel.string>
<text name="title" value="クラシファイド広告情報"/>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
<text_editor name="classified_name" value="[name]"/>
+ <text name="classified_location_label" value="場所:"/>
<text_editor name="classified_location" value="[loading...]"/>
+ <text name="content_type_label" value="内容の種類:"/>
<text_editor name="content_type" value="[content type]"/>
+ <text name="category_label" value="カテゴリ:"/>
<text_editor name="category" value="[category]"/>
- <check_box label="毎週自動更新" name="auto_renew"/>
- <text_editor name="price_for_listing" tool_tip="掲載価格"/>
- <text_editor name="classified_desc" value="[description]"/>
+ <text name="creation_date_label" value="制作日:"/>
+ <text_editor name="creation_date" tool_tip="制作日" value="[date]"/>
+ <text name="price_for_listing_label" value="掲載価格:"/>
+ <text_editor name="price_for_listing" tool_tip="掲載価格" value="[price]"/>
+ <layout_stack name="descr_stack">
+ <layout_panel name="clickthrough_layout_panel">
+ <text name="click_through_label" value="クリック数:"/>
+ <text_editor name="click_through_text" tool_tip="Click through data" value="[clicks]"/>
+ </layout_panel>
+ <layout_panel name="price_layout_panel">
+ <text name="auto_renew_label" value="自動更新:"/>
+ <text name="auto_renew" value="有効"/>
+ </layout_panel>
+ <layout_panel name="descr_layout_panel">
+ <text name="classified_desc_label" value="説明:"/>
+ <text_editor name="classified_desc" value="[description]"/>
+ </layout_panel>
+ </layout_stack>
</panel>
</scroll_container>
<panel name="buttons">
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml
index fa46e6d35a..5e90076a74 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml
@@ -3,12 +3,20 @@
<panel.string name="location_notice">
(掲載後更新)
</panel.string>
+ <string name="publish_label">
+ 掲載
+ </string>
+ <string name="save_label">
+ 保存
+ </string>
<text name="title">
クラシファイド広告の編集
</text>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
- <icon label="" name="edit_icon" tool_tip="クリックして画像を選択"/>
+ <panel name="snapshot_panel">
+ <icon label="" name="edit_icon" tool_tip="クリックして画像を選択"/>
+ </panel>
<text name="Name:">
タイトル:
</text>
@@ -22,20 +30,19 @@
ローディング...
</text>
<button label="現在地に設定" name="set_to_curr_location_btn"/>
- <combo_box name="content_type">
- <combo_item name="mature_ci">
- 「Moderate」コンテンツ
- </combo_item>
- <combo_item name="pg_ci">
- 「General」コンテンツ
- </combo_item>
- </combo_box>
+ <text name="category_label" value="カテゴリ:"/>
+ <text name="content_type_label" value="内容の種類:"/>
+ <icons_combo_box label="「General」コンテンツ" name="content_type">
+ <icons_combo_box.item label="「Moderate」コンテンツ" name="mature_ci" value="Mature"/>
+ <icons_combo_box.item label="「General」コンテンツ" name="pg_ci" value="PG"/>
+ </icons_combo_box>
+ <text name="price_for_listing_label" value="掲載価格:"/>
<spinner label="L$" name="price_for_listing" tool_tip="掲載価格" value="50"/>
<check_box label="毎週自動更新" name="auto_renew"/>
</panel>
</scroll_container>
<panel label="bottom_panel" name="bottom_panel">
- <button label="保存" name="save_changes_btn"/>
+ <button label="[LABEL]" name="save_changes_btn"/>
<button label="キャンセル" name="cancel_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml
index 5097a352e5..488a8c7a9b 100644
--- a/indra/newview/skins/default/xui/ja/panel_people.xml
+++ b/indra/newview/skins/default/xui/ja/panel_people.xml
@@ -7,6 +7,8 @@
<string name="no_friends" value="フレンドはいません"/>
<string name="people_filter_label" value="人をフィルター"/>
<string name="groups_filter_label" value="グループをフィルター"/>
+ <string name="no_filtered_groups_msg" value="[secondlife:///app/search/groups 検索でグループを探してみますか?]"/>
+ <string name="no_groups_msg" value="[secondlife:///app/search/groups 入会するグループを探します。]"/>
<filter_editor label="フィルター" name="filter_input"/>
<tab_container name="tabs">
<panel label="近く" name="nearby_panel">
@@ -20,15 +22,15 @@
<accordion_tab name="tab_online" title="オンライン"/>
<accordion_tab name="tab_all" title="全員"/>
</accordion>
- <text name="no_friends_msg">
- フレンドを追加するには、[secondlife:///app/search/people グローバル検索] をするか、ユーザーを右クリックしてください。
-誰か一緒に行動をする人をお探しの時は、[secondlife:///app/worldmap 地図をお試しださい]。
- </text>
<panel label="bottom_panel" name="bottom_panel">
<button name="friends_viewsort_btn" tool_tip="オプション"/>
<button name="add_btn" tool_tip="フレンド登録を申し出ます"/>
<button name="del_btn" tool_tip="選択した人をフレンドリストから削除します"/>
</panel>
+ <text name="no_friends_msg">
+ フレンドを登録するには、[secondlife:///app/search/people グローバル検索] をするか、住人を右クリックしてください。
+誰か一緒に行動をする人をお探しの時は、[secondlife:///app/worldmap 地図をお試しださい]。
+ </text>
</panel>
<panel label="マイ グループ" name="groups_panel">
<panel label="bottom_panel" name="bottom_panel">
diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
index 132fb95fe7..433ed0ad93 100644
--- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
@@ -88,7 +88,7 @@
</accordion_tab>
<accordion_tab name="region_information_tab" title="リージョン(地域) ">
<panel name="region_information_panel">
- <text name="region_name_label" value="地域:"/>
+ <text name="region_name_label" value="リージョン(地域):"/>
<text name="region_name" value="Mooseland"/>
<text name="region_type_label" value="種類:"/>
<text name="region_type" value="Moose"/>
@@ -105,7 +105,7 @@
</accordion_tab>
<accordion_tab name="estate_information_tab" title="エステート(不動産)">
<panel name="estate_information_panel">
- <text name="estate_name_label" value="不動産:"/>
+ <text name="estate_name_label" value="エステート(不動産):"/>
<text name="estate_rating_label" value="レーティング区分:"/>
<text name="estate_owner_label" value="所有者:"/>
<text name="covenant_label" value="約款:"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
index b0572804cb..a521556c79 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="チャット" name="chat">
<text name="font_size">
- Font size:
+ 文字の大きさ:
</text>
<radio_group name="chat_font_size">
<radio_item label="小" name="radio" value="0"/>
@@ -9,7 +9,7 @@
<radio_item label="大" name="radio3" value="2"/>
</radio_group>
<text name="font_colors">
- Font colors:
+ 文字の色:
</text>
<color_swatch label="自分" name="user"/>
<text name="text_box1">
diff --git a/indra/newview/skins/default/xui/ja/panel_region_estate.xml b/indra/newview/skins/default/xui/ja/panel_region_estate.xml
index 71551c7680..3113a68505 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_estate.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="不動産" name="Estate">
- <text name="estate_help_text" width="400">
+ <text name="estate_help_text">
このタブ内の設定変更は、不動産内のすべての地域に影響します。
</text>
<text name="estate_text">
@@ -70,5 +70,5 @@
<button label="追加..." name="add_banned_avatar_btn"/>
<button label="削除..." name="remove_banned_avatar_btn"/>
<button label="メッセージを不動産に送信..." name="message_estate_btn"/>
- <button label="土地からユーザーを追い出す..." name="kick_user_from_estate_btn"/>
+ <button label="不動産から住人を追い出す..." name="kick_user_from_estate_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml
index be92c24663..b72fac1a7c 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml
@@ -15,39 +15,29 @@
<text name="region_type_lbl">
種類:
</text>
- <text name="region_type" left_delta="70">
+ <text left_delta="70" name="region_type">
不明
</text>
<check_box label="土地整備をブロック" name="block_terraform_check"/>
- <button label="?" name="terraform_help"/>
<check_box label="飛行をブロック" name="block_fly_check"/>
- <button label="?" name="fly_help"/>
<check_box label="ダメージを許可" name="allow_damage_check"/>
- <button label="?" name="damage_help"/>
<check_box label="プッシュを制限" name="restrict_pushobject"/>
- <button label="?" name="restrict_pushobject_help"/>
<check_box label="土地の再販を許可" name="allow_land_resell_check"/>
- <button label="?" name="land_resell_help"/>
<check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/>
- <button label="?" name="parcel_changes_help"/>
<check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を表示するかどうかの設定です"/>
- <button label="?" name="parcel_search_help"/>
<spinner label="アバター数上限" name="agent_limit_spin"/>
- <button label="?" name="agent_limit_help"/>
<spinner label="物体ボーナス" name="object_bonus_spin"/>
- <button label="?" name="object_bonus_help"/>
<text label="成人指定" name="access_text">
区分:
</text>
- <combo_box label="Moderate" name="access_combo">
- <combo_box.item label="Adult" name="Adult"/>
- <combo_box.item label="Moderate" name="Mature"/>
- <combo_box.item label="General" name="PG"/>
- </combo_box>
- <button label="?" name="access_help"/>
+ <icons_combo_box label="Moderate" name="access_combo">
+ <icons_combo_box.item label="Adult" name="Adult" value="42"/>
+ <icons_combo_box.item label="Moderate" name="Mature" value="21"/>
+ <icons_combo_box.item label="General" name="PG" value="13"/>
+ </icons_combo_box>
<button label="適用" name="apply_btn"/>
- <button label="ユーザー1名をホームにテレポート" name="kick_btn"/>
- <button label="ユーザー全員をホームにテレポート" name="kick_all_btn"/>
+ <button label="住人 1 名をホームにテレポート..." name="kick_btn"/>
+ <button label="住人全員をホームにテレポート..." name="kick_all_btn"/>
<button label="メッセージを地域に送信..." name="im_btn"/>
<button label="テレハブの管理..." name="manage_telehub_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
index aa8c126423..188a60eb60 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
@@ -3,19 +3,19 @@
<text name="region_text_lbl">
地域:
</text>
- <text name="region_text" left_delta="70">
+ <text left_delta="70" name="region_text">
不明
</text>
<text name="version_channel_text_lbl">
バージョン:
</text>
- <text name="version_channel_text" left_delta="70">
+ <text left_delta="70" name="version_channel_text">
不明
</text>
<text name="region_type_lbl">
種類:
</text>
- <text name="region_type" left_delta="70">
+ <text left_delta="70" name="region_type">
不明
</text>
<check_box label="地形編集をブロック" name="block_terraform_check"/>
@@ -25,8 +25,8 @@
<check_box label="土地の再販を許可" name="allow_land_resell_check"/>
<check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/>
<check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を表示するかどうかの設定です"/>
- <spinner label="アバター数上限" name="agent_limit_spin" label_width="110" width="190"/>
- <spinner label="物体ボーナス" name="object_bonus_spin" label_width="110" width="190"/>
+ <spinner label="アバター数上限" label_width="110" name="agent_limit_spin" width="190"/>
+ <spinner label="物体ボーナス" label_width="110" name="object_bonus_spin" width="190"/>
<text label="レーティング区分" name="access_text">
レーティング区分:
</text>
@@ -36,8 +36,8 @@
<combo_box.item label="General" name="PG"/>
</combo_box>
<button label="適用" name="apply_btn"/>
- <button label="ユーザー1名をホームにテレポート..." name="kick_btn"/>
- <button label="ユーザー全員をホームにテレポート..." name="kick_all_btn"/>
+ <button label="住人 1 名をホームにテレポート..." name="kick_btn"/>
+ <button label="住人全員をホームにテレポート..." name="kick_all_btn"/>
<button label="メッセージを地域に送信..." name="im_btn"/>
<button label="テレハブの管理..." name="manage_telehub_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_texture.xml b/indra/newview/skins/default/xui/ja/panel_region_texture.xml
index 526e6cdeb9..14fc0b4c22 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_texture.xml
@@ -25,16 +25,16 @@
テクスチャ標高範囲
</text>
<text name="height_text_lbl6">
- 南西
+ 北西
</text>
<text name="height_text_lbl7">
- 北西
+ 北東
</text>
<text name="height_text_lbl8">
- 南東
+ 南西
</text>
<text name="height_text_lbl9">
- 北東
+ 南東
</text>
<spinner label="低" name="height_start_spin_0"/>
<spinner label="低" name="height_start_spin_1"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
index 8ffcd8863e..923455abba 100644
--- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
@@ -22,7 +22,7 @@
L$ [AMT]
</panel.string>
<button label="" label_selected="" name="buycurrency" tool_tip="所持金"/>
- <button label="買う" name="buyL" tool_tip="クリックして L$ を購入します"/>
+ <button label="購入" name="buyL" tool_tip="クリックして L$ を購入します"/>
<text name="TimeText" tool_tip="現在時刻(太平洋)">
24:00 AM PST
</text>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
index 439891bab1..ff9b5dc6aa 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
@@ -38,7 +38,7 @@
</panel.string>
<text name="title" value="オブジェクトのプロフィール"/>
<text name="where" value="(インワールド)"/>
- <panel name="properties_panel" label="">
+ <panel label="" name="properties_panel">
<text name="Name:">
名前:
</text>
@@ -60,7 +60,7 @@
<text name="Group_label">
グループ:
</text>
- <button name="button set group" tool_tip="このオブジェクト権限を共有するグループを選択"/>
+ <button name="button set group" tool_tip="このオブジェクト権限を共有するグループを選択します"/>
<name_box initial_value="ローディング..." name="Group Name Proxy"/>
<button label="譲渡" label_selected="譲渡" name="button deed" tool_tip="このアイテムを譲渡すると「次の所有者」の権限が適用されます。 グループ共有オブジェクトは、グループのオフィサーが譲渡できます。"/>
<text name="label click action">
@@ -91,7 +91,7 @@
</text>
<check_box label="修正" name="checkbox next owner can modify"/>
<check_box label="コピー" name="checkbox next owner can copy"/>
- <check_box label="再販・プレゼント" name="checkbox next owner can transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
+ <check_box label="再販・プレゼント" name="checkbox next owner can transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販できます"/>
</panel>
<check_box label="販売中" name="checkbox for sale"/>
<combo_box name="sale type">
@@ -124,5 +124,6 @@
<button label="開く" name="open_btn"/>
<button label="支払う" name="pay_btn"/>
<button label="買う" name="buy_btn"/>
+ <button label="詳細" name="details_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index de0de5a0c9..688e4751de 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -758,6 +758,9 @@
<string name="invalid">
無効
</string>
+ <string name="NewWearable">
+ 新しい [WEARABLE_ITEM]
+ </string>
<string name="next">
次へ
</string>
@@ -955,7 +958,7 @@
買う
</string>
<string name="BuyforL$">
- Buy for L$
+ L$ で購入
</string>
<string name="Stone">
@@ -1468,6 +1471,9 @@
<string name="PanelContentsNewScript">
新規スクリプト
</string>
+ <string name="BusyModeResponseDefault">
+ メッセージを送った住人は、誰にも邪魔をされたくないため現在「取り込み中」モードです。 あなたのメッセージは、あとで確認できるように IM パネルに表示されます。
+ </string>
<string name="MuteByName">
(名称別)
</string>
diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml
index adcf0e42c3..2f67d43707 100644
--- a/indra/newview/skins/default/xui/ja/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/ja/teleport_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<teleport_messages name="">
+<teleport_messages>
<message_set name="errors">
<message name="invalid_tport">
テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。
@@ -63,6 +63,9 @@
<message name="completing">
テレポートを完了します。
</message>
+ <message name="completed_from">
+ [T_SLURL] からのテレポートが完了しました
+ </message>
<message name="resolving">
目的地を解決しています。
</message>
diff --git a/indra/test/llpermissions_tut.cpp b/indra/test/llpermissions_tut.cpp
index 4eadc64b5a..d5795ef4a0 100644
--- a/indra/test/llpermissions_tut.cpp
+++ b/indra/test/llpermissions_tut.cpp
@@ -61,7 +61,7 @@ namespace tut
uuid2 == LLUUID::null && uuid3 == LLUUID::null));
ensure("LLPermission Get Functions failed", (permissions.getMaskBase() == PERM_ALL && permissions.getMaskOwner() == PERM_ALL &&
permissions.getMaskGroup() == PERM_ALL && permissions.getMaskEveryone() == PERM_ALL && permissions.getMaskNextOwner() == PERM_ALL));
- ensure("Ownership functions failed", (permissions.isGroupOwned() == FALSE && permissions.isOwned() == FALSE));
+ ensure("Ownership functions failed", ((! permissions.isGroupOwned()) && (! permissions.isOwned())));
}
template<> template<>
@@ -204,7 +204,7 @@ namespace tut
LLPermissions perm1;
LLUUID uuid;
BOOL is_group_owned = FALSE;
- ensure("1:getOwnership:failed ", (FALSE == perm1.getOwnership(uuid,is_group_owned)));
+ ensure("1:getOwnership:failed ", ! perm1.getOwnership(uuid,is_group_owned));
LLPermissions perm;
LLUUID creator("abf0d56b-82e5-47a2-a8ad-74741bb2c29e");
@@ -213,11 +213,11 @@ namespace tut
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
perm.init(creator,owner,lastOwner,group);
perm.getOwnership(uuid,is_group_owned);
- ensure("2:getOwnership:failed ", ((uuid == owner) && (FALSE == is_group_owned)));
+ ensure("2:getOwnership:failed ", ((uuid == owner) && (! is_group_owned)));
perm.init(creator,LLUUID::null,lastOwner,group);
perm.getOwnership(uuid,is_group_owned);
- ensure("3:getOwnership:failed ", ((uuid == group) && (TRUE == is_group_owned)));
+ ensure("3:getOwnership:failed ", ((uuid == group) && is_group_owned));
}
template<> template<>
@@ -240,17 +240,17 @@ namespace tut
LLUUID agent("abf0d56b-82e5-47a2-a8ad-74741bb2c29e");
LLUUID owner("68edcf47-ccd7-45b8-9f90-1649d7f12806");
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
- bool is_atomic = TRUE;
- ensure("setOwnerAndGroup():failed ", (TRUE == perm.setOwnerAndGroup(agent,owner,group,is_atomic)));
+ bool is_atomic = true;
+ ensure("setOwnerAndGroup():failed ", perm.setOwnerAndGroup(agent,owner,group,is_atomic));
LLUUID owner2("68edcf47-ccd7-45b8-9f90-1649d7f12807");
LLUUID group2("9c8eca51-53d5-42a7-bb58-cef070395db9");
// cant change - agent need to be current owner
- ensure("setOwnerAndGroup():failed ", (FALSE == perm.setOwnerAndGroup(agent,owner2,group2,is_atomic)));
+ ensure("setOwnerAndGroup():failed ", ! perm.setOwnerAndGroup(agent,owner2,group2,is_atomic));
// should be able to change - agent and owner same as current owner
- ensure("setOwnerAndGroup():failed ", (TRUE == perm.setOwnerAndGroup(owner,owner,group2,is_atomic)));
+ ensure("setOwnerAndGroup():failed ", perm.setOwnerAndGroup(owner,owner,group2,is_atomic));
}
template<> template<>
@@ -259,7 +259,7 @@ namespace tut
LLPermissions perm;
LLUUID agent;
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
- ensure("deedToGroup():failed ", (TRUE == perm.deedToGroup(agent,group)));
+ ensure("deedToGroup():failed ", perm.deedToGroup(agent,group));
}
template<> template<>
void permission_object_t::test<11>()
@@ -268,12 +268,12 @@ namespace tut
LLUUID agent;
BOOL set = 1;
U32 bits = PERM_TRANSFER | PERM_MODIFY;
- ensure("setBaseBits():failed ", (TRUE == perm.setBaseBits(agent, set, bits)));
- ensure("setOwnerBits():failed ", (TRUE == perm.setOwnerBits(agent, set, bits)));
+ ensure("setBaseBits():failed ", perm.setBaseBits(agent, set, bits));
+ ensure("setOwnerBits():failed ", perm.setOwnerBits(agent, set, bits));
LLUUID agent1("9c8eca51-53d5-42a7-bb58-cef070395db8");
- ensure("setBaseBits():failed ", (FALSE == perm.setBaseBits(agent1, set, bits)));
- ensure("setOwnerBits():failed ", (FALSE == perm.setOwnerBits(agent1, set, bits)));
+ ensure("setBaseBits():failed ", ! perm.setBaseBits(agent1, set, bits));
+ ensure("setOwnerBits():failed ", ! perm.setOwnerBits(agent1, set, bits));
}
template<> template<>
@@ -284,14 +284,14 @@ namespace tut
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
BOOL set = 1;
U32 bits = 10;
- ensure("setGroupBits():failed ", (TRUE == perm.setGroupBits(agent,group, set, bits)));
- ensure("setEveryoneBits():failed ", (TRUE == perm.setEveryoneBits(agent,group, set, bits)));
- ensure("setNextOwnerBits():failed ", (TRUE == perm.setNextOwnerBits(agent,group, set, bits)));
-
- LLUUID agent1("abf0d56b-82e5-47a2-a8ad-74741bb2c29e");
- ensure("setGroupBits():failed ", (FALSE == perm.setGroupBits(agent1,group, set, bits)));
- ensure("setEveryoneBits():failed ", (FALSE == perm.setEveryoneBits(agent1,group, set, bits)));
- ensure("setNextOwnerBits():failed ", (FALSE == perm.setNextOwnerBits(agent1,group, set, bits)));
+ ensure("setGroupBits():failed ", perm.setGroupBits(agent,group, set, bits));
+ ensure("setEveryoneBits():failed ", perm.setEveryoneBits(agent,group, set, bits));
+ ensure("setNextOwnerBits():failed ", perm.setNextOwnerBits(agent,group, set, bits));
+
+ LLUUID agent1("abf0d56b-82e5-47a2-a8ad-74741bb2c29e");
+ ensure("setGroupBits():failed ", ! perm.setGroupBits(agent1,group, set, bits));
+ ensure("setEveryoneBits():failed ", ! perm.setEveryoneBits(agent1,group, set, bits));
+ ensure("setNextOwnerBits():failed ", ! perm.setNextOwnerBits(agent1,group, set, bits));
}
template<> template<>
@@ -301,14 +301,14 @@ namespace tut
LLUUID agent;
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
U32 bits = 10;
- ensure("allowOperationBy():failed ", (TRUE == perm.allowOperationBy(bits,agent,group)));
+ ensure("allowOperationBy():failed ", perm.allowOperationBy(bits,agent,group));
LLUUID agent1("abf0d56b-82e5-47a2-a8ad-74741bb2c29e");
LLUUID creator("abf0d56b-82e5-47a2-a8ad-74741bb2c29e");
LLUUID owner("68edcf47-ccd7-45b8-9f90-1649d7f12806");
LLUUID lastOwner("5e47a0dc-97bf-44e0-8b40-de06718cee9d");
perm.init(creator,owner,lastOwner,group);
- ensure("allowOperationBy():failed ", (TRUE == perm.allowOperationBy(bits,agent1,group)));
+ ensure("allowOperationBy():failed ", perm.allowOperationBy(bits,agent1,group));
}
template<> template<>
@@ -321,15 +321,12 @@ namespace tut
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
perm.init(creator,owner,lastOwner,group);
LLUUID agent;
- ensure("1:allowModifyBy():failed ", (TRUE == perm.allowModifyBy(agent)));
- ensure("2:allowModifyBy():failed ", (TRUE == perm.allowModifyBy(agent,group)));
+ ensure("1:allowModifyBy():failed ", perm.allowModifyBy(agent));
+ ensure("2:allowModifyBy():failed ", perm.allowModifyBy(agent,group));
- U32 val1 = 0x7FFFFFFF;
- S32 sVal = 1 << 14;
- sVal = val1 & sVal;
LLUUID agent1("9c8eca51-53d5-42a7-bb58-cef070395db8");
- ensure("3:allowModifyBy():failed ", (sVal == perm.allowModifyBy(agent1)));
- ensure("4:allowModifyBy():failed ", (sVal == perm.allowModifyBy(agent1,group)));
+ ensure("3:allowModifyBy():failed ", perm.allowModifyBy(agent1));
+ ensure("4:allowModifyBy():failed ", perm.allowModifyBy(agent1,group));
}
template<> template<>
@@ -342,15 +339,12 @@ namespace tut
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
perm.init(creator,owner,lastOwner,group);
LLUUID agent;
- ensure("1:allowCopyBy():failed ", (TRUE == perm.allowModifyBy(agent)));
- ensure("2:allowCopyBy():failed ", (TRUE == perm.allowModifyBy(agent,group)));
+ ensure("1:allowCopyBy():failed ", perm.allowModifyBy(agent));
+ ensure("2:allowCopyBy():failed ", perm.allowModifyBy(agent,group));
- U32 val1 = 0x7FFFFFFF;
- S32 sVal = 1 << 15;
- sVal = val1 & sVal;
LLUUID agent1("9c8eca51-53d5-42a7-bb58-cef070395db8");
- ensure("3:allowCopyBy():failed ", (sVal == perm.allowCopyBy(agent1)));
- ensure("4:allowCopyBy():failed ", (sVal == perm.allowCopyBy(agent1,group)));
+ ensure("3:allowCopyBy():failed ", perm.allowCopyBy(agent1));
+ ensure("4:allowCopyBy():failed ", perm.allowCopyBy(agent1,group));
}
template<> template<>
@@ -363,15 +357,12 @@ namespace tut
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
perm.init(creator,owner,lastOwner,group);
LLUUID agent;
- ensure("1:allowMoveBy():failed ", (TRUE == perm.allowMoveBy(agent)));
- ensure("2:allowMoveBy():failed ", (TRUE == perm.allowMoveBy(agent,group)));
+ ensure("1:allowMoveBy():failed ", perm.allowMoveBy(agent));
+ ensure("2:allowMoveBy():failed ", perm.allowMoveBy(agent,group));
- U32 val1 = 0x7FFFFFFF;
- S32 sVal = 1 << 19;
- sVal = val1 & sVal;
LLUUID agent1("9c8eca51-53d5-42a7-bb58-cef070395db8");
- ensure("3:allowMoveBy():failed ", (sVal == perm.allowMoveBy(agent1)));
- ensure("4:allowMoveBy():failed ", (sVal == perm.allowMoveBy(agent1,group)));
+ ensure("3:allowMoveBy():failed ", perm.allowMoveBy(agent1));
+ ensure("4:allowMoveBy():failed ", perm.allowMoveBy(agent1,group));
}
template<> template<>
@@ -383,20 +374,17 @@ namespace tut
LLUUID lastOwner("5e47a0dc-97bf-44e0-8b40-de06718cee9d");
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
LLUUID agent;
- ensure("1:allowMoveBy():failed ", (TRUE == perm.allowTransferTo(agent)));
+ ensure("1:allowMoveBy():failed ", perm.allowTransferTo(agent));
perm.init(creator,owner,lastOwner,group);
- U32 val1 = 0x7FFFFFFF;
- S32 sVal = 1 << 13;
- sVal = val1 & sVal;
- ensure("2:allowMoveBy():failed ", (sVal == perm.allowTransferTo(agent)));
+ ensure("2:allowMoveBy():failed ", perm.allowTransferTo(agent));
}
template<> template<>
void permission_object_t::test<18>()
{
LLPermissions perm,perm1;
- ensure("1:Operator==:failed ", perm == perm1);
+ ensure_equals("1:Operator==:failed ", perm, perm1);
LLUUID creator("abf0d56b-82e5-47a2-a8ad-74741bb2c29e");
LLUUID owner("68edcf47-ccd7-45b8-9f90-1649d7f12806");
@@ -404,7 +392,7 @@ namespace tut
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
perm.init(creator,owner,lastOwner,group);
perm = perm1;
- ensure("2:Operator==:failed ", perm == perm1);
+ ensure_equals("2:Operator==:failed ", perm, perm1);
}
template<> template<>
@@ -416,7 +404,7 @@ namespace tut
LLUUID lastOwner("5e47a0dc-97bf-44e0-8b40-de06718cee9d");
LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8");
perm.init(creator,owner,lastOwner,group);
- ensure("2:Operator==:failed ", perm != perm1);
+ ensure_not_equals("2:Operator==:failed ", perm, perm1);
}
template<> template<>
@@ -453,7 +441,7 @@ namespace tut
}
perm1.importFile(fp);
fclose(fp);
- ensure("exportFile()/importFile():failed to export and import the data ", perm1 == perm);
+ ensure_equals("exportFile()/importFile():failed to export and import the data ", perm1, perm);
}
template<> template<>
@@ -479,7 +467,7 @@ namespace tut
std::istringstream istream(ostream.str());
perm1.importLegacyStream(istream);
- ensure("exportLegacyStream()/importLegacyStream():failed to export and import the data ", perm1 == perm);
+ ensure_equals("exportLegacyStream()/importLegacyStream():failed to export and import the data ", perm1, perm);
}
template<> template<>
@@ -502,7 +490,7 @@ namespace tut
stream1 << perm;
perm1.init(creator,owner,lastOwner,group);
stream2 << perm1;
- ensure("1:operator << failed",(stream1.str() == stream2.str()));
+ ensure_equals("1:operator << failed", stream1.str(), stream2.str());
}
template<> template<>
@@ -533,19 +521,19 @@ namespace tut
{
LLAggregatePermissions AggrPermission;
LLAggregatePermissions AggrPermission1;
- ensure("getU8() function failed", (AggrPermission.getU8() == 0));
- ensure("isEmpty() function failed", (AggrPermission.isEmpty() == TRUE));
+ ensure_equals("getU8() function failed", AggrPermission.getU8(), 0);
+ ensure("isEmpty() function failed", AggrPermission.isEmpty());
AggrPermission.getValue(PERM_TRANSFER);
ensure_equals("getValue() function failed", AggrPermission.getValue(PERM_TRANSFER), 0x00);
AggrPermission.aggregate(PERM_ITEM_UNRESTRICTED);
- ensure("aggregate() function failed", (AggrPermission.isEmpty() == FALSE));
+ ensure("aggregate() function failed", ! AggrPermission.isEmpty());
AggrPermission1.aggregate(AggrPermission);
- ensure("aggregate() function failed", (AggrPermission1.isEmpty() == FALSE));
+ ensure("aggregate() function failed", ! AggrPermission1.isEmpty());
std::ostringstream stream1;
stream1 << AggrPermission;
- ensure("operator<< failed", (stream1.str() == "{PI_COPY=All, PI_MODIFY=All, PI_TRANSFER=All}"));
+ ensure_equals("operator<< failed", stream1.str(), "{PI_COPY=All, PI_MODIFY=All, PI_TRANSFER=All}");
}
}