automated merge

master
Loren Shih 2010-06-28 12:32:21 -04:00
commit 3fca4b0d61
36 changed files with 378 additions and 71 deletions

View File

@ -16,6 +16,7 @@ include_directories(
if (DARWIN)
include(CMakeFindFrameworks)
find_library(CARBON_LIBRARY Carbon)
find_library(COCOA_LIBRARY Cocoa)
endif (DARWIN)
@ -25,6 +26,22 @@ set(SLPlugin_SOURCE_FILES
slplugin.cpp
)
if (DARWIN)
list(APPEND SLPlugin_SOURCE_FILES
slplugin-objc.mm
)
list(APPEND SLPlugin_HEADER_FILES
slplugin-objc.h
)
endif (DARWIN)
set_source_files_properties(${SLPlugin_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
if (SLPlugin_HEADER_FILES)
list(APPEND SLPlugin_SOURCE_FILES ${SLPlugin_HEADER_FILES})
endif (SLPlugin_HEADER_FILES)
add_executable(SLPlugin
WIN32
MACOSX_BUNDLE
@ -51,7 +68,7 @@ add_dependencies(SLPlugin
if (DARWIN)
# Mac version needs to link against Carbon
target_link_libraries(SLPlugin ${CARBON_LIBRARY})
target_link_libraries(SLPlugin ${CARBON_LIBRARY} ${COCOA_LIBRARY})
# Make sure the app bundle has a Resources directory (it will get populated by viewer-manifest.py later)
add_custom_command(
TARGET SLPlugin POST_BUILD

View File

@ -0,0 +1,40 @@
/**
* @file slplugin-objc.h
* @brief Header file for slplugin-objc.mm.
*
* @cond
*
* $LicenseInfo:firstyear=2010&license=viewergpl$
*
* Copyright (c) 2010, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlife.com/developers/opensource/gplv2
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at http://secondlife.com/developers/opensource/flossexception
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*
* @endcond
*/
/* Defined in slplugin-objc.mm: */
void setupCocoa();
void createAutoReleasePool();
void deleteAutoReleasePool();

View File

@ -0,0 +1,87 @@
/**
* @file slplugin-objc.mm
* @brief Objective-C++ file for use with the loader shell, so we can use a couple of Cocoa APIs.
*
* @cond
*
* $LicenseInfo:firstyear=2010&license=viewergpl$
*
* Copyright (c) 2010, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlife.com/developers/opensource/gplv2
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at http://secondlife.com/developers/opensource/flossexception
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*
* @endcond
*/
#include <AppKit/AppKit.h>
#include "slplugin-objc.h"
void setupCocoa()
{
static bool inited = false;
if(!inited)
{
createAutoReleasePool();
// The following prevents the Cocoa command line parser from trying to open 'unknown' arguements as documents.
// ie. running './secondlife -set Language fr' would cause a pop-up saying can't open document 'fr'
// when init'ing the Cocoa App window.
[[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"];
// This is a bit of voodoo taken from the Apple sample code "CarbonCocoa_PictureCursor":
// http://developer.apple.com/samplecode/CarbonCocoa_PictureCursor/index.html
// Needed for Carbon based applications which call into Cocoa
NSApplicationLoad();
// Must first call [[[NSWindow alloc] init] release] to get the NSWindow machinery set up so that NSCursor can use a window to cache the cursor image
[[[NSWindow alloc] init] release];
deleteAutoReleasePool();
inited = true;
}
}
static NSAutoreleasePool *sPool = NULL;
void createAutoReleasePool()
{
if(!sPool)
{
sPool = [[NSAutoreleasePool alloc] init];
}
}
void deleteAutoReleasePool()
{
if(sPool)
{
[sPool release];
sPool = NULL;
}
}

View File

@ -44,6 +44,7 @@
#if LL_DARWIN
#include <Carbon/Carbon.h>
#include "slplugin-objc.h"
#endif
#if LL_DARWIN || LL_LINUX
@ -229,10 +230,19 @@ int main(int argc, char **argv)
signal(SIGSYS, &crash_handler); // non-existent system call invoked
#endif
#if LL_DARWIN
setupCocoa();
createAutoReleasePool();
#endif
LLPluginProcessChild *plugin = new LLPluginProcessChild();
plugin->init(port);
#if LL_DARWIN
deleteAutoReleasePool();
#endif
LLTimer timer;
timer.start();
@ -260,6 +270,9 @@ int main(int argc, char **argv)
#endif
while(!plugin->isDone())
{
#if LL_DARWIN
createAutoReleasePool();
#endif
timer.reset();
plugin->idle();
#if LL_DARWIN
@ -377,6 +390,10 @@ int main(int argc, char **argv)
// exception handler such as QuickTime.
//checkExceptionHandler();
#endif
#if LL_DARWIN
deleteAutoReleasePool();
#endif
}
delete plugin;

View File

@ -64,6 +64,8 @@ void setupCocoa()
[[[NSWindow alloc] init] release];
[pool release];
inited = true;
}
}

View File

@ -145,6 +145,9 @@ LLFloaterPay::~LLFloaterPay()
{
std::for_each(mCallbackData.begin(), mCallbackData.end(), DeletePointer());
// Name callbacks will be automatically disconnected since LLFloater is trackable
// In case this floater is currently waiting for a reply.
gMessageSystem->setHandlerFuncFast(_PREHASH_PayPriceReply, 0, 0);
}
BOOL LLFloaterPay::postBuild()

View File

@ -55,7 +55,7 @@ public:
private:
void onToastDestroy(LLToast * toast);
private:
boost::signals2::scoped_connection mConnection;
LLPanel* mPanel;
LLScreenChannel* mScreenChannel;
};
@ -88,7 +88,7 @@ void LLInspectToast::onOpen(const LLSD& notification_id)
llwarns << "Could not get requested toast from screen channel." << llendl;
return;
}
toast->setOnToastDestroyedCallback(boost::bind(&LLInspectToast::onToastDestroy, this, _1));
mConnection = toast->setOnToastDestroyedCallback(boost::bind(&LLInspectToast::onToastDestroy, this, _1));
LLPanel * panel = toast->getPanel();
panel->setVisible(TRUE);

View File

@ -245,6 +245,47 @@ BOOL get_is_item_worn(const LLUUID& id)
return FALSE;
}
BOOL get_can_item_be_worn(const LLUUID& id)
{
const LLViewerInventoryItem* item = gInventory.getItem(id);
if (!item)
return FALSE;
switch(item->getType())
{
case LLAssetType::AT_OBJECT:
{
if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getLinkedUUID()))
{
// Already being worn
return FALSE;
}
else
{
// Not being worn yet.
return TRUE;
}
break;
}
case LLAssetType::AT_BODYPART:
case LLAssetType::AT_CLOTHING:
if(gAgentWearables.isWearingItem(item->getLinkedUUID()))
{
// Already being worn
return FALSE;
}
else
{
// Not being worn yet.
return TRUE;
}
break;
default:
break;
}
return FALSE;
}
BOOL get_is_item_removable(const LLInventoryModel* model, const LLUUID& id)
{
if (!model)

View File

@ -46,6 +46,9 @@
// Is this item or its baseitem is worn, attached, etc...
BOOL get_is_item_worn(const LLUUID& id);
// Could this item be worn (correct type + not already being worn)
BOOL get_can_item_be_worn(const LLUUID& id);
BOOL get_is_item_removable(const LLInventoryModel* model, const LLUUID& id);
BOOL get_is_category_removable(const LLInventoryModel* model, const LLUUID& id);

View File

@ -661,10 +661,13 @@ void LLPanelOutfitEdit::onInventorySelectionChange()
getSelectedItemsUUID(selected_items);
if (selected_items.empty())
{
mPlusBtn->setEnabled(false);
return;
}
uuid_vec_t::iterator worn_item = std::find_if(selected_items.begin(), selected_items.end(), boost::bind(&get_is_item_worn, _1));
bool can_add = ( worn_item == selected_items.end() );
// If any of the selected items are not wearable (due to already being worn OR being of the wrong type), disable the add button.
uuid_vec_t::iterator unwearable_item = std::find_if(selected_items.begin(), selected_items.end(), !boost::bind(& get_can_item_be_worn, _1));
bool can_add = ( unwearable_item == selected_items.end() );
mPlusBtn->setEnabled(can_add);

View File

@ -405,6 +405,8 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
//static
void LLSidepanelAppearance::editWearable(LLWearable *wearable, LLView *data)
{
LLSideTray::getInstance()->showPanel("sidepanel_appearance");
LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
if (panel)
{

View File

@ -27,6 +27,9 @@
<floater.string name="ToolTipMsg">
[AGENT][REGION](Karte mit Doppelklick öffnen)
</floater.string>
<floater.string name="mini_map_caption">
MINI-KARTE
</floater.string>
<text label="N" name="floater_map_north" text="N">
N
</text>

View File

@ -24,9 +24,6 @@
<floater.string name="Title">
Gesten: [NAME]
</floater.string>
<text name="name_text">
Name:
</text>
<text name="desc_label">
Beschreibung:
</text>
@ -36,7 +33,7 @@
<text name="replace_text" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht&apos;s“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht&apos;s sagen“ und die zugehörige Geste wird abgespielt.">
Ersetzen mit:
</text>
<line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht&apos;s“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht&apos;s sagen“ und die zugehörige Geste wird abgespielt." left_delta="94" width="160"/>
<line_editor left_delta="94" name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht&apos;s“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht&apos;s sagen“ und die zugehörige Geste wird abgespielt." width="160"/>
<text name="key_label">
Tastenkürzel:
</text>
@ -46,19 +43,22 @@
Bibliothek:
</text>
<scroll_list name="library_list" width="166"/>
<button label="Hinzufügen &gt;&gt;" name="add_btn" left_pad="6" width="94"/>
<button label="Hinzufügen &gt;&gt;" left_pad="6" name="add_btn" width="94"/>
<text name="steps_label">
Schritte:
</text>
<button label="Nach oben" name="up_btn"/>
<button label="Nach unten" name="down_btn"/>
<button label="Entfernen" name="delete_btn"/>
<text name="options_text">
(Optionen)
</text>
<radio_group name="animation_trigger_type">
<radio_item label="Start" name="start"/>
<radio_item label="Stopp" name="stop"/>
</radio_group>
<check_box label="bis alle Animationen beendet sind" name="wait_anim_check"/>
<check_box label="Zeit in Sekunden" name="wait_time_check"/>
<check_box label="Zeit in Sekunden:" name="wait_time_check"/>
<text name="help_label">
Alle Schritte werden gleichzeitig ausgeführt, wenn keine Pausen hinzugefügt wurden.
</text>

View File

@ -1,23 +1,75 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Snapshot" title="Foto">
<floater name="Snapshot" title="FOTO-ANZEIGE">
<floater.string name="unknown">
unbekannt
</floater.string>
<radio_group label="Fototyp" name="snapshot_type_radio">
<radio_item label="Email" name="postcard"/>
<radio_item label="Mein Inventar ([AMOUNT] L$)" name="texture"/>
<radio_item label="Auf meinem Computer speichern" name="local"/>
</radio_group>
<text name="file_size_label">
[SIZE] KB
</text>
<button label="Foto aktualisieren" name="new_snapshot_btn"/>
<line_editor label="Beschreibung" name="description"/>
<panel name="panel_snapshot_main">
<button label="Foto freigeben" name="share"/>
<button label="Foto speichern" name="save"/>
<button label="Als Profilbild festlegen" name="set_profile_pic"/>
</panel>
<panel name="panel_snapshot_share">
<button label="Ins Internet stellen" name="share_to_web"/>
<button label="Foto per E-Mail senden" name="share_to_email"/>
<button label="Zurück" name="cancel_share"/>
</panel>
<panel name="panel_snapshot_save">
<button label="Objekt in meinem Inventar speichern" name="save_to_inventory"/>
<button label="Auf meinem Computer speichern" name="save_to_computer"/>
<button label="Zurück" name="cancel_save"/>
</panel>
<button label="Senden" name="send_btn"/>
<button label="Speichern ([AMOUNT] L$)" name="upload_btn"/>
<flyout_button label="Speichern" name="save_btn" tool_tip="Bild als Datei speichern">
<flyout_button.item label="Speichern" name="save_item"/>
<flyout_button.item label="Speichern unter..." name="saveas_item"/>
</flyout_button>
<button label="Mehr" name="more_btn" tool_tip="Erweiterte Optionen"/>
<button label="Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/>
<button label="Abbrechen" name="discard_btn"/>
<text name="type_label2">
Größe
</text>
<text name="format_label">
Format
</text>
<combo_box label="Auflösung" name="postcard_size_combo">
<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
<combo_box.item label="640x480" name="640x480"/>
<combo_box.item label="800x600" name="800x600"/>
<combo_box.item label="1024x768" name="1024x768"/>
<combo_box.item label="Benutzerdefiniert" name="Custom"/>
</combo_box>
<combo_box label="Auflösung" name="texture_size_combo">
<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
<combo_box.item label="Klein (128x128)" name="Small(128x128)"/>
<combo_box.item label="Mittel (256x256)" name="Medium(256x256)"/>
<combo_box.item label="Groß (512x512)" name="Large(512x512)"/>
<combo_box.item label="Benutzerdefiniert" name="Custom"/>
</combo_box>
<combo_box label="Auflösung" name="local_size_combo">
<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
<combo_box.item label="320x240" name="320x240"/>
<combo_box.item label="640x480" name="640x480"/>
<combo_box.item label="800x600" name="800x600"/>
<combo_box.item label="1024x768" name="1024x768"/>
<combo_box.item label="1280x1024" name="1280x1024"/>
<combo_box.item label="1600x1200" name="1600x1200"/>
<combo_box.item label="Benutzerdefiniert" name="Custom"/>
</combo_box>
<combo_box label="Format" name="local_format_combo">
<combo_box.item label="PNG" name="PNG"/>
<combo_box.item label="JPEG" name="JPEG"/>
<combo_box.item label="BMP" name="BMP"/>
</combo_box>
<spinner label="Breite" name="snapshot_width"/>
<spinner label="Größe" name="snapshot_height"/>
<check_box label="Seitenverhältnis beibehalten" name="keep_aspect_check"/>
<slider label="Bildqualität" name="image_quality_slider"/>
<text name="layer_type_label">
Aufnehmen:
</text>
<combo_box label="Bildlayer" name="layer_types">
<combo_box.item label="Farben" name="Colors"/>
<combo_box.item label="Tiefe" name="Depth"/>
</combo_box>
<check_box label="Schnittstelle" name="ui_check"/>
<check_box label="HUDs" name="hud_check"/>
<check_box label="Nach dem Speichern offen lassen" name="keep_open_check"/>
<check_box label="Frame einfrieren (Vollbild)" name="freeze_frame_check"/>
<check_box label="Automatisch aktualisieren" name="auto_snapshot_check"/>
</floater>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater label="Orte" name="voice_effects" title="VOICE-MORPHING AUSPROBIEREN">
<floater label="Orte" name="voice_effects" title="VOICE MORPHING">
<string name="no_voice_effect">
(Kein Voice-Morphing)
</string>
@ -12,18 +12,19 @@
<string name="new_voice_effect">
(Neu!)
</string>
<text name="status_text">
Um die Voice-Morph-Effekte auszuprobieren, einfach auf die Schaltfläche „Aufnahme“ klicken und kurz ins Mikrofon sprechen. Klicken Sie dann auf einen beliebigen Effekt in der Liste, um zu hören, wie der Effekt Ihre Stimme verändert.
Schließen Sie dieses Fenster, um wieder mit dem Voice-Chat in der Nähe verbunden zu werden.
<text name="preview_text">
Zur Vorschau
</text>
<button label="Aufnahme" name="record_btn" tool_tip="Nehmen Sie Ihre Stimme auf."/>
<text name="status_text">
Nehmen Sie Ihre Stimme auf, klicken Sie dann auf einen Effekt, um den Effekt auf Ihre Stimme anzuwenden.
</text>
<button label="Aufnehmen" name="record_btn" tool_tip="Nehmen Sie Ihre Stimme auf."/>
<button label="Stopp" name="record_stop_btn"/>
<text name="voice_morphing_link">
[[URL]Voice-Morphing abonnieren]
[[URL] Jetzt abonnieren]
</text>
<scroll_list name="voice_effect_list" tool_tip="Nehmen Sie Ihre Stimme auf und klicken Sie dann auf einen Effekt, um diesen auszuprobieren.">
<scroll_list.columns label="Voice-Morphing" name="name"/>
<scroll_list.columns label="Bezeichnung" name="name"/>
<scroll_list.columns label="Gültig bis" name="expires"/>
</scroll_list>
</floater>

View File

@ -3,11 +3,13 @@
<menu_item_call label="Berühren" name="Attachment Object Touch"/>
<menu_item_call label="Bearbeiten" name="Edit..."/>
<menu_item_call label="Abnehmen" name="Detach"/>
<menu_item_call label="Fallen lassen" name="Drop"/>
<menu_item_call label="Aufstehen" name="Stand Up"/>
<menu_item_call label="Outfit ändern" name="Change Outfit"/>
<menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
<menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
<menu_item_call label="Meine Freunde" name="Friends..."/>
<menu_item_call label="Meine Gruppen" name="Groups..."/>
<menu_item_call label="Mein Profil" name="Profile..."/>
<menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
<menu_item_call label="Fallen lassen" name="Drop"/>
</context_menu>

View File

@ -4,6 +4,6 @@
<menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/>
<menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/>
<menu_item_call label="Outfit bearbeiten" name="edit"/>
<menu_item_call label="Umbenennen" name="rename"/>
<menu_item_call label="Outfit neu benennen" name="rename"/>
<menu_item_call label="Outfit löschen" name="delete"/>
</context_menu>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_topinfobar">
<menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/>
<menu_item_check label="Parzellen-Eigenschaften anzeigen" name="Show Parcel Properties"/>
<menu_item_call label="Landmarke" name="Landmark"/>
<menu_item_call label="Kopieren" name="Copy"/>
</menu>

View File

@ -178,6 +178,7 @@
<menu_item_check label="Suchen" name="Search"/>
<menu_item_call label="Tasten freigeben" name="Release Keys"/>
<menu_item_call label="UI-Größe auf Standard setzen" name="Set UI Size to Default"/>
<menu_item_check label="Erweitert-Menü anzeigen - veraltetet" name="Show Advanced Menu - legacy shortcut"/>
<menu_item_check label="Immer rennen" name="Always Run"/>
<menu_item_check label="Fliegen" name="Fly"/>
<menu_item_call label="Fenster schließen" name="Close Window"/>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Outfit Wearable Context Menu">
<menu_item_call label="Anziehen" name="wear"/>
<menu_item_call label="Ersetzen" name="wear"/>
<menu_item_call label="Hinzufügen" name="wear_add"/>
<menu_item_call label="Ausziehen / Abnehmen" name="take_off_or_detach"/>
<menu_item_call label="Abnehmen" name="detach"/>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="Gear Wearing">
<menu_item_call label="Outfit bearbeiten" name="edit"/>
</menu>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Wearing">
<menu_item_call label="Outfit bearbeiten" name="edit"/>
</context_menu>

View File

@ -622,8 +622,7 @@ Erwartet wurde [VALIDS]
Datei konnte nicht kodiert werden: [FILE]
</notification>
<notification name="CorruptedProtectedDataStore">
Ihre geschützten Daten konnten nicht gelesen werden, aus diesem Grund werden diese zurückgesetzt.
Dies kann passieren, wenn Sie die Netzwerkeinstellungen ändern.
Wir können Ihren Benutzernamen und Ihr Kennwort nicht automatisch ausfüllen. Dies kann passieren, wenn Sie die Netzwerkeinstellungen ändern.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="CorruptResourceFile">

View File

@ -1,4 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="wearable_item">
<text name="item_name" value="..."/>
<panel name="btn_lock" tool_tip="Ihnen fehlt die Berechtigung zum Bearbeiten."/>
<panel name="btn_edit_panel">
<button name="btn_edit" tool_tip="Diese Form bearbeiten"/>
</panel>
</panel>

View File

@ -1,4 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="wearable_item">
<button name="btn_delete" tool_tip="Von Outfit entfernen"/>
<text name="item_name" value="..."/>
<panel name="btn_lock" tool_tip="Ihnen fehlt die Berechtigung zum Bearbeiten."/>
<panel name="btn_edit_panel">
<button name="btn_edit" tool_tip="Dieses tragbare Objekt bearbeiten"/>
</panel>
</panel>

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="deletable_wearable_item">
<button name="btn_delete" tool_tip="Von Outfit entfernen"/>
<text name="item_name" value="..."/>
</panel>

View File

@ -1,4 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="dummy_clothing_item">
<text name="item_name" value="..."/>
<panel name="btn_add_panel">
<button name="btn_add" tool_tip="Weitere Artikel dieser Art hinzufügen"/>
</panel>
</panel>

View File

@ -90,6 +90,7 @@
<string name="tattoo_desc_text">
Tätowierung:
</string>
<labeled_back_button label="Speichern" name="back_btn" tool_tip="Zurück zu Outfit bearbeiten"/>
<text name="edit_wearable_title" value="Form bearbeiten"/>
<panel label="Hemd" name="wearable_type_panel">
<text name="description_text" value="Form:"/>
@ -102,6 +103,6 @@
</panel>
<panel name="button_panel">
<button label="Speichern unter" name="save_as_button"/>
<button label="Zurücksetzen" name="revert_button"/>
<button label="Änderungen rückgängig machen" name="revert_button"/>
</panel>
</panel>

View File

@ -13,7 +13,9 @@
<string name="Filter.All" value="Alle"/>
<string name="Filter.Clothes/Body" value="Kleider/Körper"/>
<string name="Filter.Objects" value="Objekte"/>
<string name="Filter.Custom" value="Benutzerspezifischer Filter"/>
<string name="Filter.Clothing" value="Kleidung"/>
<string name="Filter.Bodyparts" value="Körperteile"/>
<string name="replace_body_part" value="Klicken, um Ihre aktuelle Form zu ersetzen"/>
<text name="title" value="Outfit bearbeiten"/>
<panel label="bottom_panel" name="header_panel">
<panel label="bottom_panel" name="outfit_name_and_status">
@ -25,7 +27,7 @@
<layout_panel label="IM Steuerkonsole" name="outfit_wearables_panel">
<layout_stack name="filter_panels">
<layout_panel name="add_button_and_combobox">
<button label="Mehr hinzufügen" name="show_add_wearables_btn"/>
<button label="Mehr hinzufügen" name="show_add_wearables_btn" tool_tip="Öffnen/Schließen"/>
</layout_panel>
<layout_panel name="filter_panel">
<filter_editor label="Tragbare Inventarobjekte filtern" name="look_item_filter"/>
@ -36,6 +38,6 @@
</layout_stack>
<panel name="save_revert_button_bar">
<button label="Speichern" name="save_btn"/>
<button label="Zurücksetzen" name="revert_btn"/>
<button label="Änderungen rückgängig machen" name="revert_btn" tool_tip="Zur zuletzt gespeicherten Version zurücksetzen"/>
</panel>
</panel>

View File

@ -6,7 +6,7 @@
</tab_container>
<panel name="bottom_panel">
<button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
<dnd_button name="trash_btn" tool_tip="Auswahl löschen"/>
<dnd_button name="trash_btn" tool_tip="Ausgewähltes Outfit löschen"/>
<button label="Speichern unter" name="save_btn"/>
<button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/>
</panel>

View File

@ -49,10 +49,7 @@
m
</text>
<slider label="Max. Partikelzahl:" name="MaxParticleCount"/>
<slider label="Max. Avatarsichtweite:" name="MaxAvatarDrawDistance"/>
<text name="DrawDistanceMeterText3">
m
</text>
<slider label="Max. Anzahl an voll dargestellten Avataren:" name="MaxNumberAvatarDrawn"/>
<slider label="Post-Processing-Qualität:" name="RenderPostProcess"/>
<text name="MeshDetailText">
Gitterdetails:

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="panel_voice_effect">
<string name="no_voice_effect">
Kein Voice-Morphing
Voice-Morphing Aus
</string>
<string name="preview_voice_effects">
Voice-Morphing ausprobieren ▶
@ -10,6 +10,6 @@
Voice-Morphing abonnieren ▶
</string>
<combo_box name="voice_effect" tool_tip="Wählen Sie einen Voice-Morph-Effekt aus, um Ihre Stimme zu verändern.">
<combo_box.item label="Kein Voice-Morphing" name="no_voice_effect"/>
<combo_box.item label="Voice-Morphing Aus" name="no_voice_effect"/>
</combo_box>
</panel>

View File

@ -3,6 +3,7 @@
<string name="No Outfit" value="Kein Outfit"/>
<string name="Unsaved Changes" value="Ungespeicherte Änderungen"/>
<string name="Now Wearing" value="Aktuelles Outfit..."/>
<string name="Changing outfits" value="Outfits ändern"/>
<panel name="panel_currentlook">
<button label="B" name="editappearance_btn"/>
<button label="Ö" name="openoutfit_btn"/>
@ -12,6 +13,7 @@
<text name="currentlook_name">
MyOutfit With a really Long Name like MOOSE
</text>
<button label="" name="edit_outfit_btn" tool_tip="Diese Outfit bearbeiten"/>
</panel>
<filter_editor label="Outfits filtern" name="Filter"/>
</panel>

View File

@ -309,6 +309,9 @@
<string name="ReleaseNotes">
Versionshinweise
</string>
<string name="RELEASE_NOTES_BASE_URL">
http://wiki.secondlife.com/wiki/Release_Notes/
</string>
<string name="LoadingData">
Wird geladen...
</string>
@ -864,6 +867,9 @@
<string name="invalid">
ungültig
</string>
<string name="none">
keine
</string>
<string name="shirt_not_worn">
Hemd nicht getragen
</string>

View File

@ -1,8 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater
border_visible="false"
border_drop_shadow_visible="false"
drop_shadow_visible="false"
border="false"
bg_opaque_image="Window_Foreground"
bg_alpha_image="Window_Background"
@ -26,20 +24,20 @@
save_visibility="true"
single_instance="true"
width="320">
<chat_history
allow_html="true"
bg_readonly_color="ChatHistoryBgColor"
bg_writeable_color="ChatHistoryBgColor"
follows="all"
left="5"
top="20"
layout="topleft"
height="275"
name="chat_history"
parse_highlights="true"
text_color="ChatHistoryTextColor"
text_readonly_color="ChatHistoryTextColor"
right_widget_pad="5"
left_widget_pad="0"
width="315" />
<chat_history
allow_html="true"
bg_readonly_color="ChatHistoryBgColor"
bg_writeable_color="ChatHistoryBgColor"
follows="all"
left="5"
top="20"
layout="topleft"
height="275"
name="chat_history"
parse_highlights="true"
text_color="ChatHistoryTextColor"
text_readonly_color="ChatHistoryTextColor"
right_widget_pad="5"
left_widget_pad="0"
width="315" />
</floater>

View File

@ -3,7 +3,7 @@
<!-- All accordion tabs in the My Appearance/My Outfits panel will be created from this one at runtime-->
<!-- Non of string values of controls below are visible to user. They are not need to be translated. -->
<accordion_tab
display_children="false"
expanded="false"
follows="all"
height="45"
layout="topleft"