SL-19104 Clean up inventory UI to prepare for thumbnails (#66)

meow-7.2.2
Maxim Nikolenko 2023-02-01 18:44:26 +02:00 committed by GitHub
parent 999c8cd3b9
commit ac3f1b54ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 210 additions and 485 deletions

View File

@ -46,6 +46,7 @@ public:
virtual LLFolderType::EType getPreferredType() const = 0;
virtual void showProperties(void) = 0;
virtual BOOL isItemInTrash( void) const { return FALSE; } // TODO: make into pure virtual.
virtual bool isItemInOutfits() const { return false; }
virtual BOOL isAgentInventory() const { return FALSE; }
virtual BOOL isUpToDate() const = 0;
virtual void addChild(LLFolderViewModelItem* child);

View File

@ -1244,6 +1244,16 @@ BOOL LLInvFVBridge::isLinkedObjectInTrash() const
return FALSE;
}
bool LLInvFVBridge::isItemInOutfits() const
{
const LLInventoryModel* model = getInventoryModel();
if(!model) return false;
const LLUUID my_outfits_cat = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false);
return isCOFFolder() || (my_outfits_cat == mUUID) || model->isObjectDescendentOf(mUUID, my_outfits_cat);
}
BOOL LLInvFVBridge::isLinkedObjectMissing() const
{
const LLInventoryObject *obj = getInventoryObject();

View File

@ -115,6 +115,7 @@ public:
virtual BOOL isItemRemovable() const;
virtual BOOL isItemMovable() const;
virtual BOOL isItemInTrash() const;
virtual bool isItemInOutfits() const;
virtual BOOL isLink() const;
virtual BOOL isLibraryItem() const;
//virtual BOOL removeItem() = 0;

View File

@ -596,6 +596,9 @@ bool LLInventoryFilter::checkAgainstSearchVisibility(const LLFolderViewModelItem
if (is_link && ((mFilterOps.mSearchVisibility & VISIBILITY_LINKS) == 0))
return FALSE;
if (listener->isItemInOutfits() && ((mFilterOps.mSearchVisibility & VISIBILITY_OUTFITS) == 0))
return FALSE;
if (listener->isItemInTrash() && ((mFilterOps.mSearchVisibility & VISIBILITY_TRASH) == 0))
return FALSE;
@ -792,6 +795,24 @@ void LLInventoryFilter::toggleSearchVisibilityLinks()
}
}
void LLInventoryFilter::toggleSearchVisibilityOutfits()
{
bool hide_outfits = mFilterOps.mSearchVisibility & VISIBILITY_OUTFITS;
if (hide_outfits)
{
mFilterOps.mSearchVisibility &= ~VISIBILITY_OUTFITS;
}
else
{
mFilterOps.mSearchVisibility |= VISIBILITY_OUTFITS;
}
if (hasFilterString())
{
setModified(hide_outfits ? FILTER_MORE_RESTRICTIVE : FILTER_LESS_RESTRICTIVE);
}
}
void LLInventoryFilter::toggleSearchVisibilityTrash()
{
bool hide_trash = mFilterOps.mSearchVisibility & VISIBILITY_TRASH;

View File

@ -104,7 +104,8 @@ public:
VISIBILITY_NONE = 0,
VISIBILITY_TRASH = 0x1 << 0,
VISIBILITY_LIBRARY = 0x1 << 1,
VISIBILITY_LINKS = 0x1 << 2
VISIBILITY_LINKS = 0x1 << 2,
VISIBILITY_OUTFITS = 0x1 << 3
};
struct FilterOps
@ -228,6 +229,7 @@ public:
void toggleSearchVisibilityLinks();
void toggleSearchVisibilityTrash();
void toggleSearchVisibilityOutfits();
void toggleSearchVisibilityLibrary();
void setSearchVisibilityTypes(U32 types);
void setSearchVisibilityTypes(const Params& params);

View File

@ -113,7 +113,8 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p)
mMenuGearDefault(NULL),
mMenuVisibility(NULL),
mMenuAddHandle(),
mNeedUploadCost(true)
mNeedUploadCost(true),
mMenuViewDefault(NULL)
{
// Menu Callbacks (non contex menus)
mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLPanelMainInventory::doToSelected, this, _2));
@ -237,6 +238,7 @@ BOOL LLPanelMainInventory::postBuild()
mGearMenuButton = getChild<LLMenuButton>("options_gear_btn");
mVisibilityMenuButton = getChild<LLMenuButton>("options_visibility_btn");
mViewMenuButton = getChild<LLMenuButton>("view_btn");
initListCommandsHandlers();
@ -1163,21 +1165,15 @@ void LLFloaterInventoryFinder::selectNoTypes(void* user_data)
void LLPanelMainInventory::initListCommandsHandlers()
{
childSetAction("trash_btn", boost::bind(&LLPanelMainInventory::onTrashButtonClick, this));
childSetAction("add_btn", boost::bind(&LLPanelMainInventory::onAddButtonClick, this));
mTrashButton = getChild<LLDragAndDropButton>("trash_btn");
mTrashButton->setDragAndDropHandler(boost::bind(&LLPanelMainInventory::handleDragAndDropToTrash, this
, _4 // BOOL drop
, _5 // EDragAndDropType cargo_type
, _7 // EAcceptance* accept
));
mCommitCallbackRegistrar.add("Inventory.GearDefault.Custom.Action", boost::bind(&LLPanelMainInventory::onCustomAction, this, _2));
mEnableCallbackRegistrar.add("Inventory.GearDefault.Check", boost::bind(&LLPanelMainInventory::isActionChecked, this, _2));
mEnableCallbackRegistrar.add("Inventory.GearDefault.Enable", boost::bind(&LLPanelMainInventory::isActionEnabled, this, _2));
mMenuGearDefault = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_inventory_gear_default.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
mGearMenuButton->setMenu(mMenuGearDefault);
mMenuViewDefault = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_inventory_view_default.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
mViewMenuButton->setMenu(mMenuViewDefault);
LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory_add.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
mMenuAddHandle = menu->getHandle();
@ -1191,9 +1187,6 @@ void LLPanelMainInventory::initListCommandsHandlers()
void LLPanelMainInventory::updateListCommands()
{
bool trash_enabled = isActionEnabled("delete");
mTrashButton->setEnabled(trash_enabled);
}
void LLPanelMainInventory::onAddButtonClick()
@ -1227,11 +1220,6 @@ void LLPanelMainInventory::showActionMenu(LLMenuGL* menu, std::string spawning_v
}
}
void LLPanelMainInventory::onTrashButtonClick()
{
onClipboardAction("delete");
}
void LLPanelMainInventory::onClipboardAction(const LLSD& userdata)
{
std::string command_name = userdata.asString();
@ -1375,6 +1363,11 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
LLFloaterReg::showInstance("linkreplace", params);
}
if (command_name == "toggle_search_outfits")
{
mActivePanel->getFilter().toggleSearchVisibilityOutfits();
}
if (command_name == "toggle_search_trash")
{
mActivePanel->getFilter().toggleSearchVisibilityTrash();
@ -1534,6 +1527,11 @@ BOOL LLPanelMainInventory::isActionChecked(const LLSD& userdata)
return sort_order_mask & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;
}
if (command_name == "toggle_search_outfits")
{
return (mActivePanel->getFilter().getSearchVisibilityTypes() & LLInventoryFilter::VISIBILITY_OUTFITS) != 0;
}
if (command_name == "toggle_search_trash")
{
return (mActivePanel->getFilter().getSearchVisibilityTypes() & LLInventoryFilter::VISIBILITY_TRASH) != 0;
@ -1552,20 +1550,6 @@ BOOL LLPanelMainInventory::isActionChecked(const LLSD& userdata)
return FALSE;
}
bool LLPanelMainInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept)
{
*accept = ACCEPT_NO;
const bool is_enabled = isActionEnabled("delete");
if (is_enabled) *accept = ACCEPT_YES_MULTI;
if (is_enabled && drop)
{
onClipboardAction("delete");
}
return true;
}
void LLPanelMainInventory::setUploadCostIfNeeded()
{
LLMenuGL* menu = (LLMenuGL*)mMenuAddHandle.get();

View File

@ -158,22 +158,21 @@ protected:
void updateListCommands();
void onAddButtonClick();
void showActionMenu(LLMenuGL* menu, std::string spawning_view_name);
void onTrashButtonClick();
void onClipboardAction(const LLSD& userdata);
BOOL isActionEnabled(const LLSD& command_name);
BOOL isActionChecked(const LLSD& userdata);
void onCustomAction(const LLSD& command_name);
bool handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept);
static bool hasSettingsInventory();
/**
* Set upload cost in "Upload" sub menu.
*/
void setUploadCostIfNeeded();
private:
LLDragAndDropButton* mTrashButton;
LLToggleableMenu* mMenuGearDefault;
LLToggleableMenu* mMenuViewDefault;
LLToggleableMenu* mMenuVisibility;
LLMenuButton* mGearMenuButton;
LLMenuButton* mViewMenuButton;
LLMenuButton* mVisibilityMenuButton;
LLHandle<LLView> mMenuAddHandle;

View File

@ -75,9 +75,6 @@ BOOL LLPanelMarketplaceInbox::postBuild()
void LLPanelMarketplaceInbox::onSelectionChange()
{
LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
sidepanel_inventory->updateVerbs();
}

View File

@ -158,29 +158,11 @@ BOOL LLSidepanelInventory::postBuild()
// UI elements from inventory panel
{
mInventoryPanel = getChild<LLPanel>("sidepanel_inventory_panel");
mInfoBtn = mInventoryPanel->getChild<LLButton>("info_btn");
mInfoBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onInfoButtonClicked, this));
mShareBtn = mInventoryPanel->getChild<LLButton>("share_btn");
mShareBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onShareButtonClicked, this));
mShopBtn = mInventoryPanel->getChild<LLButton>("shop_btn");
mShopBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onShopButtonClicked, this));
mWearBtn = mInventoryPanel->getChild<LLButton>("wear_btn");
mWearBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onWearButtonClicked, this));
mPlayBtn = mInventoryPanel->getChild<LLButton>("play_btn");
mPlayBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onPlayButtonClicked, this));
mTeleportBtn = mInventoryPanel->getChild<LLButton>("teleport_btn");
mTeleportBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onTeleportButtonClicked, this));
mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
LLTabContainer* tabs = mPanelMainInventory->getChild<LLTabContainer>("inventory filter tabs");
tabs->setCommitCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this));
//LLTabContainer* tabs = mPanelMainInventory->getChild<LLTabContainer>("inventory filter tabs");
//tabs->setCommitCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this));
/*
EXT-4846 : "Can we suppress the "Landmarks" and "My Favorites" folder since they have their own Task Panel?"
@ -190,7 +172,7 @@ BOOL LLSidepanelInventory::postBuild()
my_inventory_panel->addHideFolderType(LLFolderType::FT_FAVORITE);
*/
LLOutfitObserver::instance().addCOFChangedCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this));
//LLOutfitObserver::instance().addCOFChangedCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this));
}
// UI elements from item panel
@ -240,9 +222,6 @@ BOOL LLSidepanelInventory::postBuild()
gSavedSettings.getControl("InventoryDisplayInbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayInboxChanged));
// Update the verbs buttons state.
updateVerbs();
return TRUE;
}
@ -431,27 +410,6 @@ void LLSidepanelInventory::onOpen(const LLSD& key)
}
}
void LLSidepanelInventory::onInfoButtonClicked()
{
LLInventoryItem *item = getSelectedItem();
if (item)
{
mItemPanel->reset();
mItemPanel->setItemID(item->getUUID());
showItemInfoPanel();
}
}
void LLSidepanelInventory::onShareButtonClicked()
{
LLAvatarActions::shareWithAvatars(this);
}
void LLSidepanelInventory::onShopButtonClicked()
{
LLWeb::loadURL(gSavedSettings.getString("MarketplaceURL"));
}
void LLSidepanelInventory::performActionOnSelection(const std::string &action)
{
LLFolderViewItem* current_item = mPanelMainInventory->getActivePanel()->getRootFolder()->getCurSelectedItem();
@ -471,47 +429,6 @@ void LLSidepanelInventory::performActionOnSelection(const std::string &action)
static_cast<LLFolderViewModelItemInventory*>(current_item->getViewModelItem())->performAction(mPanelMainInventory->getActivePanel()->getModel(), action);
}
void LLSidepanelInventory::onWearButtonClicked()
{
// Get selected items set.
const std::set<LLUUID> selected_uuids_set = LLAvatarActions::getInventorySelectedUUIDs();
if (selected_uuids_set.empty()) return; // nothing selected
// Convert the set to a vector.
uuid_vec_t selected_uuids_vec;
for (std::set<LLUUID>::const_iterator it = selected_uuids_set.begin(); it != selected_uuids_set.end(); ++it)
{
selected_uuids_vec.push_back(*it);
}
// Wear all selected items.
wear_multiple(selected_uuids_vec, true);
}
void LLSidepanelInventory::onPlayButtonClicked()
{
const LLInventoryItem *item = getSelectedItem();
if (!item)
{
return;
}
switch(item->getInventoryType())
{
case LLInventoryType::IT_GESTURE:
performActionOnSelection("play");
break;
default:
performActionOnSelection("open");
break;
}
}
void LLSidepanelInventory::onTeleportButtonClicked()
{
performActionOnSelection("teleport");
}
void LLSidepanelInventory::onBackButtonClicked()
{
showInventoryPanel();
@ -519,7 +436,7 @@ void LLSidepanelInventory::onBackButtonClicked()
void LLSidepanelInventory::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action)
{
updateVerbs();
}
void LLSidepanelInventory::showItemInfoPanel()
@ -552,69 +469,6 @@ void LLSidepanelInventory::showInventoryPanel()
if (mTaskPanel)
mTaskPanel->setVisible(FALSE);
mInventoryPanel->setVisible(TRUE);
updateVerbs();
}
void LLSidepanelInventory::updateVerbs()
{
mInfoBtn->setEnabled(FALSE);
mShareBtn->setEnabled(FALSE);
mWearBtn->setVisible(FALSE);
mWearBtn->setEnabled(FALSE);
mPlayBtn->setVisible(FALSE);
mPlayBtn->setEnabled(FALSE);
mPlayBtn->setToolTip(std::string(""));
mTeleportBtn->setVisible(FALSE);
mTeleportBtn->setEnabled(FALSE);
mShopBtn->setVisible(TRUE);
mShareBtn->setEnabled(canShare());
const LLInventoryItem *item = getSelectedItem();
if (!item)
return;
bool is_single_selection = getSelectedCount() == 1;
mInfoBtn->setEnabled(is_single_selection);
switch(item->getInventoryType())
{
case LLInventoryType::IT_WEARABLE:
case LLInventoryType::IT_OBJECT:
case LLInventoryType::IT_ATTACHMENT:
mWearBtn->setVisible(TRUE);
mWearBtn->setEnabled(canWearSelected());
mShopBtn->setVisible(FALSE);
break;
case LLInventoryType::IT_SOUND:
mPlayBtn->setVisible(TRUE);
mPlayBtn->setEnabled(TRUE);
mPlayBtn->setToolTip(LLTrans::getString("InventoryPlaySoundTooltip"));
mShopBtn->setVisible(FALSE);
break;
case LLInventoryType::IT_GESTURE:
mPlayBtn->setVisible(TRUE);
mPlayBtn->setEnabled(TRUE);
mPlayBtn->setToolTip(LLTrans::getString("InventoryPlayGestureTooltip"));
mShopBtn->setVisible(FALSE);
break;
case LLInventoryType::IT_ANIMATION:
mPlayBtn->setVisible(TRUE);
mPlayBtn->setEnabled(TRUE);
mPlayBtn->setEnabled(TRUE);
mPlayBtn->setToolTip(LLTrans::getString("InventoryPlayAnimationTooltip"));
mShopBtn->setVisible(FALSE);
break;
case LLInventoryType::IT_LANDMARK:
mTeleportBtn->setVisible(TRUE);
mTeleportBtn->setEnabled(TRUE);
mShopBtn->setVisible(FALSE);
break;
default:
break;
}
}
bool LLSidepanelInventory::canShare()
@ -741,8 +595,6 @@ void LLSidepanelInventory::clearSelections(bool clearMain, bool clearInbox)
{
mInventoryPanelInbox.get()->getRootFolder()->clearSelection();
}
updateVerbs();
}
std::set<LLFolderViewItem*> LLSidepanelInventory::getInboxSelectionList()

View File

@ -81,8 +81,6 @@ public:
bool isInboxEnabled() const { return mInboxEnabled; }
void updateVerbs();
static void cleanup();
protected:
@ -108,22 +106,9 @@ private:
LLPanelMainInventory* mPanelMainInventory;
protected:
void onInfoButtonClicked();
void onShareButtonClicked();
void onShopButtonClicked();
void onWearButtonClicked();
void onPlayButtonClicked();
void onTeleportButtonClicked();
void onBackButtonClicked();
private:
LLButton* mInfoBtn;
LLButton* mShareBtn;
LLButton* mWearBtn;
LLButton* mPlayBtn;
LLButton* mTeleportBtn;
LLButton* mShopBtn;
bool mInboxEnabled;
LLInventoryCategoriesObserver* mCategoriesObserver;

View File

@ -6,6 +6,16 @@
mouse_opaque="false"
name="menu_gear_default"
visible="false">
<menu_item_call
label="New Folder Window"
layout="topleft"
shortcut="control|shift|J"
enabled="false"
name="new_single_folder">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="new_window" />
</menu_item_call>
<menu_item_call
label="New Inventory Window"
layout="topleft"
@ -15,52 +25,14 @@
function="Inventory.GearDefault.Custom.Action"
parameter="new_window" />
</menu_item_call>
<menu_item_separator
layout="topleft" />
<menu_item_check
label="Sort by Name"
<menu_item_call
label="Close All Folders"
layout="topleft"
name="sort_by_name">
name="close_folders">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_by_name" />
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_by_name" />
</menu_item_check>
<menu_item_check
label="Sort by Most Recent"
layout="topleft"
name="sort_by_recent">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_by_recent" />
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_by_recent" />
</menu_item_check>
<menu_item_check
label="Sort Folders Always by Name"
layout="topleft"
name="sort_folders_by_name">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_folders_by_name" />
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_folders_by_name" />
</menu_item_check>
<menu_item_check
label="Sort System Folders to Top"
layout="topleft"
name="sort_system_folders_to_top">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_system_folders_to_top" />
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_system_folders_to_top" />
</menu_item_check>
parameter="close_folders" />
</menu_item_call>
<menu_item_separator
layout="topleft" />
<menu_item_call
@ -79,29 +51,6 @@
function="Inventory.GearDefault.Custom.Action"
parameter="reset_filters" />
</menu_item_call>
<menu_item_call
label="Close All Folders"
layout="topleft"
name="close_folders">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="close_folders" />
</menu_item_call>
<menu_item_separator
layout="topleft" />
<menu_item_call
label="Empty Lost and Found"
layout="topleft"
name="empty_lostnfound">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="empty_lostnfound" />
<on_enable
function="Inventory.GearDefault.Enable"
parameter="empty_lostnfound" />
</menu_item_call>
<menu_item_separator
layout="topleft" />
<menu_item_call
label="Save Texture As"
layout="topleft"
@ -156,7 +105,17 @@
</menu_item_call>
<menu_item_separator
layout="topleft" />
<menu_item_call
label="Empty Lost and Found"
layout="topleft"
name="empty_lostnfound">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="empty_lostnfound" />
<on_enable
function="Inventory.GearDefault.Enable"
parameter="empty_lostnfound" />
</menu_item_call>
<menu_item_call
label="Empty Trash"
layout="topleft"

View File

@ -6,6 +6,17 @@
mouse_opaque="false"
name="menu_search_visibility"
visible="false">
<menu_item_check
label="Search outfit folders"
layout="topleft"
name="search_outfits">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="toggle_search_outfits" />
<on_check
function="Inventory.GearDefault.Check"
parameter="toggle_search_outfits" />
</menu_item_check>
<menu_item_check
label="Search Trash"
layout="topleft"

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<toggleable_menu
bottom="806"
layout="topleft"
left="0"
mouse_opaque="false"
name="menu_view_default"
visible="false">
<menu_item_check
label="Sort by Name"
layout="topleft"
name="sort_by_name">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_by_name" />
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_by_name" />
</menu_item_check>
<menu_item_check
label="Sort by Most Recent"
layout="topleft"
name="sort_by_recent">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_by_recent" />
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_by_recent" />
</menu_item_check>
<menu_item_check
label="Sort Folders Always by Name"
layout="topleft"
name="sort_folders_by_name">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_folders_by_name" />
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_folders_by_name" />
</menu_item_check>
<menu_item_check
label="Sort System Folders to Top"
layout="topleft"
name="sort_system_folders_to_top">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_system_folders_to_top" />
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_system_folders_to_top" />
</menu_item_check>
</toggleable_menu>

View File

@ -7,7 +7,7 @@
min_height="300"
min_width="240"
name="main inventory panel"
width="330">
width="355">
<panel.string
name="Itemcount">
</panel.string>
@ -41,11 +41,11 @@
<combo_box
height="23"
layout="topleft"
left="10"
left="3"
top="18"
name="search_type"
follows="top|left"
width="88">
width="67">
<item
label="Name"
name="Name"
@ -69,7 +69,7 @@
height="23"
image_overlay="Inv_Toolbar_SearchVisibility"
layout="topleft"
left_pad="3"
left_pad="1"
name="options_visibility_btn"
width="31" />
<filter_editor
@ -78,15 +78,64 @@
height="23"
label="Enter search text"
layout="topleft"
left_pad="3"
left_pad="1"
max_length_chars="300"
highlight_text_field="true"
name="inventory search editor"
width="177" />
width="99" />
<menu_button
follows="top|right"
tool_tip="Show additional options"
height="23"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="OptionsMenu_Off"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="1"
name="options_gear_btn"
width="31" />
<menu_button
follows="top|right"
tool_tip="View/sort options"
height="23"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Conv_toolbar_sort"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="1"
name="view_btn"
width="31" />
<button
follows="top|right"
height="23"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="AddItem_Off"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="1"
name="add_btn"
tool_tip="Add new item"
width="31" />
<button
follows="top|right"
tool_tip="Toggles between traditional and single-folder views"
height="23"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Command_Map_Icon"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="1"
enabled="false"
name="view_mode_btn"
width="31" />
<tab_container
follows="all"
halign="center"
height="339"
height="372"
layout="topleft"
left="7"
name="inventory filter tabs"
@ -142,92 +191,4 @@
scroll.reserve_scroll_corner="false">
</inventory_panel>
</tab_container>
<layout_stack
animate="false"
border_size="0"
follows="left|right|bottom"
height="25"
layout="topleft"
orientation="horizontal"
top_pad="0"
left="10"
name="bottom_panel"
width="307">
<layout_panel
auto_resize="false"
height="25"
layout="topleft"
name="options_gear_btn_panel"
width="32">
<menu_button
follows="bottom|left"
tool_tip="Show additional options"
height="25"
image_hover_unselected="Toolbar_Left_Over"
image_overlay="OptionsMenu_Off"
image_selected="Toolbar_Left_Selected"
image_unselected="Toolbar_Left_Off"
layout="topleft"
left="0"
name="options_gear_btn"
top="0"
width="31" />
</layout_panel>
<layout_panel
auto_resize="false"
height="25"
layout="topleft"
name="add_btn_panel"
width="32">
<button
follows="bottom|left"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="AddItem_Off"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left="0"
name="add_btn"
tool_tip="Add new item"
top="0"
width="31" />
</layout_panel>
<layout_panel
auto_resize="true"
height="25"
layout="topleft"
name="dummy_panel"
width="212">
<icon
follows="bottom|left|right"
height="25"
image_name="Toolbar_Middle_Off"
layout="topleft"
left="0"
top="0"
name="dummy_icon"
width="211" />
</layout_panel>
<layout_panel
auto_resize="false"
height="25"
layout="topleft"
name="trash_btn_panel"
width="31">
<dnd_button
follows="bottom|left"
height="25"
image_hover_unselected="Toolbar_Right_Over"
image_overlay="TrashItem_Off"
image_selected="Toolbar_Right_Selected"
image_unselected="Toolbar_Right_Off"
left="0"
layout="topleft"
name="trash_btn"
tool_tip="Remove selected item"
top="0"
width="31"/>
</layout_panel>
</layout_stack>
</panel>

View File

@ -7,7 +7,7 @@
min_height="350"
min_width="240"
name="objects panel"
width="333">
width="358">
<panel
follows="all"
layout="topleft"
@ -18,7 +18,7 @@
height="570"
visible="true"
default_tab_group="1"
width="330">
width="355">
<layout_stack
follows="left|right|top|bottom"
layout="topleft"
@ -27,15 +27,15 @@
tab_group="1"
orientation="vertical"
name="inventory_layout_stack"
height="535"
width="330">
height="565"
width="355">
<layout_panel
name="main_inventory_layout_panel"
layout="topleft"
auto_resize="true"
user_resize="true"
min_dim="150"
width="330"
width="355"
follows="bottom|left|right"
height="300">
<panel
@ -48,10 +48,10 @@
top="0"
label=""
height="300"
width="330" />
width="355" />
</layout_panel>
<layout_panel
width="330"
width="355"
layout="topleft"
auto_resize="false"
user_resize="true"
@ -133,117 +133,6 @@ Purchases from the marketplace will be delivered here.
</panel>
</layout_panel>
</layout_stack>
<panel follows="bottom|left|right"
height="30"
layout="topleft"
name="button_panel"
left="9"
top_pad="7"
width="308">
<layout_stack follows="bottom|left|right"
height="23"
layout="topleft"
mouse_opaque="false"
name="button_panel_ls"
left="0"
orientation="horizontal"
top="0"
width="308">
<layout_panel follows="bottom|left|right"
height="23"
layout="bottomleft"
left="0"
mouse_opaque="false"
name="info_btn_lp"
auto_resize="true"
width="101">
<button enabled="true"
follows="bottom|left|right"
height="23"
label="Profile"
layout="topleft"
left="1"
name="info_btn"
tool_tip="Show object profile"
top="0"
width="100" />
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="1"
mouse_opaque="false"
name="share_btn_lp"
auto_resize="true"
width="100">
<button
enabled="true"
follows="bottom|left|right"
height="23"
label="Share"
layout="topleft"
left="1"
name="share_btn"
tool_tip="Share an inventory item"
top="0"
width="99" />
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="1"
mouse_opaque="false"
name="shop_btn_lp"
auto_resize="true"
width="100">
<button
enabled="true"
follows="bottom|left|right"
height="23"
label="Shop"
layout="topleft"
left="1"
name="shop_btn"
tool_tip="Open Marketplace webpage"
top="0"
width="99" />
<button
enabled="false"
follows="bottom|left|right"
height="23"
label="Wear"
layout="topleft"
left="1"
name="wear_btn"
tool_tip="Wear seleceted outfit"
top="0"
width="99" />
<button
enabled="false"
follows="bottom|left|right"
height="23"
label="Play"
layout="topleft"
name="play_btn"
left="1"
top="0"
width="99" />
<button
enabled="false"
follows="bottom|left|right"
height="23"
label="Teleport"
layout="topleft"
left="1"
name="teleport_btn"
tool_tip="Teleport to the selected area"
top="0"
width="99" />
</layout_panel>
</layout_stack>
</panel>
</panel>
<panel
follows="all"