commit
d07a354d0a
|
|
@ -3234,6 +3234,9 @@ bool LLAgent::teleportCore(bool is_local)
|
|||
// hide land floater too - it'll be out of date
|
||||
LLFloaterReg::hideInstance("about_land");
|
||||
|
||||
// hide the search floater (EXT-8276)
|
||||
LLFloaterReg::hideInstance("search");
|
||||
|
||||
LLViewerParcelMgr::getInstance()->deselectLand();
|
||||
LLViewerMediaFocus::getInstance()->clearFocus();
|
||||
|
||||
|
|
|
|||
|
|
@ -951,7 +951,7 @@ const LLUUID LLAppearanceMgr::getBaseOutfitUUID()
|
|||
return outfit_cat->getUUID();
|
||||
}
|
||||
|
||||
bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace)
|
||||
bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace, LLPointer<LLInventoryCallback> cb)
|
||||
{
|
||||
if (item_id_to_wear.isNull()) return false;
|
||||
|
||||
|
|
@ -1005,7 +1005,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
|
|||
// Remove existing body parts anyway because we must not be able to wear e.g. two skins.
|
||||
removeCOFLinksOfType(item_to_wear->getWearableType(), false);
|
||||
|
||||
addCOFItemLink(item_to_wear, do_update);
|
||||
addCOFItemLink(item_to_wear, do_update, cb);
|
||||
break;
|
||||
case LLAssetType::AT_OBJECT:
|
||||
rez_attachment(item_to_wear, NULL);
|
||||
|
|
@ -1959,9 +1959,10 @@ bool areMatchingWearables(const LLViewerInventoryItem *a, const LLViewerInventor
|
|||
class LLDeferredCOFLinkObserver: public LLInventoryObserver
|
||||
{
|
||||
public:
|
||||
LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update):
|
||||
LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update, LLPointer<LLInventoryCallback> cb = NULL):
|
||||
mItemID(item_id),
|
||||
mDoUpdate(do_update)
|
||||
mDoUpdate(do_update),
|
||||
mCallback(cb)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -1975,7 +1976,7 @@ public:
|
|||
if (item)
|
||||
{
|
||||
gInventory.removeObserver(this);
|
||||
LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate);
|
||||
LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate,mCallback);
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
|
|
@ -1983,26 +1984,27 @@ public:
|
|||
private:
|
||||
const LLUUID mItemID;
|
||||
bool mDoUpdate;
|
||||
LLPointer<LLInventoryCallback> mCallback;
|
||||
};
|
||||
|
||||
|
||||
// BAP - note that this runs asynchronously if the item is not already loaded from inventory.
|
||||
// Dangerous if caller assumes link will exist after calling the function.
|
||||
void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update )
|
||||
void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update, LLPointer<LLInventoryCallback> cb)
|
||||
{
|
||||
const LLInventoryItem *item = gInventory.getItem(item_id);
|
||||
if (!item)
|
||||
{
|
||||
LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update);
|
||||
LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update, cb);
|
||||
gInventory.addObserver(observer);
|
||||
}
|
||||
else
|
||||
{
|
||||
addCOFItemLink(item, do_update);
|
||||
addCOFItemLink(item, do_update, cb);
|
||||
}
|
||||
}
|
||||
|
||||
void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update )
|
||||
void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update, LLPointer<LLInventoryCallback> cb)
|
||||
{
|
||||
const LLViewerInventoryItem *vitem = dynamic_cast<const LLViewerInventoryItem*>(item);
|
||||
if (!vitem)
|
||||
|
|
@ -2063,7 +2065,10 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update
|
|||
}
|
||||
else
|
||||
{
|
||||
LLPointer<LLInventoryCallback> cb = do_update ? new ModifiedCOFCallback : 0;
|
||||
if(do_update && cb.isNull())
|
||||
{
|
||||
cb = new ModifiedCOFCallback;
|
||||
}
|
||||
const std::string description = vitem->getIsLinkType() ? vitem->getDescription() : "";
|
||||
link_inventory_item( gAgent.getID(),
|
||||
vitem->getLinkedUUID(),
|
||||
|
|
@ -2502,12 +2507,7 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
|
|||
// since sever don't sends message _PREHASH_KillObject in that case.
|
||||
// Also we can't check is link was successfully removed from COF since in case
|
||||
// deleting attachment link removing performs asynchronously in process_kill_object callback.
|
||||
LLViewerInventoryItem* item = gInventory.getItem(id_to_remove);
|
||||
if (item != NULL)
|
||||
{
|
||||
gInventory.purgeObject(id_to_remove);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
removeCOFItemLinks(id_to_remove,false);
|
||||
}
|
||||
|
||||
bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ public:
|
|||
const LLUUID getBaseOutfitUUID();
|
||||
|
||||
// Wear/attach an item (from a user's inventory) on the agent
|
||||
bool wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update = true, bool replace = false);
|
||||
bool wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update = true, bool replace = false, LLPointer<LLInventoryCallback> cb = NULL);
|
||||
|
||||
// Update the displayed outfit name in UI.
|
||||
void updatePanelOutfitName(const std::string& name);
|
||||
|
|
@ -124,8 +124,8 @@ public:
|
|||
LLPointer<LLInventoryCallback> cb);
|
||||
|
||||
// Add COF link to individual item.
|
||||
void addCOFItemLink(const LLUUID& item_id, bool do_update = true);
|
||||
void addCOFItemLink(const LLInventoryItem *item, bool do_update = true);
|
||||
void addCOFItemLink(const LLUUID& item_id, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);
|
||||
void addCOFItemLink(const LLInventoryItem *item, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);
|
||||
|
||||
// Remove COF entries
|
||||
void removeCOFItemLinks(const LLUUID& item_id, bool do_update = true);
|
||||
|
|
@ -175,6 +175,8 @@ public:
|
|||
|
||||
bool isOutfitLocked() { return mOutfitLocked; }
|
||||
|
||||
bool isInUpdateAppearanceFromCOF() { return mIsInUpdateAppearanceFromCOF; }
|
||||
|
||||
protected:
|
||||
LLAppearanceMgr();
|
||||
~LLAppearanceMgr();
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@
|
|||
#include "llimview.h" // for gIMMgr
|
||||
#include "llmutelist.h"
|
||||
#include "llnotificationsutil.h" // for LLNotificationsUtil
|
||||
#include "llpaneloutfitedit.h"
|
||||
#include "llrecentpeople.h"
|
||||
#include "llsidetray.h"
|
||||
#include "lltrans.h"
|
||||
|
|
@ -435,13 +436,29 @@ namespace action_give_inventory
|
|||
{
|
||||
typedef std::set<LLUUID> uuid_set_t;
|
||||
|
||||
/**
|
||||
* Returns a pointer to 'Add More' inventory panel of Edit Outfit SP.
|
||||
*/
|
||||
static LLInventoryPanel* get_outfit_editor_inventory_panel()
|
||||
{
|
||||
LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
|
||||
if (NULL == panel_outfit_edit) return NULL;
|
||||
|
||||
LLInventoryPanel* inventory_panel = panel_outfit_edit->findChild<LLInventoryPanel>("folder_view");
|
||||
return inventory_panel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks My Inventory visibility.
|
||||
*/
|
||||
static bool is_give_inventory_acceptable()
|
||||
{
|
||||
LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
|
||||
if (NULL == active_panel) return false;
|
||||
if (!active_panel)
|
||||
{
|
||||
active_panel = get_outfit_editor_inventory_panel();
|
||||
if (!active_panel) return false;
|
||||
}
|
||||
|
||||
// check selection in the panel
|
||||
const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList();
|
||||
|
|
@ -621,9 +638,10 @@ namespace action_give_inventory
|
|||
|
||||
|
||||
LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
|
||||
if (NULL == active_panel)
|
||||
if (!active_panel)
|
||||
{
|
||||
return;
|
||||
active_panel = get_outfit_editor_inventory_panel();
|
||||
if (!active_panel) return;
|
||||
}
|
||||
|
||||
const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList();
|
||||
|
|
|
|||
|
|
@ -79,9 +79,7 @@ protected:
|
|||
}
|
||||
|
||||
// Set proper label for the "Create new <WEARABLE_TYPE>" menu item.
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[WEARABLE_TYPE]"] = LLTrans::getString(LLWearableType::getTypeDefaultNewName(w_type));
|
||||
std::string new_label = LLTrans::getString("CreateNewWearable", args);
|
||||
std::string new_label = LLTrans::getString("create_new_" + LLWearableType::getTypeName(w_type));
|
||||
menu_item->setLabel(new_label);
|
||||
}
|
||||
|
||||
|
|
@ -333,6 +331,10 @@ BOOL LLCOFWearables::postBuild()
|
|||
mBodyPartsTab = getChild<LLAccordionCtrlTab>("tab_body_parts");
|
||||
mBodyPartsTab->setDropDownStateChangedCallback(boost::bind(&LLCOFWearables::onAccordionTabStateChanged, this, _1, _2));
|
||||
|
||||
mTab2AssetType[mClothingTab] = LLAssetType::AT_CLOTHING;
|
||||
mTab2AssetType[mAttachmentsTab] = LLAssetType::AT_OBJECT;
|
||||
mTab2AssetType[mBodyPartsTab] = LLAssetType::AT_BODYPART;
|
||||
|
||||
return LLPanel::postBuild();
|
||||
}
|
||||
|
||||
|
|
@ -632,49 +634,17 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()
|
|||
|
||||
static type_map_t type_map;
|
||||
static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
|
||||
const LLAccordionCtrlTab* expanded_tab = accordion_ctrl->getExpandedTab();
|
||||
|
||||
if (type_map.empty())
|
||||
{
|
||||
type_map["tab_clothing"] = LLAssetType::AT_CLOTHING;
|
||||
type_map["tab_attachments"] = LLAssetType::AT_OBJECT;
|
||||
type_map["tab_body_parts"] = LLAssetType::AT_BODYPART;
|
||||
}
|
||||
|
||||
const LLAccordionCtrlTab* tab = accordion_ctrl->getExpandedTab();
|
||||
LLAssetType::EType result = LLAssetType::AT_NONE;
|
||||
|
||||
if (tab)
|
||||
{
|
||||
type_map_t::iterator i = type_map.find(tab->getName());
|
||||
llassert(i != type_map.end());
|
||||
result = i->second;
|
||||
}
|
||||
|
||||
return result;
|
||||
return get_if_there(mTab2AssetType, expanded_tab, LLAssetType::AT_NONE);
|
||||
}
|
||||
|
||||
LLAssetType::EType LLCOFWearables::getSelectedAccordionAssetType()
|
||||
{
|
||||
//*TODO share the code with ::getExpandedAccordionAssetType(...)
|
||||
static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
|
||||
const LLAccordionCtrlTab* selected_tab = accordion_ctrl->getSelectedTab();
|
||||
|
||||
if (selected_tab == mClothingTab)
|
||||
{
|
||||
return LLAssetType::AT_CLOTHING;
|
||||
}
|
||||
else if (selected_tab == mAttachmentsTab)
|
||||
{
|
||||
return LLAssetType::AT_OBJECT;
|
||||
}
|
||||
else if (selected_tab == mBodyPartsTab)
|
||||
{
|
||||
return LLAssetType::AT_BODYPART;
|
||||
}
|
||||
else
|
||||
{
|
||||
return LLAssetType::AT_NONE;
|
||||
}
|
||||
|
||||
return get_if_there(mTab2AssetType, selected_tab, LLAssetType::AT_NONE);
|
||||
}
|
||||
|
||||
void LLCOFWearables::onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu)
|
||||
|
|
|
|||
|
|
@ -116,6 +116,8 @@ protected:
|
|||
|
||||
LLAccordionCtrlTab* mLastSelectedTab;
|
||||
|
||||
std::map<const LLAccordionCtrlTab*, LLAssetType::EType> mTab2AssetType;
|
||||
|
||||
LLCOFCallbacks mCOFCallbacks;
|
||||
|
||||
LLListContextMenu* mClothingMenu;
|
||||
|
|
|
|||
|
|
@ -313,8 +313,20 @@ private:
|
|||
|
||||
inline LLFace* LLDrawable::getFace(const S32 i) const
|
||||
{
|
||||
llassert((U32)i < mFaces.size());
|
||||
llassert(mFaces[i]);
|
||||
//switch these asserts to llerrs -- davep
|
||||
//llassert((U32)i < mFaces.size());
|
||||
//llassert(mFaces[i]);
|
||||
|
||||
if ((U32) i >= mFaces.size())
|
||||
{
|
||||
llerrs << "Invalid face index." << llendl;
|
||||
}
|
||||
|
||||
if (!mFaces[i])
|
||||
{
|
||||
llerrs << "Null face found." << llendl;
|
||||
}
|
||||
|
||||
return mFaces[i];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ public:
|
|||
{
|
||||
bool operator()(const LLFace* const& lhs, const LLFace* const& rhs)
|
||||
{
|
||||
return lhs->mDistance > rhs->mDistance; // farthest = first
|
||||
return !lhs || (rhs && (lhs->mDistance > rhs->mDistance)); // farthest = first
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@
|
|||
#include "llpanellandaudio.h"
|
||||
#include "llpanellandmedia.h"
|
||||
#include "llradiogroup.h"
|
||||
#include "llresmgr.h" // getMonetaryString
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "llscrolllistitem.h"
|
||||
#include "llscrolllistcell.h"
|
||||
|
|
@ -739,7 +740,8 @@ void LLPanelLandGeneral::refresh()
|
|||
cost_per_sqm = (F32)parcel->getSalePrice() / (F32)area;
|
||||
}
|
||||
|
||||
mSaleInfoForSale1->setTextArg("[PRICE]", llformat("%d", parcel->getSalePrice()));
|
||||
S32 price = parcel->getSalePrice();
|
||||
mSaleInfoForSale1->setTextArg("[PRICE]", LLResMgr::getInstance()->getMonetaryString(price));
|
||||
mSaleInfoForSale1->setTextArg("[PRICE_PER_SQM]", llformat("%.1f", cost_per_sqm));
|
||||
if (can_be_sold)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1174,12 +1174,11 @@ void LLGestureMgr::notifyObservers()
|
|||
{
|
||||
lldebugs << "LLGestureMgr::notifyObservers" << llendl;
|
||||
|
||||
std::vector<LLGestureManagerObserver*> observers = mObservers;
|
||||
|
||||
std::vector<LLGestureManagerObserver*>::iterator it;
|
||||
for (it = observers.begin(); it != observers.end(); ++it)
|
||||
for(std::vector<LLGestureManagerObserver*>::iterator iter = mObservers.begin();
|
||||
iter != mObservers.end();
|
||||
++iter)
|
||||
{
|
||||
LLGestureManagerObserver* observer = *it;
|
||||
LLGestureManagerObserver* observer = (*iter);
|
||||
observer->changed();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -444,7 +444,8 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const
|
|||
|
||||
void hide_context_entries(LLMenuGL& menu,
|
||||
const menuentry_vec_t &entries_to_show,
|
||||
const menuentry_vec_t &disabled_entries)
|
||||
const menuentry_vec_t &disabled_entries,
|
||||
BOOL append) // If append is TRUE, then new enabled entries
|
||||
{
|
||||
const LLView::child_list_t *list = menu.getChildList();
|
||||
|
||||
|
|
@ -501,6 +502,10 @@ void hide_context_entries(LLMenuGL& menu,
|
|||
// A bit of a hack so we can remember that some UI element explicitly set this to be visible
|
||||
// so that some other UI element from multi-select doesn't later set this invisible.
|
||||
menu_item->pushVisible(TRUE);
|
||||
if (append)
|
||||
{
|
||||
menu_item->setEnabled(TRUE);
|
||||
}
|
||||
for (itor2 = disabled_entries.begin(); itor2 != disabled_entries.end(); ++itor2)
|
||||
{
|
||||
if (*itor2 == name)
|
||||
|
|
@ -2054,7 +2059,7 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask)
|
|||
mContentsCount)
|
||||
{
|
||||
gInventory.removeObserver(this);
|
||||
LLAppearanceMgr::instance().wearInventoryCategory(category, FALSE, TRUE);
|
||||
LLAppearanceMgr::instance().wearInventoryCategory(category, FALSE, FALSE);
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
|
|
@ -2397,6 +2402,11 @@ void LLFolderBridge::folderOptionsMenu()
|
|||
const LLInventoryCategory* category = model->getCategory(mUUID);
|
||||
if(!category) return;
|
||||
|
||||
const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
|
||||
if (trash_id == mUUID) return;
|
||||
if (isItemInTrash()) return;
|
||||
if (!isAgentInventory()) return;
|
||||
|
||||
LLFolderType::EType type = category->getPreferredType();
|
||||
const bool is_system_folder = LLFolderType::lookupIsProtectedType(type);
|
||||
// BAP change once we're no longer treating regular categories as ensembles.
|
||||
|
|
@ -2456,7 +2466,7 @@ void LLFolderBridge::folderOptionsMenu()
|
|||
}
|
||||
mItems.push_back(std::string("Outfit Separator"));
|
||||
}
|
||||
hide_context_entries(*mMenu, mItems, disabled_items);
|
||||
hide_context_entries(*mMenu, mItems, disabled_items, TRUE);
|
||||
|
||||
// Reposition the menu, in case we're adding items to an existing menu.
|
||||
mMenu->needsArrange();
|
||||
|
|
@ -2580,28 +2590,6 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
|
||||
mMenu = &menu;
|
||||
sSelf = this;
|
||||
|
||||
|
||||
uuid_vec_t folders;
|
||||
LLViewerInventoryCategory* category = (LLViewerInventoryCategory*)model->getCategory(mUUID);
|
||||
if (category)
|
||||
{
|
||||
folders.push_back(category->getUUID());
|
||||
}
|
||||
LLRightClickInventoryFetchDescendentsObserver* fetch = new LLRightClickInventoryFetchDescendentsObserver(folders, FALSE);
|
||||
fetch->startFetch();
|
||||
inc_busy_count();
|
||||
if(fetch->isFinished())
|
||||
{
|
||||
// everything is already here - call done.
|
||||
fetch->done();
|
||||
}
|
||||
else
|
||||
{
|
||||
// it's all on it's way - add an observer, and the inventory
|
||||
// will call done for us when everything is here.
|
||||
gInventory.addObserver(fetch);
|
||||
}
|
||||
}
|
||||
|
||||
// Preemptively disable system folder removal if more than one item selected.
|
||||
|
|
@ -2623,6 +2611,27 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
}
|
||||
|
||||
hide_context_entries(menu, mItems, mDisabledItems);
|
||||
|
||||
// Add menu items that are dependent on the contents of the folder.
|
||||
uuid_vec_t folders;
|
||||
LLViewerInventoryCategory* category = (LLViewerInventoryCategory*)model->getCategory(mUUID);
|
||||
if (category)
|
||||
{
|
||||
folders.push_back(category->getUUID());
|
||||
}
|
||||
LLRightClickInventoryFetchDescendentsObserver* fetch = new LLRightClickInventoryFetchDescendentsObserver(folders, FALSE);
|
||||
fetch->startFetch();
|
||||
inc_busy_count();
|
||||
if(fetch->isFinished())
|
||||
{
|
||||
// everything is already here - call done.
|
||||
fetch->done();
|
||||
}
|
||||
else
|
||||
{
|
||||
// it's all on its way - add an observer, and the inventory will call done for us when everything is here.
|
||||
gInventory.addObserver(fetch);
|
||||
}
|
||||
}
|
||||
|
||||
BOOL LLFolderBridge::hasChildren() const
|
||||
|
|
@ -2989,7 +2998,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
|
|||
// BAP - should skip if dup.
|
||||
if (move_is_into_current_outfit)
|
||||
{
|
||||
LLAppearanceMgr::instance().addCOFItemLink(inv_item);
|
||||
LLAppearanceMgr::instance().wearItemOnAvatar(inv_item->getUUID(), true, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -603,8 +603,12 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
|
|||
void* user_data = NULL);
|
||||
|
||||
// Utility function to hide all entries except those in the list
|
||||
// Can be called multiple times on the same menu (e.g. if multiple items
|
||||
// are selected). If "append" is false, then only common enabled items
|
||||
// are set as enabled.
|
||||
void hide_context_entries(LLMenuGL& menu,
|
||||
const menuentry_vec_t &entries_to_show,
|
||||
const menuentry_vec_t &disabled_entries);
|
||||
const menuentry_vec_t &disabled_entries,
|
||||
BOOL append = FALSE);
|
||||
|
||||
#endif // LL_LLINVENTORYBRIDGE_H
|
||||
|
|
|
|||
|
|
@ -704,13 +704,20 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
|
|||
|
||||
void LLPanelOutfitEdit::onPlusBtnClicked(void)
|
||||
{
|
||||
LLUUID selected_id;
|
||||
getCurrentItemUUID(selected_id);
|
||||
uuid_vec_t selected_items;
|
||||
getSelectedItemsUUID(selected_items);
|
||||
|
||||
if (selected_id.isNull()) return;
|
||||
|
||||
//replacing instead of adding the item
|
||||
LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, true, true);
|
||||
LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
|
||||
|
||||
for(uuid_vec_t::iterator iter = selected_items.begin(); iter != selected_items.end(); iter++)
|
||||
{
|
||||
LLUUID selected_id = *iter;
|
||||
if (!selected_id.isNull())
|
||||
{
|
||||
//replacing instead of adding the item
|
||||
LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, false, true, link_waiter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelOutfitEdit::onVisibilityChange()
|
||||
|
|
|
|||
|
|
@ -300,6 +300,7 @@ LLSpatialGroup::~LLSpatialGroup()
|
|||
}
|
||||
|
||||
delete [] mOcclusionVerts;
|
||||
mOcclusionVerts = NULL;
|
||||
|
||||
LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION);
|
||||
clearDrawMap();
|
||||
|
|
|
|||
|
|
@ -164,8 +164,6 @@ public:
|
|||
static BOOL sNoDelete; //deletion of spatial groups and draw info not allowed if TRUE
|
||||
|
||||
typedef std::vector<LLPointer<LLSpatialGroup> > sg_vector_t;
|
||||
typedef std::set<LLPointer<LLSpatialGroup> > sg_set_t;
|
||||
typedef std::list<LLPointer<LLSpatialGroup> > sg_list_t;
|
||||
typedef std::vector<LLPointer<LLSpatialBridge> > bridge_list_t;
|
||||
typedef std::vector<LLPointer<LLDrawInfo> > drawmap_elem_t;
|
||||
typedef std::map<U32, drawmap_elem_t > draw_map_t;
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@
|
|||
#include "llmediaentry.h"
|
||||
#include "llmenugl.h"
|
||||
#include "llmutelist.h"
|
||||
#include "llresmgr.h" // getMonetaryString
|
||||
#include "llselectmgr.h"
|
||||
#include "lltoolfocus.h"
|
||||
#include "lltoolgrab.h"
|
||||
|
|
@ -808,7 +809,8 @@ BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg)
|
|||
if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE))
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice());
|
||||
S32 price = hover_parcel->getSalePrice();
|
||||
args["[AMOUNT]"] = LLResMgr::getInstance()->getMonetaryString(price);
|
||||
line = LLTrans::getString("TooltipForSaleL$", args);
|
||||
tooltip_msg.append(line);
|
||||
tooltip_msg.push_back('\n');
|
||||
|
|
@ -906,13 +908,14 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
|
|||
|| !existing_inspector->getVisible()
|
||||
|| existing_inspector->getKey()["object_id"].asUUID() != hover_object->getID()))
|
||||
{
|
||||
|
||||
|
||||
// Add price to tooltip for items on sale
|
||||
bool for_sale = for_sale_selection(nodep);
|
||||
if(for_sale)
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[PRICE]"] = llformat ("%d", nodep->mSaleInfo.getSalePrice());
|
||||
S32 price = nodep->mSaleInfo.getSalePrice();
|
||||
args["[AMOUNT]"] = LLResMgr::getInstance()->getMonetaryString(price);
|
||||
tooltip_msg.append(LLTrans::getString("TooltipPrice", args) );
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -625,7 +625,15 @@ bool LLViewerInventoryCategory::fetch()
|
|||
// AIS folks are aware of the issue and have a fix in process.
|
||||
// see ticket for details.
|
||||
|
||||
std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");
|
||||
std::string url;
|
||||
if (gAgent.getRegion())
|
||||
{
|
||||
url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "agent region is null" << llendl;
|
||||
}
|
||||
if (!url.empty()) //Capability found. Build up LLSD and use it.
|
||||
{
|
||||
LLInventoryModelBackgroundFetch::instance().start(mUUID, false);
|
||||
|
|
|
|||
|
|
@ -2097,8 +2097,10 @@ void LLVOAvatar::computeBodySize()
|
|||
if (new_body_size != mBodySize)
|
||||
{
|
||||
mBodySize = new_body_size;
|
||||
if (isSelf())
|
||||
|
||||
if (isSelf() && !LLAppearanceMgr::instance().isInUpdateAppearanceFromCOF())
|
||||
{ // notify simulator of change in size
|
||||
// but not if we are in the middle of updating appearance
|
||||
gAgent.sendAgentSetAppearance();
|
||||
}
|
||||
}
|
||||
|
|
@ -5566,6 +5568,7 @@ LLViewerJointAttachment* LLVOAvatar::getTargetAttachmentPoint(LLViewerObject* vi
|
|||
if (!attachment)
|
||||
{
|
||||
llwarns << "Object attachment point invalid: " << attachmentID << llendl;
|
||||
attachment = get_if_there(mAttachmentPoints, 1, (LLViewerJointAttachment*)NULL); // Arbitrary using 1 (chest)
|
||||
}
|
||||
|
||||
return attachment;
|
||||
|
|
|
|||
|
|
@ -618,8 +618,8 @@ LLContextMenu* LLWearableItemsList::ContextMenu::createMenu()
|
|||
const uuid_vec_t& ids = mUUIDs; // selected items IDs
|
||||
LLUUID selected_id = ids.front(); // ID of the first selected item
|
||||
|
||||
functor_t wear = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, true);
|
||||
functor_t add = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, false);
|
||||
functor_t wear = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, true, LLPointer<LLInventoryCallback>(NULL));
|
||||
functor_t add = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, false, LLPointer<LLInventoryCallback>(NULL));
|
||||
functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);
|
||||
|
||||
// Register handlers common for all wearable types.
|
||||
|
|
@ -767,10 +767,8 @@ void LLWearableItemsList::ContextMenu::updateItemsLabels(LLContextMenu* menu)
|
|||
LLViewerInventoryItem* item = gInventory.getLinkedItem(mUUIDs.back());
|
||||
if (!item || !item->isWearableType()) return;
|
||||
|
||||
LLStringUtil::format_map_t args;
|
||||
LLWearableType::EType w_type = item->getWearableType();
|
||||
args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type);
|
||||
std::string new_label = LLTrans::getString("CreateNewWearable", args);
|
||||
std::string new_label = LLTrans::getString("create_new_" + LLWearableType::getTypeName(w_type));
|
||||
|
||||
LLMenuItemGL* menu_item = menu->getChild<LLMenuItemGL>("create_new");
|
||||
menu_item->setLabel(new_label);
|
||||
|
|
|
|||
|
|
@ -1812,7 +1812,7 @@ void LLPipeline::rebuildPriorityGroups()
|
|||
assertInitialized();
|
||||
|
||||
// Iterate through all drawables on the priority build queue,
|
||||
for (LLSpatialGroup::sg_list_t::iterator iter = mGroupQ1.begin();
|
||||
for (LLSpatialGroup::sg_vector_t::iterator iter = mGroupQ1.begin();
|
||||
iter != mGroupQ1.end(); ++iter)
|
||||
{
|
||||
LLSpatialGroup* group = *iter;
|
||||
|
|
|
|||
|
|
@ -605,7 +605,7 @@ protected:
|
|||
//
|
||||
LLDrawable::drawable_list_t mBuildQ1; // priority
|
||||
LLDrawable::drawable_list_t mBuildQ2; // non-priority
|
||||
LLSpatialGroup::sg_list_t mGroupQ1; //priority
|
||||
LLSpatialGroup::sg_vector_t mGroupQ1; //priority
|
||||
LLSpatialGroup::sg_vector_t mGroupQ2; // non-priority
|
||||
|
||||
LLViewerObject::vobj_list_t mCreateQ;
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 724 B After Width: | Height: | Size: 3.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 183 B After Width: | Height: | Size: 2.8 KiB |
|
|
@ -233,7 +233,7 @@
|
|||
Klik for at starte secondlife:// kommando
|
||||
</string>
|
||||
<string name="CurrentURL" value=" Nuværende URL: [CurrentURL]"/>
|
||||
<string name="TooltipPrice" value="L$[PRICE]-"/>
|
||||
<string name="TooltipPrice" value="L$[AMOUNT]: "/>
|
||||
<string name="SLurlLabelTeleport">
|
||||
Teleportér til
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="edit_alpha_panel" width="320">
|
||||
<panel name="avatar_alpha_color_panel" width="300">
|
||||
<texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/>
|
||||
<texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="66"/>
|
||||
<panel name="edit_alpha_panel">
|
||||
<panel name="avatar_alpha_color_panel">
|
||||
<texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
|
||||
<texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
|
||||
<texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
|
||||
<texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="72"/>
|
||||
<texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/>
|
||||
<texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
|
||||
<texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="edit_tattoo_panel">
|
||||
<panel name="avatar_tattoo_color_panel">
|
||||
<texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
|
||||
<texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
|
||||
<texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
|
||||
<texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
|
||||
<texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
|
||||
<texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
|
||||
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@
|
|||
Anklicken, um Befehl secondlife:// auszuführen
|
||||
</string>
|
||||
<string name="CurrentURL" value=" CurrentURL: [CurrentURL]"/>
|
||||
<string name="TooltipPrice" value="[PRICE] L$"/>
|
||||
<string name="TooltipPrice" value="[AMOUNT]L$: "/>
|
||||
<string name="SLurlLabelTeleport">
|
||||
Teleportieren nach
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -910,40 +910,24 @@
|
|||
width="75">
|
||||
Group:
|
||||
</text>
|
||||
<button
|
||||
follows="top|left"
|
||||
height="10"
|
||||
image_disabled="Activate_Checkmark"
|
||||
image_selected="Activate_Checkmark"
|
||||
image_unselected="Activate_Checkmark"
|
||||
image_color="White_50"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
top_delta="0"
|
||||
name="button set group"
|
||||
tab_stop="false"
|
||||
tool_tip="Choose a group to share this object's permissions"
|
||||
width="10" />
|
||||
<name_box
|
||||
follows="left|top"
|
||||
height="18"
|
||||
initial_value="Loading..."
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
top_delta="-1"
|
||||
left_pad="23"
|
||||
name="Group Name Proxy"
|
||||
width="150" />
|
||||
width="142" />
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Deed"
|
||||
label_selected="Deed"
|
||||
layout="topleft"
|
||||
name="button deed"
|
||||
top_pad="0"
|
||||
left="108"
|
||||
tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."
|
||||
width="80" />
|
||||
follows="top|left"
|
||||
height="23"
|
||||
image_overlay="Edit_Wrench"
|
||||
layout="topleft"
|
||||
left_pad="3"
|
||||
name="button set group"
|
||||
tab_stop="false"
|
||||
tool_tip="Choose a group to share this object's permissions"
|
||||
width="23" />
|
||||
<check_box
|
||||
height="19"
|
||||
follows="left|top"
|
||||
|
|
@ -951,15 +935,26 @@
|
|||
layout="topleft"
|
||||
name="checkbox share with group"
|
||||
tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."
|
||||
top_pad="10"
|
||||
left="106"
|
||||
width="87" />
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Deed"
|
||||
label_selected="Deed"
|
||||
layout="topleft"
|
||||
name="button deed"
|
||||
left_pad="3"
|
||||
width="100" />
|
||||
tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."
|
||||
width="80" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
top_pad="15"
|
||||
top_pad="10"
|
||||
left="10"
|
||||
name="label click action"
|
||||
width="98">
|
||||
|
|
|
|||
|
|
@ -472,7 +472,7 @@
|
|||
layout="topleft"
|
||||
name="Paste Separator" />
|
||||
<menu_item_call
|
||||
label="Remove Link"
|
||||
label="Delete"
|
||||
layout="topleft"
|
||||
name="Remove Link">
|
||||
<menu_item_call.on_click
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
<string name="SentToInvalidRegion">You were sent to an invalid region.</string>
|
||||
<string name="TestingDisconnect">Testing viewer disconnect</string>
|
||||
|
||||
<!-- Tooltip, lltooltipview.cpp -->
|
||||
<!-- Tooltip -->
|
||||
<string name="TooltipPerson">Person</string><!-- Object under mouse pointer is an avatar -->
|
||||
<string name="TooltipNoName">(no name)</string> <!-- No name on an object -->
|
||||
<string name="TooltipOwner">Owner:</string> <!-- Owner name follows -->
|
||||
|
|
@ -83,6 +83,7 @@
|
|||
<string name="TooltipFlagNoScripts">No Scripts</string>
|
||||
<string name="TooltipLand">Land:</string>
|
||||
<string name="TooltipMustSingleDrop">Only a single item can be dragged here</string>
|
||||
<string name="TooltipPrice" value="L$[AMOUNT]: "/>
|
||||
|
||||
<!-- tooltips for Urls -->
|
||||
<string name="TooltipHttpUrl">Click to view this web page</string>
|
||||
|
|
@ -103,8 +104,6 @@
|
|||
<string name="TooltipMapUrl">Click to view this location on a map</string>
|
||||
<string name="TooltipSLAPP">Click to run the secondlife:// command</string>
|
||||
<string name="CurrentURL" value=" CurrentURL: [CurrentURL]" />
|
||||
<string name="TooltipPrice" value=" L$[PRICE]-" />
|
||||
|
||||
|
||||
<!-- text for SLURL labels -->
|
||||
<string name="SLurlLabelTeleport">Teleport to</string>
|
||||
|
|
@ -1830,9 +1829,26 @@ Clears (deletes) the media and all params from the given face.
|
|||
<string name="tattoo_not_worn">Tattoo not worn</string>
|
||||
<string name="invalid_not_worn">invalid</string>
|
||||
|
||||
<!-- Create new wearable of the specified type -->
|
||||
<string name="create_new_shape">Create new shape</string>
|
||||
<string name="create_new_skin">Create new skin</string>
|
||||
<string name="create_new_hair">Create new hair</string>
|
||||
<string name="create_new_eyes">Create new eyes</string>
|
||||
<string name="create_new_shirt">Create new shirt</string>
|
||||
<string name="create_new_pants">Create new pants</string>
|
||||
<string name="create_new_shoes">Create new shoes</string>
|
||||
<string name="create_new_socks">Create new socks</string>
|
||||
<string name="create_new_jacket">Create new jacket</string>
|
||||
<string name="create_new_gloves">Create new gloves</string>
|
||||
<string name="create_new_undershirt">Create new undershirt</string>
|
||||
<string name="create_new_underpants">Create new underpants</string>
|
||||
<string name="create_new_skirt">Create new skirt</string>
|
||||
<string name="create_new_alpha">Create new alpha</string>
|
||||
<string name="create_new_tattoo">Create new tattoo</string>
|
||||
<string name="create_new_invalid">invalid</string>
|
||||
|
||||
<!-- Wearable List-->
|
||||
<string name="NewWearable">New [WEARABLE_ITEM]</string>
|
||||
<string name="CreateNewWearable">Create [WEARABLE_TYPE]</string>
|
||||
|
||||
<!-- LLGroupNotify -->
|
||||
<!-- used in the construction of a Group Notice blue dialog box, buttons, tooltip etc. Seems to be no longer utilized by code in Viewer 2.0 -->
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@
|
|||
Pulsa para ejecutar el comando secondlife://
|
||||
</string>
|
||||
<string name="CurrentURL" value="URL actual: [CurrentURL]"/>
|
||||
<string name="TooltipPrice" value="[PRICE] L$"/>
|
||||
<string name="TooltipPrice" value="[AMOUNT]L$: "/>
|
||||
<string name="SLurlLabelTeleport">
|
||||
Teleportarse a
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="edit_tattoo_panel">
|
||||
<panel name="avatar_tattoo_color_panel">
|
||||
<texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image" width="76"/>
|
||||
<texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image" width="80"/>
|
||||
<texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image" width="76"/>
|
||||
<texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
|
||||
<texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
|
||||
<texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
|
||||
<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@
|
|||
Cliquez pour exécuter la commande secondlife:// command
|
||||
</string>
|
||||
<string name="CurrentURL" value=" URL actuelle : [CurrentURL]"/>
|
||||
<string name="TooltipPrice" value="[PRICE] L$-"/>
|
||||
<string name="TooltipPrice" value="[AMOUNT]L$: "/>
|
||||
<string name="SLurlLabelTeleport">
|
||||
Me téléporter vers
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@
|
|||
Clicca per avviare il comando secondlife://
|
||||
</string>
|
||||
<string name="CurrentURL" value="URL attuale: [CurrentURL]"/>
|
||||
<string name="TooltipPrice" value="L$ [PRICE]-"/>
|
||||
<string name="TooltipPrice" value="L$[AMOUNT]: "/>
|
||||
<string name="SLurlLabelTeleport">
|
||||
Teleportati a
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="edit_tattoo_panel">
|
||||
<panel name="avatar_tattoo_color_panel">
|
||||
<texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択" width="70"/>
|
||||
<texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択" width="70"/>
|
||||
<texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択" width="70"/>
|
||||
<texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択"/>
|
||||
<texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択"/>
|
||||
<texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択"/>
|
||||
<color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@
|
|||
クリックして secondlife:// コマンドを出します
|
||||
</string>
|
||||
<string name="CurrentURL" value=" 現在の URL: [CurrentURL]"/>
|
||||
<string name="TooltipPrice" value="L$[PRICE]-"/>
|
||||
<string name="TooltipPrice" value="L$[AMOUNT]: "/>
|
||||
<string name="SLurlLabelTeleport">
|
||||
テレポート
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@
|
|||
Kliknij by uruchomić secondlife:// command
|
||||
</string>
|
||||
<string name="CurrentURL" value=" Obecny Adres: [CurrentURL]"/>
|
||||
<string name="TooltipPrice" value="L$[PRICE]-"/>
|
||||
<string name="TooltipPrice" value="L$[AMOUNT]: "/>
|
||||
<string name="SLurlLabelTeleport">
|
||||
Teleportuj do
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@
|
|||
Clique para ativar no secondlife:// comando
|
||||
</string>
|
||||
<string name="CurrentURL" value="URL atual: [CurrentURL]"/>
|
||||
<string name="TooltipPrice" value="L$[PRICE]-"/>
|
||||
<string name="TooltipPrice" value="L$[AMOUNT]: "/>
|
||||
<string name="SLurlLabelTeleport">
|
||||
Teletransportar para
|
||||
</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue