merge from viewer-public
commit
e2411ded41
|
|
@ -1122,11 +1122,6 @@ void LLBottomTray::initStateProcessedObjectMap()
|
|||
mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, mMovementPanel));
|
||||
mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, mCamPanel));
|
||||
mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, mSnapshotPanel));
|
||||
|
||||
mDummiesMap.insert(std::make_pair(RS_BUTTON_GESTURES, getChild<LLUICtrl>("after_gesture_panel")));
|
||||
mDummiesMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, getChild<LLUICtrl>("after_movement_panel")));
|
||||
mDummiesMap.insert(std::make_pair(RS_BUTTON_CAMERA, getChild<LLUICtrl>("after_cam_panel")));
|
||||
mDummiesMap.insert(std::make_pair(RS_BUTTON_SPEAK, getChild<LLUICtrl>("after_speak_panel")));
|
||||
}
|
||||
|
||||
void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool visible)
|
||||
|
|
@ -1140,12 +1135,6 @@ void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool vis
|
|||
}
|
||||
|
||||
panel->setVisible(visible);
|
||||
|
||||
if (mDummiesMap.count(shown_object_type))
|
||||
{
|
||||
// Hide/show layout panel for dummy icon.
|
||||
mDummiesMap[shown_object_type]->getParent()->setVisible(visible);
|
||||
}
|
||||
}
|
||||
|
||||
void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification)
|
||||
|
|
@ -1168,20 +1157,13 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible
|
|||
return false;
|
||||
}
|
||||
|
||||
const S32 dummy_width = mDummiesMap.count(object_type)
|
||||
? mDummiesMap[object_type]->getParent()->getRect().getWidth()
|
||||
: 0;
|
||||
|
||||
bool is_set = true;
|
||||
|
||||
if (visible)
|
||||
{
|
||||
// Assume that only chiclet panel can be auto-resized and
|
||||
// don't take into account width of dummy widgets
|
||||
// Assume that only chiclet panel can be auto-resized
|
||||
const S32 available_width =
|
||||
mChicletPanel->getParent()->getRect().getWidth() -
|
||||
mChicletPanel->getMinWidth() -
|
||||
dummy_width;
|
||||
mChicletPanel->getParent()->getRect().getWidth() - mChicletPanel->getMinWidth();
|
||||
|
||||
S32 preferred_width = mObjectDefaultWidthMap[object_type];
|
||||
S32 current_width = cur_panel->getRect().getWidth();
|
||||
|
|
@ -1249,7 +1231,7 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible
|
|||
// Shrink buttons if needed
|
||||
if (is_set && decrease_width)
|
||||
{
|
||||
processWidthDecreased( -result_width - dummy_width );
|
||||
processWidthDecreased( -result_width);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -1264,7 +1246,7 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible
|
|||
// Extend other buttons if need
|
||||
if (delta_width)
|
||||
{
|
||||
processWidthIncreased(delta_width + dummy_width);
|
||||
processWidthIncreased(delta_width);
|
||||
}
|
||||
}
|
||||
return is_set;
|
||||
|
|
|
|||
|
|
@ -205,9 +205,6 @@ private:
|
|||
typedef std::map<EResizeState, S32> state_object_width_map_t;
|
||||
state_object_width_map_t mObjectDefaultWidthMap;
|
||||
|
||||
typedef std::map<EResizeState, LLUICtrl*> dummies_map_t;
|
||||
dummies_map_t mDummiesMap;
|
||||
|
||||
protected:
|
||||
|
||||
LLBottomTray(const LLSD& key = LLSD());
|
||||
|
|
|
|||
|
|
@ -94,7 +94,6 @@ private:
|
|||
static void doSellLand(void *userdata);
|
||||
bool onConfirmSale(const LLSD& notification, const LLSD& response);
|
||||
static void doShowObjects(void *userdata);
|
||||
static bool callbackHighlightTransferable(const LLSD& notification, const LLSD& response);
|
||||
|
||||
void callbackAvatarPick(const std::vector<std::string>& names, const uuid_vec_t& ids);
|
||||
|
||||
|
|
@ -102,6 +101,7 @@ public:
|
|||
virtual BOOL postBuild();
|
||||
|
||||
bool setParcel(LLViewerRegion* region, LLParcelSelectionHandle parcel);
|
||||
static bool callbackHighlightTransferable(const LLSD& notification, const LLSD& response);
|
||||
};
|
||||
|
||||
// static
|
||||
|
|
@ -423,11 +423,13 @@ void LLFloaterSellLandUI::doShowObjects(void *userdata)
|
|||
|
||||
send_parcel_select_objects(parcel->getLocalID(), RT_SELL);
|
||||
|
||||
// we shouldn't pass callback functor since it is registered in LLFunctorRegistration
|
||||
LLNotificationsUtil::add("TransferObjectsHighlighted",
|
||||
LLSD(), LLSD(),
|
||||
&LLFloaterSellLandUI::callbackHighlightTransferable);
|
||||
LLSD(), LLSD());
|
||||
}
|
||||
|
||||
static LLNotificationFunctorRegistration tr("TransferObjectsHighlighted", &LLFloaterSellLandUI::callbackHighlightTransferable);
|
||||
|
||||
// static
|
||||
bool LLFloaterSellLandUI::callbackHighlightTransferable(const LLSD& notification, const LLSD& data)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -997,46 +997,36 @@ void LLInvFVBridge::purgeItem(LLInventoryModel *model, const LLUUID &uuid)
|
|||
}
|
||||
}
|
||||
|
||||
bool LLInvFVBridge::isInOutfitsSidePanel() const
|
||||
BOOL LLInvFVBridge::isInOutfitsSidePanel() const
|
||||
{
|
||||
LLInventoryPanel *my_panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());
|
||||
LLPanelOutfitsInventory *outfit_panel =
|
||||
dynamic_cast<LLPanelOutfitsInventory*>(LLSideTray::getInstance()->getPanel("panel_outfits_inventory"));
|
||||
if (!outfit_panel)
|
||||
return false;
|
||||
return FALSE;
|
||||
return outfit_panel->isTabPanel(my_panel);
|
||||
}
|
||||
|
||||
bool LLInvFVBridge::canShare()
|
||||
BOOL LLInvFVBridge::canShare() const
|
||||
{
|
||||
const LLInventoryModel* model = getInventoryModel();
|
||||
if(!model)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!model) return FALSE;
|
||||
|
||||
LLViewerInventoryItem *item = model->getItem(mUUID);
|
||||
const LLViewerInventoryItem *item = model->getItem(mUUID);
|
||||
if (item)
|
||||
{
|
||||
bool allowed = false;
|
||||
allowed = LLInventoryCollectFunctor::itemTransferCommonlyAllowed(item);
|
||||
if (allowed &&
|
||||
!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
|
||||
{
|
||||
allowed = false;
|
||||
}
|
||||
if (allowed &&
|
||||
!item->getPermissions().allowCopyBy(gAgent.getID()))
|
||||
{
|
||||
allowed = false;
|
||||
}
|
||||
return allowed;
|
||||
if (!LLInventoryCollectFunctor::itemTransferCommonlyAllowed(item))
|
||||
return FALSE;
|
||||
if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
|
||||
return FALSE;
|
||||
if (!item->getPermissions().allowCopyBy(gAgent.getID()))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LLViewerInventoryCategory* cat = model->getCategory(mUUID);
|
||||
|
||||
// All categories can be given.
|
||||
return cat != NULL;
|
||||
const LLViewerInventoryCategory* cat = model->getCategory(mUUID);
|
||||
return (cat != NULL);
|
||||
}
|
||||
|
||||
// +=================================================+
|
||||
|
|
@ -4095,12 +4085,11 @@ LLObjectBridge::LLObjectBridge(LLInventoryPanel* inventory,
|
|||
const LLUUID& uuid,
|
||||
LLInventoryType::EType type,
|
||||
U32 flags) :
|
||||
LLItemBridge(inventory, root, uuid),
|
||||
mInvType(type)
|
||||
LLItemBridge(inventory, root, uuid)
|
||||
{
|
||||
mAttachPt = (flags & 0xff); // low bye of inventory flags
|
||||
|
||||
mIsMultiObject = ( flags & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS ) ? TRUE: FALSE;
|
||||
mInvType = type;
|
||||
}
|
||||
|
||||
LLUIImagePtr LLObjectBridge::getIcon() const
|
||||
|
|
@ -4447,9 +4436,9 @@ LLWearableBridge::LLWearableBridge(LLInventoryPanel* inventory,
|
|||
LLWearableType::EType wearable_type) :
|
||||
LLItemBridge(inventory, root, uuid),
|
||||
mAssetType( asset_type ),
|
||||
mInvType(inv_type),
|
||||
mWearableType(wearable_type)
|
||||
{
|
||||
mInvType = inv_type;
|
||||
}
|
||||
|
||||
// *NOTE: hack to get from avatar inventory to avatar
|
||||
|
|
|
|||
|
|
@ -74,21 +74,26 @@ public:
|
|||
U32 flags = 0x00);
|
||||
virtual ~LLInvFVBridge() {}
|
||||
|
||||
virtual const LLUUID& getUUID() const { return mUUID; }
|
||||
BOOL isInOutfitsSidePanel() const; // allow context menus to be customized for side panel
|
||||
BOOL canShare() const;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// LLInvFVBridge functionality
|
||||
//--------------------------------------------------------------------
|
||||
virtual const LLUUID& getUUID() const { return mUUID; }
|
||||
virtual void clearDisplayName() {}
|
||||
virtual void restoreItem() {}
|
||||
virtual void restoreToWorld() {}
|
||||
|
||||
// LLFolderViewEventListener functions
|
||||
//--------------------------------------------------------------------
|
||||
// Inherited LLFolderViewEventListener functions
|
||||
//--------------------------------------------------------------------
|
||||
virtual const std::string& getName() const;
|
||||
virtual const std::string& getDisplayName() const;
|
||||
virtual PermissionMask getPermissionMask() const;
|
||||
virtual LLFolderType::EType getPreferredType() const;
|
||||
virtual time_t getCreationDate() const;
|
||||
virtual LLFontGL::StyleFlags getLabelStyle() const
|
||||
{
|
||||
return LLFontGL::NORMAL;
|
||||
}
|
||||
virtual LLFontGL::StyleFlags getLabelStyle() const { return LLFontGL::NORMAL; }
|
||||
virtual std::string getLabelSuffix() const { return LLStringUtil::null; }
|
||||
virtual void openItem() {}
|
||||
virtual void closeItem() {}
|
||||
|
|
@ -100,7 +105,6 @@ public:
|
|||
virtual BOOL isItemMovable() const;
|
||||
virtual BOOL isItemInTrash() const;
|
||||
virtual BOOL isLink() const;
|
||||
|
||||
//virtual BOOL removeItem() = 0;
|
||||
virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch);
|
||||
virtual void move(LLFolderViewEventListener* new_parent_bridge) {}
|
||||
|
|
@ -120,14 +124,6 @@ public:
|
|||
void* cargo_data) { return FALSE; }
|
||||
virtual LLInventoryType::EType getInventoryType() const { return mInvType; }
|
||||
|
||||
// LLInvFVBridge functionality
|
||||
virtual void clearDisplayName() {}
|
||||
|
||||
// Allow context menus to be customized for side panel.
|
||||
bool isInOutfitsSidePanel() const;
|
||||
|
||||
bool canShare();
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Convenience functions for adding various common menu options.
|
||||
//--------------------------------------------------------------------
|
||||
|
|
@ -147,7 +143,7 @@ protected:
|
|||
BOOL isLinkedObjectMissing() const; // Is this a linked obj whose baseobj is not in inventory?
|
||||
|
||||
BOOL isAgentInventory() const; // false if lost or in the inventory library
|
||||
BOOL isCOFFolder() const; // true if COF or descendent of.
|
||||
BOOL isCOFFolder() const; // true if COF or descendent of
|
||||
virtual BOOL isItemPermissive() const;
|
||||
static void changeItemParent(LLInventoryModel* model,
|
||||
LLViewerInventoryItem* item,
|
||||
|
|
@ -168,7 +164,7 @@ protected:
|
|||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Class LLInvFVBridge
|
||||
// Class LLInvFVBridgeBuilder
|
||||
//
|
||||
// This class intended to build Folder View Bridge via LLInvFVBridge::createBridge.
|
||||
// It can be overridden with another way of creation necessary Inventory-Folder-View-Bridge.
|
||||
|
|
@ -195,7 +191,6 @@ public:
|
|||
LLInvFVBridge(inventory, root, uuid) {}
|
||||
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
|
||||
virtual void selectItem();
|
||||
virtual void restoreItem();
|
||||
virtual void restoreToWorld();
|
||||
|
|
@ -214,30 +209,32 @@ public:
|
|||
virtual BOOL hasChildren() const { return FALSE; }
|
||||
virtual BOOL isUpToDate() const { return TRUE; }
|
||||
|
||||
// override for LLInvFVBridge
|
||||
virtual void clearDisplayName() { mDisplayName.clear(); }
|
||||
/*virtual*/ void clearDisplayName() { mDisplayName.clear(); }
|
||||
|
||||
LLViewerInventoryItem* getItem() const;
|
||||
|
||||
bool isAddAction(std::string action) const;
|
||||
bool isRemoveAction(std::string action) const;
|
||||
|
||||
protected:
|
||||
BOOL confirmRemoveItem(const LLSD& notification, const LLSD& response);
|
||||
virtual BOOL isItemPermissive() const;
|
||||
static void buildDisplayName(LLInventoryItem* item, std::string& name);
|
||||
mutable std::string mDisplayName;
|
||||
|
||||
BOOL confirmRemoveItem(const LLSD& notification, const LLSD& response);
|
||||
mutable std::string mDisplayName;
|
||||
};
|
||||
|
||||
class LLFolderBridge : public LLInvFVBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
BOOL dragItemIntoFolder(LLInventoryItem* inv_item,
|
||||
BOOL drop);
|
||||
BOOL dragCategoryIntoFolder(LLInventoryCategory* inv_category,
|
||||
BOOL drop);
|
||||
LLFolderBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLInvFVBridge(inventory, root, uuid),
|
||||
mCallingCards(FALSE),
|
||||
mWearables(FALSE),
|
||||
mMenu(NULL) {}
|
||||
BOOL dragItemIntoFolder(LLInventoryItem* inv_item, BOOL drop);
|
||||
BOOL dragCategoryIntoFolder(LLInventoryCategory* inv_category, BOOL drop);
|
||||
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void openItem();
|
||||
virtual void closeItem();
|
||||
|
|
@ -278,18 +275,11 @@ public:
|
|||
LLViewerInventoryCategory* getCategory() const;
|
||||
|
||||
protected:
|
||||
LLFolderBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLInvFVBridge(inventory, root, uuid),
|
||||
mCallingCards(FALSE),
|
||||
mWearables(FALSE),
|
||||
mMenu(NULL) {}
|
||||
|
||||
// menu callbacks
|
||||
//--------------------------------------------------------------------
|
||||
// Menu callbacks
|
||||
//--------------------------------------------------------------------
|
||||
static void pasteClipboard(void* user_data);
|
||||
static void createNewCategory(void* user_data);
|
||||
|
||||
static void createNewShirt(void* user_data);
|
||||
static void createNewPants(void* user_data);
|
||||
static void createNewShoes(void* user_data);
|
||||
|
|
@ -310,15 +300,17 @@ protected:
|
|||
void modifyOutfit(BOOL append);
|
||||
void determineFolderType();
|
||||
|
||||
/**
|
||||
* Returns a copy of current menu items.
|
||||
*/
|
||||
menuentry_vec_t getMenuItems() { return mItems; }
|
||||
menuentry_vec_t getMenuItems() { return mItems; } // returns a copy of current menu items
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Messy hacks for handling folder options
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
static LLFolderBridge* sSelf;
|
||||
static void staticFolderOptionsMenu();
|
||||
void folderOptionsMenu();
|
||||
|
||||
private:
|
||||
BOOL mCallingCards;
|
||||
BOOL mWearables;
|
||||
|
|
@ -329,63 +321,57 @@ private:
|
|||
|
||||
class LLTextureBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void openItem();
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
|
||||
protected:
|
||||
LLTextureBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid,
|
||||
LLInventoryType::EType type) :
|
||||
LLItemBridge(inventory, root, uuid),
|
||||
mInvType(type)
|
||||
{}
|
||||
LLItemBridge(inventory, root, uuid)
|
||||
{
|
||||
mInvType = type;
|
||||
}
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void openItem();
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
bool canSaveTexture(void);
|
||||
LLInventoryType::EType mInvType;
|
||||
};
|
||||
|
||||
class LLSoundBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
LLSoundBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
virtual void openItem();
|
||||
virtual void previewItem();
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
static void openSoundPreview(void*);
|
||||
|
||||
protected:
|
||||
LLSoundBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
};
|
||||
|
||||
class LLLandmarkBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
LLLandmarkBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid,
|
||||
U32 flags = 0x00);
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void openItem();
|
||||
|
||||
protected:
|
||||
LLLandmarkBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid,
|
||||
U32 flags = 0x00);
|
||||
protected:
|
||||
BOOL mVisited;
|
||||
};
|
||||
|
||||
class LLCallingCardBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
LLCallingCardBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* folder,
|
||||
const LLUUID& uuid );
|
||||
~LLCallingCardBridge();
|
||||
virtual std::string getLabelSuffix() const;
|
||||
//virtual const std::string& getDisplayName() const;
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
|
|
@ -396,72 +382,58 @@ public:
|
|||
EDragAndDropType cargo_type,
|
||||
void* cargo_data);
|
||||
void refreshFolderViewItem();
|
||||
protected:
|
||||
LLCallingCardBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* folder,
|
||||
const LLUUID& uuid );
|
||||
~LLCallingCardBridge();
|
||||
protected:
|
||||
LLCallingCardObserver* mObserver;
|
||||
};
|
||||
|
||||
|
||||
class LLNotecardBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
virtual void openItem();
|
||||
protected:
|
||||
LLNotecardBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
virtual void openItem();
|
||||
};
|
||||
|
||||
class LLGestureBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
LLGestureBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
// Only suffix for gesture items, not task items, because only
|
||||
// gestures in your inventory can be active.
|
||||
virtual LLFontGL::StyleFlags getLabelStyle() const;
|
||||
virtual std::string getLabelSuffix() const;
|
||||
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void openItem();
|
||||
virtual BOOL removeItem();
|
||||
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
|
||||
static void playGesture(const LLUUID& item_id);
|
||||
|
||||
protected:
|
||||
LLGestureBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid)
|
||||
: LLItemBridge(inventory, root, uuid) {}
|
||||
};
|
||||
|
||||
class LLAnimationBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
|
||||
virtual void openItem();
|
||||
|
||||
protected:
|
||||
LLAnimationBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
virtual void openItem();
|
||||
};
|
||||
|
||||
class LLObjectBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
LLObjectBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid,
|
||||
LLInventoryType::EType type,
|
||||
U32 flags);
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void openItem();
|
||||
|
|
@ -469,37 +441,32 @@ public:
|
|||
virtual std::string getLabelSuffix() const;
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
virtual BOOL renameItem(const std::string& new_name);
|
||||
|
||||
LLInventoryObject* getObject() const;
|
||||
protected:
|
||||
LLObjectBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid,
|
||||
LLInventoryType::EType type,
|
||||
U32 flags);
|
||||
protected:
|
||||
static LLUUID sContextMenuItemID; // Only valid while the context menu is open.
|
||||
LLInventoryType::EType mInvType;
|
||||
static LLUUID sContextMenuItemID; // Only valid while the context menu is open.
|
||||
U32 mAttachPt;
|
||||
BOOL mIsMultiObject;
|
||||
};
|
||||
|
||||
class LLLSLTextBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
virtual void openItem();
|
||||
protected:
|
||||
LLLSLTextBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid ) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
virtual void openItem();
|
||||
};
|
||||
|
||||
class LLWearableBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
LLWearableBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid,
|
||||
LLAssetType::EType asset_type,
|
||||
LLInventoryType::EType inv_type,
|
||||
LLWearableType::EType wearable_type);
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void openItem();
|
||||
|
|
@ -525,51 +492,38 @@ public:
|
|||
static void removeItemFromAvatar(LLViewerInventoryItem *item);
|
||||
static void removeAllClothesFromAvatar();
|
||||
void removeFromAvatar();
|
||||
|
||||
protected:
|
||||
LLWearableBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid,
|
||||
LLAssetType::EType asset_type,
|
||||
LLInventoryType::EType inv_type,
|
||||
LLWearableType::EType wearable_type);
|
||||
protected:
|
||||
LLAssetType::EType mAssetType;
|
||||
LLInventoryType::EType mInvType;
|
||||
LLWearableType::EType mWearableType;
|
||||
};
|
||||
|
||||
class LLLinkItemBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
virtual const std::string& getPrefix() { return sPrefix; }
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
protected:
|
||||
LLLinkItemBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
virtual const std::string& getPrefix() { return sPrefix; }
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
protected:
|
||||
static std::string sPrefix;
|
||||
};
|
||||
|
||||
class LLLinkFolderBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
LLLinkFolderBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
virtual const std::string& getPrefix() { return sPrefix; }
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void gotoItem();
|
||||
protected:
|
||||
LLLinkFolderBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
const LLUUID &getFolderID() const;
|
||||
protected:
|
||||
static std::string sPrefix;
|
||||
};
|
||||
|
||||
|
|
@ -603,47 +557,33 @@ protected:
|
|||
LLInventoryModel* mModel;
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Recent Inventory Panel related classes
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
/************************************************************************/
|
||||
/* Recent Inventory Panel related classes */
|
||||
/************************************************************************/
|
||||
class LLRecentInventoryBridgeBuilder;
|
||||
/**
|
||||
* Overridden version of the Inventory-Folder-View-Bridge for Folders
|
||||
*/
|
||||
// Overridden version of the Inventory-Folder-View-Bridge for Folders
|
||||
class LLRecentItemsFolderBridge : public LLFolderBridge
|
||||
{
|
||||
friend class LLRecentInventoryBridgeBuilder;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Creates context menu for Folders related to Recent Inventory Panel.
|
||||
*
|
||||
* It uses base logic and than removes from visible items "New..." menu items.
|
||||
*/
|
||||
/*virtual*/ void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
|
||||
protected:
|
||||
// Creates context menu for Folders related to Recent Inventory Panel.
|
||||
// Uses base logic and than removes from visible items "New..." menu items.
|
||||
LLRecentItemsFolderBridge(LLInventoryType::EType type,
|
||||
LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLFolderBridge(inventory, root, uuid)
|
||||
{
|
||||
mInvType = type;
|
||||
}
|
||||
/*virtual*/ void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
};
|
||||
|
||||
/**
|
||||
* Bridge builder to create Inventory-Folder-View-Bridge for Recent Inventory Panel
|
||||
*/
|
||||
// Bridge builder to create Inventory-Folder-View-Bridge for Recent Inventory Panel
|
||||
class LLRecentInventoryBridgeBuilder : public LLInventoryFVBridgeBuilder
|
||||
{
|
||||
/**
|
||||
* Overrides FolderBridge for Recent Inventory Panel.
|
||||
*
|
||||
* It use base functionality for bridges other than FolderBridge.
|
||||
*/
|
||||
public:
|
||||
// Overrides FolderBridge for Recent Inventory Panel.
|
||||
// It use base functionality for bridges other than FolderBridge.
|
||||
virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type,
|
||||
LLAssetType::EType actual_asset_type,
|
||||
LLInventoryType::EType inv_type,
|
||||
|
|
@ -651,11 +591,8 @@ class LLRecentInventoryBridgeBuilder : public LLInventoryFVBridgeBuilder
|
|||
LLFolderView* root,
|
||||
const LLUUID& uuid,
|
||||
U32 flags = 0x00) const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
void wear_inventory_item_on_avatar(LLInventoryItem* item);
|
||||
|
||||
void rez_attachment(LLViewerInventoryItem* item,
|
||||
|
|
|
|||
|
|
@ -92,39 +92,30 @@ LLUUID LLInventoryState::sWearNewClothingTransactionID;
|
|||
///----------------------------------------------------------------------------
|
||||
|
||||
// static
|
||||
bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* item)
|
||||
bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(const LLInventoryItem* item)
|
||||
{
|
||||
if (!item)
|
||||
return false;
|
||||
|
||||
bool allowed = false;
|
||||
|
||||
switch(item->getType())
|
||||
{
|
||||
case LLAssetType::AT_CALLINGCARD:
|
||||
// not allowed
|
||||
return false;
|
||||
break;
|
||||
|
||||
case LLAssetType::AT_OBJECT:
|
||||
if (isAgentAvatarValid() && !gAgentAvatarp->isWearingAttachment(item->getUUID()))
|
||||
{
|
||||
allowed = true;
|
||||
}
|
||||
return true;
|
||||
break;
|
||||
|
||||
case LLAssetType::AT_BODYPART:
|
||||
case LLAssetType::AT_CLOTHING:
|
||||
if(!gAgentWearables.isWearingItem(item->getUUID()))
|
||||
{
|
||||
allowed = true;
|
||||
}
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
allowed = true;
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
||||
return allowed;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool LLIsType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public:
|
|||
virtual ~LLInventoryCollectFunctor(){};
|
||||
virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item) = 0;
|
||||
|
||||
static bool itemTransferCommonlyAllowed(LLInventoryItem* item);
|
||||
static bool itemTransferCommonlyAllowed(const LLInventoryItem* item);
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
|
|||
|
|
@ -112,8 +112,8 @@ void LLPersistentNotificationStorage::saveNotifications()
|
|||
LLNotificationPtr notification = *it;
|
||||
|
||||
// After a notification was placed in Persist channel, it can become
|
||||
// responded, expired - in this case we are should not save it
|
||||
if(notification->isRespondedTo()
|
||||
// responded, expired or canceled - in this case we are should not save it
|
||||
if(notification->isRespondedTo() || notification->isCancelled()
|
||||
|| notification->isExpired())
|
||||
{
|
||||
continue;
|
||||
|
|
@ -208,7 +208,6 @@ LLNotificationResponderInterface* LLResponderRegistry::createResponder(const std
|
|||
build_map_t::const_iterator it = sBuildMap.find(notification_name);
|
||||
if(sBuildMap.end() == it)
|
||||
{
|
||||
llwarns << "Responder for notification \'" << notification_name << "\' is not registered" << llendl;
|
||||
return NULL;
|
||||
}
|
||||
responder_constructor_t ctr = it->second;
|
||||
|
|
|
|||
|
|
@ -98,26 +98,75 @@ public:
|
|||
{
|
||||
if (!gInventory.isInventoryUsable()) return;
|
||||
|
||||
LLUUID cof = LLAppearanceMgr::getInstance()->getCOF();
|
||||
if (cof.isNull()) return;
|
||||
bool panel_updated = checkCOF();
|
||||
|
||||
LLViewerInventoryCategory* cat = gInventory.getCategory(cof);
|
||||
if (!cat) return;
|
||||
|
||||
S32 cof_version = cat->getVersion();
|
||||
|
||||
if (cof_version == mCOFLastVersion) return;
|
||||
|
||||
mCOFLastVersion = cof_version;
|
||||
|
||||
mPanel->update();
|
||||
if (!panel_updated)
|
||||
{
|
||||
checkBaseOutfit();
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
/** Get a version of an inventory category specified by its UUID */
|
||||
static S32 getCategoryVersion(const LLUUID& cat_id)
|
||||
{
|
||||
LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id);
|
||||
if (!cat) return LLViewerInventoryCategory::VERSION_UNKNOWN;
|
||||
|
||||
return cat->getVersion();
|
||||
}
|
||||
|
||||
bool checkCOF()
|
||||
{
|
||||
LLUUID cof = LLAppearanceMgr::getInstance()->getCOF();
|
||||
if (cof.isNull()) return false;
|
||||
|
||||
S32 cof_version = getCategoryVersion(cof);
|
||||
|
||||
if (cof_version == mCOFLastVersion) return false;
|
||||
|
||||
mCOFLastVersion = cof_version;
|
||||
|
||||
mPanel->update();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void checkBaseOutfit()
|
||||
{
|
||||
LLUUID baseoutfit_id = LLAppearanceMgr::getInstance()->getBaseOutfitUUID();
|
||||
|
||||
if (baseoutfit_id == mBaseOutfitId)
|
||||
{
|
||||
if (baseoutfit_id.isNull()) return;
|
||||
|
||||
const S32 baseoutfit_ver = getCategoryVersion(baseoutfit_id);
|
||||
|
||||
if (baseoutfit_ver == mBaseOutfitLastVersion) return;
|
||||
}
|
||||
else
|
||||
{
|
||||
mBaseOutfitId = baseoutfit_id;
|
||||
if (baseoutfit_id.isNull()) return;
|
||||
|
||||
mBaseOutfitLastVersion = getCategoryVersion(mBaseOutfitId);
|
||||
}
|
||||
|
||||
mPanel->updateVerbs();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
LLPanelOutfitEdit *mPanel;
|
||||
|
||||
//last version number of a COF category
|
||||
S32 mCOFLastVersion;
|
||||
|
||||
LLUUID mBaseOutfitId;
|
||||
|
||||
S32 mBaseOutfitLastVersion;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -159,8 +208,13 @@ BOOL LLPanelOutfitEdit::postBuild()
|
|||
mLookItemTypes[LIT_ATTACHMENT] = LLLookItemType(getString("Filter.Objects"), ATTACHMENT_MASK);
|
||||
|
||||
mCurrentOutfitName = getChild<LLTextBox>("curr_outfit_name");
|
||||
mStatus = getChild<LLTextBox>("status");
|
||||
|
||||
mFolderViewBtn = getChild<LLButton>("folder_view_btn");
|
||||
mListViewBtn = getChild<LLButton>("list_view_btn");
|
||||
|
||||
childSetCommitCallback("filter_button", boost::bind(&LLPanelOutfitEdit::showWearablesFilter, this), NULL);
|
||||
childSetCommitCallback("folder_view_btn", boost::bind(&LLPanelOutfitEdit::showFilteredFolderWearablesPanel, this), NULL);
|
||||
childSetCommitCallback("list_view_btn", boost::bind(&LLPanelOutfitEdit::showFilteredWearablesPanel, this), NULL);
|
||||
|
||||
mCOFWearables = getChild<LLCOFWearables>("cof_wearables_list");
|
||||
|
|
@ -217,8 +271,9 @@ BOOL LLPanelOutfitEdit::postBuild()
|
|||
save_registar.add("Outfit.SaveAsNew.Action", boost::bind(&LLPanelOutfitEdit::saveOutfit, this, true));
|
||||
mSaveMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_save_outfit.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
|
||||
mWearableListManager = new LLFilteredWearableListManager(
|
||||
getChild<LLInventoryItemsList>("filtered_wearables_list"), ALL_ITEMS_MASK);
|
||||
mWearableItemsPanel = getChild<LLPanel>("filtered_wearables_panel");
|
||||
mWearableItemsList = getChild<LLInventoryItemsList>("filtered_wearables_list");
|
||||
mWearableListManager = new LLFilteredWearableListManager(mWearableItemsList, ALL_ITEMS_MASK);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -239,12 +294,33 @@ void LLPanelOutfitEdit::toggleAddWearablesPanel()
|
|||
|
||||
void LLPanelOutfitEdit::showWearablesFilter()
|
||||
{
|
||||
childSetVisible("filter_combobox_panel", childGetValue("filter_button"));
|
||||
bool filter_visible = childGetValue("filter_button");
|
||||
|
||||
childSetVisible("filter_panel", filter_visible);
|
||||
|
||||
if(!filter_visible)
|
||||
{
|
||||
mSearchFilter->clear();
|
||||
onSearchEdit(LLStringUtil::null);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelOutfitEdit::showFilteredWearablesPanel()
|
||||
{
|
||||
childSetVisible("filtered_wearables_panel", !childIsVisible("filtered_wearables_panel"));
|
||||
if(switchPanels(mInventoryItemsPanel, mWearableItemsPanel))
|
||||
{
|
||||
mFolderViewBtn->setToggleState(FALSE);
|
||||
}
|
||||
mListViewBtn->setToggleState(TRUE);
|
||||
}
|
||||
|
||||
void LLPanelOutfitEdit::showFilteredFolderWearablesPanel()
|
||||
{
|
||||
if(switchPanels(mWearableItemsPanel, mInventoryItemsPanel))
|
||||
{
|
||||
mListViewBtn->setToggleState(FALSE);
|
||||
}
|
||||
mFolderViewBtn->setToggleState(TRUE);
|
||||
}
|
||||
|
||||
void LLPanelOutfitEdit::saveOutfit(bool as_new)
|
||||
|
|
@ -309,7 +385,7 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
|
|||
if (mSearchString == "")
|
||||
{
|
||||
mInventoryItemsPanel->setFilterSubString(LLStringUtil::null);
|
||||
|
||||
mWearableItemsList->setFilterSubString(LLStringUtil::null);
|
||||
// re-open folders that were initially open
|
||||
mSavedFolderState->setApply(TRUE);
|
||||
mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
|
||||
|
|
@ -335,6 +411,8 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
|
|||
|
||||
// set new filter string
|
||||
mInventoryItemsPanel->setFilterSubString(mSearchString);
|
||||
mWearableItemsList->setFilterSubString(mSearchString);
|
||||
|
||||
}
|
||||
|
||||
void LLPanelOutfitEdit::onAddToOutfitClicked(void)
|
||||
|
|
@ -479,11 +557,26 @@ void LLPanelOutfitEdit::updateVerbs()
|
|||
LLAppearanceMgr::getInstance()->updateIsDirty();
|
||||
|
||||
bool outfit_is_dirty = LLAppearanceMgr::getInstance()->isOutfitDirty();
|
||||
|
||||
bool has_baseoutfit = LLAppearanceMgr::getInstance()->getBaseOutfitUUID().notNull();
|
||||
|
||||
childSetEnabled(SAVE_BTN, outfit_is_dirty);
|
||||
childSetEnabled(REVERT_BTN, outfit_is_dirty);
|
||||
childSetEnabled(REVERT_BTN, outfit_is_dirty && has_baseoutfit);
|
||||
|
||||
mSaveMenu->setItemEnabled("save_outfit", outfit_is_dirty);
|
||||
|
||||
mStatus->setText(outfit_is_dirty ? getString("unsaved_changes") : getString("now_editing"));
|
||||
|
||||
}
|
||||
|
||||
bool LLPanelOutfitEdit::switchPanels(LLPanel* switch_from_panel, LLPanel* switch_to_panel)
|
||||
{
|
||||
if(switch_from_panel && switch_to_panel && !switch_to_panel->getVisible())
|
||||
{
|
||||
switch_from_panel->setVisible(FALSE);
|
||||
switch_to_panel->setVisible(TRUE);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// EOF
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
|
||||
#include "llremoteparcelrequest.h"
|
||||
#include "llinventory.h"
|
||||
#include "llinventoryitemslist.h"
|
||||
#include "llinventorymodel.h"
|
||||
|
||||
class LLButton;
|
||||
|
|
@ -87,6 +88,7 @@ public:
|
|||
void toggleAddWearablesPanel();
|
||||
void showWearablesFilter();
|
||||
void showFilteredWearablesPanel();
|
||||
void showFilteredFolderWearablesPanel();
|
||||
void saveOutfit(bool as_new = false);
|
||||
void showSaveMenu();
|
||||
|
||||
|
|
@ -102,20 +104,34 @@ public:
|
|||
|
||||
void update();
|
||||
|
||||
void updateVerbs();
|
||||
/**
|
||||
* @brief Helper function. Shows one panel instead of another.
|
||||
* If panels already switched does nothing and returns false.
|
||||
* @param switch_from_panel panel to hide
|
||||
* @param switch_to_panel panel to show
|
||||
* @retun returns true if switching happened, false if not.
|
||||
*/
|
||||
bool switchPanels(LLPanel* switch_from_panel, LLPanel* switch_to_panel);
|
||||
|
||||
private:
|
||||
|
||||
void updateVerbs();
|
||||
|
||||
|
||||
LLTextBox* mCurrentOutfitName;
|
||||
LLTextBox* mStatus;
|
||||
LLInventoryPanel* mInventoryItemsPanel;
|
||||
LLFilterEditor* mSearchFilter;
|
||||
LLSaveFolderState* mSavedFolderState;
|
||||
std::string mSearchString;
|
||||
LLButton* mEditWearableBtn;
|
||||
LLButton* mFolderViewBtn;
|
||||
LLButton* mListViewBtn;
|
||||
LLToggleableMenu* mSaveMenu;
|
||||
|
||||
LLFilteredWearableListManager* mWearableListManager;
|
||||
LLFilteredWearableListManager* mWearableListManager;
|
||||
LLInventoryItemsList* mWearableItemsList;
|
||||
LLPanel* mWearableItemsPanel;
|
||||
|
||||
LLCOFObserver* mCOFObserver;
|
||||
std::vector<LLLookItemType> mLookItemTypes;
|
||||
|
|
|
|||
|
|
@ -482,7 +482,7 @@ std::string LLScriptFloaterManager::getObjectName(const LLUUID& notification_id)
|
|||
text = notification->getSubstitutions()["OBJECTNAME"].asString();
|
||||
break;
|
||||
case LLScriptFloaterManager::OBJ_GIVE_INVENTORY:
|
||||
text = notification->getSubstitutions()["NAME"].asString();
|
||||
text = notification->getSubstitutions()["OBJECTFROMNAME"].asString();
|
||||
break;
|
||||
default:
|
||||
text = LLTrans::getString("object");
|
||||
|
|
|
|||
|
|
@ -291,7 +291,10 @@ LLToastNotifyPanel::~LLToastNotifyPanel()
|
|||
{
|
||||
// let reusable notification be deleted
|
||||
mNotification->setReusable(false);
|
||||
LLNotifications::getInstance()->cancel(mNotification);
|
||||
if (!mNotification->isPersistent())
|
||||
{
|
||||
LLNotifications::getInstance()->cancel(mNotification);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2328,7 +2328,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
|||
|
||||
LLSD args;
|
||||
args["MESSAGE"] = message;
|
||||
LLNotificationsUtil::add("JoinGroup", args, payload, join_group_response);
|
||||
// we shouldn't pass callback functor since it is registered in LLFunctorRegistration
|
||||
LLNotificationsUtil::add("JoinGroup", args, payload);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -124,6 +124,29 @@ protected:
|
|||
/*virtual*/ void init();
|
||||
};
|
||||
|
||||
|
||||
class LLPanelDeletableWearableListItem : public LLPanelWearableListItem
|
||||
{
|
||||
LOG_CLASS(LLPanelDeletableWearableListItem);
|
||||
public:
|
||||
|
||||
static LLPanelDeletableWearableListItem* create(LLViewerInventoryItem* item);
|
||||
|
||||
virtual ~LLPanelDeletableWearableListItem();
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
/**
|
||||
* Make button visible during mouse over event.
|
||||
*/
|
||||
inline void setShowDeleteButton(bool show) { setShowWidget("btn_delete", show); }
|
||||
|
||||
protected:
|
||||
LLPanelDeletableWearableListItem(LLViewerInventoryItem* item);
|
||||
|
||||
/*virtual*/ void init();
|
||||
};
|
||||
|
||||
/**
|
||||
* @class LLPanelDummyClothingListItem
|
||||
*
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 309 B |
Binary file not shown.
|
After Width: | Height: | Size: 302 B |
|
|
@ -1207,6 +1207,7 @@ Eject [AVATAR_NAME] from your land?
|
|||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="EjectAvatarFromGroup"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You ejected [AVATAR_NAME] from group [GROUP_NAME]
|
||||
</notification>
|
||||
|
|
@ -2512,6 +2513,7 @@ Would you like to trust this authority?
|
|||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="GrantedModifyRights"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[NAME] has given you permission to edit their objects.
|
||||
</notification>
|
||||
|
|
@ -2519,6 +2521,7 @@ Would you like to trust this authority?
|
|||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="RevokedModifyRights"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Your privilege to modify [NAME]'s objects has been revoked
|
||||
</notification>
|
||||
|
|
@ -4433,6 +4436,7 @@ Replaced missing clothing/body part with default.
|
|||
<notification
|
||||
icon="groupnotify"
|
||||
name="GroupNotice"
|
||||
persist="true"
|
||||
type="groupnotify">
|
||||
Topic: [SUBJECT], Message: [MESSAGE]
|
||||
</notification>
|
||||
|
|
@ -4481,6 +4485,7 @@ Do you wish to proceed?
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="UploadPayment"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You paid L$[AMOUNT] to upload.
|
||||
</notification>
|
||||
|
|
@ -4768,6 +4773,7 @@ Please select at least one type of content to search (General, Moderate, or Adul
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="SystemMessage"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
|
|
@ -4775,10 +4781,13 @@ Please select at least one type of content to search (General, Moderate, or Adul
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="PaymentRecived"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
|
||||
<!-- EventNotification couldn't be persist since server decide is it necessary to notify
|
||||
user about subscribed event via LLEventNotifier-->
|
||||
<notification
|
||||
icon="notify.tga"
|
||||
name="EventNotification"
|
||||
|
|
@ -4806,6 +4815,7 @@ Event Notification:
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="TransferObjectsHighlighted"
|
||||
persist="true"
|
||||
type="notify">
|
||||
All objects on this parcel that will transfer to the purchaser of this parcel are now highlighted.
|
||||
|
||||
|
|
@ -4821,6 +4831,7 @@ All objects on this parcel that will transfer to the purchaser of this parcel ar
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="DeactivatedGesturesTrigger"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Deactivated gestures with same trigger:
|
||||
[NAMES]
|
||||
|
|
@ -4829,6 +4840,7 @@ Deactivated gestures with same trigger:
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoQuickTime"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Apple's QuickTime software does not appear to be installed on your system.
|
||||
If you want to view streaming media on parcels that support it you should go to the [http://www.apple.com/quicktime QuickTime site] and install the QuickTime Player.
|
||||
|
|
@ -4836,6 +4848,7 @@ If you want to view streaming media on parcels that support it you should go to
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoPlugin"
|
||||
persist="true"
|
||||
type="notify">
|
||||
No Media Plugin was found to handle the "[MIME_TYPE]" mime type. Media of this type will be unavailable.
|
||||
</notification>
|
||||
|
|
@ -4855,6 +4868,7 @@ Please re-install the plugin or contact the vendor if you continue to experience
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="OwnedObjectsReturned"
|
||||
persist="true"
|
||||
type="notify">
|
||||
The objects you own on the selected parcel of land have been returned back to your inventory.
|
||||
</notification>
|
||||
|
|
@ -4862,6 +4876,7 @@ The objects you own on the selected parcel of land have been returned back to yo
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="OtherObjectsReturned"
|
||||
persist="true"
|
||||
type="notify">
|
||||
The objects on the selected parcel of land that is owned by [FIRST] [LAST] have been returned to his or her inventory.
|
||||
</notification>
|
||||
|
|
@ -4869,6 +4884,7 @@ The objects on the selected parcel of land that is owned by [FIRST] [LAST] have
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="OtherObjectsReturned2"
|
||||
persist="true"
|
||||
type="notify">
|
||||
The objects on the selected parcel of land owned by the Resident '[NAME]' have been returned to their owner.
|
||||
</notification>
|
||||
|
|
@ -4876,6 +4892,7 @@ The objects on the selected parcel of land owned by the Resident '[NAME]&ap
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="GroupObjectsReturned"
|
||||
persist="true"
|
||||
type="notify">
|
||||
The objects on the selected parcel of land shared with the group [GROUPNAME] have been returned back to their owner's inventory.
|
||||
Transferable deeded objects have been returned to their previous owners.
|
||||
|
|
@ -4885,6 +4902,7 @@ Non-transferable objects that are deeded to the group have been deleted.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="UnOwnedObjectsReturned"
|
||||
persist="true"
|
||||
type="notify">
|
||||
The objects on the selected parcel that are NOT owned by you have been returned to their owners.
|
||||
</notification>
|
||||
|
|
@ -4892,6 +4910,7 @@ The objects on the selected parcel that are NOT owned by you have been returned
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ServerObjectMessage"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Message from [NAME]:
|
||||
<nolink>[MSG]</nolink>
|
||||
|
|
@ -4900,6 +4919,7 @@ Message from [NAME]:
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NotSafe"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This land has damage enabled.
|
||||
You can be hurt here. If you die, you will be teleported to your home location.
|
||||
|
|
@ -4909,6 +4929,7 @@ You can be hurt here. If you die, you will be teleported to your home location.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoFly"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This area has flying disabled.
|
||||
You can't fly here.
|
||||
|
|
@ -4918,6 +4939,7 @@ You can't fly here.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="PushRestricted"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This area does not allow pushing. You can't push others here unless you own the land.
|
||||
<unique/>
|
||||
|
|
@ -4926,6 +4948,7 @@ This area does not allow pushing. You can't push others here unless you own
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoVoice"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This area has voice chat disabled. You won't be able to hear anyone talking.
|
||||
<unique/>
|
||||
|
|
@ -4934,6 +4957,7 @@ This area has voice chat disabled. You won't be able to hear anyone talking
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoBuild"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This area has building disabled. You can't build or rez objects here.
|
||||
<unique/>
|
||||
|
|
@ -4942,6 +4966,7 @@ This area has building disabled. You can't build or rez objects here.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ScriptsStopped"
|
||||
persist="true"
|
||||
type="notify">
|
||||
An administrator has temporarily stopped scripts in this region.
|
||||
</notification>
|
||||
|
|
@ -4949,6 +4974,7 @@ An administrator has temporarily stopped scripts in this region.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ScriptsNotRunning"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This region is not running any scripts.
|
||||
</notification>
|
||||
|
|
@ -4956,6 +4982,7 @@ This region is not running any scripts.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoOutsideScripts"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This land has outside scripts disabled.
|
||||
|
||||
|
|
@ -4965,6 +4992,7 @@ No scripts will work here except those belonging to the land owner.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ClaimPublicLand"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You can only claim public land in the Region you're in.
|
||||
</notification>
|
||||
|
|
@ -4972,6 +5000,7 @@ You can only claim public land in the Region you're in.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="RegionTPAccessBlocked"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You aren't allowed in that Region due to your maturity Rating. You may need to validate your age and/or install the latest Viewer.
|
||||
|
||||
|
|
@ -4981,6 +5010,7 @@ Please go to the Knowledge Base for details on accessing areas with this maturit
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="URBannedFromRegion"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You are banned from the region.
|
||||
</notification>
|
||||
|
|
@ -4988,6 +5018,7 @@ You are banned from the region.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoTeenGridAccess"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Your account cannot connect to this teen grid region.
|
||||
</notification>
|
||||
|
|
@ -4995,6 +5026,7 @@ Your account cannot connect to this teen grid region.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ImproperPaymentStatus"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You do not have proper payment status to enter this region.
|
||||
</notification>
|
||||
|
|
@ -5002,6 +5034,7 @@ You do not have proper payment status to enter this region.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="MustGetAgeRgion"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You must be age-verified to enter this region.
|
||||
</notification>
|
||||
|
|
@ -5009,6 +5042,7 @@ You must be age-verified to enter this region.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="MustGetAgeParcel"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You must be age-verified to enter this parcel.
|
||||
</notification>
|
||||
|
|
@ -5016,6 +5050,7 @@ You must be age-verified to enter this parcel.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoDestRegion"
|
||||
persist="true"
|
||||
type="notify">
|
||||
No destination region found.
|
||||
</notification>
|
||||
|
|
@ -5023,6 +5058,7 @@ No destination region found.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NotAllowedInDest"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You are not allowed into the destination.
|
||||
</notification>
|
||||
|
|
@ -5030,6 +5066,7 @@ You are not allowed into the destination.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="RegionParcelBan"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Cannot region cross into banned parcel. Try another way.
|
||||
</notification>
|
||||
|
|
@ -5037,6 +5074,7 @@ Cannot region cross into banned parcel. Try another way.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="TelehubRedirect"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You have been redirected to a telehub.
|
||||
</notification>
|
||||
|
|
@ -5044,6 +5082,7 @@ You have been redirected to a telehub.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="CouldntTPCloser"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Could not teleport closer to destination.
|
||||
</notification>
|
||||
|
|
@ -5051,6 +5090,7 @@ Could not teleport closer to destination.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="TPCancelled"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Teleport cancelled.
|
||||
</notification>
|
||||
|
|
@ -5058,6 +5098,7 @@ Teleport cancelled.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FullRegionTryAgain"
|
||||
persist="true"
|
||||
type="notify">
|
||||
The region you are attempting to enter is currently full.
|
||||
Please try again in a few moments.
|
||||
|
|
@ -5066,6 +5107,7 @@ Please try again in a few moments.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="GeneralFailure"
|
||||
persist="true"
|
||||
type="notify">
|
||||
General failure.
|
||||
</notification>
|
||||
|
|
@ -5073,6 +5115,7 @@ General failure.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="RoutedWrongRegion"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Routed to wrong region. Please try again.
|
||||
</notification>
|
||||
|
|
@ -5080,6 +5123,7 @@ Routed to wrong region. Please try again.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoValidAgentID"
|
||||
persist="true"
|
||||
type="notify">
|
||||
No valid agent id.
|
||||
</notification>
|
||||
|
|
@ -5087,6 +5131,7 @@ No valid agent id.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoValidSession"
|
||||
persist="true"
|
||||
type="notify">
|
||||
No valid session id.
|
||||
</notification>
|
||||
|
|
@ -5094,6 +5139,7 @@ No valid session id.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoValidCircuit"
|
||||
persist="true"
|
||||
type="notify">
|
||||
No valid circuit code.
|
||||
</notification>
|
||||
|
|
@ -5101,6 +5147,7 @@ No valid circuit code.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoValidTimestamp"
|
||||
persist="true"
|
||||
type="notify">
|
||||
No valid timestamp.
|
||||
</notification>
|
||||
|
|
@ -5108,6 +5155,7 @@ No valid timestamp.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoPendingConnection"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Unable to create pending connection.
|
||||
</notification>
|
||||
|
|
@ -5115,6 +5163,7 @@ Unable to create pending connection.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="InternalUsherError"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Internal error attempting to connect agent usher.
|
||||
</notification>
|
||||
|
|
@ -5122,6 +5171,7 @@ Internal error attempting to connect agent usher.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoGoodTPDestination"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Unable to find a good teleport destination in this region.
|
||||
</notification>
|
||||
|
|
@ -5129,6 +5179,7 @@ Unable to find a good teleport destination in this region.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="InternalErrorRegionResolver"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Internal error attempting to activate region resolver.
|
||||
</notification>
|
||||
|
|
@ -5136,6 +5187,7 @@ Internal error attempting to activate region resolver.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoValidLanding"
|
||||
persist="true"
|
||||
type="notify">
|
||||
A valid landing point could not be found.
|
||||
</notification>
|
||||
|
|
@ -5143,6 +5195,7 @@ A valid landing point could not be found.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="NoValidParcel"
|
||||
persist="true"
|
||||
type="notify">
|
||||
No valid parcel could be found.
|
||||
</notification>
|
||||
|
|
@ -5150,7 +5203,6 @@ No valid parcel could be found.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ObjectGiveItem"
|
||||
persist="true"
|
||||
type="offer">
|
||||
An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJECTTYPE]:
|
||||
[ITEM_SLURL]
|
||||
|
|
@ -5173,7 +5225,6 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="UserGiveItem"
|
||||
persist="true"
|
||||
type="offer">
|
||||
[NAME_SLURL] has given you this [OBJECTTYPE]:
|
||||
[ITEM_SLURL]
|
||||
|
|
@ -5196,6 +5247,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="GodMessage"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[NAME]
|
||||
|
||||
|
|
@ -5205,6 +5257,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="JoinGroup"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[MESSAGE]
|
||||
<form name="form">
|
||||
|
|
@ -5226,7 +5279,6 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="TeleportOffered"
|
||||
persist="true"
|
||||
type="offer">
|
||||
[NAME_SLURL] has offered to teleport you to their location:
|
||||
|
||||
|
|
@ -5254,6 +5306,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="GotoURL"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[MESSAGE]
|
||||
[URL]
|
||||
|
|
@ -5272,7 +5325,6 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="OfferFriendship"
|
||||
persist="true"
|
||||
type="offer">
|
||||
[NAME_SLURL] is offering friendship.
|
||||
|
||||
|
|
@ -5301,6 +5353,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="OfferFriendshipNoMessage"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[NAME] is offering friendship.
|
||||
|
||||
|
|
@ -5327,6 +5380,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FriendshipDeclined"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[NAME] declined your friendship offer.
|
||||
</notification>
|
||||
|
|
@ -5348,6 +5402,7 @@ Friendship offer declined.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="OfferCallingCard"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[FIRST] [LAST] is offering their calling card.
|
||||
This will add a bookmark in your inventory so you can quickly IM this Resident.
|
||||
|
|
@ -5368,6 +5423,7 @@ This will add a bookmark in your inventory so you can quickly IM this Resident.
|
|||
name="RegionRestartMinutes"
|
||||
priority="high"
|
||||
sound="UISndAlert"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This region will restart in [MINUTES] minutes.
|
||||
If you stay in this region you will be logged out.
|
||||
|
|
@ -5378,6 +5434,7 @@ If you stay in this region you will be logged out.
|
|||
name="RegionRestartSeconds"
|
||||
priority="high"
|
||||
sound="UISndAlert"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This region will restart in [SECONDS] seconds.
|
||||
If you stay in this region you will be logged out.
|
||||
|
|
@ -5386,6 +5443,7 @@ If you stay in this region you will be logged out.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="LoadWebPage"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Load web page [URL]?
|
||||
|
||||
|
|
@ -5407,6 +5465,7 @@ From object: [OBJECTNAME], owner: [NAME]?
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FailedToFindWearableUnnamed"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Failed to find [TYPE] in database.
|
||||
</notification>
|
||||
|
|
@ -5414,6 +5473,7 @@ Failed to find [TYPE] in database.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FailedToFindWearable"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Failed to find [TYPE] named [DESC] in database.
|
||||
</notification>
|
||||
|
|
@ -5421,6 +5481,7 @@ Failed to find [TYPE] named [DESC] in database.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ShareToWebFailed"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Failed to upload image to web.
|
||||
</notification>
|
||||
|
|
@ -5428,6 +5489,7 @@ Failed to find [TYPE] named [DESC] in database.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="InvalidWearable"
|
||||
persist="true"
|
||||
type="notify">
|
||||
The item you are trying to wear uses a feature that your Viewer can't read. Please upgrade your version of [APP_NAME] to wear this item.
|
||||
</notification>
|
||||
|
|
@ -5435,6 +5497,7 @@ The item you are trying to wear uses a feature that your Viewer can't read.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ScriptQuestion"
|
||||
persist="true"
|
||||
type="notify">
|
||||
'[OBJECTNAME]', an object owned by '[NAME]', would like to:
|
||||
|
||||
|
|
@ -5460,6 +5523,7 @@ Is this OK?
|
|||
icon="notify.tga"
|
||||
name="ScriptQuestionCaution"
|
||||
priority="high"
|
||||
persist="true"
|
||||
type="notify">
|
||||
An object named '[OBJECTNAME]', owned by '[NAME]' would like to:
|
||||
|
||||
|
|
@ -5487,6 +5551,7 @@ Grant this request?
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ScriptDialog"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[FIRST] [LAST]'s '[TITLE]'
|
||||
[MESSAGE]
|
||||
|
|
@ -5501,6 +5566,7 @@ Grant this request?
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="ScriptDialogGroup"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[GROUPNAME]'s '[TITLE]'
|
||||
[MESSAGE]
|
||||
|
|
@ -5516,6 +5582,7 @@ Grant this request?
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstBalanceIncrease"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You just received L$[AMOUNT].
|
||||
Your L$ balance is shown in the upper-right.
|
||||
|
|
@ -5524,6 +5591,7 @@ Your L$ balance is shown in the upper-right.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstBalanceDecrease"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You just paid L$[AMOUNT].
|
||||
Your L$ balance is shown in the upper-right.
|
||||
|
|
@ -5533,6 +5601,7 @@ Your L$ balance is shown in the upper-right.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="BuyLindenDollarSuccess"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Thank you for your payment!
|
||||
|
||||
|
|
@ -5545,6 +5614,7 @@ The status of your payment can be checked on your Transaction History page on yo
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstSit"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You are sitting.
|
||||
Use your arrow keys (or AWSD) to look around.
|
||||
|
|
@ -5554,6 +5624,7 @@ Click the 'Stand Up' button to stand.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstMap"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Click and drag the map to look around.
|
||||
Double-click to teleport.
|
||||
|
|
@ -5563,6 +5634,7 @@ Use the controls on the right to find things and display different backgrounds.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstBuild"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You have opened the Build Tools. Every object you see around you was created using these tools.
|
||||
</notification>
|
||||
|
|
@ -5572,6 +5644,7 @@ You have opened the Build Tools. Every object you see around you was created usi
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstLeftClickNoHit"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Left-clicking interacts with special objects.
|
||||
If the mouse pointer changes to a hand, you can interact with the object.
|
||||
|
|
@ -5581,6 +5654,7 @@ You have opened the Build Tools. Every object you see around you was created usi
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstTeleport"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You can only teleport to certain areas in this region. The arrow points to your specific destination. Click the arrow to dismiss it.
|
||||
</notification>
|
||||
|
|
@ -5590,6 +5664,7 @@ You can only teleport to certain areas in this region. The arrow points to your
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstOverrideKeys"
|
||||
persist="true"
|
||||
type="notify">
|
||||
Your movement keys are now being handled by an object.
|
||||
Try the arrow keys or AWSD to see what they do.
|
||||
|
|
@ -5601,6 +5676,7 @@ Press 'M' to do this.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstAppearance"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You are editing your Appearance.
|
||||
Use the arrow keys to look around.
|
||||
|
|
@ -5610,6 +5686,7 @@ When you are done, press 'Save All'.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstInventory"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This is your Inventory, which contains items you own.
|
||||
|
||||
|
|
@ -5622,6 +5699,7 @@ This is your Inventory, which contains items you own.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstSandbox"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This is a sandbox area, and is meant to help Residents learn how to build.
|
||||
|
||||
|
|
@ -5632,6 +5710,7 @@ Things you build here will be deleted after you leave, so don't forget to r
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstFlexible"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This object is flexible. Flexis must be phantom and not physical.
|
||||
</notification>
|
||||
|
|
@ -5639,6 +5718,7 @@ This object is flexible. Flexis must be phantom and not physical.
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstDebugMenus"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You opened the Advanced menu.
|
||||
|
||||
|
|
@ -5651,6 +5731,7 @@ To toggle this menu,
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstSculptedPrim"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You are editing a Sculpted prim. Sculpties require a special texture to define their shape.
|
||||
</notification>
|
||||
|
|
@ -5660,6 +5741,7 @@ You are editing a Sculpted prim. Sculpties require a special texture to define t
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="FirstMedia"
|
||||
persist="true"
|
||||
type="notify">
|
||||
You have begun playing media. Media can set to play automatically in the preferences window under Audio / Video. Note that this can be a security risk for media sites you do not trust.
|
||||
</notification>
|
||||
|
|
@ -5700,6 +5782,7 @@ Click Accept to join the call or Decline to decline the invitation. Click Block
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="AutoUnmuteByIM"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[FIRST] [LAST] was sent an instant message and has been automatically unblocked.
|
||||
</notification>
|
||||
|
|
@ -5707,6 +5790,7 @@ Click Accept to join the call or Decline to decline the invitation. Click Block
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="AutoUnmuteByMoney"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[FIRST] [LAST] was given money and has been automatically unblocked.
|
||||
</notification>
|
||||
|
|
@ -5714,6 +5798,7 @@ Click Accept to join the call or Decline to decline the invitation. Click Block
|
|||
<notification
|
||||
icon="notify.tga"
|
||||
name="AutoUnmuteByInventory"
|
||||
persist="true"
|
||||
type="notify">
|
||||
[FIRST] [LAST] was offered inventory and has been automatically unblocked.
|
||||
</notification>
|
||||
|
|
|
|||
|
|
@ -1,28 +1,30 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel
|
||||
mouse_opaque="true"
|
||||
background_visible="true"
|
||||
bg_alpha_color="DkGray"
|
||||
bg_opaque_color="DkGray"
|
||||
chrome="true"
|
||||
follows="left|bottom|right"
|
||||
height="33"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="bottom_tray"
|
||||
top="28"
|
||||
chrome="true"
|
||||
border_visible="false"
|
||||
width="1000">
|
||||
<string name="SpeakBtnToolTip">Turns microphone on/off</string>
|
||||
<string name="VoiceControlBtnToolTip">Shows/hides voice control panel</string>
|
||||
<string
|
||||
name="SpeakBtnToolTip"
|
||||
value="Turns microphone on/off" />
|
||||
<string
|
||||
name="VoiceControlBtnToolTip"
|
||||
value="Shows/hides voice control panel" />
|
||||
<layout_stack
|
||||
mouse_opaque="false"
|
||||
border_size="0"
|
||||
clip="false"
|
||||
follows="all"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="toolbar_stack"
|
||||
orientation="horizontal"
|
||||
top="0"
|
||||
|
|
@ -33,288 +35,234 @@
|
|||
height="10"
|
||||
image_name="spacer24.tga"
|
||||
layout="topleft"
|
||||
min_width="2"
|
||||
left="0"
|
||||
min_width="2"
|
||||
top="0"
|
||||
width="2" />
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
auto_resize="false"
|
||||
filename="panel_nearby_chat_bar.xml"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
min_height="23"
|
||||
width="310"
|
||||
top="4"
|
||||
max_width="320"
|
||||
min_height="23"
|
||||
min_width="216"
|
||||
mouse_opaque="false"
|
||||
name="chat_bar"
|
||||
top="4"
|
||||
user_resize="false"
|
||||
filename="panel_nearby_chat_bar.xml" />
|
||||
width="310" />
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
width="105"
|
||||
top_delta="0"
|
||||
min_width="54"
|
||||
min_width="57"
|
||||
mouse_opaque="false"
|
||||
name="speak_panel"
|
||||
user_resize="false">
|
||||
<talk_button
|
||||
follows="left|right"
|
||||
height="23"
|
||||
speak_button.tab_stop="true"
|
||||
show_button.tab_stop="true"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="talk"
|
||||
top="5"
|
||||
width="105">
|
||||
<!-- do not remove halign attribute with default value. otherwise it can't be overridden in other locales.
|
||||
& pad_right is default value for long label which can be right aligned. See EXT-6318 -->
|
||||
<speak_button
|
||||
halign="center"
|
||||
name="speak_btn"
|
||||
label="Speak"
|
||||
label_selected="Speak"
|
||||
pad_right="22"
|
||||
use_ellipses="true"
|
||||
/>
|
||||
<show_button>
|
||||
<show_button.init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="voice_controls" />
|
||||
</show_button>
|
||||
</talk_button>
|
||||
</layout_panel>
|
||||
<icon
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="10"
|
||||
image_name="spacer24.tga"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="after_speak_panel"
|
||||
min_width="3"
|
||||
top="0"
|
||||
width="3"/>
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
width="82"
|
||||
top_delta="0"
|
||||
min_width="62"
|
||||
name="gesture_panel"
|
||||
user_resize="false">
|
||||
<gesture_combo_list
|
||||
follows="left|right"
|
||||
height="23"
|
||||
label="Gesture"
|
||||
layout="topleft"
|
||||
name="Gesture"
|
||||
left="0"
|
||||
top="5"
|
||||
width="82"
|
||||
tool_tip="Shows/hides gestures">
|
||||
<gesture_combo_list.combo_button
|
||||
pad_right="10"
|
||||
use_ellipses="true" />
|
||||
<gesture_combo_list.combo_list
|
||||
page_lines="17" />
|
||||
</gesture_combo_list>
|
||||
</layout_panel>
|
||||
<icon
|
||||
auto_resize="false"
|
||||
color="0 0 0 0"
|
||||
follows="left|right"
|
||||
height="10"
|
||||
image_name="spacer24.tga"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
min_width="3"
|
||||
name="after_gesture_panel"
|
||||
top="0"
|
||||
width="3"/>
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
name="movement_panel"
|
||||
user_resize="false"
|
||||
width="80"
|
||||
min_width="49">
|
||||
<button
|
||||
image_selected="PushButton_Selected_Press"
|
||||
image_pressed="PushButton_Press"
|
||||
image_pressed_selected="PushButton_Selected_Press"
|
||||
width="108">
|
||||
<talk_button
|
||||
follows="left|right"
|
||||
height="23"
|
||||
use_ellipses="true"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="talk"
|
||||
top="5"
|
||||
width="105">
|
||||
<show_button
|
||||
tab_stop="true">
|
||||
<init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="voice_controls" />
|
||||
</show_button>
|
||||
<!-- do not remove halign attribute with default value. otherwise it can't be overridden in other locales.
|
||||
& pad_right is default value for long label which can be right aligned. See EXT-6318 -->
|
||||
<speak_button
|
||||
halign="center"
|
||||
label="Speak"
|
||||
label_selected="Speak"
|
||||
name="speak_btn"
|
||||
pad_right="22"
|
||||
tab_stop="true"
|
||||
use_ellipses="true" />
|
||||
</talk_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
min_width="65"
|
||||
mouse_opaque="false"
|
||||
name="gesture_panel"
|
||||
top_delta="0"
|
||||
user_resize="false"
|
||||
width="85">
|
||||
<gesture_combo_list
|
||||
follows="left|right"
|
||||
height="23"
|
||||
label="Gesture"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="Gesture"
|
||||
tool_tip="Shows/hides gestures"
|
||||
top="5"
|
||||
width="82">
|
||||
<combo_button
|
||||
pad_right="10"
|
||||
use_ellipses="true" />
|
||||
<combo_list
|
||||
page_lines="17" />
|
||||
</gesture_combo_list>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
min_width="52"
|
||||
mouse_opaque="false"
|
||||
name="movement_panel"
|
||||
user_resize="false"
|
||||
width="83">
|
||||
<button
|
||||
follows="left|right"
|
||||
height="23"
|
||||
image_pressed="PushButton_Press"
|
||||
image_pressed_selected="PushButton_Selected_Press"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
is_toggle="true"
|
||||
label="Move"
|
||||
layout="topleft"
|
||||
name="movement_btn"
|
||||
tool_tip="Shows/hides movement controls"
|
||||
top="5"
|
||||
use_ellipses="true"
|
||||
width="80">
|
||||
<button.init_callback
|
||||
<init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="moveview" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
<icon
|
||||
auto_resize="false"
|
||||
color="0 0 0 0"
|
||||
follows="left|right"
|
||||
height="10"
|
||||
image_name="spacer24.tga"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
min_width="3"
|
||||
name="after_movement_panel"
|
||||
top="0"
|
||||
width="3"/>
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
min_width="49"
|
||||
min_width="52"
|
||||
mouse_opaque="false"
|
||||
name="cam_panel"
|
||||
user_resize="false"
|
||||
width="80">
|
||||
width="83">
|
||||
<button
|
||||
image_selected="PushButton_Selected_Press"
|
||||
image_pressed="PushButton_Press"
|
||||
image_pressed_selected="PushButton_Selected_Press"
|
||||
follows="left|right"
|
||||
height="23"
|
||||
use_ellipses="true"
|
||||
image_pressed="PushButton_Press"
|
||||
image_pressed_selected="PushButton_Selected_Press"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
is_toggle="true"
|
||||
label="View"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="camera_btn"
|
||||
tool_tip="Shows/hides camera controls"
|
||||
top="5"
|
||||
name="camera_btn"
|
||||
use_ellipses="true"
|
||||
width="80">
|
||||
<button.init_callback
|
||||
<init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="camera" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
<icon
|
||||
auto_resize="false"
|
||||
color="0 0 0 0"
|
||||
follows="left|right"
|
||||
height="10"
|
||||
image_name="spacer24.tga"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
min_width="3"
|
||||
name="after_cam_panel"
|
||||
top="0"
|
||||
width="3"/>
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_width="40"
|
||||
mouse_opaque="false"
|
||||
name="snapshot_panel"
|
||||
width="40">
|
||||
<button
|
||||
follows="left|right"
|
||||
follows="left|right"
|
||||
height="23"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
image_overlay="Snapshot_Off"
|
||||
image_pressed="PushButton_Press"
|
||||
image_pressed_selected="PushButton_Selected_Press"
|
||||
left="0"
|
||||
label=""
|
||||
layout="topleft"
|
||||
name="snapshots"
|
||||
width="36"
|
||||
top="5"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
is_toggle="true"
|
||||
image_overlay="Snapshot_Off"
|
||||
tool_tip="Take snapshot">
|
||||
<button.init_callback
|
||||
function="Button.SetFloaterToggle"
|
||||
parameter="snapshot" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="snapshots"
|
||||
tool_tip="Take snapshot"
|
||||
top="5"
|
||||
width="36">
|
||||
<init_callback
|
||||
function="Button.SetFloaterToggle"
|
||||
parameter="snapshot" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
follows="left|right"
|
||||
height="30"
|
||||
layout="topleft"
|
||||
top="0"
|
||||
name="chiclet_list_panel"
|
||||
width="189"
|
||||
min_width="95"
|
||||
mouse_opaque="false"
|
||||
name="chiclet_list_panel"
|
||||
top="0"
|
||||
user_resize="false"
|
||||
auto_resize="true">
|
||||
width="189">
|
||||
<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
|
||||
as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
|
||||
<chiclet_panel
|
||||
mouse_opaque="false"
|
||||
chiclet_padding="4"
|
||||
follows="left|right"
|
||||
height="24"
|
||||
layout="topleft"
|
||||
left="1"
|
||||
min_width="95"
|
||||
mouse_opaque="false"
|
||||
name="chiclet_list"
|
||||
top="7"
|
||||
chiclet_padding="4"
|
||||
scrolling_offset="40"
|
||||
width="189">
|
||||
<button
|
||||
auto_resize="true"
|
||||
follows="right"
|
||||
height="29"
|
||||
image_hover_selected="SegmentedBtn_Left_Over"
|
||||
image_hover_unselected="SegmentedBtn_Left_Over"
|
||||
image_overlay="Arrow_Small_Left"
|
||||
image_pressed="SegmentedBtn_Left_Press"
|
||||
image_pressed_selected="SegmentedBtn_Left_Press"
|
||||
image_selected="SegmentedBtn_Left_Off"
|
||||
image_unselected="SegmentedBtn_Left_Off"
|
||||
image_hover_selected="SegmentedBtn_Left_Over"
|
||||
image_hover_unselected="SegmentedBtn_Left_Over"
|
||||
image_pressed="SegmentedBtn_Left_Press"
|
||||
image_pressed_selected="SegmentedBtn_Left_Press"
|
||||
image_overlay="Arrow_Small_Left"
|
||||
layout="topleft"
|
||||
name="chicklet_left_scroll_button"
|
||||
scale_image="true"
|
||||
tab_stop="false"
|
||||
top="-4"
|
||||
right_pad="2"
|
||||
visible="false"
|
||||
width="7" />
|
||||
<button
|
||||
auto_resize="true"
|
||||
follows="right"
|
||||
height="29"
|
||||
image_hover_selected="SegmentedBtn_Right_Over"
|
||||
image_hover_unselected="SegmentedBtn_Right_Over"
|
||||
image_overlay="Arrow_Small_Right"
|
||||
image_pressed="SegmentedBtn_Right_Press"
|
||||
image_pressed_selected="SegmentedBtn_Right_Press"
|
||||
image_selected="SegmentedBtn_Right_Off"
|
||||
image_unselected="SegmentedBtn_Right_Off"
|
||||
image_hover_selected="SegmentedBtn_Right_Over"
|
||||
image_hover_unselected="SegmentedBtn_Right_Over"
|
||||
image_pressed="SegmentedBtn_Right_Press"
|
||||
image_pressed_selected="SegmentedBtn_Right_Press"
|
||||
image_overlay="Arrow_Small_Right"
|
||||
layout="topleft"
|
||||
name="chicklet_right_scroll_button"
|
||||
scale_image="true"
|
||||
tab_stop="false"
|
||||
top="-4"
|
||||
visible="false"
|
||||
|
|
@ -332,24 +280,24 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
|
|||
min_width="4"
|
||||
name="DUMMY"
|
||||
top="0"
|
||||
width="4"/>
|
||||
width="4" />
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
top="0"
|
||||
name="im_well_panel"
|
||||
width="37"
|
||||
min_width="37"
|
||||
user_resize="false">
|
||||
name="im_well_panel"
|
||||
top="0"
|
||||
user_resize="false"
|
||||
width="37">
|
||||
<chiclet_im_well
|
||||
max_displayed_count="99"
|
||||
follows="right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
max_displayed_count="99"
|
||||
name="im_well"
|
||||
top="0"
|
||||
width="35">
|
||||
|
|
@ -375,8 +323,8 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
|
|||
left="0"
|
||||
name="Unread IM messages"
|
||||
tool_tip="Conversations"
|
||||
width="34" >
|
||||
<button.init_callback
|
||||
width="34">
|
||||
<init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="im_well_window" />
|
||||
</button>
|
||||
|
|
@ -388,11 +336,11 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
|
|||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
top="0"
|
||||
name="notification_well_panel"
|
||||
width="37"
|
||||
min_width="37"
|
||||
user_resize="false">
|
||||
name="notification_well_panel"
|
||||
top="0"
|
||||
user_resize="false"
|
||||
width="37">
|
||||
<chiclet_notification
|
||||
follows="right"
|
||||
height="23"
|
||||
|
|
@ -402,27 +350,27 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
|
|||
name="notification_well"
|
||||
top="5"
|
||||
width="35">
|
||||
<button
|
||||
<button
|
||||
auto_resize="true"
|
||||
bottom_pad="3"
|
||||
follows="right"
|
||||
halign="center"
|
||||
height="23"
|
||||
image_overlay="Notices_Unread"
|
||||
image_overlay_alignment="center"
|
||||
image_pressed="WellButton_Lit"
|
||||
image_pressed_selected="WellButton_Lit_Selected"
|
||||
image_selected="PushButton_Press"
|
||||
auto_resize="true"
|
||||
halign="center"
|
||||
height="23"
|
||||
follows="right"
|
||||
label_color="Black"
|
||||
left="0"
|
||||
name="Unread"
|
||||
image_overlay="Notices_Unread"
|
||||
image_overlay_alignment="center"
|
||||
tool_tip="Notifications"
|
||||
width="34" >
|
||||
<button.init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="notification_well_window" />
|
||||
</button>
|
||||
</chiclet_notification>
|
||||
label_color="Black"
|
||||
left="0"
|
||||
name="Unread"
|
||||
tool_tip="Notifications"
|
||||
width="34">
|
||||
<init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="notification_well_window" />
|
||||
</button>
|
||||
</chiclet_notification>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,12 @@
|
|||
<string
|
||||
name="No Outfit"
|
||||
value="No Outfit"/>
|
||||
<string
|
||||
name="unsaved_changes"
|
||||
value="Unsaved Changes"/>
|
||||
<string
|
||||
name="now_editing"
|
||||
value="Now Editing"/>
|
||||
|
||||
<panel.string
|
||||
name="not_available">
|
||||
|
|
@ -209,124 +215,120 @@
|
|||
tab_group="2"
|
||||
user_resize="true"
|
||||
visible="false">
|
||||
|
||||
<!-- *NOTE is not used, invisible and disabled -->
|
||||
<filter_editor
|
||||
background_image="TextField_Search_Off"
|
||||
enabled="false"
|
||||
follows="left|top|right"
|
||||
font="SansSerif"
|
||||
label="Filter"
|
||||
<text
|
||||
follows="top|left|right"
|
||||
font="SansSerifBold"
|
||||
height="13"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
width="290"
|
||||
name="add_to_outfit_label"
|
||||
text_color="LtGray"
|
||||
top="3"
|
||||
value="Add to Outfit:"
|
||||
use_ellipses="true"
|
||||
width="150" />
|
||||
<button
|
||||
follows="top|left|right"
|
||||
height="20"
|
||||
name="look_item_filter"
|
||||
text_color="black"
|
||||
text_pad_left="25"
|
||||
visible="false"/>
|
||||
image_hover_unselected="Toolbar_Middle_Over"
|
||||
image_overlay=""
|
||||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
is_toggle="true"
|
||||
label="O"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="filter_button"
|
||||
top="3"
|
||||
width="20" />
|
||||
<combo_box
|
||||
follows="top|left|right"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
right="-5"
|
||||
name="filter_wearables_combobox"
|
||||
top="2"
|
||||
width="110"/>
|
||||
|
||||
<layout_stack
|
||||
animate="true"
|
||||
follows="all"
|
||||
height="25"
|
||||
width="300"
|
||||
height="155"
|
||||
width="311"
|
||||
layout="topleft"
|
||||
orientation="horizontal"
|
||||
name="filter_panels"
|
||||
top="0"
|
||||
top_pad="5"
|
||||
left="0">
|
||||
<layout_panel
|
||||
auto_resize="true"
|
||||
layout="topleft"
|
||||
follows="left|top|right"
|
||||
height="25"
|
||||
height="30"
|
||||
label="IM Control Panel"
|
||||
name="filter_button_panel"
|
||||
width="150"
|
||||
auto_resize="true"
|
||||
user_resize="false">
|
||||
<text
|
||||
follows="top|left|right"
|
||||
font="SansSerifBold"
|
||||
height="13"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
name="add_to_outfit_label"
|
||||
text_color="LtGray"
|
||||
top="3"
|
||||
value="Add to Outfit:"
|
||||
use_ellipses="true"
|
||||
width="270" />
|
||||
<button
|
||||
follows="top|right"
|
||||
height="20"
|
||||
image_hover_unselected="Toolbar_Middle_Over"
|
||||
image_overlay=""
|
||||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
is_toggle="true"
|
||||
label="O"
|
||||
layout="topleft"
|
||||
right="-1"
|
||||
name="filter_button"
|
||||
top="3"
|
||||
width="20" />
|
||||
name="filter_panel"
|
||||
width="311"
|
||||
user_resize="false"
|
||||
visible="false">
|
||||
<filter_editor
|
||||
background_image="TextField_Search_Off"
|
||||
enabled="true"
|
||||
follows="left|top|right"
|
||||
font="SansSerif"
|
||||
label="Filter"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
width="290"
|
||||
height="25"
|
||||
name="look_item_filter"
|
||||
text_color="black"
|
||||
text_pad_left="25"
|
||||
visible="true"/>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="true"
|
||||
height="25"
|
||||
height="145"
|
||||
min_width="130"
|
||||
name="filter_combobox_panel"
|
||||
width="150"
|
||||
user_resize="false"
|
||||
visible="false">
|
||||
<combo_box
|
||||
follows="top|left|right"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
right="-5"
|
||||
name="filter_wearables_combobox"
|
||||
top="0"
|
||||
width="130"/>
|
||||
name="inventory_panel"
|
||||
width="311"
|
||||
user_resize="true">
|
||||
<inventory_panel
|
||||
allow_multi_select="false"
|
||||
border="false"
|
||||
follows="left|top|right|bottom"
|
||||
height="130"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="inventory_items"
|
||||
top_pad="5"
|
||||
width="311"
|
||||
visible="false"/>
|
||||
<panel
|
||||
name="filtered_wearables_panel"
|
||||
background_opaque="true"
|
||||
background_visible="true"
|
||||
layout="topleft"
|
||||
follows="left|top|right|bottom"
|
||||
border="false"
|
||||
height="130"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
width="311"
|
||||
top_delta="0"
|
||||
visible="true">
|
||||
<wearable_items_list
|
||||
name="filtered_wearables_list"
|
||||
allow_select="true"
|
||||
layout="topleft"
|
||||
follows="all"
|
||||
width="311"
|
||||
height="130"
|
||||
left="0"
|
||||
top="0"/>
|
||||
</panel>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
||||
<inventory_panel
|
||||
allow_multi_select="false"
|
||||
border="false"
|
||||
follows="left|top|right|bottom"
|
||||
height="155"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="inventory_items"
|
||||
top_pad="5"
|
||||
width="300"/>
|
||||
|
||||
<panel
|
||||
name="filtered_wearables_panel"
|
||||
background_opaque="true"
|
||||
background_visible="true"
|
||||
layout="topleft"
|
||||
follows="left|top|right|bottom"
|
||||
border="false"
|
||||
height="155"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
width="300"
|
||||
top_delta="0"
|
||||
visible="false">
|
||||
<wearable_items_list
|
||||
name="filtered_wearables_list"
|
||||
allow_select="true"
|
||||
layout="topleft"
|
||||
follows="all"
|
||||
width="300"
|
||||
height="155"
|
||||
left="0"
|
||||
top="0" />
|
||||
</panel>
|
||||
|
||||
<panel
|
||||
background_visible="true"
|
||||
bevel_style="none"
|
||||
|
|
@ -357,6 +359,7 @@
|
|||
image_overlay=""
|
||||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
is_toggle="true"
|
||||
label="F"
|
||||
layout="topleft"
|
||||
left_pad="1"
|
||||
|
|
@ -370,6 +373,7 @@
|
|||
image_overlay=""
|
||||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
is_toggle="true"
|
||||
label="L"
|
||||
layout="topleft"
|
||||
left_pad="1"
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ La lunghezza massima è [MAX_LENGTH] secondi.
|
|||
<item label="Accigliato" name="Frown" value="Accigliato"/>
|
||||
<item label="Bacio" name="Kiss" value="Bacio"/>
|
||||
<item label="Risata" name="Laugh" value="Risata"/>
|
||||
<item label="Plllppt" name="Plllppt" value="Plllppt"/>
|
||||
<item label="Plllppt" name="Plllppt" value="Linguaccia"/>
|
||||
<item label="Repulsione" name="Repulsed" value="Repulsione"/>
|
||||
<item label="Triste" name="Sad" value="Triste"/>
|
||||
<item label="Scrollata di spalle" name="Shrug" value="Scrollata di spalle"/>
|
||||
|
|
|
|||
|
|
@ -39,11 +39,11 @@
|
|||
<floater.string name="grid_attachment_text">
|
||||
Accessorio
|
||||
</floater.string>
|
||||
<button label="" label_selected="" name="button focus" tool_tip="Focus"/>
|
||||
<button label="" label_selected="" name="button move" tool_tip="Muoviti"/>
|
||||
<button label="" label_selected="" name="button focus" tool_tip="Ingrandisci"/>
|
||||
<button label="" label_selected="" name="button move" tool_tip="Sposta"/>
|
||||
<button label="" label_selected="" name="button edit" tool_tip="Modifica"/>
|
||||
<button label="" label_selected="" name="button create" tool_tip="Crea"/>
|
||||
<button label="" label_selected="" name="button land" tool_tip="Terra"/>
|
||||
<button label="" label_selected="" name="button land" tool_tip="Terreno"/>
|
||||
<text name="text status">
|
||||
Trascina per muovere, trascina+maiuscolo per copiare
|
||||
</text>
|
||||
|
|
@ -397,7 +397,7 @@
|
|||
</text>
|
||||
<check_box label="Massima luminosità" name="checkbox fullbright"/>
|
||||
<text name="tex gen">
|
||||
Applicazione della texture
|
||||
Applicazione
|
||||
</text>
|
||||
<combo_box name="combobox texgen">
|
||||
<combo_box.item label="Default" name="Default"/>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
<menu_item_call label="Strumento Ingrandisci" name="Focus"/>
|
||||
<menu_item_call label="Strumento Movimento" name="Move"/>
|
||||
<menu_item_call label="Strumento Modifica" name="Edit"/>
|
||||
<menu_item_call label="Crea strumento" name="Create"/>
|
||||
<menu_item_call label="Strumento Crea" name="Create"/>
|
||||
<menu_item_call label="Strumento Terreno" name="Land"/>
|
||||
</menu>
|
||||
<menu_item_call label="Collegamento" name="Link"/>
|
||||
|
|
@ -182,7 +182,7 @@
|
|||
<menu_item_call label="Strumento Ingrandisci" name="Focus"/>
|
||||
<menu_item_call label="Strumento Movimento" name="Move"/>
|
||||
<menu_item_call label="Strumento Modifica" name="Edit"/>
|
||||
<menu_item_call label="Crea strumento" name="Create"/>
|
||||
<menu_item_call label="Strumento Crea" name="Create"/>
|
||||
<menu_item_call label="Strumento Terreno" name="Land"/>
|
||||
</menu>
|
||||
<menu_item_call label="Zoom avanti" name="Zoom In"/>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ Muovi il tuo mouse sopra le opzioni per maggiore aiuto.
|
|||
<check_box label="Chiunque può aderire" name="open_enrollement" tool_tip="Imposta se questo gruppo permette ai nuovi membri di aderire senza essere invitati."/>
|
||||
<check_box label="Quota di adesione" name="check_enrollment_fee" tool_tip="Imposta se richiedere una tassa d'iscrizione per aderire al gruppo"/>
|
||||
<spinner label="L$" left_delta="136" name="spin_enrollment_fee" tool_tip="I nuovi soci devono pagare questa tassa d'iscrizione quando è selezionata." width="60"/>
|
||||
<combo_box name="group_mature_check" tool_tip="Imposta se le informazioni sul tuo gruppo sono da considerarsi Mature.">
|
||||
<combo_box name="group_mature_check" tool_tip="Imposta se le informazioni sul tuo gruppo sono da considerarsi di tipo Moderato.">
|
||||
<combo_item name="select_mature">
|
||||
- Seleziona categoria di accesso -
|
||||
</combo_item>
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
<text label="Maturità" name="access_text" width="120">
|
||||
Categoria di accesso:
|
||||
</text>
|
||||
<icons_combo_box label="Mature" left="126" name="access_combo" width="74">
|
||||
<icons_combo_box label="Moderato" left="126" name="access_combo" width="74">
|
||||
<icons_combo_box.item label="Adulti" name="Adult" value="42"/>
|
||||
<icons_combo_box.item label="Moderato" name="Mature" value="21"/>
|
||||
<icons_combo_box.item label="Generale" name="PG" value="13"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue