Merge remote-tracking branch 'singu/master'
This commit is contained in:
@@ -20,10 +20,12 @@ if (WINDOWS)
|
|||||||
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath]
|
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath]
|
||||||
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath]
|
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath]
|
||||||
)
|
)
|
||||||
elseif (EXISTS /etc/debian_version)
|
|
||||||
# On Debian and Ubuntu, avoid Python 2.4 if possible.
|
|
||||||
|
|
||||||
find_program(PYTHON_EXECUTABLE python2.5 python2.3 python PATHS /usr/bin)
|
|
||||||
|
elseif (EXISTS /etc/arch-release)
|
||||||
|
# On Archlinux, use Python 2
|
||||||
|
|
||||||
|
find_program(PYTHON_EXECUTABLE python2 PATHS /usr/bin)
|
||||||
|
|
||||||
if (PYTHON_EXECUTABLE)
|
if (PYTHON_EXECUTABLE)
|
||||||
set(PYTHONINTERP_FOUND ON)
|
set(PYTHONINTERP_FOUND ON)
|
||||||
|
|||||||
@@ -759,8 +759,7 @@ void LLPanel::childSetCommitCallback(const std::string& id, void (*cb)(LLUICtrl*
|
|||||||
LLUICtrl* child = getChild<LLUICtrl>(id, true);
|
LLUICtrl* child = getChild<LLUICtrl>(id, true);
|
||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
child->setCommitCallback(cb);
|
child->setCommitCallback(cb, userdata);
|
||||||
child->setCallbackUserData(userdata);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -773,15 +772,6 @@ void LLPanel::childSetValidate(const std::string& id, BOOL (*cb)(LLUICtrl*, void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLPanel::childSetUserData(const std::string& id, void* userdata)
|
|
||||||
{
|
|
||||||
LLUICtrl* child = getChild<LLUICtrl>(id, true);
|
|
||||||
if (child)
|
|
||||||
{
|
|
||||||
child->setCallbackUserData(userdata);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void LLPanel::childSetColor(const std::string& id, const LLColor4& color)
|
void LLPanel::childSetColor(const std::string& id, const LLColor4& color)
|
||||||
{
|
{
|
||||||
LLUICtrl* child = getChild<LLUICtrl>(id, true);
|
LLUICtrl* child = getChild<LLUICtrl>(id, true);
|
||||||
|
|||||||
@@ -172,7 +172,6 @@ public:
|
|||||||
|
|
||||||
void childSetCommitCallback(const std::string& id, void (*cb)(LLUICtrl*, void*), void* userdata = NULL );
|
void childSetCommitCallback(const std::string& id, void (*cb)(LLUICtrl*, void*), void* userdata = NULL );
|
||||||
void childSetValidate(const std::string& id, BOOL (*cb)(LLUICtrl*, void*) );
|
void childSetValidate(const std::string& id, BOOL (*cb)(LLUICtrl*, void*) );
|
||||||
void childSetUserData(const std::string& id, void* userdata);
|
|
||||||
|
|
||||||
void childSetColor(const std::string& id, const LLColor4& color);
|
void childSetColor(const std::string& id, const LLColor4& color);
|
||||||
void childSetAlpha(const std::string& id, F32 alpha);
|
void childSetAlpha(const std::string& id, F32 alpha);
|
||||||
|
|||||||
@@ -3869,16 +3869,14 @@ LLScrollColumnHeader::LLScrollColumnHeader(const std::string& label, const LLRec
|
|||||||
mHasResizableElement(FALSE)
|
mHasResizableElement(FALSE)
|
||||||
{
|
{
|
||||||
mListPosition = LLComboBox::ABOVE;
|
mListPosition = LLComboBox::ABOVE;
|
||||||
setCommitCallback(onSelectSort);
|
setCommitCallback(boost::bind(&LLScrollColumnHeader::onSelectSort, this));
|
||||||
setCallbackUserData(this);
|
|
||||||
mButton->setTabStop(FALSE);
|
mButton->setTabStop(FALSE);
|
||||||
// require at least two frames between mouse down and mouse up event to capture intentional "hold" not just bad framerate
|
// require at least two frames between mouse down and mouse up event to capture intentional "hold" not just bad framerate
|
||||||
mButton->setHeldDownDelay(LLUI::sConfigGroup->getF32("ColumnHeaderDropDownDelay"), 2);
|
mButton->setHeldDownDelay(LLUI::sConfigGroup->getF32("ColumnHeaderDropDownDelay"), 2);
|
||||||
mButton->setHeldDownCallback(boost::bind(&LLScrollColumnHeader::onHeldDown, this));
|
mButton->setHeldDownCallback(boost::bind(&LLScrollColumnHeader::showList, this));
|
||||||
mButton->setClickedCallback(boost::bind(&LLScrollColumnHeader::onClick, this));
|
mButton->setClickedCallback(boost::bind(&LLScrollColumnHeader::onClick, this));
|
||||||
mButton->setMouseDownCallback(boost::bind(&LLScrollColumnHeader::onMouseDown, this));
|
mButton->setMouseDownCallback(boost::bind(&LLScrollColumnHeader::onMouseDown, this));
|
||||||
|
|
||||||
mButton->setCallbackUserData(this);
|
|
||||||
mButton->setToolTip(label);
|
mButton->setToolTip(label);
|
||||||
|
|
||||||
mAscendingText = std::string("[LOW]...[HIGH](Ascending)"); // *TODO: Translate
|
mAscendingText = std::string("[LOW]...[HIGH](Ascending)"); // *TODO: Translate
|
||||||
@@ -4037,7 +4035,7 @@ BOOL LLScrollColumnHeader::handleDoubleClick(S32 x, S32 y, MASK mask)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
onClick(this);
|
onClick();
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -4065,42 +4063,29 @@ void LLScrollColumnHeader::setImageOverlay(const std::string &image_name, LLFont
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
void LLScrollColumnHeader::onClick()
|
||||||
void LLScrollColumnHeader::onClick(void* user_data)
|
|
||||||
{
|
{
|
||||||
LLScrollColumnHeader* headerp = (LLScrollColumnHeader*)user_data;
|
if (!mColumn) return;
|
||||||
if (!headerp) return;
|
|
||||||
|
|
||||||
LLScrollListColumn* column = headerp->mColumn;
|
if (mList->getVisible())
|
||||||
if (!column) return;
|
|
||||||
|
|
||||||
if (headerp->mList->getVisible())
|
|
||||||
{
|
{
|
||||||
headerp->hideList();
|
hideList();
|
||||||
}
|
}
|
||||||
|
|
||||||
LLScrollListCtrl::onClickColumn(column);
|
LLScrollListCtrl::onClickColumn(mColumn);
|
||||||
|
|
||||||
// propagate new sort order to sort order list
|
// propagate new sort order to sort order list
|
||||||
headerp->mList->selectNthItem(column->mParentCtrl->getSortAscending() ? 0 : 1);
|
mList->selectNthItem(mColumn->mParentCtrl->getSortAscending() ? 0 : 1);
|
||||||
|
|
||||||
headerp->mList->setFocus(TRUE);
|
mList->setFocus(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
void LLScrollColumnHeader::onMouseDown()
|
||||||
void LLScrollColumnHeader::onMouseDown(void* user_data)
|
|
||||||
{
|
{
|
||||||
// for now, do nothing but block the normal showList() behavior
|
// for now, do nothing but block the normal showList() behavior
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
|
||||||
void LLScrollColumnHeader::onHeldDown(void* user_data)
|
|
||||||
{
|
|
||||||
LLScrollColumnHeader* headerp = (LLScrollColumnHeader*)user_data;
|
|
||||||
headerp->showList();
|
|
||||||
}
|
|
||||||
|
|
||||||
void LLScrollColumnHeader::showList()
|
void LLScrollColumnHeader::showList()
|
||||||
{
|
{
|
||||||
if (mShowSortOptions)
|
if (mShowSortOptions)
|
||||||
@@ -4183,30 +4168,25 @@ void LLScrollColumnHeader::showList()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
void LLScrollColumnHeader::onSelectSort()
|
||||||
void LLScrollColumnHeader::onSelectSort(LLUICtrl* ctrl, void* user_data)
|
|
||||||
{
|
{
|
||||||
LLScrollColumnHeader* headerp = (LLScrollColumnHeader*)user_data;
|
if (!mColumn) return;
|
||||||
if (!headerp) return;
|
LLScrollListCtrl* parent = mColumn->mParentCtrl;
|
||||||
|
|
||||||
LLScrollListColumn* column = headerp->mColumn;
|
|
||||||
if (!column) return;
|
|
||||||
LLScrollListCtrl *parent = column->mParentCtrl;
|
|
||||||
if (!parent) return;
|
if (!parent) return;
|
||||||
|
|
||||||
if (headerp->getCurrentIndex() == 0)
|
if (getCurrentIndex() == 0)
|
||||||
{
|
{
|
||||||
// ascending
|
// ascending
|
||||||
parent->sortByColumn(column->mSortingColumn, TRUE);
|
parent->sortByColumn(mColumn->mSortingColumn, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// descending
|
// descending
|
||||||
parent->sortByColumn(column->mSortingColumn, FALSE);
|
parent->sortByColumn(mColumn->mSortingColumn, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// restore original column header
|
// restore original column header
|
||||||
headerp->setLabel(headerp->mOrigLabel);
|
setLabel(mOrigLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
LLView* LLScrollColumnHeader::findSnapEdge(S32& new_edge_val, const LLCoordGL& mouse_dir, ESnapEdge snap_edge, ESnapType snap_type, S32 threshold, S32 padding)
|
LLView* LLScrollColumnHeader::findSnapEdge(S32& new_edge_val, const LLCoordGL& mouse_dir, ESnapEdge snap_edge, ESnapType snap_type, S32 threshold, S32 padding)
|
||||||
|
|||||||
@@ -241,10 +241,9 @@ public:
|
|||||||
void enableResizeBar(BOOL enable);
|
void enableResizeBar(BOOL enable);
|
||||||
std::string getLabel() { return mOrigLabel; }
|
std::string getLabel() { return mOrigLabel; }
|
||||||
|
|
||||||
static void onSelectSort(LLUICtrl* ctrl, void* user_data);
|
void onSelectSort();
|
||||||
static void onClick(void* user_data);
|
void onClick();
|
||||||
static void onMouseDown(void* user_data);
|
void onMouseDown();
|
||||||
static void onHeldDown(void* user_data);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LLScrollListColumn* mColumn;
|
LLScrollListColumn* mColumn;
|
||||||
|
|||||||
@@ -684,6 +684,17 @@
|
|||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
</map>
|
</map>
|
||||||
|
<key>LiruLegacyOutfitStoreObjChanges</key>
|
||||||
|
<map>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string>While true, automatic detach is performed upon all copyable attachments just before legacy outfit creation to preserve any modifications to them. As a last resort, setting this false allows creating a legacy outfit that won't save changes made to copyable attachments since wearing them or login.</string>
|
||||||
|
<key>Persist</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>Boolean</string>
|
||||||
|
<key>Value</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</map>
|
||||||
<key>LiruNoTransactionClutter</key>
|
<key>LiruNoTransactionClutter</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
|
|||||||
@@ -620,5 +620,16 @@
|
|||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<string>/away</string>
|
<string>/away</string>
|
||||||
</map>
|
</map>
|
||||||
|
<key>SinguCompleteNameProfiles</key>
|
||||||
|
<map>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string>Use the complete name "Display Name (legacy.name)" in profiles, instead of following the choice set by PhoenixNameSystem.</string>
|
||||||
|
<key>Persist</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>Boolean</string>
|
||||||
|
<key>Value</key>
|
||||||
|
<boolean>0</boolean>
|
||||||
|
</map>
|
||||||
</map>
|
</map>
|
||||||
</llsd>
|
</llsd>
|
||||||
|
|||||||
@@ -192,6 +192,7 @@ void LLPrefsAscentVan::refreshValues()
|
|||||||
mAnnounceSnapshots = gSavedSettings.getBOOL("AnnounceSnapshots");
|
mAnnounceSnapshots = gSavedSettings.getBOOL("AnnounceSnapshots");
|
||||||
mAnnounceStreamMetadata = gSavedSettings.getBOOL("AnnounceStreamMetadata");
|
mAnnounceStreamMetadata = gSavedSettings.getBOOL("AnnounceStreamMetadata");
|
||||||
mUnfocusedFloatersOpaque = gSavedSettings.getBOOL("FloaterUnfocusedBackgroundOpaque");
|
mUnfocusedFloatersOpaque = gSavedSettings.getBOOL("FloaterUnfocusedBackgroundOpaque");
|
||||||
|
mCompleteNameProfiles = gSavedSettings.getBOOL("SinguCompleteNameProfiles");
|
||||||
|
|
||||||
//Tags\Colors ----------------------------------------------------------------------------
|
//Tags\Colors ----------------------------------------------------------------------------
|
||||||
mAscentBroadcastTag = gSavedSettings.getBOOL("AscentBroadcastTag");
|
mAscentBroadcastTag = gSavedSettings.getBOOL("AscentBroadcastTag");
|
||||||
@@ -261,6 +262,7 @@ void LLPrefsAscentVan::cancel()
|
|||||||
gSavedSettings.setBOOL("AnnounceSnapshots", mAnnounceSnapshots);
|
gSavedSettings.setBOOL("AnnounceSnapshots", mAnnounceSnapshots);
|
||||||
gSavedSettings.setBOOL("AnnounceStreamMetadata", mAnnounceStreamMetadata);
|
gSavedSettings.setBOOL("AnnounceStreamMetadata", mAnnounceStreamMetadata);
|
||||||
gSavedSettings.setBOOL("FloaterUnfocusedBackgroundOpaque", mUnfocusedFloatersOpaque);
|
gSavedSettings.setBOOL("FloaterUnfocusedBackgroundOpaque", mUnfocusedFloatersOpaque);
|
||||||
|
gSavedSettings.setBOOL("SinguCompleteNameProfiles", mCompleteNameProfiles);
|
||||||
|
|
||||||
//Tags\Colors ----------------------------------------------------------------------------
|
//Tags\Colors ----------------------------------------------------------------------------
|
||||||
gSavedSettings.setBOOL("AscentBroadcastTag", mAscentBroadcastTag);
|
gSavedSettings.setBOOL("AscentBroadcastTag", mAscentBroadcastTag);
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ protected:
|
|||||||
bool mAnnounceSnapshots;
|
bool mAnnounceSnapshots;
|
||||||
bool mAnnounceStreamMetadata;
|
bool mAnnounceStreamMetadata;
|
||||||
bool mUnfocusedFloatersOpaque;
|
bool mUnfocusedFloatersOpaque;
|
||||||
|
bool mCompleteNameProfiles;
|
||||||
//Tags\Colors
|
//Tags\Colors
|
||||||
BOOL mAscentBroadcastTag;
|
BOOL mAscentBroadcastTag;
|
||||||
std::string mReportClientUUID;
|
std::string mReportClientUUID;
|
||||||
|
|||||||
@@ -363,18 +363,24 @@ bool HippoFloaterXmlImpl::execute(LLFloater *floater, LLUICtrl *ctrl,
|
|||||||
if (HippoFloaterXmlImpl *floaterp = dynamic_cast<HippoFloaterXmlImpl*>(ctrl)) {
|
if (HippoFloaterXmlImpl *floaterp = dynamic_cast<HippoFloaterXmlImpl*>(ctrl)) {
|
||||||
floaterp->mIsNotifyOnClose = set;
|
floaterp->mIsNotifyOnClose = set;
|
||||||
} else {
|
} else {
|
||||||
if (set)
|
HippoFloaterXmlImpl *thisFloater = static_cast<HippoFloaterXmlImpl*>(floater);
|
||||||
ctrl->setCommitCallback(boost::bind(¬ifyCallback, _1, floater), ctrl);
|
if (set) {
|
||||||
else
|
notice_ptr_t connptr(new notice_connection_t(ctrl->setCommitCallback(boost::bind(¬ifyCallback, _1, floater), ctrl)));
|
||||||
ctrl->setCommitCallback(0);
|
thisFloater->mNotices[ctrl] = connptr;
|
||||||
|
} else {
|
||||||
|
thisFloater->mNotices.erase(ctrl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (key == "picker") {
|
} else if (key == "picker") {
|
||||||
bool set = (value != "0");
|
bool set = (value != "0");
|
||||||
if (!dynamic_cast<HippoFloaterXmlImpl*>(ctrl)) {
|
if (!dynamic_cast<HippoFloaterXmlImpl*>(ctrl)) {
|
||||||
if (set)
|
HippoFloaterXmlImpl *thisFloater = static_cast<HippoFloaterXmlImpl*>(floater);
|
||||||
ctrl->setCommitCallback(boost::bind(&pickerCallback, _1, floater), ctrl);
|
if (set) {
|
||||||
else
|
notice_ptr_t connptr(new notice_connection_t(ctrl->setCommitCallback(boost::bind(&pickerCallback, _1, floater), ctrl)));
|
||||||
ctrl->setCommitCallback(0);
|
thisFloater->mNotices[ctrl] = connptr;
|
||||||
|
} else {
|
||||||
|
thisFloater->mNotices.erase(ctrl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3664,6 +3664,7 @@ public:
|
|||||||
if (!LLApp::isRunning() || mFailed)
|
if (!LLApp::isRunning() || mFailed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Singu Note: This wasn't working when we detached copyable attachments early, changeOutfit instead
|
||||||
LLInventoryModel::item_array_t body_items, wear_items, obj_items, gest_items;
|
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)
|
for(std::set<LLUUID>::const_iterator it = mWearItems.begin(); it != mWearItems.end(); ++it)
|
||||||
{
|
{
|
||||||
@@ -3692,6 +3693,8 @@ public:
|
|||||||
|
|
||||||
if(!body_items.empty() || !wear_items.empty() || !obj_items.empty() || !gest_items.empty())
|
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);
|
LLAppearanceMgr::instance().updateCOF(body_items, wear_items, obj_items, gest_items, false);
|
||||||
|
*/
|
||||||
|
LLAppearanceMgr::instance().changeOutfit(true, mFolderID, false);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
class LLCreateBase : public LLInventoryCallback
|
class LLCreateBase : public LLInventoryCallback
|
||||||
@@ -3880,6 +3883,7 @@ LLUUID LLAppearanceMgr::makeNewOutfitLegacy(const std::string& new_folder_name,
|
|||||||
LLInventoryModel::item_array_t remove_items;
|
LLInventoryModel::item_array_t remove_items;
|
||||||
|
|
||||||
LLPointer<LLCreateLegacyOutfit> cb = new LLCreateLegacyOutfit(folder_id,boost::bind(&scroll_to_folder,folder_id),boost::bind(&show_created_outfit,folder_id,true));
|
LLPointer<LLCreateLegacyOutfit> cb = new LLCreateLegacyOutfit(folder_id,boost::bind(&scroll_to_folder,folder_id),boost::bind(&show_created_outfit,folder_id,true));
|
||||||
|
uuid_vec_t obj_ids; // Collect the uuids of copyable objects, in order to keep any changes made in the copies
|
||||||
|
|
||||||
for (LLInventoryModel::item_array_t::const_iterator iter = items.begin();
|
for (LLInventoryModel::item_array_t::const_iterator iter = items.begin();
|
||||||
iter != items.end();
|
iter != items.end();
|
||||||
@@ -3888,8 +3892,9 @@ LLUUID LLAppearanceMgr::makeNewOutfitLegacy(const std::string& new_folder_name,
|
|||||||
LLViewerInventoryItem* item = (*iter);
|
LLViewerInventoryItem* item = (*iter);
|
||||||
LLViewerInventoryItem* base_item = item->getLinkedItem() ? item->getLinkedItem() : item;
|
LLViewerInventoryItem* base_item = item->getLinkedItem() ? item->getLinkedItem() : item;
|
||||||
bool is_copy = base_item->getPermissions().allowCopyBy(gAgent.getID());
|
bool is_copy = base_item->getPermissions().allowCopyBy(gAgent.getID());
|
||||||
|
bool is_obj = base_item->getInventoryType() == LLInventoryType::IT_OBJECT;
|
||||||
//Just treat 'object' type as modifiable... permission slam screws them up pretty well.
|
//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());
|
bool is_mod = is_obj || 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.
|
//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 ;
|
bool is_multi = base_item->isWearableType() && gAgentWearables.getWearableCount(base_item->getWearableType()) > 1 ;
|
||||||
|
|
||||||
@@ -3899,9 +3904,12 @@ LLUUID LLAppearanceMgr::makeNewOutfitLegacy(const std::string& new_folder_name,
|
|||||||
}
|
}
|
||||||
else if( is_copy )
|
else if( is_copy )
|
||||||
{
|
{
|
||||||
|
if (is_obj) obj_ids.push_back(base_item->getUUID()); // If it's a copyable object, store it for later
|
||||||
cb->makeCopy(item,is_multi && use_links);
|
cb->makeCopy(item,is_multi && use_links);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (gSavedSettings.getBOOL("LiruLegacyOutfitStoreObjChanges")) // As a last resort, someone may create a legacy outfit to undo attachment changes
|
||||||
|
LLAppearanceMgr::instance().removeItemsFromAvatar(obj_ids); // The avatar will have to go without these for now
|
||||||
cb->dispatch();
|
cb->dispatch();
|
||||||
|
|
||||||
return folder_id;
|
return folder_id;
|
||||||
|
|||||||
@@ -339,7 +339,7 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa
|
|||||||
LLFloaterAvatarInfo* floater = LLFloaterAvatarInfo::getInstance(agent_id);
|
LLFloaterAvatarInfo* floater = LLFloaterAvatarInfo::getInstance(agent_id);
|
||||||
if(!floater)
|
if(!floater)
|
||||||
{
|
{
|
||||||
floater = new LLFloaterAvatarInfo(LLTrans::getString("Command_Profile_Label")+" "+av_name.getCompleteName(), agent_id);
|
floater = new LLFloaterAvatarInfo(av_name.getCompleteName()+" - "+LLTrans::getString("Command_Profile_Label"), agent_id);
|
||||||
floater->center();
|
floater->center();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,31 +9,27 @@
|
|||||||
* Altered to support a callback so it can return the item
|
* Altered to support a callback so it can return the item
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
* Pulled into its own file for more widespread use
|
* Pulled into its own file for more widespread use
|
||||||
|
* Rewritten by Liru Færs to act as its own ui element and use a control
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
* $LicenseInfo:firstyear=2004&license=viewergpl$
|
* $LicenseInfo:firstyear=2004&license=viewerlgpl$
|
||||||
*
|
* Second Life Viewer Source Code
|
||||||
* Copyright (c) 2004-2009, Linden Research, Inc.
|
* Copyright (c) 2004-2009, Linden Research, Inc.
|
||||||
*
|
*
|
||||||
* Second Life Viewer Source Code
|
* This library is free software; you can redistribute it and/or
|
||||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
* to you under the terms of the GNU General Public License, version 2.0
|
* License as published by the Free Software Foundation;
|
||||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
* version 2.1 of the License only.
|
||||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
|
||||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
|
||||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
|
||||||
*
|
*
|
||||||
* There are special exceptions to the terms and conditions of the GPL as
|
* This library is distributed in the hope that it will be useful,
|
||||||
* it is applied to this Source Code. View the full text of the exception
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
* Lesser General Public License for more details.
|
||||||
*
|
*
|
||||||
* By copying, modifying or distributing this software, you acknowledge
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* that you have read and understood your obligations described above,
|
* License along with this library; if not, write to the Free Software
|
||||||
* and agree to abide by those obligations.
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*
|
*
|
||||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
|
||||||
* COMPLETENESS OR PERFORMANCE.
|
|
||||||
* $/LicenseInfo$
|
* $/LicenseInfo$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -9,31 +9,27 @@
|
|||||||
* Altered to support a callback so it can return the item
|
* Altered to support a callback so it can return the item
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
* Pulled into its own file for more widespread use
|
* Pulled into its own file for more widespread use
|
||||||
|
* Rewritten by Liru Færs to act as its own ui element and use a control
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
* $LicenseInfo:firstyear=2004&license=viewergpl$
|
* $LicenseInfo:firstyear=2004&license=viewerlgpl$
|
||||||
*
|
* Second Life Viewer Source Code
|
||||||
* Copyright (c) 2004-2009, Linden Research, Inc.
|
* Copyright (c) 2004-2009, Linden Research, Inc.
|
||||||
*
|
*
|
||||||
* Second Life Viewer Source Code
|
* This library is free software; you can redistribute it and/or
|
||||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
* to you under the terms of the GNU General Public License, version 2.0
|
* License as published by the Free Software Foundation;
|
||||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
* version 2.1 of the License only.
|
||||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
|
||||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
|
||||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
|
||||||
*
|
*
|
||||||
* There are special exceptions to the terms and conditions of the GPL as
|
* This library is distributed in the hope that it will be useful,
|
||||||
* it is applied to this Source Code. View the full text of the exception
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
* Lesser General Public License for more details.
|
||||||
*
|
*
|
||||||
* By copying, modifying or distributing this software, you acknowledge
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* that you have read and understood your obligations described above,
|
* License along with this library; if not, write to the Free Software
|
||||||
* and agree to abide by those obligations.
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*
|
*
|
||||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
|
||||||
* COMPLETENESS OR PERFORMANCE.
|
|
||||||
* $/LicenseInfo$
|
* $/LicenseInfo$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ LLFloaterAvatarInfo::LLFloaterAvatarInfo(const std::string& name, const LLUUID &
|
|||||||
LLCallbackMap::map_t factory_map;
|
LLCallbackMap::map_t factory_map;
|
||||||
factory_map["Panel Avatar"] = LLCallbackMap(createPanelAvatar, this);
|
factory_map["Panel Avatar"] = LLCallbackMap(createPanelAvatar, this);
|
||||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_profile.xml", &factory_map);
|
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_profile.xml", &factory_map);
|
||||||
|
setTitle(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// virtual
|
// virtual
|
||||||
|
|||||||
@@ -390,7 +390,7 @@ void* LLFloaterDirectory::createGroupDetail(void* userdata)
|
|||||||
{
|
{
|
||||||
LLFloaterDirectory *self = (LLFloaterDirectory*)userdata;
|
LLFloaterDirectory *self = (LLFloaterDirectory*)userdata;
|
||||||
self->mPanelGroupp = new LLPanelGroup(gAgent.getGroupID());
|
self->mPanelGroupp = new LLPanelGroup(gAgent.getGroupID());
|
||||||
self->mPanelGroupp->setAllowEdit(FALSE || gAgent.isGodlike()); // Gods can always edit panels
|
self->mPanelGroupp->setAllowEdit(false); // Singu Note: This setting actually just tells the panel whether or not it is in search
|
||||||
self->mPanelGroupp->setVisible(FALSE);
|
self->mPanelGroupp->setVisible(FALSE);
|
||||||
return self->mPanelGroupp;
|
return self->mPanelGroupp;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -263,8 +263,7 @@ BOOL LLFloaterNotification::postBuild()
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
responses_combo->setCommitCallback(onCommitResponse);
|
responses_combo->setCommitCallback(boost::bind(&LLFloaterNotification::respond, this));
|
||||||
responses_combo->setCallbackUserData(this);
|
|
||||||
|
|
||||||
LLSD form_sd = form->asLLSD();
|
LLSD form_sd = form->asLLSD();
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ public:
|
|||||||
void onClose(bool app_quitting) { setVisible(FALSE); }
|
void onClose(bool app_quitting) { setVisible(FALSE); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void onCommitResponse(LLUICtrl* ctrl, void* data) { ((LLFloaterNotification*)data)->respond(); }
|
|
||||||
LLNotification* mNote;
|
LLNotification* mNote;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ LLMakeOutfitDialog::LLMakeOutfitDialog(bool modal) : LLModalDialog(LLStringUtil:
|
|||||||
|
|
||||||
if (!gHippoGridManager->getConnectedGrid()->supportsInvLinks())
|
if (!gHippoGridManager->getConnectedGrid()->supportsInvLinks())
|
||||||
{
|
{
|
||||||
childSetEnabled("checkbox_use_links", false);
|
|
||||||
childSetValue("checkbox_use_links", false);
|
childSetValue("checkbox_use_links", false);
|
||||||
childSetEnabled("checkbox_use_outfits", false);
|
childSetEnabled("checkbox_use_outfits", false);
|
||||||
childSetValue("checkbox_use_outfits", false);
|
childSetValue("checkbox_use_outfits", false);
|
||||||
@@ -140,7 +139,8 @@ void LLMakeOutfitDialog::refresh()
|
|||||||
if (fUseOutfits)
|
if (fUseOutfits)
|
||||||
pCheckCtrl->setValue(true);
|
pCheckCtrl->setValue(true);
|
||||||
}
|
}
|
||||||
childSetEnabled("checkbox_use_links", !fUseOutfits);
|
getChild<LLUICtrl>("checkbox_use_links")->setEnabled(!fUseOutfits && gHippoGridManager->getConnectedGrid()->supportsInvLinks());
|
||||||
|
getChild<LLUICtrl>("checkbox_legacy_copy_changes")->setEnabled(!fUseOutfits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1214,7 +1214,7 @@ void LLPanelAvatarPicks::processProperties(void* data, EAvatarProcessorType type
|
|||||||
for(LLAvatarPicks::picks_list_t::iterator it = picks->picks_list.begin();
|
for(LLAvatarPicks::picks_list_t::iterator it = picks->picks_list.begin();
|
||||||
it != picks->picks_list.end(); ++it)
|
it != picks->picks_list.end(); ++it)
|
||||||
{
|
{
|
||||||
LLPanelPick* panel_pick = new LLPanelPick(FALSE);
|
LLPanelPick* panel_pick = new LLPanelPick();
|
||||||
panel_pick->setPickID(it->first, mAvatarID);
|
panel_pick->setPickID(it->first, mAvatarID);
|
||||||
|
|
||||||
// This will request data from the server when the pick is first
|
// This will request data from the server when the pick is first
|
||||||
@@ -1259,7 +1259,7 @@ void LLPanelAvatarPicks::onClickNew(void* data)
|
|||||||
}
|
}
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
LLPanelAvatarPicks* self = (LLPanelAvatarPicks*)data;
|
LLPanelAvatarPicks* self = (LLPanelAvatarPicks*)data;
|
||||||
LLPanelPick* panel_pick = new LLPanelPick(FALSE);
|
LLPanelPick* panel_pick = new LLPanelPick();
|
||||||
LLTabContainer* tabs = self->getChild<LLTabContainer>("picks tab");
|
LLTabContainer* tabs = self->getChild<LLTabContainer>("picks tab");
|
||||||
|
|
||||||
panel_pick->initNewPick();
|
panel_pick->initNewPick();
|
||||||
@@ -1275,7 +1275,7 @@ void LLPanelAvatarPicks::onClickNew(void* data)
|
|||||||
void LLPanelAvatarPicks::onClickImport(void* data)
|
void LLPanelAvatarPicks::onClickImport(void* data)
|
||||||
{
|
{
|
||||||
LLPanelAvatarPicks* self = (LLPanelAvatarPicks*)data;
|
LLPanelAvatarPicks* self = (LLPanelAvatarPicks*)data;
|
||||||
self->mPanelPick = new LLPanelPick(FALSE);
|
self->mPanelPick = new LLPanelPick();
|
||||||
self->mPanelPick->importNewPick(&LLPanelAvatarPicks::onClickImport_continued, data);
|
self->mPanelPick->importNewPick(&LLPanelAvatarPicks::onClickImport_continued, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1514,7 +1514,10 @@ void LLPanelAvatar::setOnlineStatus(EOnlineStatus online_status)
|
|||||||
void LLPanelAvatar::onAvatarNameResponse(const LLUUID& agent_id, const LLAvatarName& av_name)
|
void LLPanelAvatar::onAvatarNameResponse(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||||
{
|
{
|
||||||
std::string name;
|
std::string name;
|
||||||
LLAvatarNameCache::getPNSName(av_name, name);
|
if (gSavedSettings.getBOOL("SinguCompleteNameProfiles"))
|
||||||
|
name = av_name.getCompleteName();
|
||||||
|
else
|
||||||
|
LLAvatarNameCache::getPNSName(av_name, name);
|
||||||
getChild<LLLineEditor>("dnname")->setText(name);
|
getChild<LLLineEditor>("dnname")->setText(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -244,40 +244,37 @@ void LLPanelClassified::reset()
|
|||||||
BOOL LLPanelClassified::postBuild()
|
BOOL LLPanelClassified::postBuild()
|
||||||
{
|
{
|
||||||
mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl");
|
mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl");
|
||||||
mSnapshotCtrl->setCommitCallback(onCommitAny);
|
mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
|
||||||
mSnapshotCtrl->setCallbackUserData(this);
|
|
||||||
mSnapshotSize = mSnapshotCtrl->getRect();
|
mSnapshotSize = mSnapshotCtrl->getRect();
|
||||||
|
|
||||||
mNameEditor = getChild<LLLineEditor>("given_name_editor");
|
mNameEditor = getChild<LLLineEditor>("given_name_editor");
|
||||||
mNameEditor->setMaxTextLength(DB_PARCEL_NAME_LEN);
|
mNameEditor->setMaxTextLength(DB_PARCEL_NAME_LEN);
|
||||||
mNameEditor->setCommitOnFocusLost(TRUE);
|
mNameEditor->setCommitOnFocusLost(TRUE);
|
||||||
mNameEditor->setFocusReceivedCallback(boost::bind(focusReceived, _1, this));
|
mNameEditor->setFocusReceivedCallback(boost::bind(&LLPanelClassified::checkDirty, this));
|
||||||
mNameEditor->setCommitCallback(onCommitAny);
|
mNameEditor->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
|
||||||
mNameEditor->setCallbackUserData(this);
|
|
||||||
mNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII );
|
mNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII );
|
||||||
|
|
||||||
mDescEditor = getChild<LLTextEditor>("desc_editor");
|
mDescEditor = getChild<LLTextEditor>("desc_editor");
|
||||||
mDescEditor->setCommitOnFocusLost(TRUE);
|
mDescEditor->setCommitOnFocusLost(TRUE);
|
||||||
mDescEditor->setFocusReceivedCallback(boost::bind(focusReceived, _1, this));
|
mDescEditor->setFocusReceivedCallback(boost::bind(&LLPanelClassified::checkDirty, this));
|
||||||
mDescEditor->setCommitCallback(onCommitAny);
|
mDescEditor->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
|
||||||
mDescEditor->setCallbackUserData(this);
|
|
||||||
mDescEditor->setTabsToNextField(TRUE);
|
mDescEditor->setTabsToNextField(TRUE);
|
||||||
|
|
||||||
mLocationEditor = getChild<LLLineEditor>("location_editor");
|
mLocationEditor = getChild<LLLineEditor>("location_editor");
|
||||||
|
|
||||||
mSetBtn = getChild<LLButton>( "set_location_btn");
|
mSetBtn = getChild<LLButton>( "set_location_btn");
|
||||||
mSetBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickSet, this));
|
mSetBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickSet, this));
|
||||||
|
|
||||||
mTeleportBtn = getChild<LLButton>( "classified_teleport_btn");
|
mTeleportBtn = getChild<LLButton>( "classified_teleport_btn");
|
||||||
mTeleportBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickTeleport, this));
|
mTeleportBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickTeleport, this));
|
||||||
|
|
||||||
mMapBtn = getChild<LLButton>( "classified_map_btn");
|
mMapBtn = getChild<LLButton>( "classified_map_btn");
|
||||||
mMapBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickMap, this));
|
mMapBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickMap, this));
|
||||||
|
|
||||||
if(mInFinder)
|
if(mInFinder)
|
||||||
{
|
{
|
||||||
mProfileBtn = getChild<LLButton>( "classified_profile_btn");
|
mProfileBtn = getChild<LLButton>( "classified_profile_btn");
|
||||||
mProfileBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickProfile, this));
|
mProfileBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickProfile, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
mCategoryCombo = getChild<LLComboBox>( "classified_category_combo");
|
mCategoryCombo = getChild<LLComboBox>( "classified_category_combo");
|
||||||
@@ -289,13 +286,11 @@ BOOL LLPanelClassified::postBuild()
|
|||||||
mCategoryCombo->add(iter->second, (void *)((intptr_t)iter->first), ADD_BOTTOM);
|
mCategoryCombo->add(iter->second, (void *)((intptr_t)iter->first), ADD_BOTTOM);
|
||||||
}
|
}
|
||||||
mCategoryCombo->setCurrentByIndex(0);
|
mCategoryCombo->setCurrentByIndex(0);
|
||||||
mCategoryCombo->setCommitCallback(onCommitAny);
|
mCategoryCombo->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
|
||||||
mCategoryCombo->setCallbackUserData(this);
|
|
||||||
|
|
||||||
mMatureCombo = getChild<LLComboBox>( "classified_mature_check");
|
mMatureCombo = getChild<LLComboBox>( "classified_mature_check");
|
||||||
mMatureCombo->setCurrentByIndex(0);
|
mMatureCombo->setCurrentByIndex(0);
|
||||||
mMatureCombo->setCommitCallback(onCommitAny);
|
mMatureCombo->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
|
||||||
mMatureCombo->setCallbackUserData(this);
|
|
||||||
if (gAgent.wantsPGOnly())
|
if (gAgent.wantsPGOnly())
|
||||||
{
|
{
|
||||||
// Teens don't get to set mature flag. JC
|
// Teens don't get to set mature flag. JC
|
||||||
@@ -306,13 +301,11 @@ BOOL LLPanelClassified::postBuild()
|
|||||||
if (!mInFinder)
|
if (!mInFinder)
|
||||||
{
|
{
|
||||||
mAutoRenewCheck = getChild<LLCheckBoxCtrl>( "auto_renew_check");
|
mAutoRenewCheck = getChild<LLCheckBoxCtrl>( "auto_renew_check");
|
||||||
mAutoRenewCheck->setCommitCallback(onCommitAny);
|
mAutoRenewCheck->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
|
||||||
mAutoRenewCheck->setCallbackUserData(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mUpdateBtn = getChild<LLButton>("classified_update_btn");
|
mUpdateBtn = getChild<LLButton>("classified_update_btn");
|
||||||
mUpdateBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickUpdate, this));
|
mUpdateBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickUpdate, this));
|
||||||
mUpdateBtn->setCallbackUserData(this);
|
|
||||||
|
|
||||||
if (!mInFinder)
|
if (!mInFinder)
|
||||||
{
|
{
|
||||||
@@ -392,9 +385,6 @@ void LLPanelClassified::processProperties(void* data, EAvatarProcessorType type)
|
|||||||
mUpdateBtn->setLabel(getString("update_txt"));
|
mUpdateBtn->setLabel(getString("update_txt"));
|
||||||
|
|
||||||
resetDirty();
|
resetDirty();
|
||||||
|
|
||||||
// I don't know if a second call is deliberate or a bad merge, so I'm leaving it here.
|
|
||||||
resetDirty();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -496,7 +486,7 @@ void LLPanelClassified::initNewClassified()
|
|||||||
mUpdateBtn->setLabel(getString("publish_txt"));
|
mUpdateBtn->setLabel(getString("publish_txt"));
|
||||||
|
|
||||||
// simulate clicking the "location" button
|
// simulate clicking the "location" button
|
||||||
LLPanelClassified::onClickSet(this);
|
onClickSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -713,33 +703,28 @@ void LLPanelClassified::refresh()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
void LLPanelClassified::onClickUpdate()
|
||||||
void LLPanelClassified::onClickUpdate(void* data)
|
|
||||||
{
|
{
|
||||||
LLPanelClassified* self = (LLPanelClassified*)data;
|
|
||||||
|
|
||||||
if(self == NULL) return;
|
|
||||||
|
|
||||||
// Disallow leading spaces, punctuation, etc. that screw up
|
// Disallow leading spaces, punctuation, etc. that screw up
|
||||||
// sort order.
|
// sort order.
|
||||||
if ( ! self->titleIsValid() )
|
if (!titleIsValid())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
};
|
}
|
||||||
|
|
||||||
// If user has not set mature, do not allow publish
|
// If user has not set mature, do not allow publish
|
||||||
if(self->mMatureCombo->getCurrentIndex() == DECLINE_TO_STATE)
|
if (mMatureCombo->getCurrentIndex() == DECLINE_TO_STATE)
|
||||||
{
|
{
|
||||||
// Tell user about it
|
// Tell user about it
|
||||||
LLNotificationsUtil::add("SetClassifiedMature",
|
LLNotificationsUtil::add("SetClassifiedMature",
|
||||||
LLSD(),
|
LLSD(),
|
||||||
LLSD(),
|
LLSD(),
|
||||||
boost::bind(&LLPanelClassified::confirmMature, self, _1, _2));
|
boost::bind(&LLPanelClassified::confirmMature, this, _1, _2));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mature content flag is set, proceed
|
// Mature content flag is set, proceed
|
||||||
self->gotMature();
|
gotMature();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Callback from a dialog indicating response to mature notification
|
// Callback from a dialog indicating response to mature notification
|
||||||
@@ -781,38 +766,30 @@ void LLPanelClassified::gotMature()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Ask the user how much they want to pay
|
// Ask the user how much they want to pay
|
||||||
LLFloaterPriceForListing::show( callbackGotPriceForListing, this );
|
new LLFloaterPriceForListing(boost::bind(&LLPanelClassified::callbackGotPriceForListing, this, _1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
void LLPanelClassified::callbackGotPriceForListing(const std::string& text)
|
||||||
void LLPanelClassified::callbackGotPriceForListing(S32 option, std::string text, void* data)
|
|
||||||
{
|
{
|
||||||
LLPanelClassified* self = (LLPanelClassified*)data;
|
|
||||||
|
|
||||||
// Only do something if user hits publish
|
|
||||||
if (option != 0) return;
|
|
||||||
|
|
||||||
S32 price_for_listing = strtol(text.c_str(), NULL, 10);
|
S32 price_for_listing = strtol(text.c_str(), NULL, 10);
|
||||||
if (price_for_listing < MINIMUM_PRICE_FOR_LISTING)
|
if (price_for_listing < MINIMUM_PRICE_FOR_LISTING)
|
||||||
{
|
{
|
||||||
LLSD args;
|
LLSD args;
|
||||||
std::string price_text = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
|
args["MIN_PRICE"] = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
|
||||||
args["MIN_PRICE"] = price_text;
|
|
||||||
|
|
||||||
LLNotificationsUtil::add("MinClassifiedPrice", args);
|
LLNotificationsUtil::add("MinClassifiedPrice", args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// price is acceptable, put it in the dialog for later read by
|
// price is acceptable, put it in the dialog for later read by
|
||||||
// update send
|
// update send
|
||||||
self->mPriceForListing = price_for_listing;
|
mPriceForListing = price_for_listing;
|
||||||
|
|
||||||
LLSD args;
|
LLSD args;
|
||||||
args["AMOUNT"] = llformat("%d", price_for_listing);
|
args["AMOUNT"] = llformat("%d", price_for_listing);
|
||||||
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
LLNotificationsUtil::add("PublishClassified", args, LLSD(),
|
LLNotificationsUtil::add("PublishClassified", args, LLSD(),
|
||||||
boost::bind(&LLPanelClassified::confirmPublish, self, _1, _2));
|
boost::bind(&LLPanelClassified::confirmPublish, this, _1, _2));
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLPanelClassified::resetDirty()
|
void LLPanelClassified::resetDirty()
|
||||||
@@ -862,51 +839,39 @@ bool LLPanelClassified::confirmPublish(const LLSD& notification, const LLSD& res
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLPanelClassified::onClickTeleport()
|
||||||
// static
|
|
||||||
void LLPanelClassified::onClickTeleport(void* data)
|
|
||||||
{
|
{
|
||||||
LLPanelClassified* self = (LLPanelClassified*)data;
|
if (!mPosGlobal.isExactlyZero())
|
||||||
|
|
||||||
if (!self->mPosGlobal.isExactlyZero())
|
|
||||||
{
|
{
|
||||||
gAgent.teleportViaLocation(self->mPosGlobal);
|
gAgent.teleportViaLocation(mPosGlobal);
|
||||||
gFloaterWorldMap->trackLocation(self->mPosGlobal);
|
gFloaterWorldMap->trackLocation(mPosGlobal);
|
||||||
|
|
||||||
self->sendClassifiedClickMessage("teleport");
|
sendClassifiedClickMessage("teleport");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLPanelClassified::onClickMap()
|
||||||
// static
|
|
||||||
void LLPanelClassified::onClickMap(void* data)
|
|
||||||
{
|
{
|
||||||
LLPanelClassified* self = (LLPanelClassified*)data;
|
gFloaterWorldMap->trackLocation(mPosGlobal);
|
||||||
gFloaterWorldMap->trackLocation(self->mPosGlobal);
|
|
||||||
LLFloaterWorldMap::show(true);
|
LLFloaterWorldMap::show(true);
|
||||||
|
|
||||||
self->sendClassifiedClickMessage("map");
|
sendClassifiedClickMessage("map");
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
void LLPanelClassified::onClickProfile()
|
||||||
void LLPanelClassified::onClickProfile(void* data)
|
|
||||||
{
|
{
|
||||||
LLPanelClassified* self = (LLPanelClassified*)data;
|
LLAvatarActions::showProfile(mCreatorID);
|
||||||
LLAvatarActions::showProfile(self->mCreatorID);
|
sendClassifiedClickMessage("profile");
|
||||||
self->sendClassifiedClickMessage("profile");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
|
||||||
/*
|
/*
|
||||||
void LLPanelClassified::onClickLandmark(void* data)
|
void LLPanelClassified::onClickLandmark()
|
||||||
{
|
{
|
||||||
LLPanelClassified* self = (LLPanelClassified*)data;
|
create_landmark(mNameEditor->getText(), "", mPosGlobal);
|
||||||
create_landmark(self->mNameEditor->getText(), "", self->mPosGlobal);
|
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// static
|
void LLPanelClassified::onClickSet()
|
||||||
void LLPanelClassified::onClickSet(void* data)
|
|
||||||
{
|
{
|
||||||
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
|
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
|
||||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
|
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
|
||||||
@@ -914,10 +879,9 @@ void LLPanelClassified::onClickSet(void* data)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
LLPanelClassified* self = (LLPanelClassified*)data;
|
|
||||||
|
|
||||||
// Save location for later.
|
// Save location for later.
|
||||||
self->mPosGlobal = gAgent.getPositionGlobal();
|
mPosGlobal = gAgent.getPositionGlobal();
|
||||||
|
|
||||||
std::string location_text;
|
std::string location_text;
|
||||||
std::string regionName = "(will update after publish)";
|
std::string regionName = "(will update after publish)";
|
||||||
@@ -929,22 +893,22 @@ void LLPanelClassified::onClickSet(void* data)
|
|||||||
location_text.assign(regionName);
|
location_text.assign(regionName);
|
||||||
location_text.append(", ");
|
location_text.append(", ");
|
||||||
|
|
||||||
S32 region_x = llround((F32)self->mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS;
|
S32 region_x = llround((F32)mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS;
|
||||||
S32 region_y = llround((F32)self->mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS;
|
S32 region_y = llround((F32)mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS;
|
||||||
S32 region_z = llround((F32)self->mPosGlobal.mdV[VZ]);
|
S32 region_z = llround((F32)mPosGlobal.mdV[VZ]);
|
||||||
|
|
||||||
location_text.append(self->mSimName);
|
location_text.append(mSimName);
|
||||||
location_text.append(llformat(" (%d, %d, %d)", region_x, region_y, region_z));
|
location_text.append(llformat(" (%d, %d, %d)", region_x, region_y, region_z));
|
||||||
|
|
||||||
self->mLocationEditor->setText(location_text);
|
mLocationEditor->setText(location_text);
|
||||||
self->mLocationChanged = true;
|
mLocationChanged = true;
|
||||||
|
|
||||||
self->setDefaultAccessCombo();
|
setDefaultAccessCombo();
|
||||||
|
|
||||||
// Set this to null so it updates on the next save.
|
// Set this to null so it updates on the next save.
|
||||||
self->mParcelID.setNull();
|
mParcelID.setNull();
|
||||||
|
|
||||||
onCommitAny(NULL, data);
|
checkDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -963,23 +927,6 @@ BOOL LLPanelClassified::checkDirty()
|
|||||||
return mDirty;
|
return mDirty;
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
|
||||||
void LLPanelClassified::onCommitAny(LLUICtrl* ctrl, void* data)
|
|
||||||
{
|
|
||||||
LLPanelClassified* self = (LLPanelClassified*)data;
|
|
||||||
if (self)
|
|
||||||
{
|
|
||||||
self->checkDirty();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
void LLPanelClassified::focusReceived(LLFocusableElement* ctrl, void* data)
|
|
||||||
{
|
|
||||||
// allow the data to be saved
|
|
||||||
onCommitAny((LLUICtrl*)ctrl, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void LLPanelClassified::sendClassifiedClickMessage(const std::string& type)
|
void LLPanelClassified::sendClassifiedClickMessage(const std::string& type)
|
||||||
{
|
{
|
||||||
@@ -1000,15 +947,22 @@ void LLPanelClassified::sendClassifiedClickMessage(const std::string& type)
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
LLFloaterPriceForListing::LLFloaterPriceForListing()
|
LLFloaterPriceForListing::LLFloaterPriceForListing(const signal_t::slot_type& cb)
|
||||||
: LLFloater(std::string("PriceForListing")),
|
: LLFloater(std::string("PriceForListing")),
|
||||||
mCallback(NULL),
|
mSignal(new signal_t)
|
||||||
mUserData(NULL)
|
{
|
||||||
{ }
|
// Builds and adds to gFloaterView
|
||||||
|
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_price_for_listing.xml");
|
||||||
|
center();
|
||||||
|
|
||||||
|
mSignal->connect(cb);
|
||||||
|
}
|
||||||
|
|
||||||
//virtual
|
//virtual
|
||||||
LLFloaterPriceForListing::~LLFloaterPriceForListing()
|
LLFloaterPriceForListing::~LLFloaterPriceForListing()
|
||||||
{ }
|
{
|
||||||
|
delete mSignal;
|
||||||
|
}
|
||||||
|
|
||||||
//virtual
|
//virtual
|
||||||
BOOL LLFloaterPriceForListing::postBuild()
|
BOOL LLFloaterPriceForListing::postBuild()
|
||||||
@@ -1023,50 +977,18 @@ BOOL LLFloaterPriceForListing::postBuild()
|
|||||||
edit->setFocus(TRUE);
|
edit->setFocus(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
childSetAction("set_price_btn", onClickSetPrice, this);
|
getChild<LLUICtrl>("set_price_btn")->setCommitCallback(boost::bind(&LLFloaterPriceForListing::buttonCore, this));
|
||||||
|
|
||||||
childSetAction("cancel_btn", onClickCancel, this);
|
getChild<LLUICtrl>("cancel_btn")->setCommitCallback(boost::bind(&LLFloater::close, this, false));
|
||||||
|
|
||||||
setDefaultBtn("set_price_btn");
|
setDefaultBtn("set_price_btn");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
void LLFloaterPriceForListing::buttonCore()
|
||||||
void LLFloaterPriceForListing::show( void (*callback)(S32, std::string, void*), void* userdata)
|
|
||||||
{
|
{
|
||||||
LLFloaterPriceForListing *self = new LLFloaterPriceForListing();
|
(*mSignal)(childGetText("price_edit"));
|
||||||
|
close();
|
||||||
// Builds and adds to gFloaterView
|
|
||||||
LLUICtrlFactory::getInstance()->buildFloater(self, "floater_price_for_listing.xml");
|
|
||||||
self->center();
|
|
||||||
|
|
||||||
self->mCallback = callback;
|
|
||||||
self->mUserData = userdata;
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
void LLFloaterPriceForListing::onClickSetPrice(void* data)
|
|
||||||
{
|
|
||||||
buttonCore(0, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
void LLFloaterPriceForListing::onClickCancel(void* data)
|
|
||||||
{
|
|
||||||
buttonCore(1, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
void LLFloaterPriceForListing::buttonCore(S32 button, void* data)
|
|
||||||
{
|
|
||||||
LLFloaterPriceForListing* self = (LLFloaterPriceForListing*)data;
|
|
||||||
|
|
||||||
if (self->mCallback)
|
|
||||||
{
|
|
||||||
std::string text = self->childGetText("price_edit");
|
|
||||||
self->mCallback(button, text, self->mUserData);
|
|
||||||
self->close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLPanelClassified::setDefaultAccessCombo()
|
void LLPanelClassified::setDefaultAccessCombo()
|
||||||
|
|||||||
@@ -38,23 +38,19 @@
|
|||||||
#define LL_LLPANELCLASSIFIED_H
|
#define LL_LLPANELCLASSIFIED_H
|
||||||
|
|
||||||
#include "llavatarpropertiesprocessor.h"
|
#include "llavatarpropertiesprocessor.h"
|
||||||
#include "llpanel.h"
|
|
||||||
#include "llclassifiedinfo.h"
|
#include "llclassifiedinfo.h"
|
||||||
#include "v3dmath.h"
|
#include "v3dmath.h"
|
||||||
#include "lluuid.h"
|
#include "lluuid.h"
|
||||||
#include "llfloater.h"
|
#include "llfloater.h"
|
||||||
//#include "llrect.h"
|
|
||||||
|
|
||||||
class LLButton;
|
class LLButton;
|
||||||
class LLCheckBoxCtrl;
|
class LLCheckBoxCtrl;
|
||||||
class LLComboBox;
|
class LLComboBox;
|
||||||
class LLIconCtrl;
|
|
||||||
class LLLineEditor;
|
class LLLineEditor;
|
||||||
class LLTextBox;
|
class LLTextBox;
|
||||||
class LLTextEditor;
|
class LLTextEditor;
|
||||||
class LLTextureCtrl;
|
class LLTextureCtrl;
|
||||||
class LLUICtrl;
|
class LLUICtrl;
|
||||||
class LLMessageSystem;
|
|
||||||
|
|
||||||
class LLPanelClassified : public LLPanel, public LLAvatarPropertiesObserver
|
class LLPanelClassified : public LLPanel, public LLAvatarPropertiesObserver
|
||||||
{
|
{
|
||||||
@@ -104,7 +100,7 @@ public:
|
|||||||
// Confirmation dialogs flow in this order
|
// Confirmation dialogs flow in this order
|
||||||
bool confirmMature(const LLSD& notification, const LLSD& response);
|
bool confirmMature(const LLSD& notification, const LLSD& response);
|
||||||
void gotMature();
|
void gotMature();
|
||||||
static void callbackGotPriceForListing(S32 option, std::string text, void* data);
|
void callbackGotPriceForListing(const std::string& text);
|
||||||
bool confirmPublish(const LLSD& notification, const LLSD& response);
|
bool confirmPublish(const LLSD& notification, const LLSD& response);
|
||||||
|
|
||||||
void sendClassifiedClickMessage(const std::string& type);
|
void sendClassifiedClickMessage(const std::string& type);
|
||||||
@@ -112,14 +108,11 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
bool saveCallback(const LLSD& notification, const LLSD& response);
|
bool saveCallback(const LLSD& notification, const LLSD& response);
|
||||||
|
|
||||||
static void onClickUpdate(void* data);
|
void onClickUpdate();
|
||||||
static void onClickTeleport(void* data);
|
void onClickTeleport();
|
||||||
static void onClickMap(void* data);
|
void onClickMap();
|
||||||
static void onClickProfile(void* data);
|
void onClickProfile();
|
||||||
static void onClickSet(void* data);
|
void onClickSet();
|
||||||
|
|
||||||
static void focusReceived(LLFocusableElement* ctrl, void* data);
|
|
||||||
static void onCommitAny(LLUICtrl* ctrl, void* data);
|
|
||||||
|
|
||||||
void setDefaultAccessCombo(); // Default AO and PG regions to proper classified access
|
void setDefaultAccessCombo(); // Default AO and PG regions to proper classified access
|
||||||
|
|
||||||
@@ -183,20 +176,15 @@ class LLFloaterPriceForListing
|
|||||||
: public LLFloater
|
: public LLFloater
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LLFloaterPriceForListing();
|
typedef boost::signals2::signal<void(const std::string& value)> signal_t;
|
||||||
|
LLFloaterPriceForListing(const signal_t::slot_type& cb);
|
||||||
virtual ~LLFloaterPriceForListing();
|
virtual ~LLFloaterPriceForListing();
|
||||||
virtual BOOL postBuild();
|
virtual BOOL postBuild();
|
||||||
|
|
||||||
static void show( void (*callback)(S32 option, std::string value, void* userdata), void* userdata );
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void onClickSetPrice(void*);
|
void buttonCore();
|
||||||
static void onClickCancel(void*);
|
|
||||||
static void buttonCore(S32 button, void* data);
|
|
||||||
|
|
||||||
private:
|
signal_t* mSignal;
|
||||||
void (*mCallback)(S32 option, std::string, void*);
|
|
||||||
void* mUserData;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -246,14 +246,13 @@ BOOL LLPanelGroup::postBuild()
|
|||||||
if (button)
|
if (button)
|
||||||
{
|
{
|
||||||
button->setClickedCallback(boost::bind(&LLPanelGroup::onBtnCancel,this));
|
button->setClickedCallback(boost::bind(&LLPanelGroup::onBtnCancel,this));
|
||||||
button->setVisible(mAllowEdit);
|
button->setEnabled(mAllowEdit); // Cancel should always be enabled for standalone group floater, this is expected behavior and may be used for simply closing
|
||||||
}
|
}
|
||||||
|
|
||||||
button = getChild<LLButton>("btn_apply");
|
button = getChild<LLButton>("btn_apply");
|
||||||
if (button)
|
if (button)
|
||||||
{
|
{
|
||||||
button->setClickedCallback(boost::bind(&LLPanelGroup::onBtnApply,this));
|
button->setClickedCallback(boost::bind(&LLPanelGroup::onBtnApply,this));
|
||||||
button->setVisible(mAllowEdit);
|
|
||||||
button->setEnabled(FALSE);
|
button->setEnabled(FALSE);
|
||||||
|
|
||||||
mApplyBtn = button;
|
mApplyBtn = button;
|
||||||
@@ -263,7 +262,6 @@ BOOL LLPanelGroup::postBuild()
|
|||||||
if (button)
|
if (button)
|
||||||
{
|
{
|
||||||
button->setClickedCallback(boost::bind(&LLPanelGroup::onBtnRefresh,this));
|
button->setClickedCallback(boost::bind(&LLPanelGroup::onBtnRefresh,this));
|
||||||
button->setVisible(mAllowEdit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -286,11 +284,15 @@ void LLPanelGroup::tabChanged()
|
|||||||
{
|
{
|
||||||
//some tab information has changed,....enable/disable the apply button
|
//some tab information has changed,....enable/disable the apply button
|
||||||
//based on if they need an apply
|
//based on if they need an apply
|
||||||
|
std::string str;
|
||||||
|
const bool need = mCurrentTab->needsApply(str);
|
||||||
if ( mApplyBtn )
|
if ( mApplyBtn )
|
||||||
{
|
{
|
||||||
std::string mesg;
|
mApplyBtn->setEnabled(need);
|
||||||
mApplyBtn->setEnabled(mCurrentTab->needsApply(mesg));
|
|
||||||
}
|
}
|
||||||
|
if (mAllowEdit) return; // Cancel should always be enabled for standalone group floater, this is expected behavior and may be used for simply closing
|
||||||
|
if (LLUICtrl* ctrl = getChild<LLUICtrl>("btn_cancel"))
|
||||||
|
ctrl->setEnabled(need);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLPanelGroup::handleClickTab()
|
void LLPanelGroup::handleClickTab()
|
||||||
@@ -477,7 +479,10 @@ void LLPanelGroup::onBtnOK(void* user_data)
|
|||||||
void LLPanelGroup::onBtnCancel(void* user_data)
|
void LLPanelGroup::onBtnCancel(void* user_data)
|
||||||
{
|
{
|
||||||
LLPanelGroup* self = static_cast<LLPanelGroup*>(user_data);
|
LLPanelGroup* self = static_cast<LLPanelGroup*>(user_data);
|
||||||
self->close();
|
if (self->mAllowEdit) // We're in a standalone floater
|
||||||
|
self->close();
|
||||||
|
else // We're in search, we can't close out, just refreshData to kill changes
|
||||||
|
self->refreshData();
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
|||||||
@@ -298,8 +298,7 @@ void LLPanelGroupGeneral::onCommitEnrollment()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the agent can change enrollment info.
|
// Make sure the agent can change enrollment info.
|
||||||
if (!gAgent.hasPowerInGroup(mGroupID,GP_MEMBER_OPTIONS)
|
if (!gAgent.hasPowerInGroup(mGroupID,GP_MEMBER_OPTIONS))
|
||||||
|| !mAllowEdit)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -317,7 +316,7 @@ void LLPanelGroupGeneral::onCommitEnrollment()
|
|||||||
|
|
||||||
void LLPanelGroupGeneral::onCommitTitle()
|
void LLPanelGroupGeneral::onCommitTitle()
|
||||||
{
|
{
|
||||||
if (mGroupID.isNull() || !mAllowEdit) return;
|
if (mGroupID.isNull()) return;
|
||||||
LLGroupMgr::getInstance()->sendGroupTitleUpdate(mGroupID,mComboActiveTitle->getCurrentID());
|
LLGroupMgr::getInstance()->sendGroupTitleUpdate(mGroupID,mComboActiveTitle->getCurrentID());
|
||||||
update(GC_TITLES);
|
update(GC_TITLES);
|
||||||
mComboActiveTitle->resetDirty();
|
mComboActiveTitle->resetDirty();
|
||||||
@@ -564,7 +563,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||||||
if (mComboActiveTitle)
|
if (mComboActiveTitle)
|
||||||
{
|
{
|
||||||
mComboActiveTitle->setVisible(is_member);
|
mComboActiveTitle->setVisible(is_member);
|
||||||
mComboActiveTitle->setEnabled(mAllowEdit);
|
|
||||||
|
|
||||||
if ( mActiveTitleLabel) mActiveTitleLabel->setVisible(is_member);
|
if ( mActiveTitleLabel) mActiveTitleLabel->setVisible(is_member);
|
||||||
|
|
||||||
@@ -624,7 +622,7 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||||||
if (mCtrlShowInGroupList)
|
if (mCtrlShowInGroupList)
|
||||||
{
|
{
|
||||||
mCtrlShowInGroupList->set(gdatap->mShowInList);
|
mCtrlShowInGroupList->set(gdatap->mShowInList);
|
||||||
mCtrlShowInGroupList->setEnabled(mAllowEdit && can_change_ident);
|
mCtrlShowInGroupList->setEnabled(can_change_ident);
|
||||||
mCtrlShowInGroupList->resetDirty();
|
mCtrlShowInGroupList->resetDirty();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -638,20 +636,20 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||||||
{
|
{
|
||||||
mComboMature->setCurrentByIndex(NON_MATURE_CONTENT);
|
mComboMature->setCurrentByIndex(NON_MATURE_CONTENT);
|
||||||
}
|
}
|
||||||
mComboMature->setEnabled(mAllowEdit && can_change_ident);
|
mComboMature->setEnabled(can_change_ident);
|
||||||
mComboMature->setVisible( !gAgent.isTeen() );
|
mComboMature->setVisible( !gAgent.isTeen() );
|
||||||
mComboMature->resetDirty();
|
mComboMature->resetDirty();
|
||||||
}
|
}
|
||||||
if (mCtrlOpenEnrollment)
|
if (mCtrlOpenEnrollment)
|
||||||
{
|
{
|
||||||
mCtrlOpenEnrollment->set(gdatap->mOpenEnrollment);
|
mCtrlOpenEnrollment->set(gdatap->mOpenEnrollment);
|
||||||
mCtrlOpenEnrollment->setEnabled(mAllowEdit && can_change_member_opts);
|
mCtrlOpenEnrollment->setEnabled(can_change_member_opts);
|
||||||
mCtrlOpenEnrollment->resetDirty();
|
mCtrlOpenEnrollment->resetDirty();
|
||||||
}
|
}
|
||||||
if (mCtrlEnrollmentFee)
|
if (mCtrlEnrollmentFee)
|
||||||
{
|
{
|
||||||
mCtrlEnrollmentFee->set(gdatap->mMembershipFee > 0);
|
mCtrlEnrollmentFee->set(gdatap->mMembershipFee > 0);
|
||||||
mCtrlEnrollmentFee->setEnabled(mAllowEdit && can_change_member_opts);
|
mCtrlEnrollmentFee->setEnabled(can_change_member_opts);
|
||||||
mCtrlEnrollmentFee->resetDirty();
|
mCtrlEnrollmentFee->resetDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -659,9 +657,7 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||||||
{
|
{
|
||||||
S32 fee = gdatap->mMembershipFee;
|
S32 fee = gdatap->mMembershipFee;
|
||||||
mSpinEnrollmentFee->set((F32)fee);
|
mSpinEnrollmentFee->set((F32)fee);
|
||||||
mSpinEnrollmentFee->setEnabled( mAllowEdit &&
|
mSpinEnrollmentFee->setEnabled(fee && can_change_member_opts);
|
||||||
(fee > 0) &&
|
|
||||||
can_change_member_opts);
|
|
||||||
mSpinEnrollmentFee->resetDirty();
|
mSpinEnrollmentFee->resetDirty();
|
||||||
}
|
}
|
||||||
if ( mBtnJoinGroup )
|
if ( mBtnJoinGroup )
|
||||||
@@ -693,7 +689,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||||||
mCtrlReceiveNotices->setVisible(is_member);
|
mCtrlReceiveNotices->setVisible(is_member);
|
||||||
if (is_member)
|
if (is_member)
|
||||||
{
|
{
|
||||||
mCtrlReceiveNotices->setEnabled(mAllowEdit);
|
|
||||||
if(!mCtrlReceiveNotices->isDirty()) //If the user hasn't edited this then refresh it. Value may have changed in groups panel, etc.
|
if(!mCtrlReceiveNotices->isDirty()) //If the user hasn't edited this then refresh it. Value may have changed in groups panel, etc.
|
||||||
{
|
{
|
||||||
mCtrlReceiveNotices->set(agent_gdatap.mAcceptNotices);
|
mCtrlReceiveNotices->set(agent_gdatap.mAcceptNotices);
|
||||||
@@ -707,7 +702,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||||||
mCtrlListGroup->setVisible(is_member);
|
mCtrlListGroup->setVisible(is_member);
|
||||||
if (is_member)
|
if (is_member)
|
||||||
{
|
{
|
||||||
mCtrlListGroup->setEnabled(mAllowEdit);
|
|
||||||
if(!mCtrlListGroup->isDirty()) //If the user hasn't edited this then refresh it. Value may have changed in groups panel, etc.
|
if(!mCtrlListGroup->isDirty()) //If the user hasn't edited this then refresh it. Value may have changed in groups panel, etc.
|
||||||
{
|
{
|
||||||
mCtrlListGroup->set(agent_gdatap.mListInProfile);
|
mCtrlListGroup->set(agent_gdatap.mListInProfile);
|
||||||
@@ -721,7 +715,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||||||
mCtrlReceiveChat->setVisible(is_member);
|
mCtrlReceiveChat->setVisible(is_member);
|
||||||
if (is_member)
|
if (is_member)
|
||||||
{
|
{
|
||||||
mCtrlReceiveChat->setEnabled(mAllowEdit);
|
|
||||||
if(!mCtrlReceiveChat->isDirty()) //If the user hasn't edited this then refresh it. Value may have changed in groups panel, etc.
|
if(!mCtrlReceiveChat->isDirty()) //If the user hasn't edited this then refresh it. Value may have changed in groups panel, etc.
|
||||||
{
|
{
|
||||||
mCtrlReceiveChat->set(!gIMMgr->getIgnoreGroup(mGroupID));
|
mCtrlReceiveChat->set(!gIMMgr->getIgnoreGroup(mGroupID));
|
||||||
@@ -730,8 +723,8 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mInsignia) mInsignia->setEnabled(mAllowEdit && can_change_ident);
|
if (mInsignia) mInsignia->setEnabled(can_change_ident);
|
||||||
if (mEditCharter) mEditCharter->setEnabled(mAllowEdit && can_change_ident);
|
if (mEditCharter) mEditCharter->setEnabled(can_change_ident);
|
||||||
|
|
||||||
if (mGroupName) mGroupName->setText(gdatap->mName);
|
if (mGroupName) mGroupName->setText(gdatap->mName);
|
||||||
if (mGroupNameEditor) mGroupNameEditor->setVisible(FALSE);
|
if (mGroupNameEditor) mGroupNameEditor->setVisible(FALSE);
|
||||||
|
|||||||
@@ -222,8 +222,7 @@ BOOL LLPanelGroupNotices::postBuild()
|
|||||||
|
|
||||||
mNoticesList = getChild<LLScrollListCtrl>("notice_list",recurse);
|
mNoticesList = getChild<LLScrollListCtrl>("notice_list",recurse);
|
||||||
mNoticesList->setCommitOnSelectionChange(TRUE);
|
mNoticesList->setCommitOnSelectionChange(TRUE);
|
||||||
mNoticesList->setCommitCallback(onSelectNotice);
|
mNoticesList->setCommitCallback(boost::bind(&LLPanelGroupNotices::onSelectNotice, this));
|
||||||
mNoticesList->setCallbackUserData(this);
|
|
||||||
|
|
||||||
mBtnNewMessage = getChild<LLButton>("create_new_notice",recurse);
|
mBtnNewMessage = getChild<LLButton>("create_new_notice",recurse);
|
||||||
mBtnNewMessage->setClickedCallback(boost::bind(&LLPanelGroupNotices::onClickNewMessage,this));
|
mBtnNewMessage->setClickedCallback(boost::bind(&LLPanelGroupNotices::onClickNewMessage,this));
|
||||||
@@ -494,12 +493,9 @@ void LLPanelGroupNotices::processNotices(LLMessageSystem* msg)
|
|||||||
mNoticesList->updateSort();
|
mNoticesList->updateSort();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLPanelGroupNotices::onSelectNotice(LLUICtrl* ctrl, void* data)
|
void LLPanelGroupNotices::onSelectNotice()
|
||||||
{
|
{
|
||||||
LLPanelGroupNotices* self = (LLPanelGroupNotices*)data;
|
LLScrollListItem* item = mNoticesList->getFirstSelected();
|
||||||
|
|
||||||
if(!self) return;
|
|
||||||
LLScrollListItem* item = self->mNoticesList->getFirstSelected();
|
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
|
|
||||||
LLMessageSystem* msg = gMessageSystem;
|
LLMessageSystem* msg = gMessageSystem;
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ private:
|
|||||||
static void onClickRefreshNotices(void* data);
|
static void onClickRefreshNotices(void* data);
|
||||||
|
|
||||||
void processNotices(LLMessageSystem* msg);
|
void processNotices(LLMessageSystem* msg);
|
||||||
static void onSelectNotice(LLUICtrl* ctrl, void* data);
|
void onSelectNotice();
|
||||||
|
|
||||||
enum ENoticeView
|
enum ENoticeView
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ BOOL LLPanelGroupRoles::isVisibleByAgent(LLAgent* agentp)
|
|||||||
GP_MEMBER_EJECT |
|
GP_MEMBER_EJECT |
|
||||||
GP_MEMBER_OPTIONS );
|
GP_MEMBER_OPTIONS );
|
||||||
*/
|
*/
|
||||||
return mAllowEdit && agentp->isInGroup(mGroupID);
|
return agentp->isInGroup(mGroupID);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1491,7 +1491,7 @@ LLPanelGroupVoting::~LLPanelGroupVoting()
|
|||||||
BOOL LLPanelGroupVoting::isVisibleByAgent(LLAgent* agentp)
|
BOOL LLPanelGroupVoting::isVisibleByAgent(LLAgent* agentp)
|
||||||
{
|
{
|
||||||
//if they are in the group, the panel is viewable
|
//if they are in the group, the panel is viewable
|
||||||
return mAllowEdit && agentp->isInGroup(mGroupID);
|
return agentp->isInGroup(mGroupID);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL LLPanelGroupVoting::postBuild()
|
BOOL LLPanelGroupVoting::postBuild()
|
||||||
|
|||||||
@@ -30,82 +30,65 @@
|
|||||||
* $/LicenseInfo$
|
* $/LicenseInfo$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Display of a "Top Pick" used both for the global top picks in the
|
// Display of each individual user's picks in their profile.
|
||||||
// Find directory, and also for each individual user's picks in their
|
|
||||||
// profile.
|
|
||||||
|
|
||||||
#include "llviewerprecompiledheaders.h"
|
#include "llviewerprecompiledheaders.h"
|
||||||
|
|
||||||
#include "llpanelpick.h"
|
#include "llpanelpick.h"
|
||||||
|
|
||||||
#include "lldir.h"
|
#include "lllineeditor.h"
|
||||||
|
#include "llnotificationsutil.h"
|
||||||
#include "llparcel.h"
|
#include "llparcel.h"
|
||||||
#include "message.h"
|
#include "lltexteditor.h"
|
||||||
|
#include "lltexturectrl.h"
|
||||||
|
#include "lluictrlfactory.h"
|
||||||
|
|
||||||
#include "llagent.h"
|
#include "llagent.h"
|
||||||
#include "llbutton.h"
|
|
||||||
#include "llcheckboxctrl.h"
|
|
||||||
#include "llviewercontrol.h"
|
|
||||||
#include "lllineeditor.h"
|
|
||||||
#include "lltextbox.h"
|
|
||||||
#include "llviewertexteditor.h"
|
|
||||||
#include "lltexturectrl.h"
|
|
||||||
#include "lluiconstants.h"
|
|
||||||
#include "llviewergenericmessage.h"
|
|
||||||
#include "lluictrlfactory.h"
|
|
||||||
#include "llviewerparcelmgr.h"
|
|
||||||
#include "llworldmap.h"
|
|
||||||
#include "llfloaterworldmap.h"
|
#include "llfloaterworldmap.h"
|
||||||
|
#include "llpreviewtexture.h"
|
||||||
|
#include "llviewerparcelmgr.h"
|
||||||
#include "llviewerregion.h"
|
#include "llviewerregion.h"
|
||||||
#include "llviewerwindow.h"
|
|
||||||
#include "llnotificationsutil.h"
|
|
||||||
|
|
||||||
// [RLVa:KB]
|
// [RLVa:KB]
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
|
|
||||||
|
|
||||||
//For pick import and export - RK
|
//For pick import and export - RK
|
||||||
#include "statemachine/aifilepicker.h"
|
#include "statemachine/aifilepicker.h"
|
||||||
#include "llviewernetwork.h"
|
|
||||||
#include "llsdserialize.h"
|
|
||||||
#include "hippogridmanager.h"
|
#include "hippogridmanager.h"
|
||||||
|
#include "llsdserialize.h"
|
||||||
|
|
||||||
|
void show_picture(const LLUUID& id, const std::string& name)
|
||||||
|
{
|
||||||
|
// Try to show and focus existing preview
|
||||||
|
if (LLPreview::show(id)) return;
|
||||||
|
// If there isn't one, make a new preview
|
||||||
|
LLPreview* preview = new LLPreviewTexture("preview texture", gSavedSettings.getRect("PreviewTextureRect"), name, id);
|
||||||
|
preview->setFocus(true);
|
||||||
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
std::list<LLPanelPick*> LLPanelPick::sAllPanels;
|
std::list<LLPanelPick*> LLPanelPick::sAllPanels;
|
||||||
|
|
||||||
LLPanelPick::LLPanelPick(BOOL top_pick)
|
LLPanelPick::LLPanelPick()
|
||||||
: LLPanel(std::string("Top Picks Panel")),
|
: LLPanel(std::string("Top Picks Panel")),
|
||||||
mTopPick(top_pick),
|
|
||||||
mPickID(),
|
mPickID(),
|
||||||
mCreatorID(),
|
mCreatorID(),
|
||||||
mParcelID(),
|
mParcelID(),
|
||||||
mDataRequested(FALSE),
|
mDataRequested(false),
|
||||||
mDataReceived(FALSE),
|
mDataReceived(false),
|
||||||
mPosGlobal(),
|
mPosGlobal(),
|
||||||
mSnapshotCtrl(NULL),
|
mSnapshotCtrl(NULL),
|
||||||
mNameEditor(NULL),
|
mNameEditor(NULL),
|
||||||
mDescEditor(NULL),
|
mDescEditor(NULL),
|
||||||
mLocationEditor(NULL),
|
mLocationEditor(NULL),
|
||||||
mTeleportBtn(NULL),
|
|
||||||
mMapBtn(NULL),
|
|
||||||
//mLandmarkBtn(NULL),
|
|
||||||
mSortOrderText(NULL),
|
|
||||||
mSortOrderEditor(NULL),
|
|
||||||
mEnabledCheck(NULL),
|
|
||||||
mSetBtn(NULL),
|
mSetBtn(NULL),
|
||||||
|
mOpenBtn(NULL),
|
||||||
mImporting(0)
|
mImporting(0)
|
||||||
{
|
{
|
||||||
sAllPanels.push_back(this);
|
sAllPanels.push_back(this);
|
||||||
|
|
||||||
std::string pick_def_file;
|
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_pick.xml");
|
||||||
if (top_pick)
|
|
||||||
{
|
|
||||||
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_top_pick.xml");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_pick.xml");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -130,8 +113,8 @@ void LLPanelPick::reset()
|
|||||||
mParcelID.setNull();
|
mParcelID.setNull();
|
||||||
|
|
||||||
// Don't request data, this isn't valid
|
// Don't request data, this isn't valid
|
||||||
mDataRequested = TRUE;
|
mDataRequested = true;
|
||||||
mDataReceived = FALSE;
|
mDataReceived = false;
|
||||||
|
|
||||||
mPosGlobal.clearVec();
|
mPosGlobal.clearVec();
|
||||||
|
|
||||||
@@ -142,83 +125,55 @@ void LLPanelPick::reset()
|
|||||||
BOOL LLPanelPick::postBuild()
|
BOOL LLPanelPick::postBuild()
|
||||||
{
|
{
|
||||||
mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl");
|
mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl");
|
||||||
mSnapshotCtrl->setCommitCallback(onCommitAny);
|
mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelPick::onCommitAny, this));
|
||||||
mSnapshotCtrl->setCallbackUserData(this);
|
|
||||||
|
|
||||||
mNameEditor = getChild<LLLineEditor>("given_name_editor");
|
mNameEditor = getChild<LLLineEditor>("given_name_editor");
|
||||||
mNameEditor->setCommitOnFocusLost(TRUE);
|
mNameEditor->setCommitOnFocusLost(true);
|
||||||
mNameEditor->setCommitCallback(onCommitAny);
|
mNameEditor->setCommitCallback(boost::bind(&LLPanelPick::onCommitAny, this));
|
||||||
mNameEditor->setCallbackUserData(this);
|
|
||||||
|
|
||||||
mDescEditor = getChild<LLTextEditor>("desc_editor");
|
mDescEditor = getChild<LLTextEditor>("desc_editor");
|
||||||
mDescEditor->setCommitOnFocusLost(TRUE);
|
mDescEditor->setCommitOnFocusLost(true);
|
||||||
mDescEditor->setCommitCallback(onCommitAny);
|
mDescEditor->setCommitCallback(boost::bind(&LLPanelPick::onCommitAny, this));
|
||||||
mDescEditor->setCallbackUserData(this);
|
mDescEditor->setTabsToNextField(true);
|
||||||
mDescEditor->setTabsToNextField(TRUE);
|
|
||||||
|
|
||||||
mLocationEditor = getChild<LLLineEditor>("location_editor");
|
mLocationEditor = getChild<LLLineEditor>("location_editor");
|
||||||
|
|
||||||
mSetBtn = getChild<LLButton>( "set_location_btn");
|
mSetBtn = getChild<LLUICtrl>( "set_location_btn");
|
||||||
mSetBtn->setClickedCallback(boost::bind(&LLPanelPick::onClickSet,this));
|
mSetBtn->setCommitCallback(boost::bind(&LLPanelPick::onClickSet,this));
|
||||||
|
|
||||||
mTeleportBtn = getChild<LLButton>( "pick_teleport_btn");
|
mOpenBtn = getChild<LLUICtrl>("open_picture_btn");
|
||||||
mTeleportBtn->setClickedCallback(boost::bind(&LLPanelPick::onClickTeleport,this));
|
mOpenBtn->setCommitCallback(boost::bind(show_picture, boost::bind(&LLTextureCtrl::getImageAssetID, mSnapshotCtrl), boost::bind(&LLLineEditor::getText, mNameEditor)));
|
||||||
|
|
||||||
mMapBtn = getChild<LLButton>( "pick_map_btn");
|
getChild<LLUICtrl>("pick_teleport_btn")->setCommitCallback(boost::bind(&LLPanelPick::onClickTeleport,this));
|
||||||
mMapBtn->setClickedCallback(boost::bind(&LLPanelPick::onClickMap,this));
|
getChild<LLUICtrl>("pick_map_btn")->setCommitCallback(boost::bind(&LLPanelPick::onClickMap,this));
|
||||||
|
|
||||||
mSortOrderText = getChild<LLTextBox>("sort_order_text");
|
|
||||||
|
|
||||||
mSortOrderEditor = getChild<LLLineEditor>("sort_order_editor");
|
|
||||||
mSortOrderEditor->setPrevalidate(LLLineEditor::prevalidateInt);
|
|
||||||
mSortOrderEditor->setCommitOnFocusLost(TRUE);
|
|
||||||
mSortOrderEditor->setCommitCallback(onCommitAny);
|
|
||||||
mSortOrderEditor->setCallbackUserData(this);
|
|
||||||
|
|
||||||
mEnabledCheck = getChild<LLCheckBoxCtrl>( "enabled_check");
|
|
||||||
mEnabledCheck->setCommitCallback(onCommitAny);
|
|
||||||
mEnabledCheck->setCallbackUserData(this);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLPanelPick::processProperties(void* data, EAvatarProcessorType type)
|
void LLPanelPick::processProperties(void* data, EAvatarProcessorType type)
|
||||||
{
|
{
|
||||||
if(APT_PICK_INFO != type)
|
if (!data || APT_PICK_INFO != type) return;
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
LLPickData* pick_info = static_cast<LLPickData*>(data);
|
LLPickData* pick_info = static_cast<LLPickData*>(data);
|
||||||
//llassert_always(pick_info->creator_id != gAgent.getID());
|
if (pick_info->creator_id != mCreatorID || pick_info->pick_id != mPickID)
|
||||||
//llassert_always(mCreatorID != gAgent.getID());
|
|
||||||
if(!pick_info
|
|
||||||
|| pick_info->creator_id != mCreatorID
|
|
||||||
|| pick_info->pick_id != mPickID)
|
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mCreatorID, this);
|
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mCreatorID, this);
|
||||||
|
|
||||||
// "Location text" is actually the owner name, the original
|
// "Location text" is actually the owner name, the original
|
||||||
// name that owner gave the parcel, and the location.
|
// name that owner gave the parcel, and the location.
|
||||||
std::string location_text = pick_info->user_name + ", ";
|
std::string location_text = pick_info->user_name + ", ";
|
||||||
|
|
||||||
if (!pick_info->original_name.empty())
|
if (!pick_info->original_name.empty())
|
||||||
{
|
{
|
||||||
location_text.append(pick_info->original_name);
|
location_text += pick_info->original_name + ", ";
|
||||||
location_text.append(", ");
|
|
||||||
}
|
}
|
||||||
|
location_text += pick_info->sim_name + " ";
|
||||||
location_text.append(pick_info->sim_name);
|
|
||||||
location_text.append(" ");
|
|
||||||
|
|
||||||
//Fix for location text importing - RK
|
//Fix for location text importing - RK
|
||||||
for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter)
|
for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter)
|
||||||
{
|
{
|
||||||
LLPanelPick* self = *iter;
|
LLPanelPick* self = *iter;
|
||||||
if(!self->mImporting) self->mLocationText = location_text;
|
if (!self->mImporting) self->mLocationText = location_text;
|
||||||
else location_text = self->mLocationText;
|
else location_text = self->mLocationText;
|
||||||
self->mImporting = false;
|
self->mImporting = false;
|
||||||
}
|
}
|
||||||
@@ -226,10 +181,9 @@ void LLPanelPick::processProperties(void* data, EAvatarProcessorType type)
|
|||||||
S32 region_x = llround((F32)pick_info->pos_global.mdV[VX]) % REGION_WIDTH_UNITS;
|
S32 region_x = llround((F32)pick_info->pos_global.mdV[VX]) % REGION_WIDTH_UNITS;
|
||||||
S32 region_y = llround((F32)pick_info->pos_global.mdV[VY]) % REGION_WIDTH_UNITS;
|
S32 region_y = llround((F32)pick_info->pos_global.mdV[VY]) % REGION_WIDTH_UNITS;
|
||||||
S32 region_z = llround((F32)pick_info->pos_global.mdV[VZ]);
|
S32 region_z = llround((F32)pick_info->pos_global.mdV[VZ]);
|
||||||
|
|
||||||
location_text.append(llformat("(%d, %d, %d)", region_x, region_y, region_z));
|
location_text.append(llformat("(%d, %d, %d)", region_x, region_y, region_z));
|
||||||
|
|
||||||
mDataReceived = TRUE;
|
mDataReceived = true;
|
||||||
|
|
||||||
// Found the panel, now fill in the information
|
// Found the panel, now fill in the information
|
||||||
mPickID = pick_info->pick_id;
|
mPickID = pick_info->pick_id;
|
||||||
@@ -243,24 +197,17 @@ void LLPanelPick::processProperties(void* data, EAvatarProcessorType type)
|
|||||||
mDescEditor->setText(pick_info->desc);
|
mDescEditor->setText(pick_info->desc);
|
||||||
mSnapshotCtrl->setImageAssetID(pick_info->snapshot_id);
|
mSnapshotCtrl->setImageAssetID(pick_info->snapshot_id);
|
||||||
mLocationEditor->setText(location_text);
|
mLocationEditor->setText(location_text);
|
||||||
mEnabledCheck->set(pick_info->enabled);
|
|
||||||
|
|
||||||
mSortOrderEditor->setText(llformat("%d", pick_info->sort_order));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fill in some reasonable defaults for a new pick.
|
// Fill in some reasonable defaults for a new pick.
|
||||||
void LLPanelPick::initNewPick()
|
void LLPanelPick::initNewPick()
|
||||||
{
|
{
|
||||||
mPickID.generate();
|
mPickID.generate();
|
||||||
|
mCreatorID = gAgentID;
|
||||||
mCreatorID = gAgent.getID();
|
|
||||||
|
|
||||||
mPosGlobal = gAgent.getPositionGlobal();
|
mPosGlobal = gAgent.getPositionGlobal();
|
||||||
|
|
||||||
// Try to fill in the current parcel
|
// Try to fill in the current parcel
|
||||||
LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
|
if (LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel())
|
||||||
if (parcel)
|
|
||||||
{
|
{
|
||||||
mNameEditor->setText(parcel->getName());
|
mNameEditor->setText(parcel->getName());
|
||||||
mDescEditor->setText(parcel->getDesc());
|
mDescEditor->setText(parcel->getDesc());
|
||||||
@@ -284,21 +231,14 @@ void LLPanelPick::importNewPick_continued(void (*callback)(void*, bool), void* d
|
|||||||
bool result = false;
|
bool result = false;
|
||||||
if (filepicker->hasFilename())
|
if (filepicker->hasFilename())
|
||||||
{
|
{
|
||||||
std::string file = filepicker->getFilename();
|
llifstream importer(filepicker->getFilename());
|
||||||
|
|
||||||
llifstream importer(file);
|
|
||||||
LLSD data;
|
LLSD data;
|
||||||
LLSDSerialize::fromXMLDocument(data, importer);
|
LLSDSerialize::fromXMLDocument(data, importer);
|
||||||
|
|
||||||
LLSD file_data = data["Data"];
|
LLSD file_data = data["Data"];
|
||||||
data = LLSD();
|
|
||||||
|
|
||||||
mPickID.generate();
|
mPickID.generate();
|
||||||
|
mCreatorID = gAgentID;
|
||||||
mCreatorID = gAgent.getID();
|
|
||||||
|
|
||||||
mPosGlobal = LLVector3d(file_data["globalPos"]);
|
mPosGlobal = LLVector3d(file_data["globalPos"]);
|
||||||
|
|
||||||
mNameEditor->setText(file_data["name"].asString());
|
mNameEditor->setText(file_data["name"].asString());
|
||||||
mDescEditor->setText(file_data["desc"].asString());
|
mDescEditor->setText(file_data["desc"].asString());
|
||||||
mSnapshotCtrl->setImageAssetID(file_data["snapshotID"].asUUID());
|
mSnapshotCtrl->setImageAssetID(file_data["snapshotID"].asUUID());
|
||||||
@@ -325,10 +265,10 @@ void LLPanelPick::exportPick_continued(AIFilePicker* filepicker)
|
|||||||
if (!filepicker->hasFilename())
|
if (!filepicker->hasFilename())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
std::string destination = filepicker->getFilename();
|
LLSD header;
|
||||||
|
header["Version"] = 2;
|
||||||
|
|
||||||
LLSD datas;
|
LLSD datas;
|
||||||
|
|
||||||
datas["name"] = mNameEditor->getText();
|
datas["name"] = mNameEditor->getText();
|
||||||
datas["desc"] = mDescEditor->getText();
|
datas["desc"] = mDescEditor->getText();
|
||||||
datas["parcelID"] = mParcelID;
|
datas["parcelID"] = mParcelID;
|
||||||
@@ -337,16 +277,12 @@ void LLPanelPick::exportPick_continued(AIFilePicker* filepicker)
|
|||||||
datas["locationText"] = mLocationText;
|
datas["locationText"] = mLocationText;
|
||||||
|
|
||||||
LLSD file;
|
LLSD file;
|
||||||
LLSD header;
|
|
||||||
header["Version"] = 2;
|
|
||||||
file["Header"] = header;
|
file["Header"] = header;
|
||||||
std::string grid_uri = gHippoGridManager->getConnectedGrid()->getLoginUri();
|
file["Grid"] = gHippoGridManager->getConnectedGrid()->getLoginUri();
|
||||||
//LLStringUtil::toLower(uris[0]);
|
|
||||||
file["Grid"] = grid_uri;
|
|
||||||
file["Data"] = datas;
|
file["Data"] = datas;
|
||||||
|
|
||||||
// Create a file stream and write to it
|
// Create a file stream and write to it
|
||||||
llofstream export_file(destination);
|
llofstream export_file(filepicker->getFilename());
|
||||||
LLSDSerialize::toPrettyXML(file, export_file);
|
LLSDSerialize::toPrettyXML(file, export_file);
|
||||||
// Open the file save dialog
|
// Open the file save dialog
|
||||||
export_file.close();
|
export_file.close();
|
||||||
@@ -364,24 +300,17 @@ void LLPanelPick::setPickID(const LLUUID& pick_id, const LLUUID& creator_id)
|
|||||||
// from the server next time it is drawn.
|
// from the server next time it is drawn.
|
||||||
void LLPanelPick::markForServerRequest()
|
void LLPanelPick::markForServerRequest()
|
||||||
{
|
{
|
||||||
mDataRequested = FALSE;
|
mDataRequested = false;
|
||||||
mDataReceived = FALSE;
|
mDataReceived = false;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
std::string LLPanelPick::getPickName()
|
|
||||||
{
|
|
||||||
return mNameEditor->getText();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LLPanelPick::sendPickInfoRequest()
|
void LLPanelPick::sendPickInfoRequest()
|
||||||
{
|
{
|
||||||
//llassert_always(mCreatorID != gAgent.getID());
|
|
||||||
LLAvatarPropertiesProcessor::getInstance()->addObserver(mCreatorID, this);
|
LLAvatarPropertiesProcessor::getInstance()->addObserver(mCreatorID, this);
|
||||||
LLAvatarPropertiesProcessor::getInstance()->sendPickInfoRequest(mCreatorID, mPickID);
|
LLAvatarPropertiesProcessor::getInstance()->sendPickInfoRequest(mCreatorID, mPickID);
|
||||||
|
|
||||||
mDataRequested = TRUE;
|
mDataRequested = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -396,24 +325,18 @@ void LLPanelPick::sendPickInfoUpdate()
|
|||||||
mPickID.generate();
|
mPickID.generate();
|
||||||
}
|
}
|
||||||
|
|
||||||
pick_data.agent_id = gAgent.getID();
|
pick_data.agent_id = gAgentID;
|
||||||
pick_data.session_id = gAgent.getSessionID();
|
pick_data.session_id = gAgentSessionID;
|
||||||
pick_data.pick_id = mPickID;
|
pick_data.pick_id = mPickID;
|
||||||
pick_data.creator_id = gAgent.getID();
|
pick_data.creator_id = gAgentID;
|
||||||
|
pick_data.top_pick = false; //legacy var need to be deleted
|
||||||
//legacy var need to be deleted
|
|
||||||
pick_data.top_pick = mTopPick;
|
|
||||||
pick_data.parcel_id = mParcelID;
|
pick_data.parcel_id = mParcelID;
|
||||||
pick_data.name = mNameEditor->getText();
|
pick_data.name = mNameEditor->getText();
|
||||||
pick_data.desc = mDescEditor->getText();
|
pick_data.desc = mDescEditor->getText();
|
||||||
pick_data.snapshot_id = mSnapshotCtrl->getImageAssetID();
|
pick_data.snapshot_id = mSnapshotCtrl->getImageAssetID();
|
||||||
pick_data.pos_global = mPosGlobal;
|
pick_data.pos_global = mPosGlobal;
|
||||||
if(mTopPick)
|
pick_data.sort_order = 0;
|
||||||
pick_data.sort_order = atoi(mSortOrderEditor->getText().c_str());
|
pick_data.enabled = true;
|
||||||
else
|
|
||||||
pick_data.sort_order = 0;
|
|
||||||
|
|
||||||
pick_data.enabled = mEnabledCheck->get();
|
|
||||||
|
|
||||||
LLAvatarPropertiesProcessor::getInstance()->sendPickInfoUpdate(&pick_data);
|
LLAvatarPropertiesProcessor::getInstance()->sendPickInfoUpdate(&pick_data);
|
||||||
}
|
}
|
||||||
@@ -421,106 +344,50 @@ void LLPanelPick::sendPickInfoUpdate()
|
|||||||
|
|
||||||
|
|
||||||
void LLPanelPick::draw()
|
void LLPanelPick::draw()
|
||||||
{
|
|
||||||
refresh();
|
|
||||||
|
|
||||||
LLPanel::draw();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void LLPanelPick::refresh()
|
|
||||||
{
|
{
|
||||||
if (!mDataRequested)
|
if (!mDataRequested)
|
||||||
{
|
{
|
||||||
sendPickInfoRequest();
|
sendPickInfoRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for god mode
|
|
||||||
BOOL godlike = gAgent.isGodlike();
|
|
||||||
BOOL is_self = (gAgent.getID() == mCreatorID);
|
|
||||||
|
|
||||||
// Set button visibility/enablement appropriately
|
// Set button visibility/enablement appropriately
|
||||||
if (mTopPick)
|
bool is_self = gAgentID == mCreatorID;
|
||||||
{
|
mSnapshotCtrl->setEnabled(is_self);
|
||||||
mSnapshotCtrl->setEnabled(godlike);
|
mNameEditor->setEnabled(is_self);
|
||||||
mNameEditor->setEnabled(godlike);
|
mDescEditor->setEnabled(is_self);
|
||||||
mDescEditor->setEnabled(godlike);
|
mSetBtn->setVisible(is_self);
|
||||||
|
//mSetBtn->setEnabled(is_self);
|
||||||
mSortOrderText->setVisible(godlike);
|
|
||||||
|
|
||||||
mSortOrderEditor->setVisible(godlike);
|
|
||||||
mSortOrderEditor->setEnabled(godlike);
|
|
||||||
|
|
||||||
mEnabledCheck->setVisible(godlike);
|
|
||||||
mEnabledCheck->setEnabled(godlike);
|
|
||||||
|
|
||||||
mSetBtn->setVisible(godlike);
|
|
||||||
//mSetBtn->setEnabled(godlike);
|
|
||||||
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
|
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
|
||||||
mSetBtn->setEnabled(godlike && (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) );
|
mSetBtn->setEnabled(is_self && !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC));
|
||||||
// [/RLVa:KB]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mSnapshotCtrl->setEnabled(is_self);
|
|
||||||
mNameEditor->setEnabled(is_self);
|
|
||||||
mDescEditor->setEnabled(is_self);
|
|
||||||
|
|
||||||
mSortOrderText->setVisible(FALSE);
|
|
||||||
|
|
||||||
mSortOrderEditor->setVisible(FALSE);
|
|
||||||
mSortOrderEditor->setEnabled(FALSE);
|
|
||||||
|
|
||||||
mEnabledCheck->setVisible(FALSE);
|
|
||||||
mEnabledCheck->setEnabled(FALSE);
|
|
||||||
|
|
||||||
mSetBtn->setVisible(is_self);
|
|
||||||
//mSetBtn->setEnabled(is_self);
|
|
||||||
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
|
|
||||||
mSetBtn->setEnabled(is_self && (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) );
|
|
||||||
// [/RLVa]
|
// [/RLVa]
|
||||||
}
|
mOpenBtn->setVisible(!is_self);
|
||||||
|
|
||||||
|
LLPanel::draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLPanelPick::onClickTeleport()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// static
|
|
||||||
void LLPanelPick::onClickTeleport(void* data)
|
|
||||||
{
|
{
|
||||||
LLPanelPick* self = (LLPanelPick*)data;
|
if (!mPosGlobal.isExactlyZero())
|
||||||
|
|
||||||
if (!self->mPosGlobal.isExactlyZero())
|
|
||||||
{
|
{
|
||||||
gAgent.teleportViaLocation(self->mPosGlobal);
|
gAgent.teleportViaLocation(mPosGlobal);
|
||||||
gFloaterWorldMap->trackLocation(self->mPosGlobal);
|
gFloaterWorldMap->trackLocation(mPosGlobal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLPanelPick::onClickMap()
|
||||||
// static
|
|
||||||
void LLPanelPick::onClickMap(void* data)
|
|
||||||
{
|
{
|
||||||
LLPanelPick* self = (LLPanelPick*)data;
|
gFloaterWorldMap->trackLocation(mPosGlobal);
|
||||||
gFloaterWorldMap->trackLocation(self->mPosGlobal);
|
|
||||||
LLFloaterWorldMap::show(true);
|
LLFloaterWorldMap::show(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
|
||||||
/*
|
/*
|
||||||
void LLPanelPick::onClickLandmark(void* data)
|
void LLPanelPick::onClickLandmark()
|
||||||
{
|
{
|
||||||
LLPanelPick* self = (LLPanelPick*)data;
|
create_landmark(mNameEditor->getText(), "", mPosGlobal);
|
||||||
create_landmark(self->mNameEditor->getText(), "", self->mPosGlobal);
|
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// static
|
void LLPanelPick::onClickSet()
|
||||||
void LLPanelPick::onClickSet(void* data)
|
|
||||||
{
|
{
|
||||||
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
|
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
|
||||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
|
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
|
||||||
@@ -528,63 +395,41 @@ void LLPanelPick::onClickSet(void* data)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
LLPanelPick* self = (LLPanelPick*)data;
|
|
||||||
|
|
||||||
// Save location for later.
|
// Save location for later.
|
||||||
self->mPosGlobal = gAgent.getPositionGlobal();
|
mPosGlobal = gAgent.getPositionGlobal();
|
||||||
|
|
||||||
std::string location_text;
|
std::string location_text("(will update after save), " + mSimName);
|
||||||
location_text.assign("(will update after save)");
|
|
||||||
location_text.append(", ");
|
|
||||||
|
|
||||||
S32 region_x = llround((F32)self->mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS;
|
S32 region_x = llround((F32)mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS;
|
||||||
S32 region_y = llround((F32)self->mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS;
|
S32 region_y = llround((F32)mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS;
|
||||||
S32 region_z = llround((F32)self->mPosGlobal.mdV[VZ]);
|
S32 region_z = llround((F32)mPosGlobal.mdV[VZ]);
|
||||||
|
|
||||||
location_text.append(self->mSimName);
|
|
||||||
location_text.append(llformat(" (%d, %d, %d)", region_x, region_y, region_z));
|
location_text.append(llformat(" (%d, %d, %d)", region_x, region_y, region_z));
|
||||||
|
|
||||||
// if sim name in pick is different from current sim name
|
// if sim name in pick is different from current sim name
|
||||||
// make sure it's clear that all that's being changed
|
// make sure it's clear that all that's being changed
|
||||||
// is the location and nothing else
|
// is the location and nothing else
|
||||||
if ( gAgent.getRegion ()->getName () != self->mSimName )
|
if (gAgent.getRegion()->getName() != mSimName)
|
||||||
{
|
{
|
||||||
LLNotificationsUtil::add("SetPickLocation");
|
LLNotificationsUtil::add("SetPickLocation");
|
||||||
};
|
}
|
||||||
|
|
||||||
self->mLocationEditor->setText(location_text);
|
mLocationEditor->setText(location_text);
|
||||||
|
|
||||||
onCommitAny(NULL, data);
|
onCommitAny();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLPanelPick::onCommitAny()
|
||||||
// static
|
|
||||||
void LLPanelPick::onCommitAny(LLUICtrl* ctrl, void* data)
|
|
||||||
{
|
{
|
||||||
LLPanelPick* self = (LLPanelPick*)data;
|
if (mCreatorID != gAgentID) return;
|
||||||
|
|
||||||
if(self->mCreatorID != gAgent.getID())
|
|
||||||
return;
|
|
||||||
|
|
||||||
// have we received up to date data for this pick?
|
// have we received up to date data for this pick?
|
||||||
if (self->mDataReceived)
|
if (mDataReceived)
|
||||||
{
|
{
|
||||||
self->sendPickInfoUpdate();
|
sendPickInfoUpdate();
|
||||||
|
if (LLTabContainer* tab = dynamic_cast<LLTabContainer*>(getParent()))
|
||||||
// Big hack - assume that top picks are always in a browser,
|
|
||||||
// and non-top-picks are always in a tab container.
|
|
||||||
/*if (self->mTopPick)
|
|
||||||
{
|
{
|
||||||
LLPanelDirPicks* panel = (LLPanelDirPicks*)self->getParent();
|
tab->setCurrentTabName(mNameEditor->getText());
|
||||||
panel->renamePick(self->mPickID, self->mNameEditor->getText());
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{*/
|
|
||||||
LLTabContainer* tab = (LLTabContainer*)self->getParent();
|
|
||||||
if (tab)
|
|
||||||
{
|
|
||||||
if(tab) tab->setCurrentTabName(self->mNameEditor->getText());
|
|
||||||
}
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,43 +30,30 @@
|
|||||||
* $/LicenseInfo$
|
* $/LicenseInfo$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Display of a "Top Pick" used both for the global top picks in the
|
// Display of each individual user's picks in their profile.
|
||||||
// Find directory, and also for each individual user's picks in their
|
|
||||||
// profile.
|
|
||||||
|
|
||||||
#ifndef LL_LLPANELPICK_H
|
#ifndef LL_LLPANELPICK_H
|
||||||
#define LL_LLPANELPICK_H
|
#define LL_LLPANELPICK_H
|
||||||
|
|
||||||
#include "llpanel.h"
|
#include "llpanel.h"
|
||||||
#include "v3dmath.h"
|
|
||||||
#include "lluuid.h"
|
|
||||||
#include "llavatarpropertiesprocessor.h"
|
#include "llavatarpropertiesprocessor.h"
|
||||||
|
|
||||||
class LLButton;
|
|
||||||
class LLCheckBoxCtrl;
|
|
||||||
class LLIconCtrl;
|
|
||||||
class LLLineEditor;
|
class LLLineEditor;
|
||||||
class LLTextBox;
|
|
||||||
class LLTextEditor;
|
class LLTextEditor;
|
||||||
class LLTextureCtrl;
|
class LLTextureCtrl;
|
||||||
class LLUICtrl;
|
|
||||||
class LLMessageSystem;
|
|
||||||
class AIFilePicker;
|
class AIFilePicker;
|
||||||
|
|
||||||
class LLPanelPick : public LLPanel, public LLAvatarPropertiesObserver
|
class LLPanelPick : public LLPanel, public LLAvatarPropertiesObserver
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LLPanelPick(BOOL top_pick);
|
LLPanelPick();
|
||||||
/*virtual*/ ~LLPanelPick();
|
/*virtual*/ ~LLPanelPick();
|
||||||
|
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
/*virtual*/ BOOL postBuild();
|
/*virtual*/ BOOL postBuild();
|
||||||
|
|
||||||
/*virtual*/ void draw();
|
/*virtual*/ void draw();
|
||||||
|
|
||||||
/*virtual*/ void refresh();
|
|
||||||
|
|
||||||
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
||||||
|
|
||||||
// Setup a new pick, including creating an id, giving a sane
|
// Setup a new pick, including creating an id, giving a sane
|
||||||
@@ -87,7 +74,7 @@ public:
|
|||||||
// from the server next time it is drawn.
|
// from the server next time it is drawn.
|
||||||
void markForServerRequest();
|
void markForServerRequest();
|
||||||
|
|
||||||
std::string getPickName();
|
const std::string& getPickName() const { return mNameEditor->getText(); }
|
||||||
const LLUUID& getPickID() const { return mPickID; }
|
const LLUUID& getPickID() const { return mPickID; }
|
||||||
const LLUUID& getPickCreatorID() const { return mCreatorID; }
|
const LLUUID& getPickCreatorID() const { return mCreatorID; }
|
||||||
|
|
||||||
@@ -95,26 +82,24 @@ public:
|
|||||||
void sendPickInfoUpdate();
|
void sendPickInfoUpdate();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void onClickTeleport(void* data);
|
void onClickTeleport();
|
||||||
static void onClickMap(void* data);
|
void onClickMap();
|
||||||
//static void onClickLandmark(void* data);
|
//void onClickLandmark();
|
||||||
static void onClickSet(void* data);
|
void onClickSet();
|
||||||
|
|
||||||
static void onCommitAny(LLUICtrl* ctrl, void* data);
|
void onCommitAny();
|
||||||
|
|
||||||
protected:
|
|
||||||
//Pick import and export - RK
|
//Pick import and export - RK
|
||||||
BOOL mImporting;
|
bool mImporting;
|
||||||
std::string mLocationText;
|
std::string mLocationText;
|
||||||
|
|
||||||
BOOL mTopPick;
|
|
||||||
LLUUID mPickID;
|
LLUUID mPickID;
|
||||||
LLUUID mCreatorID;
|
LLUUID mCreatorID;
|
||||||
LLUUID mParcelID;
|
LLUUID mParcelID;
|
||||||
|
|
||||||
// Data will be requested on first draw
|
// Data will be requested on first draw
|
||||||
BOOL mDataRequested;
|
bool mDataRequested;
|
||||||
BOOL mDataReceived;
|
bool mDataReceived;
|
||||||
|
|
||||||
std::string mSimName;
|
std::string mSimName;
|
||||||
LLVector3d mPosGlobal;
|
LLVector3d mPosGlobal;
|
||||||
@@ -124,13 +109,9 @@ protected:
|
|||||||
LLTextEditor* mDescEditor;
|
LLTextEditor* mDescEditor;
|
||||||
LLLineEditor* mLocationEditor;
|
LLLineEditor* mLocationEditor;
|
||||||
|
|
||||||
LLButton* mTeleportBtn;
|
LLUICtrl* mTeleportBtn;
|
||||||
LLButton* mMapBtn;
|
LLUICtrl* mSetBtn;
|
||||||
|
LLUICtrl* mOpenBtn;
|
||||||
LLTextBox* mSortOrderText;
|
|
||||||
LLLineEditor* mSortOrderEditor;
|
|
||||||
LLCheckBoxCtrl* mEnabledCheck;
|
|
||||||
LLButton* mSetBtn;
|
|
||||||
|
|
||||||
typedef std::list<LLPanelPick*> panel_list_t;
|
typedef std::list<LLPanelPick*> panel_list_t;
|
||||||
static panel_list_t sAllPanels;
|
static panel_list_t sAllPanels;
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ void LLParticipantList::refreshSpeakers()
|
|||||||
if (speakerp->mStatus == LLSpeaker::STATUS_MUTED)
|
if (speakerp->mStatus == LLSpeaker::STATUS_MUTED)
|
||||||
{
|
{
|
||||||
icon_cell->setValue("mute_icon.tga");
|
icon_cell->setValue("mute_icon.tga");
|
||||||
static const LLCachedControl<LLColor4> sAscentMutedColor(gColors, "AscentMutedColor");
|
static const LLCachedControl<LLColor4> sAscentMutedColor("AscentMutedColor");
|
||||||
icon_cell->setColor(speakerp->mModeratorMutedVoice ? /*LLColor4::grey*/sAscentMutedColor : LLColor4(1.f, 71.f / 255.f, 71.f / 255.f, 1.f));
|
icon_cell->setColor(speakerp->mModeratorMutedVoice ? /*LLColor4::grey*/sAscentMutedColor : LLColor4(1.f, 71.f / 255.f, 71.f / 255.f, 1.f));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ public:
|
|||||||
static void onBtnRemove( void* userdata );
|
static void onBtnRemove( void* userdata );
|
||||||
static void onBtnBrowser( void* userdata );
|
static void onBtnBrowser( void* userdata );
|
||||||
|
|
||||||
static void onLocalScrollCommit ( LLUICtrl* ctrl, void *userdata );
|
void onLocalScrollCommit();
|
||||||
// tag: vaa emerald local_asset_browser [end]
|
// tag: vaa emerald local_asset_browser [end]
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -483,8 +483,7 @@ BOOL LLFloaterTexturePicker::postBuild()
|
|||||||
childSetAction("Browser", LLFloaterTexturePicker::onBtnBrowser, this);
|
childSetAction("Browser", LLFloaterTexturePicker::onBtnBrowser, this);
|
||||||
|
|
||||||
mLocalScrollCtrl = getChild<LLScrollListCtrl>("local_name_list");
|
mLocalScrollCtrl = getChild<LLScrollListCtrl>("local_name_list");
|
||||||
mLocalScrollCtrl->setCallbackUserData(this);
|
mLocalScrollCtrl->setCommitCallback(boost::bind(&LLFloaterTexturePicker::onLocalScrollCommit, this));
|
||||||
mLocalScrollCtrl->setCommitCallback(onLocalScrollCommit);
|
|
||||||
LocalAssetBrowser::UpdateTextureCtrlList( mLocalScrollCtrl );
|
LocalAssetBrowser::UpdateTextureCtrlList( mLocalScrollCtrl );
|
||||||
// tag: vaa emerald local_asset_browser [end]
|
// tag: vaa emerald local_asset_browser [end]
|
||||||
|
|
||||||
@@ -906,15 +905,14 @@ void LLFloaterTexturePicker::onBtnBrowser(void *userdata)
|
|||||||
FloaterLocalAssetBrowser::show(NULL);
|
FloaterLocalAssetBrowser::show(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// static, reacts to user clicking a valid field in the local scroll list.
|
// reacts to user clicking a valid field in the local scroll list.
|
||||||
void LLFloaterTexturePicker::onLocalScrollCommit(LLUICtrl *ctrl, void *userdata)
|
void LLFloaterTexturePicker::onLocalScrollCommit()
|
||||||
{
|
{
|
||||||
LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
|
LLUUID id(mLocalScrollCtrl->getSelectedItemLabel(LOCALLIST_COL_ID));
|
||||||
LLUUID id = (LLUUID)self->mLocalScrollCtrl->getSelectedItemLabel( LOCALLIST_COL_ID );
|
|
||||||
|
|
||||||
self->mOwner->setImageAssetID( id );
|
mOwner->setImageAssetID(id);
|
||||||
if ( self->childGetValue("apply_immediate_check").asBoolean() )
|
if (childGetValue("apply_immediate_check").asBoolean())
|
||||||
{ self->mOwner->onFloaterCommit(LLTextureCtrl::TEXTURE_CHANGE, id); } // calls an overridden function.
|
mOwner->onFloaterCommit(LLTextureCtrl::TEXTURE_CHANGE, id); // calls an overridden function.
|
||||||
}
|
}
|
||||||
|
|
||||||
// tag: vaa emerald local_asset_browser [end]
|
// tag: vaa emerald local_asset_browser [end]
|
||||||
|
|||||||
@@ -766,9 +766,9 @@ void LLViewerParcelMedia::filterMedia(LLParcel* parcel, U32 type)
|
|||||||
sDeniedMedia.erase(ip);
|
sDeniedMedia.erase(ip);
|
||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
if (dirty)
|
if (dirty && SLFloaterMediaFilter::findInstance())
|
||||||
{
|
{
|
||||||
SLFloaterMediaFilter::setDirty();
|
SLFloaterMediaFilter::getInstance()->setDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -944,7 +944,7 @@ void callback_media_alert(const LLSD ¬ification, const LLSD &response, LLParc
|
|||||||
}
|
}
|
||||||
|
|
||||||
LLViewerParcelMedia::sMediaQueries.erase(domain);
|
LLViewerParcelMedia::sMediaQueries.erase(domain);
|
||||||
SLFloaterMediaFilter::setDirty();
|
if (SLFloaterMediaFilter::findInstance()) SLFloaterMediaFilter::getInstance()->setDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLViewerParcelMedia::saveDomainFilterList()
|
void LLViewerParcelMedia::saveDomainFilterList()
|
||||||
@@ -975,7 +975,7 @@ bool LLViewerParcelMedia::loadDomainFilterList()
|
|||||||
llifstream medialistFile(medialist_filename);
|
llifstream medialistFile(medialist_filename);
|
||||||
LLSDSerialize::fromXML(sMediaFilterList, medialistFile);
|
LLSDSerialize::fromXML(sMediaFilterList, medialistFile);
|
||||||
medialistFile.close();
|
medialistFile.close();
|
||||||
SLFloaterMediaFilter::setDirty();
|
if (SLFloaterMediaFilter::findInstance()) SLFloaterMediaFilter::getInstance()->setDirty();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -991,7 +991,7 @@ void LLViewerParcelMedia::clearDomainFilterList()
|
|||||||
sDeniedMedia.clear();
|
sDeniedMedia.clear();
|
||||||
saveDomainFilterList();
|
saveDomainFilterList();
|
||||||
LLNotificationsUtil::add("MediaFiltersCleared");
|
LLNotificationsUtil::add("MediaFiltersCleared");
|
||||||
SLFloaterMediaFilter::setDirty();
|
if (SLFloaterMediaFilter::findInstance()) SLFloaterMediaFilter::getInstance()->setDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string LLViewerParcelMedia::extractDomain(std::string url)
|
std::string LLViewerParcelMedia::extractDomain(std::string url)
|
||||||
|
|||||||
@@ -1621,7 +1621,11 @@ void LLViewerRegion::unpackRegionHandshake()
|
|||||||
msg->addUUID("AgentID", gAgent.getID());
|
msg->addUUID("AgentID", gAgent.getID());
|
||||||
msg->addUUID("SessionID", gAgent.getSessionID());
|
msg->addUUID("SessionID", gAgent.getSessionID());
|
||||||
msg->nextBlock("RegionInfo");
|
msg->nextBlock("RegionInfo");
|
||||||
msg->addU32("Flags", 0x0 );
|
|
||||||
|
U32 flags = 0;
|
||||||
|
flags |= REGION_HANDSHAKE_SUPPORTS_SELF_APPEARANCE;
|
||||||
|
|
||||||
|
msg->addU32("Flags", flags );
|
||||||
msg->sendReliable(host);
|
msg->sendReliable(host);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,8 @@
|
|||||||
#define WATER 2
|
#define WATER 2
|
||||||
const U32 MAX_OBJECT_CACHE_ENTRIES = 50000;
|
const U32 MAX_OBJECT_CACHE_ENTRIES = 50000;
|
||||||
|
|
||||||
|
// Region handshake flags
|
||||||
|
const U32 REGION_HANDSHAKE_SUPPORTS_SELF_APPEARANCE = 1U << 2;
|
||||||
|
|
||||||
class LLEventPoll;
|
class LLEventPoll;
|
||||||
class LLVLComposition;
|
class LLVLComposition;
|
||||||
|
|||||||
@@ -3,10 +3,9 @@
|
|||||||
* @brief Text editor widget to let users enter a multi-line document.
|
* @brief Text editor widget to let users enter a multi-line document.
|
||||||
*
|
*
|
||||||
* $LicenseInfo:firstyear=2001&license=viewergpl$
|
* $LicenseInfo:firstyear=2001&license=viewergpl$
|
||||||
*
|
* Second Life Viewer Source Code
|
||||||
* Copyright (c) 2001-2009, Linden Research, Inc.
|
* Copyright (c) 2001-2009, Linden Research, Inc.
|
||||||
*
|
*
|
||||||
* Second Life Viewer Source Code
|
|
||||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||||
* to you under the terms of the GNU General Public License, version 2.0
|
* to you under the terms of the GNU General Public License, version 2.0
|
||||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||||
@@ -32,42 +31,39 @@
|
|||||||
|
|
||||||
#include "llviewerprecompiledheaders.h"
|
#include "llviewerprecompiledheaders.h"
|
||||||
|
|
||||||
#include "llfocusmgr.h"
|
|
||||||
#include "llaudioengine.h"
|
|
||||||
#include "llagent.h"
|
|
||||||
#include "llinventory.h"
|
|
||||||
#include "llinventorydefines.h"
|
|
||||||
#include "llinventorymodel.h"
|
|
||||||
#include "llinventorypanel.h"
|
|
||||||
#include "llinventorybridge.h" // for landmark prefix string
|
|
||||||
|
|
||||||
#include "llviewertexteditor.h"
|
#include "llviewertexteditor.h"
|
||||||
|
|
||||||
#include "llfloaterchat.h"
|
#include "llagent.h"
|
||||||
|
#include "llaudioengine.h"
|
||||||
|
#include "llavataractions.h"
|
||||||
#include "llfloaterworldmap.h"
|
#include "llfloaterworldmap.h"
|
||||||
#include "llnotify.h"
|
#include "llfocusmgr.h"
|
||||||
|
#include "llinventorybridge.h" // for landmark prefix string
|
||||||
|
#include "llinventorydefines.h"
|
||||||
|
#include "llinventorymodel.h"
|
||||||
|
#include "llmemorystream.h"
|
||||||
|
#include "llmenugl.h"
|
||||||
|
#include "llnotecard.h"
|
||||||
|
#include "llnotificationsutil.h"
|
||||||
#include "llpreview.h"
|
#include "llpreview.h"
|
||||||
#include "llpreviewtexture.h"
|
#include "llpreviewtexture.h"
|
||||||
#include "llpreviewnotecard.h"
|
#include "llpreviewnotecard.h"
|
||||||
#include "llpreviewlandmark.h"
|
|
||||||
#include "llscrollbar.h"
|
#include "llscrollbar.h"
|
||||||
#include "lltooldraganddrop.h"
|
#include "lltooldraganddrop.h"
|
||||||
|
#include "lluictrlfactory.h"
|
||||||
|
#include "llviewerassettype.h"
|
||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
|
#include "llviewerinventory.h"
|
||||||
#include "llviewertexturelist.h"
|
#include "llviewertexturelist.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
#include "llviewerinventory.h"
|
|
||||||
#include "lluictrlfactory.h"
|
|
||||||
#include "llnotecard.h"
|
|
||||||
#include "llmemorystream.h"
|
|
||||||
#include "llmenugl.h"
|
|
||||||
#include "llviewerassettype.h"
|
|
||||||
|
|
||||||
#include "llappviewer.h" // for gPacificDaylightTime
|
|
||||||
|
|
||||||
// [RLVa:KB]
|
// [RLVa:KB]
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
|
|
||||||
|
void open_landmark(LLViewerInventoryItem* inv_item, const std::string& title, BOOL show_keep_discard, const LLUUID& source_id, BOOL take_focus);
|
||||||
|
extern BOOL gPacificDaylightTime;
|
||||||
|
|
||||||
static LLRegisterWidget<LLViewerTextEditor> r("text_editor");
|
static LLRegisterWidget<LLViewerTextEditor> r("text_editor");
|
||||||
|
|
||||||
///----------------------------------------------------------------------------
|
///----------------------------------------------------------------------------
|
||||||
@@ -113,7 +109,7 @@ public:
|
|||||||
// See if we can bring an existing preview to the front
|
// See if we can bring an existing preview to the front
|
||||||
if(!LLPreview::show(item->getUUID(), true))
|
if(!LLPreview::show(item->getUUID(), true))
|
||||||
{
|
{
|
||||||
if(!gSavedSettings.getBOOL("ShowNewInventory"))
|
if (gSavedSettings.getBOOL("ShowNewInventory")) // Singu Note: ShowNewInventory is true, not false, when they want a preview
|
||||||
{
|
{
|
||||||
// There isn't one, so make a new preview
|
// There isn't one, so make a new preview
|
||||||
S32 left, top;
|
S32 left, top;
|
||||||
@@ -1407,6 +1403,10 @@ BOOL LLViewerTextEditor::openEmbeddedItem(LLInventoryItem* item, llwchar wc)
|
|||||||
openEmbeddedLandmark( item, wc );
|
openEmbeddedLandmark( item, wc );
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
case LLAssetType::AT_CALLINGCARD:
|
||||||
|
openEmbeddedCallingcard( item, wc );
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
case LLAssetType::AT_LSL_TEXT:
|
case LLAssetType::AT_LSL_TEXT:
|
||||||
case LLAssetType::AT_CLOTHING:
|
case LLAssetType::AT_CLOTHING:
|
||||||
case LLAssetType::AT_OBJECT:
|
case LLAssetType::AT_OBJECT:
|
||||||
@@ -1483,18 +1483,26 @@ void LLViewerTextEditor::openEmbeddedNotecard( LLInventoryItem* item, llwchar wc
|
|||||||
copyInventory(item, gInventoryCallbacks.registerCB(mInventoryCallback));
|
copyInventory(item, gInventoryCallbacks.registerCB(mInventoryCallback));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLViewerTextEditor::openEmbeddedCallingcard( LLInventoryItem* item, llwchar wc )
|
||||||
|
{
|
||||||
|
if(item && !item->getCreatorUUID().isNull())
|
||||||
|
{
|
||||||
|
LLAvatarActions::showProfile(item->getCreatorUUID());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LLViewerTextEditor::showUnsavedAlertDialog( LLInventoryItem* item )
|
void LLViewerTextEditor::showUnsavedAlertDialog( LLInventoryItem* item )
|
||||||
{
|
{
|
||||||
LLSD payload;
|
LLSD payload;
|
||||||
payload["item_id"] = item->getUUID();
|
payload["item_id"] = item->getUUID();
|
||||||
payload["notecard_id"] = mNotecardInventoryID;
|
payload["notecard_id"] = mNotecardInventoryID;
|
||||||
LLNotifications::instance().add( "ConfirmNotecardSave", LLSD(), payload, LLViewerTextEditor::onNotecardDialog);
|
LLNotificationsUtil::add( "ConfirmNotecardSave", LLSD(), payload, LLViewerTextEditor::onNotecardDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
bool LLViewerTextEditor::onNotecardDialog(const LLSD& notification, const LLSD& response )
|
bool LLViewerTextEditor::onNotecardDialog(const LLSD& notification, const LLSD& response )
|
||||||
{
|
{
|
||||||
S32 option = LLNotification::getSelectedOption(notification, response);
|
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||||
if( option == 0 )
|
if( option == 0 )
|
||||||
{
|
{
|
||||||
// itemptr is deleted by LLPreview::save
|
// itemptr is deleted by LLPreview::save
|
||||||
@@ -1512,13 +1520,13 @@ void LLViewerTextEditor::showCopyToInvDialog( LLInventoryItem* item, llwchar wc
|
|||||||
LLUUID item_id = item->getUUID();
|
LLUUID item_id = item->getUUID();
|
||||||
payload["item_id"] = item_id;
|
payload["item_id"] = item_id;
|
||||||
payload["item_wc"] = LLSD::Integer(wc);
|
payload["item_wc"] = LLSD::Integer(wc);
|
||||||
LLNotifications::instance().add( "ConfirmItemCopy", LLSD(), payload,
|
LLNotificationsUtil::add( "ConfirmItemCopy", LLSD(), payload,
|
||||||
boost::bind(&LLViewerTextEditor::onCopyToInvDialog, this, _1, _2));
|
boost::bind(&LLViewerTextEditor::onCopyToInvDialog, this, _1, _2));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LLViewerTextEditor::onCopyToInvDialog(const LLSD& notification, const LLSD& response)
|
bool LLViewerTextEditor::onCopyToInvDialog(const LLSD& notification, const LLSD& response)
|
||||||
{
|
{
|
||||||
S32 option = LLNotification::getSelectedOption(notification, response);
|
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||||
if( 0 == option )
|
if( 0 == option )
|
||||||
{
|
{
|
||||||
LLUUID item_id = notification["payload"]["item_id"].asUUID();
|
LLUUID item_id = notification["payload"]["item_id"].asUUID();
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ private:
|
|||||||
void openEmbeddedSound( LLInventoryItem* item, llwchar wc );
|
void openEmbeddedSound( LLInventoryItem* item, llwchar wc );
|
||||||
void openEmbeddedLandmark( LLInventoryItem* item, llwchar wc );
|
void openEmbeddedLandmark( LLInventoryItem* item, llwchar wc );
|
||||||
void openEmbeddedNotecard( LLInventoryItem* item, llwchar wc);
|
void openEmbeddedNotecard( LLInventoryItem* item, llwchar wc);
|
||||||
|
void openEmbeddedCallingcard( LLInventoryItem* item, llwchar wc);
|
||||||
void showCopyToInvDialog( LLInventoryItem* item, llwchar wc );
|
void showCopyToInvDialog( LLInventoryItem* item, llwchar wc );
|
||||||
void showUnsavedAlertDialog( LLInventoryItem* item );
|
void showUnsavedAlertDialog( LLInventoryItem* item );
|
||||||
|
|
||||||
|
|||||||
@@ -703,7 +703,7 @@ To buy direct, visit the land and click on the place name in the title bar.
|
|||||||
width="430" />
|
width="430" />
|
||||||
<panel bottom="-560" follows="right|top" height="470" left="340"
|
<panel bottom="-560" follows="right|top" height="470" left="340"
|
||||||
name="event_details_panel" width="440" />
|
name="event_details_panel" width="440" />
|
||||||
<panel bottom="-580" follows="right|top" height="515" left="350"
|
<panel bottom="-570" follows="right|top" height="515" left="350"
|
||||||
name="group_details_panel_holder" width="430">
|
name="group_details_panel_holder" width="430">
|
||||||
<panel bottom="0" follows="right|top" height="470" left="0" name="group_details_panel"
|
<panel bottom="0" follows="right|top" height="470" left="0" name="group_details_panel"
|
||||||
width="430" />
|
width="430" />
|
||||||
|
|||||||
@@ -640,7 +640,7 @@ To buy direct, visit the land and click on the place name in the title bar.
|
|||||||
width="430" />
|
width="430" />
|
||||||
<panel bottom="-560" follows="right|top" height="470" left="340"
|
<panel bottom="-560" follows="right|top" height="470" left="340"
|
||||||
name="event_details_panel" width="440" />
|
name="event_details_panel" width="440" />
|
||||||
<panel bottom="-580" follows="right|top" height="515" left="350"
|
<panel bottom="-570" follows="right|top" height="515" left="350"
|
||||||
name="group_details_panel_holder" width="430">
|
name="group_details_panel_holder" width="430">
|
||||||
<panel bottom="0" follows="right|top" height="470" left="0" name="group_details_panel"
|
<panel bottom="0" follows="right|top" height="470" left="0" name="group_details_panel"
|
||||||
width="430" />
|
width="430" />
|
||||||
|
|||||||
@@ -762,7 +762,7 @@ To buy direct, visit the land and click on the place name in the title bar.
|
|||||||
width="430" />
|
width="430" />
|
||||||
<panel bottom="-560" follows="right|top" height="470" left="340"
|
<panel bottom="-560" follows="right|top" height="470" left="340"
|
||||||
name="event_details_panel" width="440" />
|
name="event_details_panel" width="440" />
|
||||||
<panel bottom="-580" follows="right|top" height="515" left="350"
|
<panel bottom="-570" follows="right|top" height="515" left="350"
|
||||||
name="group_details_panel_holder" width="430">
|
name="group_details_panel_holder" width="430">
|
||||||
<panel bottom="0" follows="right|top" height="470" left="0" name="group_details_panel"
|
<panel bottom="0" follows="right|top" height="470" left="0" name="group_details_panel"
|
||||||
width="430" />
|
width="430" />
|
||||||
|
|||||||
@@ -9,20 +9,20 @@
|
|||||||
<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"
|
label="Cancel" label_selected="Cancel" left="261" mouse_opaque="true"
|
||||||
name="Cancel" scale_image="true" width="82" />
|
name="Cancel" scale_image="true" width="82" />
|
||||||
<check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom="-196" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Shape" left="13"
|
height="16" initial_value="false" label="Shape" left="13"
|
||||||
mouse_opaque="true" name="checkbox_shape" radio_style="false" width="100" />
|
mouse_opaque="true" name="checkbox_shape" radio_style="false" width="100" />
|
||||||
<check_box bottom="-236" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Skin" left="13"
|
height="16" initial_value="false" label="Skin" left="13"
|
||||||
mouse_opaque="true" name="checkbox_skin" radio_style="false" width="100" />
|
mouse_opaque="true" name="checkbox_skin" radio_style="false" width="100" />
|
||||||
<check_box bottom="-256" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Hair" left="13"
|
height="16" initial_value="false" label="Hair" left="13"
|
||||||
mouse_opaque="true" name="checkbox_hair" radio_style="false" width="100" />
|
mouse_opaque="true" name="checkbox_hair" radio_style="false" width="100" />
|
||||||
<check_box bottom="-276" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Eyes" left="13"
|
height="16" initial_value="false" label="Eyes" left="13"
|
||||||
mouse_opaque="true" name="checkbox_eyes" radio_style="false" width="100" />
|
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"
|
<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"
|
bottom="95" drop_shadow_visible="true" enabled="true" follows="left|top"
|
||||||
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13"
|
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13"
|
||||||
mouse_opaque="true" name="Options:" v_pad="0" width="100">
|
mouse_opaque="true" name="Options:" v_pad="0" width="100">
|
||||||
Options:
|
Options:
|
||||||
@@ -38,190 +38,191 @@
|
|||||||
enabled="true" label="Use links for non-copy, no-mod, or multi-worn 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"
|
bottom_delta="-20" left_delta="0" follows="left|top" height="16" width="300"
|
||||||
mouse_opaque="true" radio_style="false" />
|
mouse_opaque="true" radio_style="false" />
|
||||||
<check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" follows="left|top" control_name="LiruLegacyOutfitStoreObjChanges" name="checkbox_legacy_copy_changes" label="Copy changes made to attachments" tool_tip="Keeps changes made to attachments, since they were worn or you last logged in, by detaching them just before creating the outfit. Generally, this should be checked, if you know what you're doing, such as making a new outfit to undo bad changes, you'll need to uncheck it."/>
|
||||||
|
<check_box bottom="-196" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Shirt" left="113"
|
height="16" initial_value="false" label="Shirt" left="113"
|
||||||
mouse_opaque="true" name="checkbox_shirt" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Pants" left="113"
|
height="16" initial_value="false" label="Pants" left="113"
|
||||||
mouse_opaque="true" name="checkbox_pants" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Shoes" left="113"
|
height="16" initial_value="false" label="Shoes" left="113"
|
||||||
mouse_opaque="true" name="checkbox_shoes" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Socks" left="113"
|
height="16" initial_value="false" label="Socks" left="113"
|
||||||
mouse_opaque="true" name="checkbox_socks" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Jacket" left="113"
|
height="16" initial_value="false" label="Jacket" left="113"
|
||||||
mouse_opaque="true" name="checkbox_jacket" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Gloves" left="113"
|
height="16" initial_value="false" label="Gloves" left="113"
|
||||||
mouse_opaque="true" name="checkbox_gloves" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Undershirt" left="113"
|
height="16" initial_value="false" label="Undershirt" left="113"
|
||||||
mouse_opaque="true" name="checkbox_undershirt" radio_style="false"
|
mouse_opaque="true" name="checkbox_undershirt" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-356" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Underpants" left="113"
|
height="16" initial_value="false" label="Underpants" left="113"
|
||||||
mouse_opaque="true" name="checkbox_underpants" radio_style="false"
|
mouse_opaque="true" name="checkbox_underpants" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-376" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Skirt" left="113"
|
height="16" initial_value="false" label="Skirt" left="113"
|
||||||
mouse_opaque="true" name="checkbox_skirt" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Tattoo" left="113"
|
height="16" initial_value="false" label="Tattoo" left="113"
|
||||||
mouse_opaque="true" name="checkbox_tattoo" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Alpha" left="113"
|
height="16" initial_value="false" label="Alpha" left="113"
|
||||||
mouse_opaque="true" name="checkbox_alpha" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Physics" left="113"
|
height="16" initial_value="false" label="Physics" left="113"
|
||||||
mouse_opaque="true" name="checkbox_physics" radio_style="false" width="100" />
|
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="-196" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Chest" left="213"
|
height="16" initial_value="false" label="Chest" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Chest" radio_style="false" width="100" />
|
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_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="true" label="Skull" left="213"
|
height="16" initial_value="true" label="Skull" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Skull" radio_style="false" width="100" />
|
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_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Left Shoulder" left="213"
|
height="16" initial_value="false" label="Left Shoulder" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Left Shoulder" radio_style="false"
|
mouse_opaque="true" name="checkbox_Left Shoulder" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-276" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Right Shoulder" left="213"
|
height="16" initial_value="false" label="Right Shoulder" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Right Shoulder" radio_style="false"
|
mouse_opaque="true" name="checkbox_Right Shoulder" radio_style="false"
|
||||||
width="106" />
|
width="106" />
|
||||||
<check_box bottom="-296" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Left Hand" left="213"
|
height="16" initial_value="false" label="Left Hand" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Left Hand" radio_style="false"
|
mouse_opaque="true" name="checkbox_Left Hand" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-316" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Right Hand" left="213"
|
height="16" initial_value="false" label="Right Hand" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Right Hand" radio_style="false"
|
mouse_opaque="true" name="checkbox_Right Hand" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-336" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="true" label="Left Foot" left="213"
|
height="16" initial_value="true" label="Left Foot" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Left Foot" radio_style="false"
|
mouse_opaque="true" name="checkbox_Left Foot" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-356" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="true" label="Right Foot" left="213"
|
height="16" initial_value="true" label="Right Foot" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Right Foot" radio_style="false"
|
mouse_opaque="true" name="checkbox_Right Foot" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-376" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Spine" left="213"
|
height="16" initial_value="false" label="Spine" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Spine" radio_style="false" width="100" />
|
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_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Pelvis" left="213"
|
height="16" initial_value="false" label="Pelvis" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Pelvis" radio_style="false" width="100" />
|
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_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Mouth" left="213"
|
height="16" initial_value="false" label="Mouth" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Mouth" radio_style="false" width="100" />
|
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_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Chin" left="213"
|
height="16" initial_value="false" label="Chin" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Chin" radio_style="false" width="100" />
|
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_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Left Ear" left="213"
|
height="16" initial_value="false" label="Left Ear" left="213"
|
||||||
mouse_opaque="true" name="checkbox_Left Ear" radio_style="false"
|
mouse_opaque="true" name="checkbox_Left Ear" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-216" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom="-196" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Right Ear" left="313"
|
height="16" initial_value="false" label="Right Ear" left="313"
|
||||||
mouse_opaque="true" name="checkbox_Right Ear" radio_style="false"
|
mouse_opaque="true" name="checkbox_Right Ear" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-236" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Left Eyeball" left="313"
|
height="16" initial_value="false" label="Left Eyeball" left="313"
|
||||||
mouse_opaque="true" name="checkbox_Left Eyeball" radio_style="false"
|
mouse_opaque="true" name="checkbox_Left Eyeball" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-256" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Right Eyeball" left="313"
|
height="16" initial_value="false" label="Right Eyeball" left="313"
|
||||||
mouse_opaque="true" name="checkbox_Right Eyeball" radio_style="false"
|
mouse_opaque="true" name="checkbox_Right Eyeball" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-276" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Nose" left="313"
|
height="16" initial_value="false" label="Nose" left="313"
|
||||||
mouse_opaque="true" name="checkbox_Nose" radio_style="false" width="100" />
|
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_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="R Upper Arm" left="313"
|
height="16" initial_value="false" label="R Upper Arm" left="313"
|
||||||
mouse_opaque="true" name="checkbox_R Upper Arm" radio_style="false"
|
mouse_opaque="true" name="checkbox_R Upper Arm" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-316" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="R Forearm" left="313"
|
height="16" initial_value="false" label="R Forearm" left="313"
|
||||||
mouse_opaque="true" name="checkbox_R Forearm" radio_style="false"
|
mouse_opaque="true" name="checkbox_R Forearm" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-336" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="L Upper Arm" left="313"
|
height="16" initial_value="false" label="L Upper Arm" left="313"
|
||||||
mouse_opaque="true" name="checkbox_L Upper Arm" radio_style="false"
|
mouse_opaque="true" name="checkbox_L Upper Arm" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-356" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="L Forearm" left="313"
|
height="16" initial_value="false" label="L Forearm" left="313"
|
||||||
mouse_opaque="true" name="checkbox_L Forearm" radio_style="false"
|
mouse_opaque="true" name="checkbox_L Forearm" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-376" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Right Hip" left="313"
|
height="16" initial_value="false" label="Right Hip" left="313"
|
||||||
mouse_opaque="true" name="checkbox_Right Hip" radio_style="false"
|
mouse_opaque="true" name="checkbox_Right Hip" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-396" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="R Upper Leg" left="313"
|
height="16" initial_value="false" label="R Upper Leg" left="313"
|
||||||
mouse_opaque="true" name="checkbox_R Upper Leg" radio_style="false"
|
mouse_opaque="true" name="checkbox_R Upper Leg" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-416" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="true" label="R Lower Leg" left="313"
|
height="16" initial_value="true" label="R Lower Leg" left="313"
|
||||||
mouse_opaque="true" name="checkbox_R Lower Leg" radio_style="false"
|
mouse_opaque="true" name="checkbox_R Lower Leg" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-436" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Left Hip" left="313"
|
height="16" initial_value="false" label="Left Hip" left="313"
|
||||||
mouse_opaque="true" name="checkbox_Left Hip" radio_style="false"
|
mouse_opaque="true" name="checkbox_Left Hip" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-456" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="L Upper Leg" left="313"
|
height="16" initial_value="false" label="L Upper Leg" left="313"
|
||||||
mouse_opaque="true" name="checkbox_L Upper Leg" radio_style="false"
|
mouse_opaque="true" name="checkbox_L Upper Leg" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom="-196" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="true" label="L Lower Leg" left="413"
|
height="16" initial_value="true" label="L Lower Leg" left="413"
|
||||||
mouse_opaque="true" name="checkbox_L Lower Leg" radio_style="false"
|
mouse_opaque="true" name="checkbox_L Lower Leg" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-236" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Stomach" left="413"
|
height="16" initial_value="false" label="Stomach" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Stomach" radio_style="false" width="100" />
|
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_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Left Pec" left="413"
|
height="16" initial_value="false" label="Left Pec" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Left Pec" radio_style="false"
|
mouse_opaque="true" name="checkbox_Left Pec" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-276" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Right Pec" left="413"
|
height="16" initial_value="false" label="Right Pec" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Right Pec" radio_style="false"
|
mouse_opaque="true" name="checkbox_Right Pec" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-296" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Neck" left="413"
|
height="16" initial_value="false" label="Neck" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Neck" radio_style="false"
|
mouse_opaque="true" name="checkbox_Neck" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-316" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Root" left="413"
|
height="16" initial_value="false" label="Root" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Root" radio_style="false"
|
mouse_opaque="true" name="checkbox_Root" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-336" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Center 2" left="413"
|
height="16" initial_value="false" label="Center 2" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Center 2" radio_style="false"
|
mouse_opaque="true" name="checkbox_Center 2" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-356" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Top Right" left="413"
|
height="16" initial_value="false" label="Top Right" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Top Right" radio_style="false"
|
mouse_opaque="true" name="checkbox_Top Right" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-376" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Top" left="413"
|
height="16" initial_value="false" label="Top" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Top" radio_style="false" width="100" />
|
mouse_opaque="true" name="checkbox_Top" radio_style="false" width="100" />
|
||||||
<check_box bottom="-396" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Top Left" left="413"
|
height="16" initial_value="false" label="Top Left" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Top Left" radio_style="false"
|
mouse_opaque="true" name="checkbox_Top Left" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-416" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Center" left="413"
|
height="16" initial_value="false" label="Center" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Center" radio_style="false" width="100" />
|
mouse_opaque="true" name="checkbox_Center" radio_style="false" width="100" />
|
||||||
<check_box bottom="-436" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Bottom Left" left="413"
|
height="16" initial_value="false" label="Bottom Left" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Bottom Left" radio_style="false"
|
mouse_opaque="true" name="checkbox_Bottom Left" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
<check_box bottom="-456" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Bottom" left="413"
|
height="16" initial_value="false" label="Bottom" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Bottom" radio_style="false" width="100" />
|
mouse_opaque="true" name="checkbox_Bottom" radio_style="false" width="100" />
|
||||||
<check_box bottom="-476" enabled="false" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="false" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Bottom Right" left="413"
|
height="16" initial_value="false" label="Bottom Right" left="413"
|
||||||
mouse_opaque="true" name="checkbox_Bottom Right" radio_style="false"
|
mouse_opaque="true" name="checkbox_Bottom Right" radio_style="false"
|
||||||
width="100" />
|
width="100" />
|
||||||
@@ -237,20 +238,19 @@
|
|||||||
mouse_opaque="true"
|
mouse_opaque="true"
|
||||||
name="Outfits are folders that contain clothing and body parts. Drag an outfit folder onto your avatar to put it on. "Make New Outfit" makes a new folder and saves copies of the items you are now wearing into it."
|
name="Outfits are folders that contain clothing and body parts. Drag an outfit folder onto your avatar to put it on. "Make New Outfit" makes a new folder and saves copies of the items you are now wearing into it."
|
||||||
v_pad="0" width="489">
|
v_pad="0" width="489">
|
||||||
Outfits are folders that contain clothing and body parts.
|
Outfits are folders that contain clothing and body parts.
|
||||||
Drag an outfit folder onto your avatar to put it on.
|
Drag an outfit folder onto your avatar to put it on.
|
||||||
|
|
||||||
"Make New Outfit" makes a new folder and saves copies of the items you are
|
"Make New Outfit" makes a new folder and saves copies of the items you are now wearing into it.
|
||||||
now wearing into it.
|
|
||||||
</text>
|
</text>
|
||||||
<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="-126" drop_shadow_visible="true" enabled="true" follows="left|top"
|
bottom="-106" drop_shadow_visible="true" enabled="true" follows="left|top"
|
||||||
font="SansSerif" h_pad="0" halign="left" height="16" left="13"
|
font="SansSerif" h_pad="0" halign="left" height="16" left="13"
|
||||||
mouse_opaque="true" name="Folder name:" v_pad="0" width="489">
|
mouse_opaque="true" name="Folder name:" v_pad="0" width="489">
|
||||||
Folder name:
|
Folder name:
|
||||||
</text>
|
</text>
|
||||||
<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="-174" drop_shadow_visible="true" enabled="true" follows="left|top"
|
bottom="-154" drop_shadow_visible="true" enabled="true" follows="left|top"
|
||||||
font="SansSerif" h_pad="0" halign="left" height="16" left="13"
|
font="SansSerif" h_pad="0" halign="left" height="16" left="13"
|
||||||
mouse_opaque="true" name="Items to include in outfit:" v_pad="0"
|
mouse_opaque="true" name="Items to include in outfit:" v_pad="0"
|
||||||
width="489">
|
width="489">
|
||||||
@@ -263,24 +263,24 @@
|
|||||||
label="Uncheck All" left_delta="100" mouse_opaque="true"
|
label="Uncheck All" left_delta="100" mouse_opaque="true"
|
||||||
name="Uncheck All" scale_image="true" width="82" />
|
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"
|
bottom="-176" drop_shadow_visible="true" enabled="true" follows="left|top"
|
||||||
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13"
|
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13"
|
||||||
mouse_opaque="true" name="Body Parts:" v_pad="0" width="100">
|
mouse_opaque="true" name="Body Parts:" v_pad="0" width="100">
|
||||||
Body Parts:
|
Body Parts:
|
||||||
</text>
|
</text>
|
||||||
<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"
|
bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top"
|
||||||
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="113"
|
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="113"
|
||||||
mouse_opaque="true" name="Clothes:" v_pad="0" width="100">
|
mouse_opaque="true" name="Clothes:" v_pad="0" width="100">
|
||||||
Clothes:
|
Clothes:
|
||||||
</text>
|
</text>
|
||||||
<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"
|
bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top"
|
||||||
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="213"
|
font="SansSerifSmall" h_pad="0" halign="left" height="14" left="213"
|
||||||
mouse_opaque="true" name="Attachments:" v_pad="0" width="100">
|
mouse_opaque="true" name="Attachments:" v_pad="0" width="100">
|
||||||
Attachments:
|
Attachments:
|
||||||
</text>
|
</text>
|
||||||
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-150"
|
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-130"
|
||||||
enabled="true" follows="left|top" font="SansSerif"
|
enabled="true" follows="left|top" font="SansSerif"
|
||||||
handle_edit_keys_directly="true" height="20" left="13" max_length="63"
|
handle_edit_keys_directly="true" height="20" left="13" max_length="63"
|
||||||
mouse_opaque="true" name="name ed" select_all_on_focus_received="false"
|
mouse_opaque="true" name="name ed" select_all_on_focus_received="false"
|
||||||
|
|||||||
@@ -14,16 +14,9 @@
|
|||||||
width="290" />
|
width="290" />
|
||||||
<button bottom_delta="-27" follows="left|top" height="20" label="Set Location"
|
<button bottom_delta="-27" follows="left|top" height="20" label="Set Location"
|
||||||
left="180" name="set_location_btn" width="120" />
|
left="180" name="set_location_btn" width="120" />
|
||||||
|
<button bottom_delta="0" follows="left|top" height="20" width="120" label="Open Picture" name="open_picture_btn"/>
|
||||||
<button bottom_delta="0" follows="left|top" height="20" label="Teleport" left="10"
|
<button bottom_delta="0" follows="left|top" height="20" label="Teleport" left="10"
|
||||||
name="pick_teleport_btn" width="70" />
|
name="pick_teleport_btn" width="70" />
|
||||||
<button bottom_delta="0" follows="left|top" height="20" label="Show on Map" left="80"
|
<button bottom_delta="0" follows="left|top" height="20" label="Show on Map" left="80"
|
||||||
name="pick_map_btn" width="100" />
|
name="pick_map_btn" width="100" />
|
||||||
<text bottom_delta="0" follows="left|top" height="20" left="290"
|
|
||||||
name="sort_order_text" width="30">
|
|
||||||
Sort:
|
|
||||||
</text>
|
|
||||||
<line_editor bottom_delta="5" follows="left|top" height="16" left="280"
|
|
||||||
name="sort_order_editor" width="25" />
|
|
||||||
<check_box bottom_delta="0" follows="left|top" height="20" label="Enabled" left="360"
|
|
||||||
name="enabled_check" width="80" />
|
|
||||||
</panel>
|
</panel>
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<panel border="false" bottom="5" follows="bottom|left" height="514" left="340"
|
|
||||||
mouse_opaque="true" name="GroupInfoFinder" title="GroupInfoFinder"
|
|
||||||
width="420">
|
|
||||||
<text name="default_needs_apply_text">
|
|
||||||
There are unapplied changes on the current tab.
|
|
||||||
</text>
|
|
||||||
<text name="want_apply_text">
|
|
||||||
Do you want to apply these changes?
|
|
||||||
</text>
|
|
||||||
<tab_container border="false" bottom="0" follows="all" height="483" left="0"
|
|
||||||
name="group_tab_container" tab_position="top" width="420">
|
|
||||||
<panel filename="panel_group_general.xml" name="general_tab" />
|
|
||||||
<panel filename="panel_group_roles.xml" name="roles_tab" />
|
|
||||||
<panel filename="panel_group_notices.xml" name="notices_tab" />
|
|
||||||
<panel filename="panel_group_voting.xml" name="voting_tab" />
|
|
||||||
<panel filename="panel_group_land_money.xml" name="land_money_tab" />
|
|
||||||
</tab_container>
|
|
||||||
</panel>
|
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
<check_box bottom_delta="-20" control_name="AnnounceSnapshots" follows="top" height="16" label="Announce when someone takes a snapshot" tool_tip="Won't announce for people who hide the fact that they are taking a snapshot." name="announce_snapshots"/>
|
<check_box bottom_delta="-20" control_name="AnnounceSnapshots" follows="top" height="16" label="Announce when someone takes a snapshot" tool_tip="Won't announce for people who hide the fact that they are taking a snapshot." name="announce_snapshots"/>
|
||||||
<check_box bottom_delta="-20" control_name="AnnounceStreamMetadata" follows="top" height="16" label="Announce music stream's metadata in local chat when tuned in" tool_tip="When a new song comes on, a message will be displayed in local chat with available information about the track." name="announce_stream_metadata"/>
|
<check_box bottom_delta="-20" control_name="AnnounceStreamMetadata" follows="top" height="16" label="Announce music stream's metadata in local chat when tuned in" tool_tip="When a new song comes on, a message will be displayed in local chat with available information about the track." name="announce_stream_metadata"/>
|
||||||
<check_box bottom_delta="-20" control_name="FloaterUnfocusedBackgroundOpaque" follows="top" height="16" label="Make unfocused floaters opaque (requires refocusing each floater to take effect)" tool_tip="When a floater loses focus, it won't turn transparent with this enabled. This may conflict with some skins." name="unfocused_floaters_opaque"/>
|
<check_box bottom_delta="-20" control_name="FloaterUnfocusedBackgroundOpaque" follows="top" height="16" label="Make unfocused floaters opaque (requires refocusing each floater to take effect)" tool_tip="When a floater loses focus, it won't turn transparent with this enabled. This may conflict with some skins." name="unfocused_floaters_opaque"/>
|
||||||
|
<check_box bottom_delta="-20" control_name="SinguCompleteNameProfiles" follows="top" height="16" label="Show complete names (display name and username) in profiles" tool_tip="Disregards the global name display settings, will not work if display names are switched off." name="complete_name_profiles"/>
|
||||||
</panel>
|
</panel>
|
||||||
<panel border="true" left="1" bottom="-190" height="180" width="500" label="Tags/Colors" name="TagsColors">
|
<panel border="true" left="1" bottom="-190" height="180" width="500" label="Tags/Colors" name="TagsColors">
|
||||||
<!-- Client tag options -->
|
<!-- Client tag options -->
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<panel border="false" bottom="20" follows="bottom|left" height="470" left="330"
|
|
||||||
name="Pick" title="Pick" width="450">
|
|
||||||
<texture_picker bottom="-315" follows="left|top" height="300" left="20" name="snapshot_ctrl"
|
|
||||||
width="400" />
|
|
||||||
<line_editor bottom_delta="-8" enabled="false" follows="left|top"
|
|
||||||
font="SansSerif" height="20" left="20" name="given_name_editor"
|
|
||||||
width="400" />
|
|
||||||
<text_editor enabled="false" follows="left|top" font="SansSerif"
|
|
||||||
height="90" left="20" max_length="1023" name="desc_editor"
|
|
||||||
width="400" word_wrap="true" spell_check="true" />
|
|
||||||
<line_editor enabled="false" follows="left|top" font="SansSerif"
|
|
||||||
height="20" left="20" name="location_editor"
|
|
||||||
width="400" />
|
|
||||||
<button bottom_delta="0" follows="left|top" height="20" label="Set" left="380"
|
|
||||||
name="set_location_btn" width="60" />
|
|
||||||
<button bottom_delta="-30" follows="left|top" height="20" label="Teleport" left="20"
|
|
||||||
name="pick_teleport_btn" width="80" />
|
|
||||||
<button bottom_delta="0" follows="left|top" height="20" label="Show on Map" left="105"
|
|
||||||
name="pick_map_btn" width="100" />
|
|
||||||
<text bottom_delta="0" follows="left|top" height="20" left="290"
|
|
||||||
name="sort_order_text" width="30">
|
|
||||||
Sort:
|
|
||||||
</text>
|
|
||||||
<line_editor bottom_delta="5" follows="left|top" height="16" left="320"
|
|
||||||
name="sort_order_editor" width="25" />
|
|
||||||
<check_box bottom_delta="0" follows="left|top" height="20" label="Enabled" left="360"
|
|
||||||
name="enabled_check" width="80" />
|
|
||||||
</panel>
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<panel name="GroupInfoFinder" title="Buscar Infor de Grupo">
|
|
||||||
<text name="default_needs_apply_text">
|
|
||||||
Hay cambios sin aplicar en esta pestaña.
|
|
||||||
</text>
|
|
||||||
<text name="want_apply_text">
|
|
||||||
¿Deseas aplicar estos cambios?
|
|
||||||
</text>
|
|
||||||
<tab_container name="group_tab_container">
|
|
||||||
<panel name="general_tab" />
|
|
||||||
<panel name="roles_tab" />
|
|
||||||
<panel name="notices_tab" />
|
|
||||||
<panel name="voting_tab" />
|
|
||||||
<panel name="land_money_tab" />
|
|
||||||
</tab_container>
|
|
||||||
</panel>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<panel name="Pick" title="Destacados">
|
|
||||||
<button label="Definir" name="set_location_btn"/>
|
|
||||||
<button label="Teleportar" name="pick_teleport_btn" width="85"/>
|
|
||||||
<button label="Mostrar en el Mapa" name="pick_map_btn" left="115"/>
|
|
||||||
<text name="sort_order_text">
|
|
||||||
Ordenar:
|
|
||||||
</text>
|
|
||||||
<check_box label="Activado" name="enabled_check"/>
|
|
||||||
</panel>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<panel name="GroupInfoFinder" title="Recherche d'infos sur le groupe">
|
|
||||||
<text name="default_needs_apply_text">
|
|
||||||
Certains changements n'ont pas été appliqués sur cet onglet.
|
|
||||||
</text>
|
|
||||||
<text name="want_apply_text">
|
|
||||||
Voulez-vous enregistrer les modifications?
|
|
||||||
</text>
|
|
||||||
</panel>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<panel name="Pick" title="Choisir">
|
|
||||||
<button label="Définir" name="set_location_btn" />
|
|
||||||
<button label="Téléporter" name="pick_teleport_btn" />
|
|
||||||
<button label="Voir sur la carte" name="pick_map_btn" />
|
|
||||||
<text name="sort_order_text">
|
|
||||||
Trier:
|
|
||||||
</text>
|
|
||||||
<check_box label="Activé" name="enabled_check" />
|
|
||||||
</panel>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<panel name="GroupInfoFinder" title="Grupo">
|
|
||||||
<text name="default_needs_apply_text">
|
|
||||||
Existem mudanças não concluídas na aba atual
|
|
||||||
</text>
|
|
||||||
<text name="want_apply_text">
|
|
||||||
Deseja aplicar as mudanças?
|
|
||||||
</text>
|
|
||||||
</panel>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<panel name="Pick" title="Pegar">
|
|
||||||
<button label="Ajustar" name="set_location_btn"/>
|
|
||||||
<button label="Teletransporte" name="pick_teleport_btn"/>
|
|
||||||
<button label="Mostrar no Mapa" name="pick_map_btn"/>
|
|
||||||
<text name="sort_order_text">
|
|
||||||
Ordenar:
|
|
||||||
</text>
|
|
||||||
<check_box label="Ativo" name="enabled_check"/>
|
|
||||||
</panel>
|
|
||||||
@@ -33,18 +33,12 @@
|
|||||||
|
|
||||||
#include "llviewerprecompiledheaders.h"
|
#include "llviewerprecompiledheaders.h"
|
||||||
|
|
||||||
#include "lllineeditor.h"
|
#include "slfloatermediafilter.h"
|
||||||
|
|
||||||
#include "llscrolllistctrl.h"
|
#include "llscrolllistctrl.h"
|
||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
|
|
||||||
#include "slfloatermediafilter.h"
|
|
||||||
#include "llviewercontrol.h"
|
|
||||||
#include "llviewerparcelmedia.h"
|
#include "llviewerparcelmedia.h"
|
||||||
|
|
||||||
SLFloaterMediaFilter* SLFloaterMediaFilter::sInstance = NULL;
|
|
||||||
bool SLFloaterMediaFilter::sIsWhitelist = false;
|
|
||||||
bool SLFloaterMediaFilter::sShowIPs = false;
|
|
||||||
|
|
||||||
SLFloaterMediaFilter::SLFloaterMediaFilter(const LLSD& key) : LLFloater(std::string("media filter")), mIsDirty(false)
|
SLFloaterMediaFilter::SLFloaterMediaFilter(const LLSD& key) : LLFloater(std::string("media filter")), mIsDirty(false)
|
||||||
{
|
{
|
||||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_media_filter.xml");
|
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_media_filter.xml");
|
||||||
@@ -52,7 +46,6 @@ SLFloaterMediaFilter::SLFloaterMediaFilter(const LLSD& key) : LLFloater(std::str
|
|||||||
|
|
||||||
SLFloaterMediaFilter::~SLFloaterMediaFilter()
|
SLFloaterMediaFilter::~SLFloaterMediaFilter()
|
||||||
{
|
{
|
||||||
sInstance = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL SLFloaterMediaFilter::postBuild()
|
BOOL SLFloaterMediaFilter::postBuild()
|
||||||
@@ -62,15 +55,13 @@ BOOL SLFloaterMediaFilter::postBuild()
|
|||||||
|
|
||||||
if (mWhitelistSLC && mBlacklistSLC)
|
if (mWhitelistSLC && mBlacklistSLC)
|
||||||
{
|
{
|
||||||
childSetAction("clear_lists", onClearLists, this);
|
getChild<LLUICtrl>("clear_lists")->setCommitCallback(boost::bind(LLViewerParcelMedia::clearDomainFilterList));
|
||||||
childSetAction("show_ips", onShowIPs, this);
|
getChild<LLUICtrl>("show_ips")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onShowIPs, this));
|
||||||
childSetAction("add_whitelist", onWhitelistAdd, this);
|
getChild<LLUICtrl>("add_whitelist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onWhitelistAdd, this));
|
||||||
childSetAction("remove_whitelist", onWhitelistRemove, this);
|
getChild<LLUICtrl>("remove_whitelist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onWhitelistRemove, this));
|
||||||
childSetAction("add_blacklist", onBlacklistAdd, this);
|
getChild<LLUICtrl>("add_blacklist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onBlacklistAdd, this));
|
||||||
childSetAction("remove_blacklist", onBlacklistRemove, this);
|
getChild<LLUICtrl>("remove_blacklist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onBlacklistRemove, this));
|
||||||
childSetAction("commit_domain", onCommitDomain, this);
|
getChild<LLUICtrl>("commit_domain")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onCommitDomain, this));
|
||||||
childSetUserData("whitelist_list", this);
|
|
||||||
childSetUserData("blacklist_list", this);
|
|
||||||
mIsDirty = true;
|
mIsDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +87,7 @@ void SLFloaterMediaFilter::draw()
|
|||||||
for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
|
for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
|
||||||
{
|
{
|
||||||
domain = LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString();
|
domain = LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString();
|
||||||
if (sShowIPs)
|
if (mShowIPs)
|
||||||
{
|
{
|
||||||
host.setHostByName(domain);
|
host.setHostByName(domain);
|
||||||
ip = host.getIPString();
|
ip = host.getIPString();
|
||||||
@@ -137,7 +128,7 @@ void SLFloaterMediaFilter::draw()
|
|||||||
for (it = LLViewerParcelMedia::sAllowedMedia.begin(); it != LLViewerParcelMedia::sAllowedMedia.end(); it++)
|
for (it = LLViewerParcelMedia::sAllowedMedia.begin(); it != LLViewerParcelMedia::sAllowedMedia.end(); it++)
|
||||||
{
|
{
|
||||||
domain = *it;
|
domain = *it;
|
||||||
if (sShowIPs)
|
if (mShowIPs)
|
||||||
{
|
{
|
||||||
host.setHostByName(domain);
|
host.setHostByName(domain);
|
||||||
ip = host.getIPString();
|
ip = host.getIPString();
|
||||||
@@ -156,7 +147,7 @@ void SLFloaterMediaFilter::draw()
|
|||||||
for (it = LLViewerParcelMedia::sDeniedMedia.begin(); it != LLViewerParcelMedia::sDeniedMedia.end(); it++)
|
for (it = LLViewerParcelMedia::sDeniedMedia.begin(); it != LLViewerParcelMedia::sDeniedMedia.end(); it++)
|
||||||
{
|
{
|
||||||
domain = *it;
|
domain = *it;
|
||||||
if (sShowIPs)
|
if (mShowIPs)
|
||||||
{
|
{
|
||||||
host.setHostByName(domain);
|
host.setHostByName(domain);
|
||||||
ip = host.getIPString();
|
ip = host.getIPString();
|
||||||
@@ -191,7 +182,7 @@ void SLFloaterMediaFilter::draw()
|
|||||||
}
|
}
|
||||||
|
|
||||||
mIsDirty = false;
|
mIsDirty = false;
|
||||||
sShowIPs = false;
|
mShowIPs = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
LLFloater::draw();
|
LLFloater::draw();
|
||||||
@@ -199,55 +190,38 @@ void SLFloaterMediaFilter::draw()
|
|||||||
|
|
||||||
void SLFloaterMediaFilter::setDirty()
|
void SLFloaterMediaFilter::setDirty()
|
||||||
{
|
{
|
||||||
if (sInstance)
|
mIsDirty = true;
|
||||||
{
|
|
||||||
sInstance->mIsDirty = true;
|
|
||||||
sInstance->draw();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SLFloaterMediaFilter::onClearLists(void* data)
|
void SLFloaterMediaFilter::onShowIPs()
|
||||||
{
|
{
|
||||||
LLViewerParcelMedia::clearDomainFilterList();
|
mShowIPs = true;
|
||||||
|
mIsDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SLFloaterMediaFilter::onShowIPs(void* data)
|
void SLFloaterMediaFilter::onWhitelistAdd()
|
||||||
{
|
{
|
||||||
sShowIPs = true;
|
childDisable("clear_lists");
|
||||||
setDirty();
|
childDisable("show_ips");
|
||||||
|
childDisable("blacklist_list");
|
||||||
|
childDisable("whitelist_list");
|
||||||
|
childDisable("remove_whitelist");
|
||||||
|
childDisable("add_whitelist");
|
||||||
|
childDisable("remove_blacklist");
|
||||||
|
childDisable("add_blacklist");
|
||||||
|
childEnable("input_domain");
|
||||||
|
childEnable("commit_domain");
|
||||||
|
childSetText("add_text", std::string("Enter the domain/url to add to the white list:"));
|
||||||
|
mIsWhitelist = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SLFloaterMediaFilter::onWhitelistAdd(void* data)
|
void SLFloaterMediaFilter::onWhitelistRemove()
|
||||||
{
|
{
|
||||||
if (!sInstance)
|
LLScrollListItem* selected = mWhitelistSLC->getFirstSelected();
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
sInstance->childDisable("clear_lists");
|
|
||||||
sInstance->childDisable("show_ips");
|
|
||||||
sInstance->childDisable("blacklist_list");
|
|
||||||
sInstance->childDisable("whitelist_list");
|
|
||||||
sInstance->childDisable("remove_whitelist");
|
|
||||||
sInstance->childDisable("add_whitelist");
|
|
||||||
sInstance->childDisable("remove_blacklist");
|
|
||||||
sInstance->childDisable("add_blacklist");
|
|
||||||
sInstance->childEnable("input_domain");
|
|
||||||
sInstance->childEnable("commit_domain");
|
|
||||||
sInstance->childSetText("add_text", std::string("Enter the domain/url to add to the white list:"));
|
|
||||||
sIsWhitelist = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SLFloaterMediaFilter::onWhitelistRemove(void* data)
|
|
||||||
{
|
|
||||||
if (!sInstance)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
LLScrollListItem* selected = sInstance->mWhitelistSLC->getFirstSelected();
|
|
||||||
|
|
||||||
if (selected)
|
if (selected)
|
||||||
{
|
{
|
||||||
std::string domain = sInstance->mWhitelistSLC->getSelectedItemLabel();
|
std::string domain = mWhitelistSLC->getSelectedItemLabel();
|
||||||
size_t pos = domain.find(' ');
|
size_t pos = domain.find(' ');
|
||||||
if (pos != std::string::npos)
|
if (pos != std::string::npos)
|
||||||
{
|
{
|
||||||
@@ -265,7 +239,7 @@ void SLFloaterMediaFilter::onWhitelistRemove(void* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sInstance->childGetValue("match_ip") && domain.find('/') == std::string::npos)
|
if (childGetValue("match_ip") && domain.find('/') == std::string::npos)
|
||||||
{
|
{
|
||||||
LLHost host;
|
LLHost host;
|
||||||
host.setHostByName(domain);
|
host.setHostByName(domain);
|
||||||
@@ -291,37 +265,29 @@ void SLFloaterMediaFilter::onWhitelistRemove(void* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SLFloaterMediaFilter::onBlacklistAdd(void* data)
|
void SLFloaterMediaFilter::onBlacklistAdd()
|
||||||
{
|
{
|
||||||
if (!sInstance)
|
childDisable("clear_lists");
|
||||||
{
|
childDisable("show_ips");
|
||||||
return;
|
childDisable("blacklist_list");
|
||||||
}
|
childDisable("whitelist_list");
|
||||||
sInstance->childDisable("clear_lists");
|
childDisable("remove_whitelist");
|
||||||
sInstance->childDisable("show_ips");
|
childDisable("add_whitelist");
|
||||||
sInstance->childDisable("blacklist_list");
|
childDisable("remove_blacklist");
|
||||||
sInstance->childDisable("whitelist_list");
|
childDisable("add_blacklist");
|
||||||
sInstance->childDisable("remove_whitelist");
|
childEnable("input_domain");
|
||||||
sInstance->childDisable("add_whitelist");
|
childEnable("commit_domain");
|
||||||
sInstance->childDisable("remove_blacklist");
|
childSetText("add_text", std::string("Enter the domain/url to add to the black list:"));
|
||||||
sInstance->childDisable("add_blacklist");
|
mIsWhitelist = false;
|
||||||
sInstance->childEnable("input_domain");
|
|
||||||
sInstance->childEnable("commit_domain");
|
|
||||||
sInstance->childSetText("add_text", std::string("Enter the domain/url to add to the black list:"));
|
|
||||||
sIsWhitelist = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SLFloaterMediaFilter::onBlacklistRemove(void* data)
|
void SLFloaterMediaFilter::onBlacklistRemove()
|
||||||
{
|
{
|
||||||
if (!sInstance)
|
LLScrollListItem* selected = mBlacklistSLC->getFirstSelected();
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
LLScrollListItem* selected = sInstance->mBlacklistSLC->getFirstSelected();
|
|
||||||
|
|
||||||
if (selected)
|
if (selected)
|
||||||
{
|
{
|
||||||
std::string domain = sInstance->mBlacklistSLC->getSelectedItemLabel();
|
std::string domain = mBlacklistSLC->getSelectedItemLabel();
|
||||||
size_t pos = domain.find(' ');
|
size_t pos = domain.find(' ');
|
||||||
if (pos != std::string::npos)
|
if (pos != std::string::npos)
|
||||||
{
|
{
|
||||||
@@ -339,7 +305,7 @@ void SLFloaterMediaFilter::onBlacklistRemove(void* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sInstance->childGetValue("match_ip") && domain.find('/') == std::string::npos)
|
if (childGetValue("match_ip") && domain.find('/') == std::string::npos)
|
||||||
{
|
{
|
||||||
LLHost host;
|
LLHost host;
|
||||||
host.setHostByName(domain);
|
host.setHostByName(domain);
|
||||||
@@ -365,18 +331,14 @@ void SLFloaterMediaFilter::onBlacklistRemove(void* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SLFloaterMediaFilter::onCommitDomain(void* data)
|
void SLFloaterMediaFilter::onCommitDomain()
|
||||||
{
|
{
|
||||||
if (!sInstance)
|
std::string domain = childGetText("input_domain");
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
std::string domain = sInstance->childGetText("input_domain");
|
|
||||||
domain = LLViewerParcelMedia::extractDomain(domain);
|
domain = LLViewerParcelMedia::extractDomain(domain);
|
||||||
LLHost host;
|
LLHost host;
|
||||||
host.setHostByName(domain);
|
host.setHostByName(domain);
|
||||||
std::string ip = host.getIPString();
|
std::string ip = host.getIPString();
|
||||||
bool match_ip = (sInstance->childGetValue("match_ip") && ip != domain && domain.find('/') == std::string::npos);
|
bool match_ip = (childGetValue("match_ip") && ip != domain && domain.find('/') == std::string::npos);
|
||||||
|
|
||||||
if (!domain.empty())
|
if (!domain.empty())
|
||||||
{
|
{
|
||||||
@@ -403,7 +365,7 @@ void SLFloaterMediaFilter::onCommitDomain(void* data)
|
|||||||
}
|
}
|
||||||
LLSD newmedia;
|
LLSD newmedia;
|
||||||
newmedia["domain"] = domain;
|
newmedia["domain"] = domain;
|
||||||
if (sIsWhitelist)
|
if (mIsWhitelist)
|
||||||
{
|
{
|
||||||
newmedia["action"] = "allow";
|
newmedia["action"] = "allow";
|
||||||
}
|
}
|
||||||
@@ -420,17 +382,17 @@ void SLFloaterMediaFilter::onCommitDomain(void* data)
|
|||||||
LLViewerParcelMedia::saveDomainFilterList();
|
LLViewerParcelMedia::saveDomainFilterList();
|
||||||
}
|
}
|
||||||
|
|
||||||
sInstance->childEnable("clear_lists");
|
childEnable("clear_lists");
|
||||||
sInstance->childEnable("show_ips");
|
childEnable("show_ips");
|
||||||
sInstance->childEnable("blacklist_list");
|
childEnable("blacklist_list");
|
||||||
sInstance->childEnable("whitelist_list");
|
childEnable("whitelist_list");
|
||||||
sInstance->childEnable("remove_whitelist");
|
childEnable("remove_whitelist");
|
||||||
sInstance->childEnable("add_whitelist");
|
childEnable("add_whitelist");
|
||||||
sInstance->childEnable("remove_blacklist");
|
childEnable("remove_blacklist");
|
||||||
sInstance->childEnable("add_blacklist");
|
childEnable("add_blacklist");
|
||||||
sInstance->childDisable("input_domain");
|
childDisable("input_domain");
|
||||||
sInstance->childDisable("commit_domain");
|
childDisable("commit_domain");
|
||||||
sInstance->childSetText("add_text", std::string("New domain:"));
|
childSetText("add_text", std::string("New domain:"));
|
||||||
sInstance->childSetText("input_domain", std::string(""));
|
childSetText("input_domain", std::string(""));
|
||||||
setDirty();
|
setDirty();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,6 @@
|
|||||||
#include "llfloater.h"
|
#include "llfloater.h"
|
||||||
|
|
||||||
class LLScrollListCtrl;
|
class LLScrollListCtrl;
|
||||||
class LLButton;
|
|
||||||
|
|
||||||
class SLFloaterMediaFilter : public LLFloater, public LLFloaterSingleton<SLFloaterMediaFilter>
|
class SLFloaterMediaFilter : public LLFloater, public LLFloaterSingleton<SLFloaterMediaFilter>
|
||||||
{
|
{
|
||||||
@@ -48,24 +47,20 @@ public:
|
|||||||
virtual void draw();
|
virtual void draw();
|
||||||
virtual ~SLFloaterMediaFilter();
|
virtual ~SLFloaterMediaFilter();
|
||||||
|
|
||||||
static void setDirty();
|
void setDirty();
|
||||||
|
|
||||||
static void onClearLists(void*);
|
void onShowIPs();
|
||||||
static void onShowIPs(void*);
|
void onWhitelistAdd();
|
||||||
static void onWhitelistAdd(void*);
|
void onWhitelistRemove();
|
||||||
static void onWhitelistRemove(void*);
|
void onBlacklistAdd();
|
||||||
static void onBlacklistAdd(void*);
|
void onBlacklistRemove();
|
||||||
static void onBlacklistRemove(void*);
|
void onCommitDomain();
|
||||||
static void onCommitDomain(void*);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static bool sIsWhitelist;
|
bool mIsWhitelist;
|
||||||
static bool sShowIPs;
|
bool mShowIPs;
|
||||||
LLScrollListCtrl* mWhitelistSLC;
|
LLScrollListCtrl* mWhitelistSLC;
|
||||||
LLScrollListCtrl* mBlacklistSLC;
|
LLScrollListCtrl* mBlacklistSLC;
|
||||||
bool mIsDirty;
|
bool mIsDirty;
|
||||||
|
|
||||||
static SLFloaterMediaFilter* sInstance;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user