diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml index b2aa387070871d47c2fbddf7e5dcfecab7bb8bc7..655c8c0556eea7730204a65604149ee6fec4b859 100644 --- a/indra/newview/app_settings/settings_alchemy.xml +++ b/indra/newview/app_settings/settings_alchemy.xml @@ -596,5 +596,16 @@ <key>Value</key> <integer>0</integer> </map> + <key>UIImgTransparentUUID</key> + <map> + <key>Comment</key> + <string /> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>8dcd4a48-2d37-4909-9f78-f7a9eb4ef903</string> + </map> </map> </llsd> diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp index 35b77d9c3e4fb8aaabd7a2461b25d14b244cfebe..e616cfe743b1b1d720d531562d72ac75403a584a 100644 --- a/indra/newview/lloutfitgallery.cpp +++ b/indra/newview/lloutfitgallery.cpp @@ -1353,6 +1353,7 @@ void LLOutfitGallery::onSelectPhoto(LLUUID selected_outfit_id) getPhotoAssetId(selected_outfit_id), getPhotoAssetId(selected_outfit_id), getPhotoAssetId(selected_outfit_id), + getPhotoAssetId(selected_outfit_id), FALSE, TRUE, "SELECT PHOTO", diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 5cbbc07e318759c5e2fdaa281453ebb8cbff2bd0..e09ef72b8848f5671bc1ad485a7dbd42c0b60c6c 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -84,6 +84,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( LLView* owner, LLUUID image_asset_id, LLUUID default_image_asset_id, + LLUUID transparent_image_asset_id, LLUUID blank_image_asset_id, BOOL tentative, BOOL allow_no_texture, @@ -99,6 +100,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( mOriginalImageAssetID(image_asset_id), mFallbackImage(fallback_image), mDefaultImageAssetID(default_image_asset_id), + mTransparentImageAssetID(transparent_image_asset_id), mBlankImageAssetID(blank_image_asset_id), mTentative(tentative), mAllowNoTexture(allow_no_texture), @@ -353,6 +355,7 @@ BOOL LLFloaterTexturePicker::postBuild() childSetAction("Default",LLFloaterTexturePicker::onBtnSetToDefault,this); childSetAction("None", LLFloaterTexturePicker::onBtnNone,this); childSetAction("Blank", LLFloaterTexturePicker::onBtnBlank,this); + childSetAction("Transparent", LLFloaterTexturePicker::onBtnTransparent,this); childSetCommitCallback("show_folders_check", onShowFolders, this); @@ -409,6 +412,9 @@ BOOL LLFloaterTexturePicker::postBuild() mLocalScrollCtrl->setCommitCallback(onLocalScrollCommit, this); LLLocalBitmapMgr::getInstance()->feedScrollList(mLocalScrollCtrl); + getChild<LLLineEditor>("uuid_editor")->setCommitCallback(boost::bind(&onApplyUUID, this)); + getChild<LLButton>("apply_uuid_btn")->setClickedCallback(boost::bind(&onApplyUUID, this)); + mNoCopyTextureSelected = FALSE; getChild<LLUICtrl>("apply_immediate_check")->setValue(gSavedSettings.getBOOL("TextureLivePreview")); @@ -483,6 +489,7 @@ void LLFloaterTexturePicker::draw() } getChildView("Default")->setEnabled(mImageAssetID != mDefaultImageAssetID || mTentative); + getChildView("Transparent")->setEnabled(mImageAssetID != mTransparentImageAssetID || mTentative); getChildView("Blank")->setEnabled(mImageAssetID != mBlankImageAssetID || mTentative); getChildView("None")->setEnabled(mAllowNoTexture && (!mImageAssetID.isNull() || mTentative)); @@ -636,6 +643,15 @@ void LLFloaterTexturePicker::onBtnSetToDefault(void* userdata) self->commitIfImmediateSet(); } +// static +void LLFloaterTexturePicker::onBtnTransparent(void* userdata) +{ + LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; + self->setCanApply(true, true); + self->setImageID( self->getTransparentImageAssetID() ); + self->commitIfImmediateSet(); +} + // static void LLFloaterTexturePicker::onBtnBlank(void* userdata) { @@ -714,6 +730,18 @@ void LLFloaterTexturePicker::onBtnPipette() } } +// static +void LLFloaterTexturePicker::onApplyUUID(void* userdata) +{ + LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; + LLUUID id(self->getChild<LLLineEditor>("uuid_editor")->getText()); + if (id.notNull()) + { + self->setImageID(id); + self->commitIfImmediateSet(); + } +} + void LLFloaterTexturePicker::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action) { if (items.size()) @@ -759,11 +787,14 @@ void LLFloaterTexturePicker::onModeSelect(LLUICtrl* ctrl, void *userdata) int index = self->mModeSelector->getValue().asInteger(); self->getChild<LLButton>("Default")->setVisible(index == 0 ? TRUE : FALSE); + self->getChild<LLButton>("Transparent")->setVisible(index == 0 ? TRUE : FALSE); self->getChild<LLButton>("Blank")->setVisible(index == 0 ? TRUE : FALSE); self->getChild<LLButton>("None")->setVisible(index == 0 ? TRUE : FALSE); self->getChild<LLButton>("Pipette")->setVisible(index == 0 ? TRUE : FALSE); self->getChild<LLFilterEditor>("inventory search editor")->setVisible(index == 0 ? TRUE : FALSE); self->getChild<LLInventoryPanel>("inventory panel")->setVisible(index == 0 ? TRUE : FALSE); + self->getChild<LLLineEditor>("uuid_editor")->setVisible(index == 0 ? TRUE : FALSE); + self->getChild<LLButton>("apply_uuid_btn")->setVisible(index == 0 ? TRUE : FALSE); /*self->getChild<LLCheckBox>("show_folders_check")->setVisible(mode); no idea under which conditions the above is even shown, needs testing. */ @@ -1161,6 +1192,9 @@ LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p) mFallbackImage(p.fallback_image) { + LLUUID transparentImage( gSavedSettings.getString( "UIImgTransparentUUID" ) ); + setTransparentImageAssetID( transparentImage ); + // Default of defaults is white image for diff tex // LLUUID whiteImage( gSavedSettings.getString( "UIImgWhiteUUID" ) ); @@ -1321,6 +1355,7 @@ void LLTextureCtrl::showPicker(BOOL take_focus) this, getImageAssetID(), getDefaultImageAssetID(), + getTransparentImageAssetID(), getBlankImageAssetID(), getTentative(), getAllowNoTexture(), diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h index 3208983faae5ab059906468e50a9748373d6a322..1190fd04b2f232a0f61d0febf5ad12b0dfc4c32a 100644 --- a/indra/newview/lltexturectrl.h +++ b/indra/newview/lltexturectrl.h @@ -161,6 +161,9 @@ class LLTextureCtrl void setOpenTexPreview(bool open_preview) { mOpenTexPreview = open_preview; } + void setTransparentImageAssetID( const LLUUID& id ) { mTransparentImageAssetID = id; } + const LLUUID& getTransparentImageAssetID() const { return mTransparentImageAssetID; } + void setCaption(const std::string& caption); void setCanApplyImmediately(BOOL b); @@ -221,6 +224,7 @@ class LLTextureCtrl LLUUID mImageAssetID; LLUUID mDefaultImageAssetID; LLUUID mBlankImageAssetID; + LLUUID mTransparentImageAssetID; LLUIImagePtr mFallbackImage; std::string mDefaultImageName; LLHandle<LLFloater> mFloaterHandle; @@ -257,6 +261,7 @@ class LLFloaterTexturePicker final : public LLFloater LLView* owner, LLUUID image_asset_id, LLUUID default_image_asset_id, + LLUUID transparent_image_asset_id, LLUUID blank_image_asset_id, BOOL tentative, BOOL allow_no_texture, @@ -309,6 +314,7 @@ class LLFloaterTexturePicker final : public LLFloater void setSetImageAssetIDCallback(const set_image_asset_id_callback& cb) { mSetImageAssetIDCallback = cb; } void setOnUpdateImageStatsCallback(const set_on_update_image_stats_callback& cb) { mOnUpdateImageStatsCallback = cb; } const LLUUID& getDefaultImageAssetID() { return mDefaultImageAssetID; } + const LLUUID& getTransparentImageAssetID() { return mTransparentImageAssetID; } const LLUUID& getBlankImageAssetID() { return mBlankImageAssetID; } static void onBtnSetToDefault(void* userdata); @@ -316,9 +322,11 @@ class LLFloaterTexturePicker final : public LLFloater static void onBtnCancel(void* userdata); void onBtnPipette(); //static void onBtnRevert( void* userdata ); + static void onBtnTransparent(void* userdata); static void onBtnBlank(void* userdata); static void onBtnNone(void* userdata); static void onBtnClear(void* userdata); + static void onApplyUUID(void* userdata); void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action); static void onShowFolders(LLUICtrl* ctrl, void* userdata); static void onApplyImmediateCheck(LLUICtrl* ctrl, void* userdata); @@ -343,6 +351,7 @@ class LLFloaterTexturePicker final : public LLFloater LLUUID mImageAssetID; // Currently selected texture LLUIImagePtr mFallbackImage; // What to show if currently selected texture is null. LLUUID mDefaultImageAssetID; + LLUUID mTransparentImageAssetID; LLUUID mBlankImageAssetID; BOOL mTentative; BOOL mAllowNoTexture; diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index 3a669113894d437f79500a18031ffa0e0dfff497..be91226a7ba41f2fb9a5f1ec47f740f95dfcb054 100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -3,9 +3,9 @@ legacy_header_height="18" can_minimize="false" can_resize="true" - height="330" + height="375" layout="topleft" - min_height="330" + min_height="375" min_width="410" name="texture picker" help_topic="texture_picker" @@ -63,6 +63,10 @@ value="0" /> <combo_box.item label="Local" + left_pad="0" + layout="topleft" + top_delta="0" + height="16" name="local" value="1" /> <combo_box.item @@ -88,7 +92,7 @@ <button enabled="false" follows="left|top" - height="18" + height="20" label="Default" label_selected="Default" layout="topleft" @@ -96,6 +100,16 @@ width="73" left="94" top="215"/> + <button + follows="left|top" + height="20" + label="Transparent" + label_selected="Transparent" + layout="topleft" + left_delta="0" + name="Transparent" + top_pad="5" + width="73" /> <button follows="left|top" height="20" @@ -123,21 +137,21 @@ image_selected="eye_button_active.tga" image_unselected="eye_button_inactive.tga" layout="topleft" - left="18" - top_delta="-23" + left_delta="-80" + top_delta="-25" name="Pipette" width="28" /> <text follows="left|bottom" - height="40" + height="20" layout="topleft" left="8" name="preview_disabled" - top="285" + top="266" value="Preview Disabled" word_wrap="true" visible="false" - width="87" /> + width="120" /> <filter_editor follows="left|top|right" height="23" @@ -153,38 +167,57 @@ bg_alpha_color="DkGray2" border="false" follows="all" - height="233" + height="262" layout="topleft" left_delta="0" name="inventory panel" top_pad="4" - width="231" - filter_asset_type="texture"/> + width="231" /> <check_box - height="14" + visible="false" + height="0" initial_value="false" label="Show folders" layout="topleft" name="show_folders_check" top_pad="0" left_delta="-3" - width="200" /> + width="0" /> + <line_editor + follows="left|bottom|right" + layout="topleft" + name="uuid_editor" + label="Enter Texture UUID" + max_length_chars="36" + top_pad="7" + height="20" + width="296" + left="5" /> + <button + follows="bottom|right" + layout="topleft" + name="apply_uuid_btn" + label="Apply Key" + left_pad="5" + top_delta="0" + height="20" + width="100" /> <!-- middle: local mode --> <button - follows="left|top" + follows="left|bottom" height="18" label="Add" label_selected="Add" layout="topleft" left="94" - top="215" + top="272" name="l_add_btn" width="73" visible="false"/> <button enabled="false" - follows="left|top" + follows="left|bottom" height="20" label="Remove" label_selected="Remove" @@ -196,7 +229,7 @@ visible="false"/> <button enabled="false" - follows="left|top" + follows="left|bottom" height="20" label="Upload" label_selected="Upload" @@ -209,9 +242,9 @@ <scroll_list name="l_name_list" left="170" - top="22" + top="20" width="235" - height="260" + height="320" follows="left|top|right|bottom" column_padding="0" draw_heading="true" @@ -298,22 +331,22 @@ layout="topleft" visible="false"/> <!-- bottom static --> <button - follows="bottom" + follows="bottom|right" height="20" label="OK" label_selected="OK" layout="topleft" - left="176" + left="-209" top="-30" name="Select" width="100" /> <button - follows="bottom" + follows="bottom|right" height="20" label="Cancel" label_selected="Cancel" layout="topleft" - left_delta="120" + left_delta="105" top_delta="0" name="Cancel" width="100" /> @@ -326,5 +359,5 @@ layout="topleft" left="6" name="apply_immediate_check" top_delta="0" - width="150" /> + width="120" /> </floater>