SL-17653 Finalized texure picker's local filtering
parent
20dc30450c
commit
116bd660b6
|
|
@ -213,6 +213,7 @@ BOOL LLPanelFace::postBuild()
|
|||
pbr_ctrl->setImmediateFilterPermMask(PERM_NONE);
|
||||
pbr_ctrl->setDnDFilterPermMask(PERM_COPY | PERM_TRANSFER);
|
||||
pbr_ctrl->setBakeTextureEnabled(false);
|
||||
pbr_ctrl->setInventoryPickType(LLTextureCtrl::PICK_MATERIAL);
|
||||
}
|
||||
|
||||
mTextureCtrl = getChild<LLTextureCtrl>("texture control");
|
||||
|
|
|
|||
|
|
@ -177,7 +177,8 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
|
|||
mOnFloaterCloseCallback(NULL),
|
||||
mSetImageAssetIDCallback(NULL),
|
||||
mOnUpdateImageStatsCallback(NULL),
|
||||
mBakeTextureEnabled(FALSE)
|
||||
mBakeTextureEnabled(FALSE),
|
||||
mInventoryPickType(LLTextureCtrl::PICK_TEXTURE)
|
||||
{
|
||||
mCanApplyImmediately = can_apply_immediately;
|
||||
buildFromFile("floater_texture_ctrl.xml");
|
||||
|
|
@ -466,8 +467,20 @@ BOOL LLFloaterTexturePicker::postBuild()
|
|||
mLocalScrollCtrl = getChild<LLScrollListCtrl>("l_name_list");
|
||||
mLocalScrollCtrl->setCommitCallback(onLocalScrollCommit, this);
|
||||
mLocalScrollCtrl->clearRows();
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
|
||||
if (mInventoryPickType == LLTextureCtrl::PICK_TEXTURE_MATERIAL)
|
||||
{
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
}
|
||||
else if (mInventoryPickType == LLTextureCtrl::PICK_TEXTURE)
|
||||
{
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
}
|
||||
else if (mInventoryPickType == LLTextureCtrl::PICK_MATERIAL)
|
||||
{
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
}
|
||||
|
||||
mNoCopyTextureSelected = FALSE;
|
||||
|
||||
|
|
@ -901,11 +914,18 @@ void LLFloaterTexturePicker::onBtnAdd(void* userdata)
|
|||
{
|
||||
LLFloaterTexturePicker* self = (LLFloaterTexturePicker*)userdata;
|
||||
|
||||
// todo: there will be changes to texture picker to forbid
|
||||
// selection of materials in some cases, like landmarks, once
|
||||
// it gets implemented, update code to select FLOAD_* filter
|
||||
// based on picker's material/texture mode.
|
||||
LLFilePickerReplyThread::startPicker(boost::bind(&onPickerCallback, _1, self->getHandle()), LLFilePicker::FFLOAD_MATERIAL_TEXTURE, true);
|
||||
if (self->mInventoryPickType == LLTextureCtrl::PICK_TEXTURE_MATERIAL)
|
||||
{
|
||||
LLFilePickerReplyThread::startPicker(boost::bind(&onPickerCallback, _1, self->getHandle()), LLFilePicker::FFLOAD_MATERIAL_TEXTURE, true);
|
||||
}
|
||||
else if (self->mInventoryPickType == LLTextureCtrl::PICK_TEXTURE)
|
||||
{
|
||||
LLFilePickerReplyThread::startPicker(boost::bind(&onPickerCallback, _1, self->getHandle()), LLFilePicker::FFLOAD_IMAGE, true);
|
||||
}
|
||||
else if (self->mInventoryPickType == LLTextureCtrl::PICK_MATERIAL)
|
||||
{
|
||||
LLFilePickerReplyThread::startPicker(boost::bind(&onPickerCallback, _1, self->getHandle()), LLFilePicker::FFLOAD_MATERIAL, true);
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
|
|
@ -941,8 +961,20 @@ void LLFloaterTexturePicker::onBtnRemove(void* userdata)
|
|||
self->getChild<LLButton>("l_rem_btn")->setEnabled(false);
|
||||
self->getChild<LLButton>("l_upl_btn")->setEnabled(false);
|
||||
self->mLocalScrollCtrl->clearRows();
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
|
||||
if (self->mInventoryPickType == LLTextureCtrl::PICK_TEXTURE_MATERIAL)
|
||||
{
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
}
|
||||
else if (self->mInventoryPickType == LLTextureCtrl::PICK_TEXTURE)
|
||||
{
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
}
|
||||
else if (self->mInventoryPickType == LLTextureCtrl::PICK_MATERIAL)
|
||||
{
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1183,18 +1215,23 @@ void LLFloaterTexturePicker::onSelectTextureMaterials(LLUICtrl* ctrl, void *user
|
|||
|
||||
U32 filter_types = 0x0;
|
||||
|
||||
if (index == textures_and_materials)
|
||||
if (self->mInventoryPickType != LLTextureCtrl::PICK_TEXTURE_MATERIAL)
|
||||
{
|
||||
index = self->mInventoryPickType;
|
||||
}
|
||||
|
||||
if (index == LLTextureCtrl::PICK_TEXTURE_MATERIAL)
|
||||
{
|
||||
filter_types |= 0x1 << LLInventoryType::IT_TEXTURE;
|
||||
filter_types |= 0x1 << LLInventoryType::IT_SNAPSHOT;
|
||||
filter_types |= 0x1 << LLInventoryType::IT_MATERIAL;
|
||||
}
|
||||
else if (index == textures_only)
|
||||
else if (index == LLTextureCtrl::PICK_TEXTURE)
|
||||
{
|
||||
filter_types |= 0x1 << LLInventoryType::IT_TEXTURE;
|
||||
filter_types |= 0x1 << LLInventoryType::IT_SNAPSHOT;
|
||||
}
|
||||
else if (index == materials_only)
|
||||
else if (index == LLTextureCtrl::PICK_MATERIAL)
|
||||
{
|
||||
filter_types |= 0x1 << LLInventoryType::IT_MATERIAL;
|
||||
}
|
||||
|
|
@ -1229,6 +1266,28 @@ void LLFloaterTexturePicker::setBakeTextureEnabled(BOOL enabled)
|
|||
onModeSelect(0, this);
|
||||
}
|
||||
|
||||
void LLFloaterTexturePicker::setInventoryPickType(LLTextureCtrl::EPickInventoryType type)
|
||||
{
|
||||
mInventoryPickType = type;
|
||||
|
||||
mLocalScrollCtrl->clearRows();
|
||||
if (mInventoryPickType == LLTextureCtrl::PICK_TEXTURE_MATERIAL)
|
||||
{
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
}
|
||||
else if (mInventoryPickType == LLTextureCtrl::PICK_TEXTURE)
|
||||
{
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
}
|
||||
else if (mInventoryPickType == LLTextureCtrl::PICK_MATERIAL)
|
||||
{
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
}
|
||||
|
||||
onSelectTextureMaterials(0, this);
|
||||
}
|
||||
|
||||
void LLFloaterTexturePicker::onPickerCallback(const std::vector<std::string>& filenames, LLHandle<LLFloater> handle)
|
||||
{
|
||||
std::vector<std::string>::const_iterator iter = filenames.begin();
|
||||
|
|
@ -1254,8 +1313,20 @@ void LLFloaterTexturePicker::onPickerCallback(const std::vector<std::string>& fi
|
|||
{
|
||||
LLFloaterTexturePicker* self = (LLFloaterTexturePicker*)handle.get();
|
||||
self->mLocalScrollCtrl->clearRows();
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
|
||||
if (self->mInventoryPickType == LLTextureCtrl::PICK_TEXTURE_MATERIAL)
|
||||
{
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
}
|
||||
else if (self->mInventoryPickType == LLTextureCtrl::PICK_TEXTURE)
|
||||
{
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
}
|
||||
else if (self->mInventoryPickType == LLTextureCtrl::PICK_MATERIAL)
|
||||
{
|
||||
LLLocalGLTFMaterialMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1306,6 +1377,8 @@ LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p)
|
|||
mValid( TRUE ),
|
||||
mShowLoadingPlaceholder( TRUE ),
|
||||
mOpenTexPreview(false),
|
||||
mBakeTextureEnabled(true),
|
||||
mInventoryPickType(PICK_TEXTURE),
|
||||
mImageAssetID(p.image_id),
|
||||
mDefaultImageAssetID(p.default_image_id),
|
||||
mDefaultImageName(p.default_image_name),
|
||||
|
|
@ -1495,14 +1568,10 @@ void LLTextureCtrl::showPicker(BOOL take_focus)
|
|||
if (texture_floaterp)
|
||||
{
|
||||
texture_floaterp->setOnFloaterCommitCallback(boost::bind(&LLTextureCtrl::onFloaterCommit, this, _1, _2));
|
||||
}
|
||||
if (texture_floaterp)
|
||||
{
|
||||
texture_floaterp->setSetImageAssetIDCallback(boost::bind(&LLTextureCtrl::setImageAssetID, this, _1));
|
||||
}
|
||||
if (texture_floaterp)
|
||||
{
|
||||
texture_floaterp->setBakeTextureEnabled(TRUE);
|
||||
|
||||
texture_floaterp->setBakeTextureEnabled(mBakeTextureEnabled);
|
||||
texture_floaterp->setInventoryPickType(mInventoryPickType);
|
||||
}
|
||||
|
||||
LLFloater* root_floater = gFloaterView->getParentFloater(this);
|
||||
|
|
@ -1749,8 +1818,9 @@ void LLTextureCtrl::setImageAssetID( const LLUUID& asset_id )
|
|||
}
|
||||
}
|
||||
|
||||
void LLTextureCtrl::setBakeTextureEnabled(BOOL enabled)
|
||||
void LLTextureCtrl::setBakeTextureEnabled(bool enabled)
|
||||
{
|
||||
mBakeTextureEnabled = enabled;
|
||||
LLFloaterTexturePicker* floaterp = (LLFloaterTexturePicker*)mFloaterHandle.get();
|
||||
if (floaterp)
|
||||
{
|
||||
|
|
@ -1758,6 +1828,16 @@ void LLTextureCtrl::setBakeTextureEnabled(BOOL enabled)
|
|||
}
|
||||
}
|
||||
|
||||
void LLTextureCtrl::setInventoryPickType(EPickInventoryType type)
|
||||
{
|
||||
mInventoryPickType = type;
|
||||
LLFloaterTexturePicker* floaterp = (LLFloaterTexturePicker*)mFloaterHandle.get();
|
||||
if (floaterp)
|
||||
{
|
||||
floaterp->setInventoryPickType(type);
|
||||
}
|
||||
}
|
||||
|
||||
BOOL LLTextureCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask,
|
||||
BOOL drop, EDragAndDropType cargo_type, void *cargo_data,
|
||||
EAcceptance *accept,
|
||||
|
|
|
|||
|
|
@ -78,6 +78,13 @@ public:
|
|||
TEXTURE_CANCEL
|
||||
} ETexturePickOp;
|
||||
|
||||
typedef enum e_pick_inventory_type
|
||||
{
|
||||
PICK_TEXTURE_MATERIAL = 0,
|
||||
PICK_TEXTURE = 1,
|
||||
PICK_MATERIAL = 2,
|
||||
} EPickInventoryType;
|
||||
|
||||
public:
|
||||
struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
|
||||
{
|
||||
|
|
@ -212,7 +219,11 @@ public:
|
|||
|
||||
LLViewerFetchedTexture* getTexture() { return mTexturep; }
|
||||
|
||||
void setBakeTextureEnabled(BOOL enabled);
|
||||
void setBakeTextureEnabled(bool enabled);
|
||||
bool getBakeTextureEnabled() const { return mBakeTextureEnabled; }
|
||||
|
||||
void setInventoryPickType(EPickInventoryType type);
|
||||
EPickInventoryType getInventoryPickType() { return mInventoryPickType; };
|
||||
|
||||
private:
|
||||
BOOL allowDrop(LLInventoryItem* item);
|
||||
|
|
@ -251,7 +262,8 @@ private:
|
|||
std::string mLoadingPlaceholderString;
|
||||
S32 mLabelWidth;
|
||||
bool mOpenTexPreview;
|
||||
BOOL mBakeTextureEnabled;
|
||||
bool mBakeTextureEnabled;
|
||||
LLTextureCtrl::EPickInventoryType mInventoryPickType;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -347,6 +359,8 @@ public:
|
|||
void setLocalTextureEnabled(BOOL enabled);
|
||||
void setBakeTextureEnabled(BOOL enabled);
|
||||
|
||||
void setInventoryPickType(LLTextureCtrl::EPickInventoryType type);
|
||||
|
||||
static void onPickerCallback(const std::vector<std::string>& filenames, LLHandle<LLFloater> handle);
|
||||
|
||||
protected:
|
||||
|
|
@ -389,6 +403,7 @@ private:
|
|||
bool mCanApply;
|
||||
bool mCanPreview;
|
||||
bool mPreviewSettingChanged;
|
||||
LLTextureCtrl::EPickInventoryType mInventoryPickType;
|
||||
|
||||
|
||||
texture_selected_callback mTextureSelectedCallback;
|
||||
|
|
|
|||
|
|
@ -137,51 +137,79 @@
|
|||
value="Preview Disabled"
|
||||
word_wrap="true"
|
||||
visible="false"
|
||||
width="87" />
|
||||
<combo_box
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Choose Textures, Materials or LIFE!"
|
||||
layout="topleft"
|
||||
left="175"
|
||||
name="textures_material_combo"
|
||||
top="20"
|
||||
width="231">
|
||||
<combo_box.item
|
||||
label="Materials & Textures"
|
||||
name="Materials_Textures"
|
||||
value="0" />
|
||||
<combo_box.item
|
||||
label="Textures"
|
||||
name="Textures"
|
||||
value="1" />
|
||||
<combo_box.item
|
||||
label="Materials"
|
||||
name="Materials"
|
||||
value="2" />
|
||||
</combo_box>
|
||||
<filter_editor
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Filter Textures"
|
||||
layout="topleft"
|
||||
left="175"
|
||||
name="inventory search editor"
|
||||
top="48"
|
||||
width="231" />
|
||||
<asset_filtered_inv_panel
|
||||
allow_multi_select="false"
|
||||
bg_visible="true"
|
||||
bg_alpha_color="DkGray2"
|
||||
border="false"
|
||||
follows="all"
|
||||
height="200"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="inventory panel"
|
||||
top_pad="4"
|
||||
width="231"
|
||||
filter_asset_types="texture|material"/>
|
||||
width="87" />
|
||||
|
||||
<layout_stack name="inventory_stack"
|
||||
width="231"
|
||||
height="276"
|
||||
top="20"
|
||||
left="175"
|
||||
follows="all"
|
||||
animate="false"
|
||||
orientation="vertical">
|
||||
<layout_panel name="combo_layout"
|
||||
border="false"
|
||||
bevel_style="in"
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
visible="false"
|
||||
width="231"
|
||||
height="24">
|
||||
<combo_box
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Choose Textures, Materials or LIFE!"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="textures_material_combo"
|
||||
top="0"
|
||||
width="231">
|
||||
<combo_box.item
|
||||
label="Materials & Textures"
|
||||
name="Materials_Textures"
|
||||
value="0" />
|
||||
<combo_box.item
|
||||
label="Textures"
|
||||
name="Textures"
|
||||
value="1" />
|
||||
<combo_box.item
|
||||
label="Materials"
|
||||
name="Materials"
|
||||
value="2" />
|
||||
</combo_box>
|
||||
</layout_panel>
|
||||
<layout_panel name="inventory_layout"
|
||||
border="false"
|
||||
bevel_style="in"
|
||||
auto_resize="true"
|
||||
user_resize="false"
|
||||
visible="true"
|
||||
width="231"
|
||||
height="252">
|
||||
<filter_editor
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Filter Textures"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="inventory search editor"
|
||||
top="4"
|
||||
width="231" />
|
||||
<asset_filtered_inv_panel
|
||||
allow_multi_select="false"
|
||||
bg_visible="true"
|
||||
bg_alpha_color="DkGray2"
|
||||
border="false"
|
||||
follows="all"
|
||||
height="221"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="inventory panel"
|
||||
top_pad="4"
|
||||
width="231"
|
||||
filter_asset_types="texture|material"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
||||
<!-- middle: local mode -->
|
||||
<button
|
||||
|
|
|
|||
Loading…
Reference in New Issue