Merge Firestorm LGPL

meow-7.2.2
Ansariel 2019-01-03 17:13:25 +01:00
commit 93767f6e52
15 changed files with 215 additions and 50 deletions

View File

@ -952,11 +952,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>e137cd0eacda5df6204150b3bb51a971</string>
<string>177f3e948368aa09803ffae0884acc12</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///opt/firestorm/fmodstudio-1.10.09-darwin-183011234.tar.bz2</string>
<string>file:///opt/firestorm/fmodstudio-1.10.10-darwin-183562214.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -1976,9 +1976,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>1b87073540bf081136e60777d99f09f2</string>
<string>9a08c678a8c6c3c10bb913219b7931b6</string>
<key>url</key>
<string>file:///opt/firestorm/kdu-7.A.5-darwin-182950050.tar.bz2</string>
<string>file:///opt/firestorm/kdu-7.A.6-darwin-183562147.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -1988,9 +1988,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>1b87073540bf081136e60777d99f09f2</string>
<string>9a08c678a8c6c3c10bb913219b7931b6</string>
<key>url</key>
<string>file:///opt/firestorm/kdu-7.A.5-darwin-182950050.tar.bz2</string>
<string>file:///opt/firestorm/kdu-7.A.6-darwin-183562147.tar.bz2</string>
</map>
<key>name</key>
<string>darwin64</string>
@ -2832,9 +2832,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key>
<map>
<key>hash</key>
<string>ee185657aed3a7fcabcd9a1335a6050b</string>
<string>0d3db04b9b10085b100b345c68381cb0</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/ogg_vorbis-1.2.2-1.3.2.180871245-linux-180871245.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/ogg_vorbis-1.3.3-1.3.6.183570207-linux-183570207.tar.bz2</string>
</map>
<key>name</key>
<string>linux</string>
@ -2844,9 +2844,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key>
<map>
<key>hash</key>
<string>ec5fd10d3a504e528b61d339522ca0f9</string>
<string>5e23c312d37367bb2d23dad395891b00</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/ogg_vorbis-1.2.2-1.3.2.180841550-linux64-180841550.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/ogg_vorbis-1.3.3-1.3.6.183570202-linux64-183570202.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>

View File

@ -32,6 +32,8 @@
<true/>
<key>NSAppSleepDisabled</key>
<true/>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone access is needed to allow connection to voice.</string>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>CFBundleDocumentTypes</key>

View File

@ -9029,7 +9029,7 @@
<key>MeshPreviewBaseColor</key>
<map>
<key>Comment</key>
<string>Canvas colour for the Mesh uploader</string>
<string>Diffuse colour for the Mesh uploader when textures not shown</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@ -18944,7 +18944,18 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>0</integer>
</map>
<key>FSIgnoreFinishAnimation</key>
<key>FSIgnoreClientsideMeshValidation</key>
<map>
<key>Comment</key>
<string>Treat the errors from Clientside mesh validation as warnings and do not block upload. This setting allows you to fall back on server side checks and per Grid quality control levels.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>FSIgnoreFinishAnimation</key>
<map>
<key>Comment</key>
<string>Disable the wait for pre-jump or landing. Credit to Zwagoth Klaar for coding this.</string>

View File

@ -94,6 +94,7 @@ void main()
// col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].z);
col.rgb += light_diffuse[2].rgb * calcDirectionalLight(norm, light_position[2].xyz);
// col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].z);
col.rgb += light_diffuse[3].rgb * calcDirectionalLight(norm, light_position[3].xyz);
col /= 2.0;
vertex_color = col*color;
}

View File

@ -131,7 +131,7 @@ void LLViewerDynamicTexture::preRender(BOOL clear_depth)
//llassert(mFullWidth <= 512);
gPipeline.allocatePhysicsBuffer();
llassert(mFullWidth <= static_cast<S32>(gPipeline.mPhysicsDisplay.getWidth()));
llassert(mFullWidth <= static_cast<S32>(gPipeline.mPhysicsDisplay.getHeight()));
llassert(mFullHeight <= static_cast<S32>(gPipeline.mPhysicsDisplay.getHeight()));
// if (gGLManager.mHasFramebufferObject && gPipeline.mWaterDis.isComplete() && !gGLManager.mIsATI)
if (gGLManager.mHasFramebufferObject && gPipeline.mPhysicsDisplay.isComplete() && !gGLManager.mIsATI)

View File

@ -52,12 +52,16 @@ LLFloaterLinkReplace::~LLFloaterLinkReplace()
BOOL LLFloaterLinkReplace::postBuild()
{
childSetVisible("delete_text", false); // <FS:Beq> FIRE-17695 - Delete links capability
mStartBtn = getChild<LLButton>("btn_start");
mStartBtn->setCommitCallback(boost::bind(&LLFloaterLinkReplace::onStartClicked, this));
mRefreshBtn = getChild<LLButton>("btn_refresh");
mRefreshBtn->setCommitCallback(boost::bind(&LLFloaterLinkReplace::checkEnableStart, this));
// <FS:Beq> FIRE-17695 - Delete links capability
mDeleteOnlyToggle = getChild<LLCheckBoxCtrl>("delete_links_only");
mDeleteOnlyToggle->setCommitCallback(boost::bind(&LLFloaterLinkReplace::onDeleteOnlyToggle, this));
// </FS:Beq>
mSourceEditor = getChild<LLInventoryLinkReplaceDropTarget>("source_uuid_editor");
mTargetEditor = getChild<LLInventoryLinkReplaceDropTarget>("target_uuid_editor");
@ -92,9 +96,40 @@ void LLFloaterLinkReplace::onSourceItemDrop(const LLUUID& source_item_id)
void LLFloaterLinkReplace::onTargetItemDrop(const LLUUID& target_item_id)
{
mTargetUUID = target_item_id;
// <FS:Beq> FIRE-17695 - option to bulk delete links.
//mTargetUUID = target_item_id;
//checkEnableStart();
if (!mDeleteOnly)
{
mTargetUUID = target_item_id;
checkEnableStart();
}
else
{
mTargetEditor->setItem(nullptr);
mTargetEditor->setText(getString("DeleteNotReplace"));
mTargetUUID.setNull();
}
// </FS:Beq>
}
// <FS:Beq> FIRE-17695 - Delete links capability
void LLFloaterLinkReplace::onDeleteOnlyToggle()
{
auto enabled = mDeleteOnlyToggle->getValue().asBoolean();
mTargetEditor->setEnabled(!enabled);
mTargetEditor->setVisible(!enabled);
childSetVisible("target_label", !enabled);
childSetVisible("delete_text", enabled);
mDeleteOnly = enabled;
if (mDeleteOnly)
{
mTargetEditor->setItem(nullptr);
mTargetUUID.setNull();
}
checkEnableStart();
}
// </FS:Beq>
void LLFloaterLinkReplace::updateFoundLinks()
{
@ -123,20 +158,36 @@ void LLFloaterLinkReplace::checkEnableStart()
{
updateFoundLinks();
}
// <FS:Beq> FIRE-17695 - Delete links capability
// mStartBtn->setEnabled(mRemainingItems > 0 && mSourceUUID.notNull() && mTargetUUID.notNull() && mSourceUUID != mTargetUUID);
bool enable = mRemainingItems > 0 && (
(mDeleteOnly && mSourceUUID.notNull() ) ||
(mSourceUUID.notNull() && mTargetUUID.notNull() && mSourceUUID != mTargetUUID));
mStartBtn->setEnabled(mRemainingItems > 0 && mSourceUUID.notNull() && mTargetUUID.notNull() && mSourceUUID != mTargetUUID);
mStartBtn->setEnabled(enable);
// </FS:Beq>
}
void LLFloaterLinkReplace::onStartClicked()
{
LL_INFOS() << "Starting inventory link replace" << LL_ENDL;
if (mSourceUUID.isNull() || mTargetUUID.isNull())
// <FS:Beq> FIRE-17695 - option to bulk delete links.
// if (mSourceUUID.isNull() || mTargetUUID.isNull())
if (!mDeleteOnly && (mSourceUUID.isNull() || mTargetUUID.isNull()))
// </FS:Beq>
{
LL_WARNS() << "Cannot replace. Either source or target UUID is null." << LL_ENDL;
return;
}
// <FS:Beq> FIRE-17695 - option to bulk delete links.
if (!mDeleteOnly && mSourceUUID.isNull())
{
LL_WARNS() << "Cannot delete links. Source UUID is null." << LL_ENDL;
return;
}
// </FS:Beq>
if (mSourceUUID == mTargetUUID)
{
LL_WARNS() << "Cannot replace. Source and target are identical." << LL_ENDL;
@ -155,7 +206,10 @@ void LLFloaterLinkReplace::onStartClicked()
if (mRemainingInventoryItems.size() > 0)
{
LLViewerInventoryItem* target_item = gInventory.getItem(mTargetUUID);
if (target_item)
// <FS:Beq> FIRE-17695 - option to bulk delete links.
//if (target_item)
if (target_item || mDeleteOnly)
// </FS:Beq>
{
mRemainingItems = (U32)mRemainingInventoryItems.size();
@ -307,26 +361,63 @@ void LLFloaterLinkReplace::processBatch(LLInventoryModel::item_array_t items)
if (source_item->getParentUUID() != cof_folder_id)
{
// <FS:Beq> FIRE-17695 bulk delete unwanted links
//bool is_outfit_folder = gInventory.isObjectDescendentOf(source_item->getParentUUID(), outfit_folder_id);
//// If either the new or old item in the COF is a wearable, we need to update wearable ordering after the link has been replaced
//bool needs_wearable_ordering_update = (is_outfit_folder && source_item->getType() == LLAssetType::AT_CLOTHING) || target_item->getType() == LLAssetType::AT_CLOTHING;
//// Other items in the COF need a description update (description of the actual link item must be empty)
//bool needs_description_update = is_outfit_folder && target_item->getType() != LLAssetType::AT_CLOTHING;
//LL_DEBUGS() << "is_outfit_folder = " << (is_outfit_folder ? "true" : "false") << LL_NEWLINE
// << "needs_wearable_ordering_update = " << (needs_wearable_ordering_update ? "true" : "false") << LL_NEWLINE
// << "needs_description_update = " << (needs_description_update ? "true" : "false") << LL_ENDL;
//LLInventoryObject::const_object_list_t obj_array;
//obj_array.push_back(LLConstPointer<LLInventoryObject>(target_item));
//LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&LLFloaterLinkReplace::linkCreatedCallback,
// getDerivedHandle<LLFloaterLinkReplace>(),
// source_item->getUUID(),
// target_item->getUUID(),
// needs_wearable_ordering_update,
// needs_description_update,
// (is_outfit_folder ? source_item->getParentUUID() : LLUUID::null) ));
//link_inventory_array(source_item->getParentUUID(), obj_array, cb);
bool is_outfit_folder = gInventory.isObjectDescendentOf(source_item->getParentUUID(), outfit_folder_id);
// If either the new or old item in the COF is a wearable, we need to update wearable ordering after the link has been replaced
bool needs_wearable_ordering_update = (is_outfit_folder && source_item->getType() == LLAssetType::AT_CLOTHING) || target_item->getType() == LLAssetType::AT_CLOTHING;
bool needs_wearable_ordering_update = (is_outfit_folder && source_item->getType() == LLAssetType::AT_CLOTHING) || (!mDeleteOnly && target_item->getType() == LLAssetType::AT_CLOTHING);
// Other items in the COF need a description update (description of the actual link item must be empty)
bool needs_description_update = is_outfit_folder && target_item->getType() != LLAssetType::AT_CLOTHING;
bool needs_description_update = !mDeleteOnly && is_outfit_folder && target_item->getType() != LLAssetType::AT_CLOTHING;
LL_DEBUGS() << "is_outfit_folder = " << (is_outfit_folder ? "true" : "false") << LL_NEWLINE
<< "needs_wearable_ordering_update = " << (needs_wearable_ordering_update ? "true" : "false") << LL_NEWLINE
<< "needs_description_update = " << (needs_description_update ? "true" : "false") << LL_ENDL;
LLInventoryObject::const_object_list_t obj_array;
obj_array.push_back(LLConstPointer<LLInventoryObject>(target_item));
LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&LLFloaterLinkReplace::linkCreatedCallback,
getDerivedHandle<LLFloaterLinkReplace>(),
source_item->getUUID(),
target_item->getUUID(),
needs_wearable_ordering_update,
needs_description_update,
(is_outfit_folder ? source_item->getParentUUID() : LLUUID::null) ));
link_inventory_array(source_item->getParentUUID(), obj_array, cb);
if (!mDeleteOnly)
{
LLInventoryObject::const_object_list_t obj_array;
obj_array.push_back(LLConstPointer<LLInventoryObject>(target_item));
LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&LLFloaterLinkReplace::linkCreatedCallback,
getDerivedHandle<LLFloaterLinkReplace>(),
source_item->getUUID(),
target_item->getUUID(),
needs_wearable_ordering_update,
needs_description_update,
(is_outfit_folder ? source_item->getParentUUID() : LLUUID::null)));
link_inventory_array(source_item->getParentUUID(), obj_array, cb);
}
else
{
LLUUID outfit_update_folder_id = LLUUID::null;
if (needs_wearable_ordering_update)
{
outfit_update_folder_id = outfit_folder_id;
}
LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&LLFloaterLinkReplace::itemRemovedCallback, getDerivedHandle<LLFloaterLinkReplace>(), outfit_update_folder_id));
remove_inventory_object(source_item->getUUID(), cb);
LL_INFOS() << "Requested delete of " << source_item->getUUID() << LL_ENDL;
}
// </FS:Beq>
}
else
{

View File

@ -33,6 +33,7 @@
#include "lllineeditor.h"
#include "llinventoryfunctions.h"
#include "llviewerinventory.h"
#include "llcheckboxctrl.h" // <FS:Beq> FIRE-17695 - Delete links capability
class LLButton;
class LLTextBox;
@ -104,12 +105,14 @@ private:
void onSourceItemDrop(const LLUUID& source_item_id);
void onTargetItemDrop(const LLUUID& target_item_id);
void onDeleteOnlyToggle();// <FS:Beq> FIRE-17695 - Delete links capability
LLInventoryLinkReplaceDropTarget* mSourceEditor;
LLInventoryLinkReplaceDropTarget* mTargetEditor;
LLButton* mStartBtn;
LLButton* mRefreshBtn;
LLTextBox* mStatusText;
LLCheckBoxCtrl* mDeleteOnlyToggle;// <FS:Beq> FIRE-17695 - Delete links capability
LLUUID mSourceUUID;
LLUUID mTargetUUID;
@ -117,6 +120,7 @@ private:
U32 mBatchSize;
LLInventoryModel::item_array_t mRemainingInventoryItems;
bool mDeleteOnly;// <FS:Beq> FIRE-17695 - Delete links capability
};
#endif // LL_FLOATERLINKREPLACE_H

View File

@ -3060,19 +3060,35 @@ void LLModelPreview::updateStatusMessages()
U16 index_a = face.mIndices[k+0];
U16 index_b = face.mIndices[k+1];
U16 index_c = face.mIndices[k+2];
// <FS:Beq> FIRE-23367/23387 - Allow forced empty triangle placeholders created by the LOD processing.
// LLVector4a v1; v1.setMul(face.mPositions[index_a], scale);
// LLVector4a v2; v2.setMul(face.mPositions[index_b], scale);
// LLVector4a v3; v3.setMul(face.mPositions[index_c], scale);
LLVector4a v1; v1.setMul(face.mPositions[index_a], scale);
LLVector4a v2; v2.setMul(face.mPositions[index_b], scale);
LLVector4a v3; v3.setMul(face.mPositions[index_c], scale);
if (ll_is_degenerate(v1,v2,v3))
// if (ll_is_degenerate(v1, v2, v3))
// {
// mHasDegenerate = true;// <FS:Beq> make has_degenerate a member
// }
// else
// {
// k += 3;
// }
if (index_c == 0 && index_b == 0 && index_a == 0) // test in reverse as 3rd index is less likely to be 0 in a normal case
{
mHasDegenerate = true;// <FS:Beq> make has_degenerate a member
LL_DEBUGS("MeshValidation") << "Empty placeholder triangle (3 identical index 0 verts) ignored" << LL_ENDL;
}
else
{
k += 3;
LLVector4a v1; v1.setMul(face.mPositions[index_a], scale);
LLVector4a v2; v2.setMul(face.mPositions[index_b], scale);
LLVector4a v3; v3.setMul(face.mPositions[index_c], scale);
if (ll_is_degenerate(v1, v2, v3))
{
mHasDegenerate = true;// <FS:Beq> make has_degenerate a member
}
}
k += 3;
// </FS:Beq>
}
}
}
@ -3319,7 +3335,7 @@ void LLModelPreview::updateStatusMessages()
//if (!mModelNoErrors || mHasDegenerate)
//{
// mFMP->childDisable("ok_btn");
if (!mModelNoErrors || (has_physics_error > PhysicsError::NOHAVOK)) // block for all cases of phsyics error except NOHAVOK
if ((gSavedSettings.getBOOL("FSIgnoreClientsideMeshValidation")==FALSE) && (!mModelNoErrors || (has_physics_error > PhysicsError::NOHAVOK))) // block for all cases of phsyics error except NOHAVOK
{
mFMP->childDisable("ok_btn");
mFMP->childDisable("calculate_btn");

View File

@ -2118,7 +2118,7 @@ bool LLTextureCache::writeToFastCache(LLUUID image_id, S32 id, LLPointer<LLImage
catch (...)
{
removeFromCache(image_id);
LL_ERRS() << "Failed to cache image: " << image_id
LL_WARNS() << "Failed to cache image: " << image_id
<< " local id: " << id
<< " Exception: " << boost::current_exception_diagnostic_information()
<< " Image new width: " << w

View File

@ -301,6 +301,7 @@ void ParticleEditor::onParameterChange()
if (mWindCheckBox->getValue().asBoolean()) flags |= LLPartData::LL_PART_WIND_MASK;
if (mRibbonCheckBox->getValue().asBoolean()) flags |= LLPartData::LL_PART_RIBBON_MASK;
mParticles.mPartData.setFlags(flags);
mParticles.setUseNewAngle();
mParticles.mTargetUUID = mTargetKeyInput->getValue().asUUID();

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="fs_linkreplace" title="Inventar-Links ersetzen">
<floater name="linkreplace" title="Inventar-Links ersetzen">
<string name="Ready">
Bereit...
</string>
@ -18,14 +18,21 @@
<string name="ReplaceFinished">
Ersetzen von Inventar-Links beendet.
</string>
<string name="DeleteNotReplace">
Keine Ersetzung.
</string>
<text name="source_label">
Alt:
</text>
<inventory_link_replace_drop_target name="source_uuid_editor" tool_tip="Quell-Objekt aus dem Inventar hier per Drag&amp;Drop hineinziehen."/>
<text name="delete_text">
Verknüpfungen zu diesem Objekt werden entfernt.
</text>
<text name="target_label">
Neu:
</text>
<inventory_link_replace_drop_target name="target_uuid_editor" tool_tip="Ziel-Objekt aus dem Inventar hier per Drag&amp;Drop hineinziehen."/>
<check_box label="Nur Verknüpfungen entfernen" name="delete_links_only"/>
<text name="status_text">
Bereit...
</text>

View File

@ -5,7 +5,7 @@
positioning="centered"
title="Replace Inventory Links"
width="333"
height="130"
height="150"
save_rect="true"
can_minimize="true"
can_close="true">
@ -27,6 +27,9 @@
<string name="ReplaceFinished">
Finished replacing inventory links.
</string>
<string name="DeleteNotReplace">
No replacement.
</string>
<text
type="string"
follows="left|top"
@ -49,6 +52,18 @@
top_delta="-3"
right="-10"
tool_tip="Drag and drop the current inventory item here that should be replaced."/>
<text
type="string"
follows="left|top"
font="SanSerif"
height="23"
layout="topleft"
top_pad="10"
left="10"
right="-10"
name="delete_text">
Links to this item will be removed.
</text>
<text
type="string"
follows="left|top"
@ -58,7 +73,7 @@
left="10"
width="35"
name="target_label"
top_pad="10">
top_delta="0">
New:
</text>
<inventory_link_replace_drop_target
@ -71,6 +86,15 @@
top_delta="-3"
right="-10"
tool_tip="Drag and drop new inventory item here."/>
<check_box
follows="top|left"
height="20"
label="Delete links only"
left="10"
right="-10"
layout="topleft"
top_pad="5"
name="delete_links_only"/>
<text
type="string"
follows="left|top|right"

View File

@ -276,7 +276,8 @@
</menu_item_call>
<menu_item_call
label="Refresh Attachments"
name="Refresh Attachments">
name="Refresh Attachments"
shortcut="alt|shift|R">
<menu_item_call.on_click
function="Advanced.RefreshAttachments" />
</menu_item_call>

View File

@ -2471,8 +2471,8 @@ URL: [MEDIAURL]
<notification name="AudioAlert">
Questo lotto fornisce musica da :
Dominio: [MEDIADOMAIN]
URL: [MEDIAURL]
Dominio: [AUDIODOMAIN]
URL: [AUDIOURL]
<form name="form">
<button name="Allow" text="Permetti"/>
<button name="Deny" text="Nega"/>
@ -2481,8 +2481,8 @@ URL: [MEDIAURL]
<notification name="AudioAlert2">
Ricordare la scelta fatta e [LCONDITION] permettere la musica da questa fonte?
Dominio: [MEDIADOMAIN]
URL: [MEDIAURL]
Dominio: [AUDIODOMAIN]
URL: [AUDIOURL]
<form name="form">
<button name="Do Now" text="[ACTION] adesso"/>
<button name="RememberDomain" text="[CONDITION] permetti questo dominio"/>
@ -2492,8 +2492,8 @@ URL: [MEDIAURL]
<notification name="AudioAlertSingle">
Ricordare la scelta fatta e [LCONDITION] permettere la musica da questa fonte?
Dominio: [MEDIADOMAIN]
URL: [MEDIAURL]
Dominio: [AUDIODOMAIN]
URL: [AUDIOURL]
<form name="form">
<button name="Allow" text="Permetti"/>
<button name="Deny" text="Nega"/>

View File

@ -18,14 +18,21 @@
<string name="ReplaceFinished">
Zakończono zastępowanie linków.
</string>
<string name="DeleteNotReplace">
Brak zmian.
</string>
<text name="source_label">
Stary:
</text>
<inventory_link_replace_drop_target name="source_uuid_editor" tool_tip="Przeciągnij i upuść tutaj przedmiot, którego linki chcesz zastąpić." />
<text name="delete_text">
Linki tego obiektu zostaną usunięte.
</text>
<text name="target_label">
Nowy:
</text>
<inventory_link_replace_drop_target name="target_uuid_editor" tool_tip="Przeciągnij i upuść tutaj przedmiot, którego linki zastąpią linki do przedmiotu pierwotnego." />
<check_box label="Tylko usuń linki" name="delete_links_only" />
<text name="status_text">
Gotowy...
</text>