Merge branch 'V2MultiWear' of git://github.com/Shyotl/SingularityViewer into V2MultiWear

This commit is contained in:
Lirusaito
2012-05-17 02:09:20 -04:00
8 changed files with 527 additions and 145 deletions

View File

@@ -502,6 +502,16 @@ LLUICtrl* LLUICtrl::getParentUICtrl() const
return NULL;
}
// *TODO: Deprecate; for backwards compatability only:
boost::signals2::connection LLUICtrl::setCommitCallback( boost::function<void (LLUICtrl*,void*)> cb, void* data)
{
return setCommitCallback( boost::bind(cb, _1, data));
}
boost::signals2::connection LLUICtrl::setValidateBeforeCommit( boost::function<bool (const LLSD& data)> cb )
{
if (!mValidateSignal) mValidateSignal = new enable_signal_t();
return mValidateSignal->connect(boost::bind(cb, _2));
}
// virtual
void LLUICtrl::setTentative(BOOL b)
{

View File

@@ -133,6 +133,9 @@ public:
void setCommitCallback( void (*cb)(LLUICtrl*, void*) ) { mCommitCallback = cb; }
void setValidateBeforeCommit( BOOL(*cb)(LLUICtrl*, void*) ) { mValidateCallback = cb; }
// *TODO: Deprecate; for backwards compatability only:
boost::signals2::connection setCommitCallback( boost::function<void (LLUICtrl*,void*)> cb, void* data);
boost::signals2::connection setValidateBeforeCommit( boost::function<bool (const LLSD& data)> cb );
static LLView* fromXML(LLXMLNodePtr node, LLView* parent, class LLUICtrlFactory* factory);

View File

@@ -47,6 +47,7 @@
#include "llvoavatarself.h"
#include "llviewerregion.h"
#include "llwearablelist.h"
#include "llinventorypanel.h"
// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1a)
#include "rlvhandler.h"
#include "rlvhelper.h"
@@ -1228,13 +1229,17 @@ void LLAppearanceMgr::shallowCopyCategory(const LLUUID& src_id, const LLUUID& ds
}
// Copy contents of src_id to dst_id.
void LLAppearanceMgr::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,
LLPointer<LLInventoryCallback> cb)
void LLAppearanceMgr::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id, LLPointer<LLInventoryCallback> cb)
{
LLInventoryModel::cat_array_t* cats;
LLInventoryModel::item_array_t* items;
gInventory.getDirectDescendentsOf(src_id, cats, items);
llinfos << "copying " << items->count() << " items" << llendl;
copyItems(dst_id, items, cb);
}
void LLAppearanceMgr::copyItems(const LLUUID& dst_id, LLInventoryModel::item_array_t* items, LLPointer<LLInventoryCallback> cb)
{
for (LLInventoryModel::item_array_t::const_iterator iter = items->begin();
iter != items->end();
++iter)
@@ -1274,13 +1279,25 @@ void LLAppearanceMgr::shallowCopyCategoryContents(const LLUUID& src_id, const LL
case LLAssetType::AT_BODYPART:
case LLAssetType::AT_GESTURE:
{
llinfos << "copying inventory item " << item->getName() << llendl;
copy_inventory_item(gAgent.getID(),
item->getPermissions().getOwner(),
item->getUUID(),
dst_id,
item->getName(),
cb);
if(!item->getPermissions().allowCopyBy(gAgent.getID()))
{
link_inventory_item(gAgent.getID(),
item->getUUID(),
dst_id,
item->getName(),
item->getDescription(),
LLAssetType::AT_LINK, cb);
}
else
{
llinfos << "copying inventory item " << item->getName() << llendl;
copy_inventory_item(gAgent.getID(),
item->getPermissions().getOwner(),
item->getUUID(),
dst_id,
item->getName(),
cb);
}
break;
}
default:
@@ -2892,11 +2909,39 @@ void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id, bool update_base
class LLShowCreatedOutfit: public LLInventoryCallback
class LLScrollOnFirstItem : public LLInventoryCallback
{
public:
LLShowCreatedOutfit(LLUUID& folder_id, bool show_panel = true): mFolderID(folder_id), mShowPanel(show_panel)
LLScrollOnFirstItem(const LLUUID&folder_id, bool do_scroll) : mFirstItemCreated(!do_scroll), mFolderID(folder_id)
{}
virtual void fire(const LLUUID& item_id)
{
if(mFirstItemCreated)
return;
mFirstItemCreated = true;
if (LLInventoryPanel::getActiveInventoryPanel())
{
if( LLFolderView* root = LLInventoryPanel::getActiveInventoryPanel()->getRootFolder())
{
LLFolderViewItem* folder = dynamic_cast<LLFolderViewFolder*>(root->getItemByID(mFolderID));
if(folder)
{
folder->openItem();
root->setSelection(folder,true,false);
root->scrollToShowSelection();
}
}
}
}
bool mFirstItemCreated;
LLUUID mFolderID;
};
class LLShowCreatedOutfit: public LLScrollOnFirstItem
{
public:
LLShowCreatedOutfit(const LLUUID& folder_id, bool show_panel = true): LLScrollOnFirstItem(folder_id, show_panel), mFolderID(folder_id), mShowPanel(show_panel)
{}
virtual ~LLShowCreatedOutfit()
@@ -2929,10 +2974,7 @@ public:
LLAppearanceMgr::getInstance()->updatePanelOutfitName("");
}
virtual void fire(const LLUUID&)
{}
private:
protected:
LLUUID mFolderID;
bool mShowPanel;
};
@@ -2961,6 +3003,299 @@ LLUUID LLAppearanceMgr::makeNewOutfitLinks(const std::string& new_folder_name, b
return folder_id;
}
//Given an array of items from COF. v3 outfit behavior.
LLUUID LLAppearanceMgr::makeNewOutfitLinks(const std::string& new_folder_name, LLInventoryModel::item_array_t& items, bool show_panel )
{
if (!isAgentAvatarValid()) return LLUUID::null;
else if (items.empty()) return LLUUID::null;
gAgentWearables.notifyLoadingStarted();
// First, make a folder in the My Outfits directory.
const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
LLUUID folder_id = gInventory.createNewCategory(
parent_id,
LLFolderType::FT_OUTFIT,
new_folder_name);
updateClothingOrderingInfo();
LLPointer<LLInventoryCallback> cb = new LLShowCreatedOutfit(folder_id,show_panel);
copyItems(folder_id, &items, cb);
createBaseOutfitLink(folder_id, cb);
dumpCat(folder_id,"COF, new outfit");
return folder_id;
}
//Creates item copies before links and ties all requests to a sole handler
//Requests are batched into subbatches, as too many requests at once causes the sim to
//stall with the inventory requests.
//This handler will also ensure all 'copy' requests are finished before 'link' requests are
//sent out. This behavior isn't really needed for nomod/nocopy items, but it is for multi-worn
//clothing.
//Note that the 'wear' process is pretty convoluted, but its a cludge to get rlva support in without
//tinkering with LLAppearanceMgr further.
//To use this:
// 1) assign an LLPointer the newly created LLCreateLegacyOutfit object.
// 2) Stuff with requests via makeLink and makeCopy
// 3) Call dispatch()
// 4) Let the LLPointer go out of scope.
class LLCreateLegacyOutfit : public LLShowCreatedOutfit
{
public:
LLCreateLegacyOutfit(const LLUUID& folder_id, bool show_panel) :
LLShowCreatedOutfit(folder_id, show_panel), mFolderID(folder_id), mFailed(false)
{}
virtual ~LLCreateLegacyOutfit()
{
if (!LLApp::isRunning() || mFailed)
return;
LLInventoryModel::item_array_t body_items, wear_items, obj_items, gest_items;
for(std::set<LLUUID>::const_iterator it = mWearItems.begin(); it != mWearItems.end(); ++it)
{
LLViewerInventoryItem* item = gInventory.getItem(*it);
if(item)
{
switch(item->getType())
{
case LLAssetType::AT_BODYPART:
body_items.push_back(item);
break;
case LLAssetType::AT_CLOTHING:
wear_items.push_back(item);
break;
case LLAssetType::AT_OBJECT:
obj_items.push_back(item);
break;
case LLAssetType::AT_GESTURE:
gest_items.push_back(item);
break;
default:
break;
}
}
}
if(!body_items.empty() || !wear_items.empty() || !obj_items.empty() || !gest_items.empty())
LLAppearanceMgr::instance().updateCOF(body_items, wear_items, obj_items, gest_items, false);
}
private:
class LLCreateBase : public LLInventoryCallback
{
public:
LLCreateBase(LLViewerInventoryItem* item, const LLUUID& folder_id, LLPointer<LLCreateLegacyOutfit> cb) :
mCallback(cb), mItem(item), mFolderID(folder_id)
{}
virtual ~LLCreateBase()
{
if(mCallback)
mCallback->finished(this, LLUUID::null);
}
virtual void dispatch() = 0;
virtual void fire(const LLUUID& item_id)
{
mCallback->finished(this, item_id);
mCallback = NULL;
}
const LLViewerInventoryItem* getItem() const {return mItem;}
protected:
LLPointer<LLViewerInventoryItem> mItem;
LLPointer<LLCreateLegacyOutfit> mCallback;
const LLUUID mFolderID;
};
class LLCreateCopy : public LLCreateBase
{
public:
LLCreateCopy(LLViewerInventoryItem* item, bool create_copy, const LLUUID& folder_id, LLPointer<LLCreateLegacyOutfit> cb) :
LLCreateBase(item,folder_id,cb), mCreateLink(create_copy),
mLinkDesc((mCreateLink && item->getIsLinkType()) ? item->LLInventoryItem::getDescription() : "" )
{}
virtual void dispatch()
{
const LLViewerInventoryItem* base_item = mItem->getLinkedItem() ? mItem->getLinkedItem() : mItem.get();
copy_inventory_item(gAgent.getID(),
base_item->getPermissions().getOwner(),
base_item->getUUID(),
mFolderID,
base_item->getName(),
this);
}
virtual void fire(const LLUUID& item_id)
{
if(mCreateLink)
mCallback->makeLink(gInventory.getItem(item_id), mLinkDesc);
LLCreateBase::fire(item_id);
}
private:
bool mCreateLink;
std::string mLinkDesc;
};
class LLCreateLink : public LLCreateBase
{
public:
LLCreateLink(LLViewerInventoryItem* item, const std::string& desc, const LLUUID& folder_id, LLPointer<LLCreateLegacyOutfit> cb) :
LLCreateBase(item,folder_id,cb), mDesc(desc)
{}
virtual void dispatch()
{
link_inventory_item(gAgent.getID(),
mItem->getLinkedUUID(),
mFolderID,
mItem->getName(),
mDesc,
LLAssetType::AT_LINK,
this);
}
private:
const std::string mDesc;
};
public:
void makeLink(LLViewerInventoryItem* item, const std::string desc)
{
if(!item)
return;
mPendingLinks.push_back(new LLCreateLink(item, desc, mFolderID, this));
}
void makeCopy(LLViewerInventoryItem* item, bool create_link)
{
if(!item)
return;
mPendingCopies.push_back(new LLCreateCopy(item, create_link, mFolderID, this));
}
void finished(const LLCreateBase* cb, const LLUUID item_id)
{
if(!LLApp::isRunning())
{
mPendingCopies.clear();
mPendingLinks.clear();
return;
}
if(item_id.notNull())
LLShowCreatedOutfit::fire(item_id);
std::vector<const LLCreateBase*>::iterator it = std::find(mActiveRequests.begin(), mActiveRequests.end(),cb);
if(it != mActiveRequests.end())
{
const LLViewerInventoryItem* old_item = (*it)->getItem();
if(item_id.notNull())
{
const LLViewerInventoryItem* item = gInventory.getItem(item_id);
if ((rlv_handler_t::isEnabled()) &&
//If the old item can be removed, but a new one can't take its place, then just use the original item again.
(((rlvPredCanRemoveItem(old_item) && !rlvPredCanWearItem(item,RLV_WEAR_REPLACE))) ||
//If the old item cannot be removed then just use the original item again.
!rlvPredCanRemoveItem(old_item)))
{
item = old_item;
}
if(item->getIsLinkType())
mWearItems.erase(item->getLinkedUUID());
mWearItems.insert(item->getUUID());
}
else
mWearItems.insert(old_item->getUUID());
mActiveRequests.erase(it);
if(!item_id.notNull())
mFailed = true;
if(mActiveRequests.empty())
dispatch(); //Fire off any pending requests.
}
}
void dispatch()
{
const S32 max_batch = 5;
S32 count=0;
if(!sendRequests(mPendingCopies,count,max_batch))
sendRequests(mPendingLinks,count,max_batch); //IFF there are NO copy requests pending.
gInventory.notifyObservers();
}
private:
bool sendRequests(std::vector<LLPointer<LLCreateBase> >& list, S32& count, const S32& max_batch)
{
bool handled = false;
for(std::vector<LLPointer<LLCreateBase> >::iterator it = list.begin();it!=list.end();)
{
if(count >= max_batch)
break;
LLPointer<LLCreateBase> cb = (*it);
it=list.erase(it);
if(cb)
{
cb->dispatch();
mActiveRequests.push_back(cb.get());
++count;
handled = true;
}
}
return handled;
}
LLUUID mFolderID;
bool mFailed;
std::vector<LLPointer<LLCreateBase> > mPendingCopies;
std::vector<LLPointer<LLCreateBase> > mPendingLinks;
std::set<LLUUID> mWearItems;
std::vector<const LLCreateBase*> mActiveRequests;
};
//Given an array of items from COF. Will only use links for no-copy, no-mod, or multi-worn clothing.
LLUUID LLAppearanceMgr::makeNewOutfitLegacy(const std::string& new_folder_name, LLInventoryModel::item_array_t& items, bool use_links, bool show_panel )
{
if (!isAgentAvatarValid()) return LLUUID::null;
else if (items.empty()) return LLUUID::null;
gAgentWearables.notifyLoadingStarted();
// First, make a folder in the My Outfits directory.
const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
LLUUID folder_id = gInventory.createNewCategory(
parent_id,
LLFolderType::FT_NONE,
new_folder_name);
updateClothingOrderingInfo();
LLInventoryModel::item_array_t base_items;
LLInventoryModel::item_array_t remove_items;
LLPointer<LLCreateLegacyOutfit> cb = new LLCreateLegacyOutfit(folder_id,show_panel);
for (LLInventoryModel::item_array_t::const_iterator iter = items.begin();
iter != items.end();
++iter)
{
LLViewerInventoryItem* item = (*iter);
LLViewerInventoryItem* base_item = item->getLinkedItem() ? item->getLinkedItem() : item;
bool is_copy = base_item->getPermissions().allowCopyBy(gAgent.getID());
//Just treat 'object' type as modifiable... permission slam screws them up pretty well.
bool is_mod = base_item->getInventoryType() == LLInventoryType::IT_OBJECT || base_item->getPermissions().allowModifyBy(gAgent.getID());
//If it's multi-worn we want to create a copy of the item if possible AND create a new link to that new copy with the same desc as the old link.
bool is_multi = base_item->isWearableType() && gAgentWearables.getWearableCount(base_item->getWearableType()) > 1 ;
if( use_links && (!is_copy || !is_mod) )
{
cb->makeLink(item,item->LLInventoryItem::getDescription());
}
else if( is_copy )
{
cb->makeCopy(item,is_multi && use_links);
}
}
cb->dispatch();
return folder_id;
}
void LLAppearanceMgr::wearBaseOutfit()
{
const LLUUID& base_outfit_id = getBaseOutfitUUID();

View File

@@ -80,6 +80,8 @@ public:
void shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,
LLPointer<LLInventoryCallback> cb);
void copyItems(const LLUUID& dst_id, LLInventoryModel::item_array_t* items, LLPointer<LLInventoryCallback> cb);
// Return whether this folder contains minimal contents suitable for making a full outfit.
BOOL getCanMakeFolderIntoOutfit(const LLUUID& folder_id);
@@ -174,6 +176,8 @@ public:
LLUUID makeNewOutfitLinks(const std::string& new_folder_name,bool show_panel = true);
LLUUID makeNewOutfitLinks(const std::string& new_folder_name, LLInventoryModel::item_array_t& item_list, bool show_panel = true);
LLUUID makeNewOutfitLegacy(const std::string& new_folder_name, LLInventoryModel::item_array_t& items, bool use_links, bool show_panel = true);
bool moveWearable(LLViewerInventoryItem* item, bool closer_to_body);

View File

@@ -241,11 +241,18 @@ public:
pOutfitFoldersCtrl->setCallbackUserData(this);
}
BOOL getRenameClothing()
bool getUseOutfits()
{
return childGetValue("checkbox_use_outfits").asBoolean();
}
bool getUseLinks()
{
return childGetValue("checkbox_use_links").asBoolean();
}
/*bool getRenameClothing()
{
return childGetValue("rename").asBoolean();
}
}*/
virtual void draw()
{
BOOL one_or_more_items_selected = FALSE;
@@ -269,7 +276,7 @@ public:
{
LLWearableType::EType wtType = (LLWearableType::EType)wearable;
if ( ( (0 <= wtType) && (wtType < LLWearableType::WT_COUNT) ) &&
( (LLAssetType::AT_BODYPART != LLWearableType::getAssetType(wtType)) || (!gSavedSettings.getBOOL("UseOutfitFolders")) ) )
( (LLAssetType::AT_BODYPART != LLWearableType::getAssetType(wtType)) || (!getUseOutfits()) ) )
{
std::string name = std::string("checkbox_") + LLWearableType::getTypeLabel(wtType);
childSetEnabled(name, enabled);
@@ -277,25 +284,32 @@ public:
}
}
void getIncludedItems( LLDynamicArray<S32> &wearables_to_include, LLDynamicArray<S32> &attachments_to_include )
void getIncludedItems( LLInventoryModel::item_array_t& item_list )
{
for( S32 i = 0; i < (S32)mCheckBoxList.size(); i++)
LLInventoryModel::cat_array_t *cats;
LLInventoryModel::item_array_t *items;
gInventory.getDirectDescendentsOf(LLAppearanceMgr::instance().getCOF(), cats, items);
for (LLInventoryModel::item_array_t::const_iterator iter = items->begin();
iter != items->end();
++iter)
{
std::string name = mCheckBoxList[i].first;
BOOL checked = childGetValue(name).asBoolean();
if (i < LLWearableType::WT_COUNT )
LLViewerInventoryItem* item = (*iter);
if(!item)
continue;
if(item->isWearableType())
{
if( checked )
LLWearableType::EType type = item->getWearableType();
if (type < LLWearableType::WT_COUNT && childGetValue(mCheckBoxList[type].first).asBoolean())
{
wearables_to_include.put(i);
item_list.push_back(item);
}
}
else
{
if( checked )
LLViewerJointAttachment* attachment = gAgentAvatarp->getWornAttachmentPoint(item->getLinkedUUID());
if(attachment && childGetValue(std::string("checkbox_")+attachment->getName()).asBoolean())
{
S32 attachment_pt = mCheckBoxList[i].second;
attachments_to_include.put( attachment_pt );
item_list.push_back(item);
}
}
}
@@ -350,7 +364,7 @@ public:
void refresh()
{
BOOL fUseOutfits = gSavedSettings.getBOOL("UseOutfitFolders");
BOOL fUseOutfits = getUseOutfits();
for (S32 idxType = 0; idxType < LLWearableType::WT_COUNT; idxType++ )
{
@@ -1982,7 +1996,7 @@ void LLFloaterCustomize::onBtnMakeOutfit( void* userdata )
for( S32 i = 0; i < LLWearableType::WT_COUNT; i++ )
{
BOOL enabled = (gAgentWearables.getWearable( (LLWearableType::EType) i, 0 ) != NULL); // TODO: MULTI-WEARABLE
BOOL enabled = (gAgentWearables.getWearableCount( (LLWearableType::EType) i )); // TODO: MULTI-WEARABLE
BOOL selected = (enabled && (LLWearableType::WT_SHIRT <= i) && (i < LLWearableType::WT_COUNT)); // only select clothing by default
if (gAgent.isTeen()
&& !edit_wearable_for_teens((LLWearableType::EType)i))
@@ -2007,10 +2021,14 @@ void LLFloaterCustomize::onMakeOutfitCommit( LLMakeOutfitDialog* dialog, void* u
LLDynamicArray<S32> wearables_to_include;
LLDynamicArray<S32> attachments_to_include; // attachment points
dialog->getIncludedItems( wearables_to_include, attachments_to_include );
LLInventoryModel::item_array_t item_list;
dialog->getIncludedItems(item_list);
// MULTI-WEARABLES TODO
//LLAppearanceMgr::getInstance()->makeNewOutfit( dialog->getFolderName(), wearables_to_include, attachments_to_include, dialog->getRenameClothing() );
if(dialog->getUseOutfits())
LLAppearanceMgr::instance().makeNewOutfitLinks( dialog->getFolderName(), item_list);
else
LLAppearanceMgr::instance().makeNewOutfitLegacy( dialog->getFolderName(), item_list, dialog->getUseLinks());
}
}

View File

@@ -1599,7 +1599,7 @@ LLPanelAvatar::~LLPanelAvatar()
BOOL LLPanelAvatar::canClose()
{
return mPanelClassified && mPanelClassified->canClose();
return !mPanelClassified || mPanelClassified->canClose();
}
void LLPanelAvatar::setAvatar(LLViewerObject *avatarp)
@@ -1645,6 +1645,7 @@ void LLPanelAvatar::setOnlineStatus(EOnlineStatus online_status)
online_status = ONLINE_STATUS_YES;
}
if(mPanelSecondLife)
mPanelSecondLife->childSetVisible("online_yes", online_status == ONLINE_STATUS_YES);
// Since setOnlineStatus gets called after setAvatarID
@@ -1711,9 +1712,9 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name
(*it)->setAvatarID(avatar_id);
}
mPanelSecondLife->enableControls(own_avatar && mAllowEdit);
mPanelWeb->enableControls(own_avatar && mAllowEdit);
mPanelAdvanced->enableControls(own_avatar && mAllowEdit);
if (mPanelSecondLife) mPanelSecondLife->enableControls(own_avatar && mAllowEdit);
if (mPanelWeb) mPanelWeb->enableControls(own_avatar && mAllowEdit);
if (mPanelAdvanced) mPanelAdvanced->enableControls(own_avatar && mAllowEdit);
// Teens don't have this.
if (mPanelFirstLife) mPanelFirstLife->enableControls(own_avatar && mAllowEdit);
@@ -1772,16 +1773,16 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name
{
// While we're waiting for data off the network, clear out the
// old data.
mPanelSecondLife->clearControls();
if(mPanelSecondLife) mPanelSecondLife->clearControls();
mPanelPicks->deletePickPanels();
mPanelPicks->setDataRequested(false);
if(mPanelPicks) mPanelPicks->deletePickPanels();
if(mPanelPicks) mPanelPicks->setDataRequested(false);
mPanelClassified->deleteClassifiedPanels();
mPanelClassified->setDataRequested(false);
if(mPanelClassified) mPanelClassified->deleteClassifiedPanels();
if(mPanelClassified) mPanelClassified->setDataRequested(false);
mPanelNotes->clearControls();
mPanelNotes->setDataRequested(false);
if(mPanelNotes) mPanelNotes->clearControls();
if(mPanelNotes) mPanelNotes->setDataRequested(false);
mHaveNotes = false;
mLastNotes.clear();

View File

@@ -146,7 +146,10 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco
}
else
{
gAgentAvatarp->updateRegion(regionp);
if (isAgentAvatarValid())
{
gAgentAvatarp->updateRegion(regionp);
}
}
res = gAgentAvatarp;
}

View File

@@ -3,280 +3,288 @@
can_minimize="false" can_resize="false" can_tear_off="true" enabled="true"
height="530" left="278" min_height="100" min_width="100"
mouse_opaque="true" name="modal container" title="" width="515">
<button bottom="5" enabled="true" font="SansSerif" halign="center" height="20"
<button bottom="5" enabled="true" font="SansSerif" halign="center" height="20"
label="Save" label_selected="Save" left="171" mouse_opaque="true"
name="Save" scale_image="true" width="82" />
<button bottom="5" enabled="true" font="SansSerif" halign="center" height="20"
<button bottom="5" enabled="true" font="SansSerif" halign="center" height="20"
label="Cancel" label_selected="Cancel" left="261" mouse_opaque="true"
name="Cancel" scale_image="true" width="82" />
<check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Shape" left="13"
mouse_opaque="true" name="checkbox_Shape" radio_style="false" width="100" />
<check_box bottom="-236" enabled="true" follows="left|top" font="SansSerifSmall"
mouse_opaque="true" name="checkbox_shape" radio_style="false" width="100" />
<check_box bottom="-236" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Skin" left="13"
mouse_opaque="true" name="checkbox_Skin" radio_style="false" width="100" />
<check_box bottom="-256" enabled="true" follows="left|top" font="SansSerifSmall"
mouse_opaque="true" name="checkbox_skin" radio_style="false" width="100" />
<check_box bottom="-256" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Hair" left="13"
mouse_opaque="true" name="checkbox_Hair" radio_style="false" width="100" />
<check_box bottom="-276" enabled="true" follows="left|top" font="SansSerifSmall"
mouse_opaque="true" name="checkbox_hair" radio_style="false" width="100" />
<check_box bottom="-276" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Eyes" left="13"
mouse_opaque="true" name="checkbox_Eyes" radio_style="false" width="100" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="90" drop_shadow_visible="true" enabled="true" follows="left|top"
mouse_opaque="true" name="checkbox_eyes" radio_style="false" width="100" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="75" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13"
mouse_opaque="true" name="Options:" v_pad="0" width="100">
Options:
</text>
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
Options:
</text>
<!--<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Rename Clothing To Folder Name"
left="13" mouse_opaque="true" name="rename" radio_style="false" width="210" />
left="13" mouse_opaque="true" name="rename" radio_style="false" width="210" />-->
<check_box name="checkbox_use_outfits" control_name="UseOutfitFolders" initial_value="false"
enabled="true" label="Use Viewer 2 outfit folders" font="SansSerifSmall"
bottom_delta="-20" left_delta="0" follows="left|top" height="16" width="300"
mouse_opaque="true" radio_style="false" />
<check_box name="checkbox_use_links" control_name="UseInventoryLinks" initial_value="false"
enabled="true" label="Use links for no-copy items" font="SansSerifSmall"
enabled="true" label="Use links for non-copy, no-mod, or multi-worn items" font="SansSerifSmall"
bottom_delta="-20" left_delta="0" follows="left|top" height="16" width="300"
mouse_opaque="true" radio_style="false" />
<check_box name="checkbox_use_outfits" control_name="UseOutfitFolders" initial_value="false"
enabled="true" label="Use Viewer 2 outfit folders" font="SansSerifSmall"
bottom_delta="-20" left_delta="0" follows="left|top" height="16" width="300"
mouse_opaque="true" radio_style="false" />
<check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Shirt" left="113"
mouse_opaque="true" name="checkbox_shirt" radio_style="false" width="100" />
<check_box bottom="-236" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-236" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Pants" left="113"
mouse_opaque="true" name="checkbox_pants" radio_style="false" width="100" />
<check_box bottom="-256" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-256" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Shoes" left="113"
mouse_opaque="true" name="checkbox_shoes" radio_style="false" width="100" />
<check_box bottom="-276" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-276" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Socks" left="113"
mouse_opaque="true" name="checkbox_socks" radio_style="false" width="100" />
<check_box bottom="-296" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-296" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Jacket" left="113"
mouse_opaque="true" name="checkbox_jacket" radio_style="false" width="100" />
<check_box bottom="-316" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-316" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Gloves" left="113"
mouse_opaque="true" name="checkbox_gloves" radio_style="false" width="100" />
<check_box bottom="-336" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-336" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Undershirt" left="113"
mouse_opaque="true" name="checkbox_undershirt" radio_style="false"
width="100" />
<check_box bottom="-356" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-356" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Underpants" left="113"
mouse_opaque="true" name="checkbox_underpants" radio_style="false"
width="100" />
<check_box bottom="-376" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-376" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Skirt" left="113"
mouse_opaque="true" name="checkbox_skirt" radio_style="false" width="100" />
<check_box bottom="-396" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-396" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Tattoo" left="113"
mouse_opaque="true" name="checkbox_tattoo" radio_style="false" width="100" />
<check_box bottom="-416" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-416" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Alpha" left="113"
mouse_opaque="true" name="checkbox_alpha" radio_style="false" width="100" />
<check_box bottom="-436" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-436" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Physics" left="113"
mouse_opaque="true" name="checkbox_physics" radio_style="false" width="100" />
<check_box bottom="-216" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-216" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Chest" left="213"
mouse_opaque="true" name="checkbox_Chest" radio_style="false" width="100" />
<check_box bottom="-236" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-236" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="true" label="Skull" left="213"
mouse_opaque="true" name="checkbox_Skull" radio_style="false" width="100" />
<check_box bottom="-256" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-256" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Left Shoulder" left="213"
mouse_opaque="true" name="checkbox_Left Shoulder" radio_style="false"
width="100" />
<check_box bottom="-276" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-276" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Right Shoulder" left="213"
mouse_opaque="true" name="checkbox_Right Shoulder" radio_style="false"
width="106" />
<check_box bottom="-296" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-296" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Left Hand" left="213"
mouse_opaque="true" name="checkbox_Left Hand" radio_style="false"
width="100" />
<check_box bottom="-316" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-316" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Right Hand" left="213"
mouse_opaque="true" name="checkbox_Right Hand" radio_style="false"
width="100" />
<check_box bottom="-336" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-336" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="true" label="Left Foot" left="213"
mouse_opaque="true" name="checkbox_Left Foot" radio_style="false"
width="100" />
<check_box bottom="-356" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-356" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="true" label="Right Foot" left="213"
mouse_opaque="true" name="checkbox_Right Foot" radio_style="false"
width="100" />
<check_box bottom="-376" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-376" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Spine" left="213"
mouse_opaque="true" name="checkbox_Spine" radio_style="false" width="100" />
<check_box bottom="-396" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-396" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Pelvis" left="213"
mouse_opaque="true" name="checkbox_Pelvis" radio_style="false" width="100" />
<check_box bottom="-416" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-416" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Mouth" left="213"
mouse_opaque="true" name="checkbox_Mouth" radio_style="false" width="100" />
<check_box bottom="-436" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-436" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Chin" left="213"
mouse_opaque="true" name="checkbox_Chin" radio_style="false" width="100" />
<check_box bottom="-456" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-456" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Left Ear" left="213"
mouse_opaque="true" name="checkbox_Left Ear" radio_style="false"
width="100" />
<check_box bottom="-216" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-216" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Right Ear" left="313"
mouse_opaque="true" name="checkbox_Right Ear" radio_style="false"
width="100" />
<check_box bottom="-236" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-236" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Left Eyeball" left="313"
mouse_opaque="true" name="checkbox_Left Eyeball" radio_style="false"
width="100" />
<check_box bottom="-256" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-256" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Right Eyeball" left="313"
mouse_opaque="true" name="checkbox_Right Eyeball" radio_style="false"
width="100" />
<check_box bottom="-276" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-276" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Nose" left="313"
mouse_opaque="true" name="checkbox_Nose" radio_style="false" width="100" />
<check_box bottom="-296" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-296" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="R Upper Arm" left="313"
mouse_opaque="true" name="checkbox_R Upper Arm" radio_style="false"
width="100" />
<check_box bottom="-316" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-316" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="R Forearm" left="313"
mouse_opaque="true" name="checkbox_R Forearm" radio_style="false"
width="100" />
<check_box bottom="-336" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-336" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="L Upper Arm" left="313"
mouse_opaque="true" name="checkbox_L Upper Arm" radio_style="false"
width="100" />
<check_box bottom="-356" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-356" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="L Forearm" left="313"
mouse_opaque="true" name="checkbox_L Forearm" radio_style="false"
width="100" />
<check_box bottom="-376" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-376" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Right Hip" left="313"
mouse_opaque="true" name="checkbox_Right Hip" radio_style="false"
width="100" />
<check_box bottom="-396" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-396" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="R Upper Leg" left="313"
mouse_opaque="true" name="checkbox_R Upper Leg" radio_style="false"
width="100" />
<check_box bottom="-416" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-416" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="true" label="R Lower Leg" left="313"
mouse_opaque="true" name="checkbox_R Lower Leg" radio_style="false"
width="100" />
<check_box bottom="-436" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-436" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Left Hip" left="313"
mouse_opaque="true" name="checkbox_Left Hip" radio_style="false"
width="100" />
<check_box bottom="-456" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-456" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="L Upper Leg" left="313"
mouse_opaque="true" name="checkbox_L Upper Leg" radio_style="false"
width="100" />
<check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall"
<check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall"
height="16" initial_value="true" label="L Lower Leg" left="413"
mouse_opaque="true" name="checkbox_L Lower Leg" radio_style="false"
width="100" />
<check_box bottom="-236" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-236" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Stomach" left="413"
mouse_opaque="true" name="checkbox_Stomach" radio_style="false" width="100" />
<check_box bottom="-256" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-256" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Left Pec" left="413"
mouse_opaque="true" name="checkbox_Left Pec" radio_style="false"
width="100" />
<check_box bottom="-276" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-276" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Right Pec" left="413"
mouse_opaque="true" name="checkbox_Right Pec" radio_style="false"
width="100" />
<check_box bottom="-296" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-296" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Neck" left="413"
mouse_opaque="true" name="checkbox_Neck" radio_style="false"
width="100" />
<check_box bottom="-316" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Root" left="413"
mouse_opaque="true" name="checkbox_Root" radio_style="false"
width="100" />
<check_box bottom="-336" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Center 2" left="413"
mouse_opaque="true" name="checkbox_Center 2" radio_style="false"
width="100" />
<check_box bottom="-316" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-356" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Top Right" left="413"
mouse_opaque="true" name="checkbox_Top Right" radio_style="false"
width="100" />
<check_box bottom="-336" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-376" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Top" left="413"
mouse_opaque="true" name="checkbox_Top" radio_style="false" width="100" />
<check_box bottom="-356" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-396" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Top Left" left="413"
mouse_opaque="true" name="checkbox_Top Left" radio_style="false"
width="100" />
<check_box bottom="-376" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-416" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Center" left="413"
mouse_opaque="true" name="checkbox_Center" radio_style="false" width="100" />
<check_box bottom="-396" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-436" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Bottom Left" left="413"
mouse_opaque="true" name="checkbox_Bottom Left" radio_style="false"
width="100" />
<check_box bottom="-416" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-456" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Bottom" left="413"
mouse_opaque="true" name="checkbox_Bottom" radio_style="false" width="100" />
<check_box bottom="-436" enabled="false" follows="left|top" font="SansSerifSmall"
<check_box bottom="-476" enabled="false" follows="left|top" font="SansSerifSmall"
height="16" initial_value="false" label="Bottom Right" left="413"
mouse_opaque="true" name="checkbox_Bottom Right" radio_style="false"
width="100" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-24" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerif" h_pad="0" halign="left" height="16" left="13"
mouse_opaque="true" name="Make New Outfit" v_pad="0" width="489">
Make New Outfit
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
Make New Outfit
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-102" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="70" left="13"
mouse_opaque="true"
name="Outfits are folders that contain clothing and body parts. Drag an outfit folder onto your avatar to put it on. &quot;Make New Outfit&quot; makes a new folder and saves copies of the items you are now wearing into it."
v_pad="0" width="489">
Outfits are folders that contain clothing and body parts.
Drag an outfit folder onto your avatar to put it on.
&quot;Make New Outfit&quot; makes a new folder and saves copies of the items you are
now wearing into it.
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
Outfits are folders that contain clothing and body parts.
Drag an outfit folder onto your avatar to put it on.
&quot;Make New Outfit&quot; makes a new folder and saves copies of the items you are
now wearing into it.
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-126" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerif" h_pad="0" halign="left" height="16" left="13"
mouse_opaque="true" name="Folder name:" v_pad="0" width="489">
Folder name:
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
Folder name:
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-174" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerif" h_pad="0" halign="left" height="16" left="13"
mouse_opaque="true" name="Items to include in outfit:" v_pad="0"
width="489">
Items to include in outfit:
</text>
Items to include in outfit:
</text>
<button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
label="Check All" left_delta="200" mouse_opaque="true"
name="Check All" scale_image="true" width="82" />
<button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
label="Uncheck All" left_delta="100" mouse_opaque="true"
name="Uncheck All" scale_image="true" width="82" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-196" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13"
mouse_opaque="true" name="Body Parts:" v_pad="0" width="100">
Body Parts:
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
Body Parts:
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-196" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="113"
mouse_opaque="true" name="Clothes:" v_pad="0" width="100">
Clothes:
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
Clothes:
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-196" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="213"
mouse_opaque="true" name="Attachments:" v_pad="0" width="100">
Attachments:
</text>
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-150"
Attachments:
</text>
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-150"
enabled="true" follows="left|top" font="SansSerif"
handle_edit_keys_directly="true" height="20" left="13" max_length="63"
mouse_opaque="true" name="name ed" select_all_on_focus_received="false"
select_on_focus="false" width="489" spell_check="true">
New Outfit
</line_editor>
New Outfit
</line_editor>
</floater>