aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden
diff options
context:
space:
mode:
authorArmin Weatherwax2010-02-22 13:47:15 +0100
committerJacek Antonelli2010-03-04 20:58:10 -0600
commit3609359ca157d122a15480f19fea18de0015cb3c (patch)
tree8de3fca09dd17db5598f972344495ad695c508af /linden
parentLinux64: for DBUS-Debug build- track where it's crashing (if still). (diff)
downloadmeta-impy-3609359ca157d122a15480f19fea18de0015cb3c.zip
meta-impy-3609359ca157d122a15480f19fea18de0015cb3c.tar.gz
meta-impy-3609359ca157d122a15480f19fea18de0015cb3c.tar.bz2
meta-impy-3609359ca157d122a15480f19fea18de0015cb3c.tar.xz
Ported temporary texture uploads from Emerald.
Diffstat (limited to 'linden')
-rw-r--r--linden/indra/newview/app_settings/settings.xml15
-rw-r--r--linden/indra/newview/llfloaterimagepreview.cpp4
-rw-r--r--linden/indra/newview/llfloatersnapshot.cpp41
-rw-r--r--linden/indra/newview/llinventorybridge.cpp26
-rw-r--r--linden/indra/newview/llinventorybridge.h2
-rw-r--r--linden/indra/newview/llviewermenufile.cpp75
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml11
8 files changed, 140 insertions, 38 deletions
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 5687eb7..93dc2fb 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -3415,6 +3415,21 @@
3415 <real>1.0</real> 3415 <real>1.0</real>
3416 </array> 3416 </array>
3417 </map> 3417 </map>
3418
3419
3420 <key>EmeraldTemporaryUpload</key>
3421 <map>
3422 <key>Comment</key>
3423 <string>Whether or not a texture upload is temp</string>
3424 <key>Persist</key>
3425 <integer>0</integer>
3426 <key>Type</key>
3427 <string>Boolean</string>
3428 <key>Value</key>
3429 <integer>0</integer>
3430 </map>
3431
3432
3418 <key>EnableRippleWater</key> 3433 <key>EnableRippleWater</key>
3419 <map> 3434 <map>
3420 <key>Comment</key> 3435 <key>Comment</key>
diff --git a/linden/indra/newview/llfloaterimagepreview.cpp b/linden/indra/newview/llfloaterimagepreview.cpp
index 24b9929..87d577d 100644
--- a/linden/indra/newview/llfloaterimagepreview.cpp
+++ b/linden/indra/newview/llfloaterimagepreview.cpp
@@ -58,6 +58,7 @@
58#include "lluictrlfactory.h" 58#include "lluictrlfactory.h"
59#include "llviewerimagelist.h" 59#include "llviewerimagelist.h"
60#include "llstring.h" 60#include "llstring.h"
61#include "llviewercontrol.h"
61 62
62//static 63//static
63S32 LLFloaterImagePreview::sUploadAmount = 10; 64S32 LLFloaterImagePreview::sUploadAmount = 10;
@@ -120,6 +121,9 @@ BOOL LLFloaterImagePreview::postBuild()
120 121
121 if (mRawImagep->getWidth() * mRawImagep->getHeight () <= LL_IMAGE_REZ_LOSSLESS_CUTOFF * LL_IMAGE_REZ_LOSSLESS_CUTOFF) 122 if (mRawImagep->getWidth() * mRawImagep->getHeight () <= LL_IMAGE_REZ_LOSSLESS_CUTOFF * LL_IMAGE_REZ_LOSSLESS_CUTOFF)
122 childEnable("lossless_check"); 123 childEnable("lossless_check");
124
125 gSavedSettings.setBOOL("EmeraldTemporaryUpload",FALSE);
126 childSetValue("temp_check",FALSE);
123 } 127 }
124 else 128 else
125 { 129 {
diff --git a/linden/indra/newview/llfloatersnapshot.cpp b/linden/indra/newview/llfloatersnapshot.cpp
index 6597f9d..b4f2cc2 100644
--- a/linden/indra/newview/llfloatersnapshot.cpp
+++ b/linden/indra/newview/llfloatersnapshot.cpp
@@ -80,8 +80,10 @@
80///---------------------------------------------------------------------------- 80///----------------------------------------------------------------------------
81/// Local function declarations, constants, enums, and typedefs 81/// Local function declarations, constants, enums, and typedefs
82///---------------------------------------------------------------------------- 82///----------------------------------------------------------------------------
83S32 LLFloaterSnapshot::sUIWinHeightLong = 546 ; 83
84S32 LLFloaterSnapshot::sUIWinHeightShort = LLFloaterSnapshot::sUIWinHeightLong - 250 ; 84//Hey, why use XUI files when you can hardcode? Why say "Floater" when you can say "UIWin"?
85S32 LLFloaterSnapshot::sUIWinHeightLong = 568 ;//height of the floater with "more" options
86S32 LLFloaterSnapshot::sUIWinHeightShort = LLFloaterSnapshot::sUIWinHeightLong - 270 ;//dto. "less" options
85S32 LLFloaterSnapshot::sUIWinWidth = 215 ; 87S32 LLFloaterSnapshot::sUIWinWidth = 215 ;
86 88
87LLSnapshotFloaterView* gSnapshotFloaterView = NULL; 89LLSnapshotFloaterView* gSnapshotFloaterView = NULL;
@@ -809,24 +811,14 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
809 formatted->decode(previewp->mPreviewImageEncoded, 0); 811 formatted->decode(previewp->mPreviewImageEncoded, 0);
810 } 812 }
811 } 813 }
812 else if(previewp->getSnapshotType() == SNAPSHOT_POSTCARD) 814 else
813 { 815 {
816 // delete any existing image
814 previewp->mFormattedImage = NULL; 817 previewp->mFormattedImage = NULL;
818 // now create the new one of the appropriate format.
815 // note: postcards hardcoded to use jpeg always. 819 // note: postcards hardcoded to use jpeg always.
816 previewp->mFormattedImage = new LLImageJPEG(previewp->mSnapshotQuality); 820 LLFloaterSnapshot::ESnapshotFormat format = previewp->getSnapshotType() == SNAPSHOT_POSTCARD
817 821 ? LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG : previewp->getSnapshotFormat();
818 if(previewp->mFormattedImage->encode(previewp->mPreviewImage, 0))
819 {
820 previewp->mDataSize = previewp->mFormattedImage->getDataSize();
821 previewp->mFormattedImage->decode(previewp->mPreviewImageEncoded, 0);
822 }
823 }
824 else //SNAPSHOT_LOCAL
825 {
826 previewp->mFormattedImage = NULL;
827 // save snapshot using the appropriate format.
828 LLFloaterSnapshot::ESnapshotFormat format = previewp->getSnapshotFormat();
829
830 switch(format) 822 switch(format)
831 { 823 {
832 case LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG: 824 case LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG:
@@ -1269,7 +1261,12 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
1269 floater->childSetVisible("save_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL); 1261 floater->childSetVisible("save_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
1270 floater->childSetEnabled("keep_aspect_check", shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !sAspectRatioCheckOff); 1262 floater->childSetEnabled("keep_aspect_check", shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !sAspectRatioCheckOff);
1271 floater->childSetEnabled("layer_types", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL); 1263 floater->childSetEnabled("layer_types", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
1272 1264 if(shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE)
1265 {
1266 floater->childSetValue("temp_check", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE);
1267 }
1268 floater->childSetEnabled("temp_check", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE);
1269
1273 BOOL is_advance = gSavedSettings.getBOOL("AdvanceSnapshot"); 1270 BOOL is_advance = gSavedSettings.getBOOL("AdvanceSnapshot");
1274 BOOL is_local = shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL; 1271 BOOL is_local = shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL;
1275 1272
@@ -1290,6 +1287,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
1290 floater->childSetVisible("freeze_frame_check", is_advance); 1287 floater->childSetVisible("freeze_frame_check", is_advance);
1291 floater->childSetVisible("auto_snapshot_check", is_advance); 1288 floater->childSetVisible("auto_snapshot_check", is_advance);
1292 floater->childSetVisible("image_quality_slider", is_advance); 1289 floater->childSetVisible("image_quality_slider", is_advance);
1290 floater->childSetVisible("temp_check", is_advance);
1293 1291
1294 LLSnapshotLivePreview* previewp = getPreviewView(floater); 1292 LLSnapshotLivePreview* previewp = getPreviewView(floater);
1295 BOOL got_bytes = previewp && previewp->getDataSize() > 0; 1293 BOOL got_bytes = previewp && previewp->getDataSize() > 0;
@@ -2085,6 +2083,9 @@ BOOL LLFloaterSnapshot::postBuild()
2085 sInstance->getRootView()->addChild(previewp); 2083 sInstance->getRootView()->addChild(previewp);
2086 sInstance->getRootView()->addChild(gSnapshotFloaterView); 2084 sInstance->getRootView()->addChild(gSnapshotFloaterView);
2087 2085
2086 gSavedSettings.setBOOL("EmeraldTemporaryUpload",FALSE);
2087 childSetValue("temp_check",FALSE);
2088
2088 Impl::sPreviewHandle = previewp->getHandle(); 2089 Impl::sPreviewHandle = previewp->getHandle();
2089 2090
2090 impl.updateControls(this); 2091 impl.updateControls(this);
@@ -2103,6 +2104,8 @@ void LLFloaterSnapshot::draw()
2103 } 2104 }
2104 2105
2105 // TODO*: Do we need all this? - Jacek 2106 // TODO*: Do we need all this? - Jacek
2107 //SG & Emerald don't ... let's try and comment it out -Armin
2108/*
2106 if(!isMinimized()) 2109 if(!isMinimized())
2107 { 2110 {
2108 if (previewp && previewp->getDataSize() > 0) 2111 if (previewp && previewp->getDataSize() > 0)
@@ -2194,7 +2197,7 @@ void LLFloaterSnapshot::draw()
2194 2197
2195 childSetToolTip("ui_check", std::string("If selected shows the UI in the snapshot")); 2198 childSetToolTip("ui_check", std::string("If selected shows the UI in the snapshot"));
2196 } 2199 }
2197 2200*/
2198 LLFloater::draw(); 2201 LLFloater::draw();
2199 2202
2200 if (previewp) 2203 if (previewp)
diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp
index 0d0c512..42af09a 100644
--- a/linden/indra/newview/llinventorybridge.cpp
+++ b/linden/indra/newview/llinventorybridge.cpp
@@ -948,9 +948,10 @@ std::string LLItemBridge::getLabelSuffix() const
948 LLInventoryItem* item = getItem(); 948 LLInventoryItem* item = getItem();
949 if(item) 949 if(item)
950 { 950 {
951 LLPermissions perm = item->getPermissions();
951 // it's a bit confusing to put nocopy/nomod/etc on calling cards. 952 // it's a bit confusing to put nocopy/nomod/etc on calling cards.
952 if(LLAssetType::AT_CALLINGCARD != item->getType() 953 if(/*LLAssetType::AT_CALLINGCARD != item->getType()
953 && item->getPermissions().getOwner() == gAgent.getID()) 954 && */perm.getOwner() == gAgent.getID())
954 { 955 {
955 BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); 956 BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID());
956 BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID()); 957 BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID());
@@ -961,6 +962,8 @@ std::string LLItemBridge::getLabelSuffix() const
961 const char* NO_COPY = " (no copy)"; 962 const char* NO_COPY = " (no copy)";
962 const char* NO_MOD = " (no modify)"; 963 const char* NO_MOD = " (no modify)";
963 const char* NO_XFER = " (no transfer)"; 964 const char* NO_XFER = " (no transfer)";
965 const char* TEMPO = " (temporary)";
966
964 const char* scopy; 967 const char* scopy;
965 if(copy) scopy = EMPTY; 968 if(copy) scopy = EMPTY;
966 else scopy = NO_COPY; 969 else scopy = NO_COPY;
@@ -970,7 +973,10 @@ std::string LLItemBridge::getLabelSuffix() const
970 const char* sxfer; 973 const char* sxfer;
971 if(xfer) sxfer = EMPTY; 974 if(xfer) sxfer = EMPTY;
972 else sxfer = NO_XFER; 975 else sxfer = NO_XFER;
973 suffix = llformat("%s%s%s",scopy,smod,sxfer); 976 const char* stempo;
977 if(perm.getGroup() == gAgent.getID())stempo = TEMPO;
978 else stempo = EMPTY;
979 suffix = llformat("%s%s%s%s",scopy,smod,sxfer,stempo);
974 } 980 }
975 } 981 }
976 return suffix; 982 return suffix;
@@ -4572,6 +4578,20 @@ BOOL LLWearableBridge::isItemRemovable()
4572 return LLInvFVBridge::isItemRemovable(); 4578 return LLInvFVBridge::isItemRemovable();
4573} 4579}
4574 4580
4581//k, all uploadable asset types do not use this characteristic; therefore, we can use it to show temporaryness and not interfere cuz we're awesome like that
4582LLFontGL::StyleFlags LLItemBridge::getLabelStyle() const
4583{
4584 LLPermissions perm = getItem()->getPermissions();
4585 if(perm.getGroup() == gAgent.getID())
4586 {
4587 return LLFontGL::ITALIC;
4588 }
4589 else
4590 {
4591 return LLFontGL::NORMAL;
4592 }
4593}
4594
4575LLFontGL::StyleFlags LLWearableBridge::getLabelStyle() const 4595LLFontGL::StyleFlags LLWearableBridge::getLabelStyle() const
4576{ 4596{
4577 if( gAgent.isWearingItem( mUUID ) ) 4597 if( gAgent.isWearingItem( mUUID ) )
diff --git a/linden/indra/newview/llinventorybridge.h b/linden/indra/newview/llinventorybridge.h
index 6c1c469..3f4cfb0 100644
--- a/linden/indra/newview/llinventorybridge.h
+++ b/linden/indra/newview/llinventorybridge.h
@@ -263,6 +263,8 @@ public:
263 virtual BOOL hasChildren() const { return FALSE; } 263 virtual BOOL hasChildren() const { return FALSE; }
264 virtual BOOL isUpToDate() const { return TRUE; } 264 virtual BOOL isUpToDate() const { return TRUE; }
265 265
266 virtual LLFontGL::StyleFlags getLabelStyle() const;
267
266 // override for LLInvFVBridge 268 // override for LLInvFVBridge
267 virtual void clearDisplayName() { mDisplayName.clear(); } 269 virtual void clearDisplayName() { mDisplayName.clear(); }
268 270
diff --git a/linden/indra/newview/llviewermenufile.cpp b/linden/indra/newview/llviewermenufile.cpp
index 3283391..8f47e0b 100644
--- a/linden/indra/newview/llviewermenufile.cpp
+++ b/linden/indra/newview/llviewermenufile.cpp
@@ -844,6 +844,40 @@ void upload_new_resource(const std::string& src_filename, std::string name,
844 } 844 }
845} 845}
846 846
847void temp_upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed)
848{
849 LLResourceData* data = (LLResourceData*)user_data;
850 if(result >= 0)
851 {
852 LLAssetType::EType dest_loc = (data->mPreferredLocation == LLAssetType::AT_NONE) ? data->mAssetInfo.mType : data->mPreferredLocation;
853 LLUUID folder_id(gInventory.findCategoryUUIDForType(dest_loc));
854 LLUUID item_id;
855 item_id.generate();
856 LLPermissions perm;
857 perm.init(gAgentID,
858 gAgentID,
859 gAgentID,
860 gAgentID);
861 perm.setMaskBase(PERM_ALL);
862 perm.setMaskOwner(PERM_ALL);
863 perm.setMaskEveryone(PERM_ALL);
864 perm.setMaskGroup(PERM_ALL);
865 LLPointer<LLViewerInventoryItem> item = new LLViewerInventoryItem(item_id, folder_id, perm, data->mAssetInfo.mTransactionID.makeAssetID(gAgent.getSecureSessionID()), data->mAssetInfo.mType, data->mInventoryType, data->mAssetInfo.getName(), "", LLSaleInfo::DEFAULT, LLInventoryItem::II_FLAGS_NONE, time_corrected());
866 item->updateServer(TRUE);
867 gInventory.updateItem(item);
868 gInventory.notifyObservers();
869 }else // if(result >= 0)
870 {
871 LLSD args;
872 args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType);
873 args["REASON"] = std::string(LLAssetStorage::getErrorString(result));
874 LLNotifications::instance().add("CannotUploadReason", args);
875 }
876
877 LLUploadDialog::modalUploadFinished();
878 delete data;
879}
880
847void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed) 881void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed)
848{ 882{
849 LLResourceData* data = (LLResourceData*)user_data; 883 LLResourceData* data = (LLResourceData*)user_data;
@@ -968,6 +1002,11 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
968 S32 expected_upload_cost, 1002 S32 expected_upload_cost,
969 void *userdata) 1003 void *userdata)
970{ 1004{
1005 if(gDisconnected)
1006 {
1007 return ;
1008 }
1009
971 LLAssetID uuid = tid.makeAssetID(gAgent.getSecureSessionID()); 1010 LLAssetID uuid = tid.makeAssetID(gAgent.getSecureSessionID());
972 1011
973 if( LLAssetType::AT_SOUND == asset_type ) 1012 if( LLAssetType::AT_SOUND == asset_type )
@@ -1013,8 +1052,11 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
1013 llinfos << "Expected Upload Cost: " << expected_upload_cost << llendl; 1052 llinfos << "Expected Upload Cost: " << expected_upload_cost << llendl;
1014 lldebugs << "Folder: " << gInventory.findCategoryUUIDForType((destination_folder_type == LLAssetType::AT_NONE) ? asset_type : destination_folder_type) << llendl; 1053 lldebugs << "Folder: " << gInventory.findCategoryUUIDForType((destination_folder_type == LLAssetType::AT_NONE) ? asset_type : destination_folder_type) << llendl;
1015 lldebugs << "Asset Type: " << LLAssetType::lookup(asset_type) << llendl; 1054 lldebugs << "Asset Type: " << LLAssetType::lookup(asset_type) << llendl;
1055
1016 std::string url = gAgent.getRegion()->getCapability("NewFileAgentInventory"); 1056 std::string url = gAgent.getRegion()->getCapability("NewFileAgentInventory");
1017 if (!url.empty()) 1057 BOOL temporary_up = gSavedSettings.getBOOL("EmeraldTemporaryUpload");
1058 gSavedSettings.setBOOL("EmeraldTemporaryUpload",FALSE);
1059 if (!url.empty() && temporary_up == FALSE)
1018 { 1060 {
1019 llinfos << "New Agent Inventory via capability" << llendl; 1061 llinfos << "New Agent Inventory via capability" << llendl;
1020 LLSD body; 1062 LLSD body;
@@ -1036,19 +1078,22 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
1036 } 1078 }
1037 else 1079 else
1038 { 1080 {
1039 llinfos << "NewAgentInventory capability not found, new agent inventory via asset system." << llendl; 1081 if(temporary_up == FALSE)
1040 // check for adequate funds
1041 // TODO: do this check on the sim
1042 if (LLAssetType::AT_SOUND == asset_type ||
1043 LLAssetType::AT_TEXTURE == asset_type ||
1044 LLAssetType::AT_ANIMATION == asset_type)
1045 { 1082 {
1046 S32 balance = gStatusBar->getBalance(); 1083 llinfos << "NewAgentInventory capability not found, new agent inventory via asset system." << llendl;
1047 if (balance < expected_upload_cost) 1084 // check for adequate funds
1085 // TODO: do this check on the sim
1086 if (LLAssetType::AT_SOUND == asset_type ||
1087 LLAssetType::AT_TEXTURE == asset_type ||
1088 LLAssetType::AT_ANIMATION == asset_type)
1048 { 1089 {
1049 // insufficient funds, bail on this upload 1090 S32 balance = gStatusBar->getBalance();
1050 LLFloaterBuyCurrency::buyCurrency("Uploading costs", expected_upload_cost); 1091 if (balance < expected_upload_cost)
1051 return; 1092 {
1093 // insufficient funds, bail on this upload
1094 LLFloaterBuyCurrency::buyCurrency("Uploading costs", expected_upload_cost);
1095 return;
1096 }
1052 } 1097 }
1053 } 1098 }
1054 1099
@@ -1065,7 +1110,7 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
1065 data->mAssetInfo.setDescription(desc); 1110 data->mAssetInfo.setDescription(desc);
1066 data->mPreferredLocation = destination_folder_type; 1111 data->mPreferredLocation = destination_folder_type;
1067 1112
1068 LLAssetStorage::LLStoreAssetCallback asset_callback = &upload_done_callback; 1113 LLAssetStorage::LLStoreAssetCallback asset_callback = temporary_up ? &temp_upload_done_callback : &upload_done_callback;
1069 if (callback) 1114 if (callback)
1070 { 1115 {
1071 asset_callback = callback; 1116 asset_callback = callback;
@@ -1073,7 +1118,9 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
1073 gAssetStorage->storeAssetData(data->mAssetInfo.mTransactionID, data->mAssetInfo.mType, 1118 gAssetStorage->storeAssetData(data->mAssetInfo.mTransactionID, data->mAssetInfo.mType,
1074 asset_callback, 1119 asset_callback,
1075 (void*)data, 1120 (void*)data,
1076 FALSE); 1121 temporary_up,
1122 TRUE,
1123 temporary_up);
1077 } 1124 }
1078} 1125}
1079 1126
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml b/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml
index 926e715..76c1852 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml
@@ -57,6 +57,10 @@ Try saving image as 24 bit Targa (.tga).
57 follows="bottom|left" font="SansSerifSmall" height="16" 57 follows="bottom|left" font="SansSerifSmall" height="16"
58 initial_value="false" label="Use lossless compression" left="10" 58 initial_value="false" label="Use lossless compression" left="10"
59 left_delta="2" name="lossless_check" width="280" /> 59 left_delta="2" name="lossless_check" width="280" />
60 <check_box bottom="37" control_name="EmeraldTemporaryUpload" enabled="true"
61 follows="bottom|left" font="SansSerifSmall" height="16"
62 initial_value="false" label="Temporary Image (Free)"
63 left_delta="155" name="temp_check" width="280" tooltip="Sets the asset to be temporary, meaning its free, but in return, only good for a short time before it ceases to exist." />
60 <button bottom="10" follows="bottom|right" height="20" label="Cancel" left="165" 64 <button bottom="10" follows="bottom|right" height="20" label="Cancel" left="165"
61 name="cancel_btn" width="125" /> 65 name="cancel_btn" width="125" />
62 <button bottom="10" follows="bottom|left" height="20" label="Upload (L$[AMOUNT])" 66 <button bottom="10" follows="bottom|left" height="20" label="Upload (L$[AMOUNT])"
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml
index efe524c..35a8ec1 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml
@@ -1,6 +1,10 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater bottom="-320" can_close="true" can_drag_on_left="false" can_minimize="true" 2
3 can_resize="false" follows="left|top" height="546" name="Snapshot" 3<!-- README: Width and height of this floater are hardcoded in llfloatersnapshot.cpp
4 using sUIWinWidth, sUIWinHeightShort, sUIWinHeightLong -->
5<floater
6 bottom="-320" can_close="true" can_drag_on_left="false" can_minimize="true"
7 can_resize="false" follows="left|top" height="568" name="Snapshot"
4 rect_control="FloaterSnapshotRect" title="Snapshot Preview" width="215"> 8 rect_control="FloaterSnapshotRect" title="Snapshot Preview" width="215">
5 <text bottom_delta="-40" follows="top|left" height="15" left="10" name="type_label" 9 <text bottom_delta="-40" follows="top|left" height="15" left="10" name="type_label"
6 width="195"> 10 width="195">
@@ -170,6 +174,9 @@
170 left="10" name="freeze_frame_check" /> 174 left="10" name="freeze_frame_check" />
171 <check_box bottom_delta="-20" follows="left|top" label="Auto-refresh" left="10" 175 <check_box bottom_delta="-20" follows="left|top" label="Auto-refresh" left="10"
172 name="auto_snapshot_check" /> 176 name="auto_snapshot_check" />
177 <check_box bottom_delta="-20" follows="left|top" control_name="EmeraldTemporaryUpload" enabled="true"
178 initial_value="false" label="Temporary Image (Free)" left="10"
179 name="temp_check" tooltip="Sets the asset to be temporary, meaning its free, but in return, only good for a short time before it ceases to exist." />
173 <string name="unknown"> 180 <string name="unknown">
174 unknown 181 unknown
175 </string> 182 </string>