Merge branch 'master' of github.com:Beeks/Ascent
This commit is contained in:
@@ -28,10 +28,10 @@ if (WINDOWS)
|
|||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd"
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd"
|
||||||
CACHE STRING "C++ compiler debug options" FORCE)
|
CACHE STRING "C++ compiler debug options" FORCE)
|
||||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||||
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD"
|
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP"
|
||||||
CACHE STRING "C++ compiler release-with-debug options" FORCE)
|
CACHE STRING "C++ compiler release-with-debug options" FORCE)
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE
|
set(CMAKE_CXX_FLAGS_RELEASE
|
||||||
"${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD"
|
"${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP"
|
||||||
CACHE STRING "C++ compiler release options" FORCE)
|
CACHE STRING "C++ compiler release options" FORCE)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD_LIBRARIES "")
|
set(CMAKE_CXX_STANDARD_LIBRARIES "")
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ def start_client(grid, slurl, build_config, my_args):
|
|||||||
f = open("start-client.log", "w")
|
f = open("start-client.log", "w")
|
||||||
print >>f, "Viewer startup arguments:"
|
print >>f, "Viewer startup arguments:"
|
||||||
llstart.start("viewer", "../../newview",
|
llstart.start("viewer", "../../newview",
|
||||||
"%s/newview/%s/secondlife-bin.exe" % (build_path, build_config),
|
"%s/newview/%s/Ascent.exe" % (build_path, build_config),
|
||||||
viewer_args, f)
|
viewer_args, f)
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
|||||||
@@ -658,7 +658,7 @@ class WindowsSetup(PlatformSetup):
|
|||||||
' --solution ' +
|
' --solution ' +
|
||||||
os.path.join(build_dir,'Ascent.sln') +
|
os.path.join(build_dir,'Ascent.sln') +
|
||||||
' --config ' + self.build_type +
|
' --config ' + self.build_type +
|
||||||
' --startup secondlife-bin')
|
' --startup Ascent')
|
||||||
print 'Running %r in %r' % (vstool_cmd, getcwd())
|
print 'Running %r in %r' % (vstool_cmd, getcwd())
|
||||||
self.run(vstool_cmd)
|
self.run(vstool_cmd)
|
||||||
print >> open(stamp, 'w'), self.build_type
|
print >> open(stamp, 'w'), self.build_type
|
||||||
|
|||||||
@@ -975,6 +975,44 @@ LLAudioData * LLAudioEngine::getAudioData(const LLUUID &audio_uuid)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLAudioEngine::removeAudioData(LLUUID &audio_uuid)
|
||||||
|
{
|
||||||
|
if(audio_uuid.isNull())
|
||||||
|
return;
|
||||||
|
data_map::iterator iter = mAllData.find(audio_uuid);
|
||||||
|
if(iter != mAllData.end())
|
||||||
|
{
|
||||||
|
|
||||||
|
for (source_map::iterator iter2 = mAllSources.begin(); iter2 != mAllSources.end();)
|
||||||
|
{
|
||||||
|
LLAudioSource *sourcep = iter2->second;
|
||||||
|
if( sourcep && sourcep->getCurrentData() && sourcep->getCurrentData()->getID() == audio_uuid )
|
||||||
|
{
|
||||||
|
LLAudioChannel* chan=sourcep->getChannel();
|
||||||
|
delete sourcep;
|
||||||
|
if(chan)
|
||||||
|
chan->cleanup();
|
||||||
|
mAllSources.erase(iter2++); }
|
||||||
|
else
|
||||||
|
++iter2;
|
||||||
|
}
|
||||||
|
if(iter->second) //Shouldn't be null, but playing it safe.
|
||||||
|
{
|
||||||
|
LLAudioBuffer* buf=((LLAudioData*)iter->second)->getBuffer();
|
||||||
|
if(buf)
|
||||||
|
{
|
||||||
|
for (S32 i = 0; i < MAX_BUFFERS; i++)
|
||||||
|
{
|
||||||
|
if(mBuffers[i] == buf)
|
||||||
|
mBuffers[i] = NULL;
|
||||||
|
}
|
||||||
|
delete buf;
|
||||||
|
}
|
||||||
|
delete iter->second;
|
||||||
|
}
|
||||||
|
mAllData.erase(iter);
|
||||||
|
}
|
||||||
|
}
|
||||||
void LLAudioEngine::addAudioSource(LLAudioSource *asp)
|
void LLAudioEngine::addAudioSource(LLAudioSource *asp)
|
||||||
{
|
{
|
||||||
mAllSources[asp->getID()] = asp;
|
mAllSources[asp->getID()] = asp;
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ public:
|
|||||||
|
|
||||||
LLAudioSource *findAudioSource(const LLUUID &source_id);
|
LLAudioSource *findAudioSource(const LLUUID &source_id);
|
||||||
LLAudioData *getAudioData(const LLUUID &audio_uuid);
|
LLAudioData *getAudioData(const LLUUID &audio_uuid);
|
||||||
|
void removeAudioData(LLUUID &audio_uuid);
|
||||||
|
|
||||||
// Internet stream implementation manipulation
|
// Internet stream implementation manipulation
|
||||||
LLStreamingAudioInterface *getStreamingAudioImpl();
|
LLStreamingAudioInterface *getStreamingAudioImpl();
|
||||||
|
|||||||
@@ -330,7 +330,7 @@ BOOL LLImageJ2COJ::encodeImpl(LLImageJ2C &base, const LLImageRaw &raw_image, con
|
|||||||
OPJ_COLOR_SPACE color_space = CLRSPC_SRGB;
|
OPJ_COLOR_SPACE color_space = CLRSPC_SRGB;
|
||||||
opj_image_cmptparm_t cmptparm[MAX_COMPS];
|
opj_image_cmptparm_t cmptparm[MAX_COMPS];
|
||||||
opj_image_t * image = NULL;
|
opj_image_t * image = NULL;
|
||||||
S32 numcomps = min(raw_image.getComponents(),MAX_COMPS); //Clamp avoid overrunning buffer -Shyotl
|
S32 numcomps = raw_image.getComponents() > MAX_COMPS ? MAX_COMPS : raw_image.getComponents(); //Clamp avoid overrunning buffer -Shyotl
|
||||||
S32 width = raw_image.getWidth();
|
S32 width = raw_image.getWidth();
|
||||||
S32 height = raw_image.getHeight();
|
S32 height = raw_image.getHeight();
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,6 @@
|
|||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
#include "llclipboard.h"
|
#include "llclipboard.h"
|
||||||
|
|
||||||
#include "../newview/llviewercontrol.h"
|
|
||||||
//
|
//
|
||||||
// Imported globals
|
// Imported globals
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -60,7 +60,6 @@
|
|||||||
#include "lltextparser.h"
|
#include "lltextparser.h"
|
||||||
#include <queue>
|
#include <queue>
|
||||||
#include "llmenugl.h"
|
#include "llmenugl.h"
|
||||||
#include "../newview/llviewercontrol.h"
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Globals
|
// Globals
|
||||||
|
|||||||
@@ -2128,6 +2128,22 @@
|
|||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<integer>40</integer>
|
<integer>40</integer>
|
||||||
</map>
|
</map>
|
||||||
|
<key>FloaterBlacklistRect</key>
|
||||||
|
<map>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string>LOLRectangle</string>
|
||||||
|
<key>Persist</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>Rect</string>
|
||||||
|
<key>Value</key>
|
||||||
|
<array>
|
||||||
|
<integer>0</integer>
|
||||||
|
<integer>400</integer>
|
||||||
|
<integer>400</integer>
|
||||||
|
<integer>0</integer>
|
||||||
|
</array>
|
||||||
|
</map>
|
||||||
<key>BackwardBtnRect</key>
|
<key>BackwardBtnRect</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
#include "llcombobox.h" //Combo dropdowns
|
#include "llcombobox.h" //Combo dropdowns
|
||||||
#include "llscrolllistctrl.h" //List box for filenames
|
#include "llscrolllistctrl.h" //List box for filenames
|
||||||
#include "lluictrlfactory.h" //Loads the XUI
|
#include "lluictrlfactory.h" //Loads the XUI
|
||||||
|
#include "llresmgr.h"
|
||||||
// project includes
|
// project includes
|
||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
@@ -84,8 +84,13 @@ void ASFloaterContactGroups::onBtnSave(void* userdata)
|
|||||||
LLScrollListCtrl* scroller = self->getChild<LLScrollListCtrl>("group_scroll_list");
|
LLScrollListCtrl* scroller = self->getChild<LLScrollListCtrl>("group_scroll_list");
|
||||||
if(scroller != NULL)
|
if(scroller != NULL)
|
||||||
{
|
{
|
||||||
for (S32 i = self->mSelectedUUIDs.count(); i > 0; --i)
|
for (S32 i = (self->mSelectedUUIDs.count() - 1); i >= 0; --i)
|
||||||
{
|
{
|
||||||
|
std::string i_str;
|
||||||
|
LLResMgr::getInstance()->getIntegerString(i_str, i);
|
||||||
|
LLChat msg("Adding index " + i_str + ": " + self->mSelectedUUIDs.get(i).asString());
|
||||||
|
LLFloaterChat::addChat(msg);
|
||||||
|
|
||||||
self->addContactMember(scroller->getValue().asString(), self->mSelectedUUIDs.get(i));
|
self->addContactMember(scroller->getValue().asString(), self->mSelectedUUIDs.get(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
// <edit>
|
// <edit>
|
||||||
#include "llviewerprecompiledheaders.h"
|
#include "llviewerprecompiledheaders.h"
|
||||||
#include "llfloaterblacklist.h"
|
#include "llfloaterblacklist.h"
|
||||||
|
#include "llaudioengine.h"
|
||||||
|
#include "llvfs.h"
|
||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
#include "llsdserialize.h"
|
#include "llsdserialize.h"
|
||||||
#include "llscrolllistctrl.h"
|
#include "llscrolllistctrl.h"
|
||||||
@@ -8,8 +10,15 @@
|
|||||||
#include "llfilepicker.h"
|
#include "llfilepicker.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
|
#include "lldate.h"
|
||||||
|
#include "llagent.h"
|
||||||
|
|
||||||
LLFloaterBlacklist* LLFloaterBlacklist::sInstance;
|
LLFloaterBlacklist* LLFloaterBlacklist::sInstance;
|
||||||
|
|
||||||
|
std::vector<LLUUID> LLFloaterBlacklist::blacklist_textures;
|
||||||
|
|
||||||
|
std::map<LLUUID,LLSD> LLFloaterBlacklist::blacklist_entries;
|
||||||
|
|
||||||
LLFloaterBlacklist::LLFloaterBlacklist()
|
LLFloaterBlacklist::LLFloaterBlacklist()
|
||||||
: LLFloater()
|
: LLFloater()
|
||||||
{
|
{
|
||||||
@@ -17,7 +26,8 @@ LLFloaterBlacklist::LLFloaterBlacklist()
|
|||||||
}
|
}
|
||||||
LLFloaterBlacklist::~LLFloaterBlacklist()
|
LLFloaterBlacklist::~LLFloaterBlacklist()
|
||||||
{
|
{
|
||||||
sInstance = NULL;
|
if(sInstance == this)
|
||||||
|
sInstance = NULL;
|
||||||
}
|
}
|
||||||
// static
|
// static
|
||||||
void LLFloaterBlacklist::show()
|
void LLFloaterBlacklist::show()
|
||||||
@@ -38,129 +48,196 @@ BOOL LLFloaterBlacklist::postBuild()
|
|||||||
childSetAction("remove_btn", onClickRemove, this);
|
childSetAction("remove_btn", onClickRemove, this);
|
||||||
childSetAction("save_btn", onClickSave, this);
|
childSetAction("save_btn", onClickSave, this);
|
||||||
childSetAction("load_btn", onClickLoad, this);
|
childSetAction("load_btn", onClickLoad, this);
|
||||||
|
childSetVisible("copy_uuid_btn",false);
|
||||||
|
LLComboBox* box = getChild<LLComboBox>("asset_combo");
|
||||||
|
box->add("Texture",LLSD(0));
|
||||||
|
box->add("Sound",LLSD(1));
|
||||||
|
box->add("Animation",LLSD(20));
|
||||||
refresh();
|
refresh();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
void LLFloaterBlacklist::refresh()
|
void LLFloaterBlacklist::refresh()
|
||||||
{
|
{
|
||||||
|
|
||||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("file_list");
|
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("file_list");
|
||||||
list->clearRows();
|
list->clearRows();
|
||||||
if(gAssetStorage) // just in case
|
for(std::map<LLUUID,LLSD>::iterator iter = blacklist_entries.begin(); iter != blacklist_entries.end(); ++iter)
|
||||||
{
|
{
|
||||||
LLSD settings;
|
LLSD element;
|
||||||
for(std::vector<LLUUID>::iterator iter = gAssetStorage->mBlackListedAsset.begin();
|
std::string agent;
|
||||||
iter != gAssetStorage->mBlackListedAsset.end(); ++iter)
|
gCacheName->getFullName(LLUUID(iter->second["entry_agent"].asString()), agent);
|
||||||
|
|
||||||
|
element["id"] = iter->first.asString();
|
||||||
{
|
{
|
||||||
LLSD element;
|
LLSD& column = element["columns"][0];
|
||||||
element["id"] = (*iter);
|
column["column"] = "asset_id";
|
||||||
LLSD& name_column = element["columns"][0];
|
column["value"] = iter->first.asString();
|
||||||
name_column["column"] = "asset_id";
|
|
||||||
name_column["value"] = (*iter).asString();
|
|
||||||
list->addElement(element, ADD_BOTTOM);
|
|
||||||
settings.append((*iter));
|
|
||||||
}
|
}
|
||||||
setMassEnabled(!gAssetStorage->mBlackListedAsset.empty());
|
{
|
||||||
gSavedSettings.setLLSD("Blacklist.Settings",settings);
|
LLSD& column = element["columns"][1];
|
||||||
}
|
column["column"] = "entry_name";
|
||||||
else
|
column["value"] = iter->second["entry_name"].asString();
|
||||||
setMassEnabled(FALSE);
|
}
|
||||||
setEditID(mSelectID);
|
{
|
||||||
}
|
LLSD& column = element["columns"][2];
|
||||||
void LLFloaterBlacklist::add(LLUUID uuid)
|
column["column"] = "entry_type";
|
||||||
{
|
column["value"] = std::string(LLAssetType::lookupHumanReadable( (LLAssetType::EType)iter->second["entry_type"].asInteger() ));
|
||||||
if(gAssetStorage)
|
}
|
||||||
gAssetStorage->mBlackListedAsset.push_back(uuid);
|
{
|
||||||
refresh();
|
LLSD& column = element["columns"][3];
|
||||||
}
|
column["column"] = "entry_agent";
|
||||||
void LLFloaterBlacklist::clear()
|
column["value"] = agent;
|
||||||
{
|
}
|
||||||
if(gAssetStorage) // just in case
|
{
|
||||||
{
|
LLSD& column = element["columns"][4];
|
||||||
gAssetStorage->mBlackListedAsset.clear();
|
column["column"] = "entry_date";
|
||||||
}
|
column["value"] = iter->second["entry_date"].asString();
|
||||||
refresh();
|
}
|
||||||
}
|
list->addElement(element, ADD_BOTTOM);
|
||||||
void LLFloaterBlacklist::setEditID(LLUUID edit_id)
|
|
||||||
{
|
|
||||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("file_list");
|
|
||||||
bool found = false;
|
|
||||||
if(gAssetStorage)
|
|
||||||
found = std::find(gAssetStorage->mBlackListedAsset.begin(),
|
|
||||||
gAssetStorage->mBlackListedAsset.end(),edit_id) != gAssetStorage->mBlackListedAsset.end();
|
|
||||||
if(found)
|
|
||||||
{
|
|
||||||
mSelectID = edit_id;
|
|
||||||
list->selectByID(edit_id);
|
|
||||||
setEditEnabled(true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mSelectID = LLUUID::null;
|
|
||||||
list->deselectAllItems(TRUE);
|
|
||||||
setEditEnabled(false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void LLFloaterBlacklist::removeEntry()
|
|
||||||
{
|
|
||||||
if(gAssetStorage && mSelectID.notNull())
|
|
||||||
std::remove(gAssetStorage->mBlackListedAsset.begin(),gAssetStorage->mBlackListedAsset.end(),mSelectID);
|
|
||||||
refresh();
|
|
||||||
}
|
|
||||||
void LLFloaterBlacklist::setMassEnabled(bool enabled)
|
|
||||||
{
|
|
||||||
childSetEnabled("clear_btn", enabled);
|
|
||||||
}
|
|
||||||
void LLFloaterBlacklist::setEditEnabled(bool enabled)
|
|
||||||
{
|
|
||||||
childSetEnabled("copy_uuid_btn", enabled);
|
|
||||||
childSetEnabled("remove_btn", enabled);
|
|
||||||
}
|
|
||||||
// static
|
// static
|
||||||
void LLFloaterBlacklist::onClickAdd(void* user_data)
|
void LLFloaterBlacklist::onClickAdd(void* user_data)
|
||||||
{
|
{
|
||||||
LLFloaterBlacklist* floaterp = (LLFloaterBlacklist*)user_data;
|
LLFloaterBlacklist* floaterp = (LLFloaterBlacklist*)user_data;
|
||||||
if(!floaterp) return;
|
if(!floaterp) return;
|
||||||
floaterp->add(LLUUID(floaterp->childGetValue("id_edit").asString()));
|
LLUUID add_id(floaterp->childGetValue("id_edit").asString());
|
||||||
|
if(add_id.isNull()) return;
|
||||||
|
std::string name(floaterp->childGetValue("name_edit").asString());
|
||||||
|
if(name.size() == 0) return;
|
||||||
|
LLComboBox* mTypeComboBox = floaterp->getChild<LLComboBox>("asset_combo");
|
||||||
|
LLSD indata;
|
||||||
|
indata["entry_type"] = (LLAssetType::EType)mTypeComboBox->getValue().asInteger();
|
||||||
|
indata["entry_name"] = name;
|
||||||
|
indata["entry_agent"] = gAgent.getID().asString();
|
||||||
|
|
||||||
|
addEntry(add_id,indata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
|
void LLFloaterBlacklist::addEntry(LLUUID key, LLSD data)
|
||||||
|
{
|
||||||
|
if(key.notNull())
|
||||||
|
{
|
||||||
|
if(!data.has("entry_type"))
|
||||||
|
LL_WARNS("FloaterBlacklistAdd") << "addEntry called with no entry type, specify LLAssetType::Etype" << LL_ENDL;
|
||||||
|
else if(!data.has("entry_name"))
|
||||||
|
LL_WARNS("FloaterBlacklistAdd") << "addEntry called with no entry name, specify the name that should appear in the listing for this entry." << LL_ENDL;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(!data.has("entry_date"))
|
||||||
|
{
|
||||||
|
LLDate* curdate = new LLDate(time_corrected());
|
||||||
|
std::string input_date = curdate->asString();
|
||||||
|
input_date.replace(input_date.find("T"),1," ");
|
||||||
|
input_date.resize(input_date.size() - 1);
|
||||||
|
data["entry_date"] = input_date;
|
||||||
|
}
|
||||||
|
if(data["entry_type"].asString() == "1")
|
||||||
|
{
|
||||||
|
//remove sounds
|
||||||
|
LLUUID sound_id=LLUUID(key);
|
||||||
|
gVFS->removeFile(sound_id,LLAssetType::AT_SOUND);
|
||||||
|
std::string wav_path= gDirUtilp->getExpandedFilename(LL_PATH_CACHE,sound_id.asString()) + ".dsf";
|
||||||
|
if(LLAPRFile::isExist(wav_path, LL_APR_RPB))
|
||||||
|
LLAPRFile::remove(wav_path);
|
||||||
|
gAudiop->removeAudioData(sound_id);
|
||||||
|
}
|
||||||
|
blacklist_entries.insert(std::pair<LLUUID,LLSD>(key,data));
|
||||||
|
updateBlacklists();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LL_WARNS("FloaterBlacklistAdd") << "addEntry called with a null entry key, please specify LLUUID of asset." << LL_ENDL;
|
||||||
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
void LLFloaterBlacklist::onClickClear(void* user_data)
|
void LLFloaterBlacklist::onClickClear(void* user_data)
|
||||||
{
|
{
|
||||||
LLFloaterBlacklist* floaterp = (LLFloaterBlacklist*)user_data;
|
blacklist_entries.clear();
|
||||||
if(!floaterp) return;
|
updateBlacklists();
|
||||||
floaterp->clear();
|
|
||||||
}
|
|
||||||
// static
|
|
||||||
void LLFloaterBlacklist::onCommitFileList(LLUICtrl* ctrl, void* user_data)
|
|
||||||
{
|
|
||||||
LLFloaterBlacklist* floaterp = (LLFloaterBlacklist*)user_data;
|
|
||||||
LLScrollListCtrl* list = floaterp->getChild<LLScrollListCtrl>("file_list");
|
|
||||||
LLUUID selected_id;
|
|
||||||
if(list->getFirstSelected())
|
|
||||||
selected_id = list->getFirstSelected()->getUUID();
|
|
||||||
floaterp->setEditID(selected_id);
|
|
||||||
}
|
}
|
||||||
// static
|
// static
|
||||||
void LLFloaterBlacklist::onClickCopyUUID(void* user_data)
|
void LLFloaterBlacklist::onClickCopyUUID(void* user_data)
|
||||||
{
|
{
|
||||||
LLFloaterBlacklist* floaterp = (LLFloaterBlacklist*)user_data;
|
LLFloaterBlacklist* floaterp = (LLFloaterBlacklist*)user_data;
|
||||||
gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(floaterp->mSelectID.asString()));
|
LLScrollListCtrl* list = floaterp->getChild<LLScrollListCtrl>("file_list");
|
||||||
|
gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(list->getFirstSelected()->getColumn(0)->getValue().asString()));
|
||||||
}
|
}
|
||||||
// static
|
// static
|
||||||
void LLFloaterBlacklist::onClickRemove(void* user_data)
|
void LLFloaterBlacklist::onClickRemove(void* user_data)
|
||||||
{
|
{
|
||||||
LLFloaterBlacklist* floaterp = (LLFloaterBlacklist*)user_data;
|
LLFloaterBlacklist* floaterp = (LLFloaterBlacklist*)user_data;
|
||||||
floaterp->removeEntry();
|
LLScrollListCtrl* list = floaterp->getChild<LLScrollListCtrl>("file_list");
|
||||||
|
if(list->getFirstSelected())
|
||||||
|
{
|
||||||
|
LLScrollListItem* item = list->getFirstSelected();
|
||||||
|
LLUUID selected_id(item->getColumn(0)->getValue().asUUID());
|
||||||
|
if(selected_id.isNull()) return;
|
||||||
|
list->deleteSingleItem(list->getFirstSelectedIndex());
|
||||||
|
blacklist_entries.erase(selected_id);
|
||||||
|
updateBlacklists();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// static
|
// static
|
||||||
void LLFloaterBlacklist::loadFromSave()
|
void LLFloaterBlacklist::loadFromSave()
|
||||||
{
|
{
|
||||||
if(!gAssetStorage) return;
|
std::string file_name = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "floater_blist_settings.xml");
|
||||||
LLSD blacklist = gSavedSettings.getLLSD("Blacklist.Settings");
|
llifstream xml_file(file_name);
|
||||||
for(LLSD::array_iterator itr = blacklist.beginArray(); itr != blacklist.endArray(); ++itr)
|
if(!xml_file.is_open()) return;
|
||||||
|
LLSD data;
|
||||||
|
if(LLSDSerialize::fromXML(data, xml_file) >= 1)
|
||||||
{
|
{
|
||||||
gAssetStorage->mBlackListedAsset.push_back(itr->asUUID());
|
for(LLSD::map_iterator iter = data.beginMap(); iter != data.endMap(); ++iter)
|
||||||
|
{
|
||||||
|
blacklist_entries.insert(std::pair<LLUUID,LLSD>(LLUUID(iter->first),iter->second));
|
||||||
|
}
|
||||||
|
updateBlacklists();
|
||||||
|
}
|
||||||
|
xml_file.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
|
void LLFloaterBlacklist::updateBlacklists()
|
||||||
|
{
|
||||||
|
if(gAssetStorage)
|
||||||
|
{
|
||||||
|
blacklist_textures.clear();
|
||||||
|
gAssetStorage->mBlackListedAsset.clear();
|
||||||
|
for(std::map<LLUUID,LLSD>::iterator iter = blacklist_entries.begin(); iter != blacklist_entries.end(); ++iter)
|
||||||
|
{
|
||||||
|
if(blacklist_entries[iter->first]["entry_type"].asString() == "0")
|
||||||
|
{
|
||||||
|
blacklist_textures.push_back(LLUUID(iter->first));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gAssetStorage->mBlackListedAsset.push_back(LLUUID(iter->first));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
saveToDisk();
|
||||||
|
LLFloaterBlacklist* instance = LLFloaterBlacklist::getInstance();
|
||||||
|
if(instance)
|
||||||
|
instance->refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
|
void LLFloaterBlacklist::saveToDisk()
|
||||||
|
{
|
||||||
|
std::string file_name = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "floater_blist_settings.xml");
|
||||||
|
llofstream export_file(file_name);
|
||||||
|
LLSD data;
|
||||||
|
for(std::map<LLUUID,LLSD>::iterator iter = blacklist_entries.begin(); iter != blacklist_entries.end(); ++iter)
|
||||||
|
{
|
||||||
|
data[iter->first.asString()] = iter->second;
|
||||||
|
}
|
||||||
|
LLSDSerialize::toPrettyXML(data, export_file);
|
||||||
|
export_file.close();
|
||||||
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
void LLFloaterBlacklist::onClickSave(void* user_data)
|
void LLFloaterBlacklist::onClickSave(void* user_data)
|
||||||
{
|
{
|
||||||
@@ -169,7 +246,12 @@ void LLFloaterBlacklist::onClickSave(void* user_data)
|
|||||||
{
|
{
|
||||||
std::string file_name = file_picker.getFirstFile();
|
std::string file_name = file_picker.getFirstFile();
|
||||||
llofstream export_file(file_name);
|
llofstream export_file(file_name);
|
||||||
LLSDSerialize::toPrettyXML(gSavedSettings.getLLSD("Blacklist.Settings"), export_file);
|
LLSD data;
|
||||||
|
for(std::map<LLUUID,LLSD>::iterator iter = blacklist_entries.begin(); iter != blacklist_entries.end(); ++iter)
|
||||||
|
{
|
||||||
|
data[iter->first.asString()] = iter->second;
|
||||||
|
}
|
||||||
|
LLSDSerialize::toPrettyXML(data, export_file);
|
||||||
export_file.close();
|
export_file.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -177,8 +259,6 @@ void LLFloaterBlacklist::onClickSave(void* user_data)
|
|||||||
//static
|
//static
|
||||||
void LLFloaterBlacklist::onClickLoad(void* user_data)
|
void LLFloaterBlacklist::onClickLoad(void* user_data)
|
||||||
{
|
{
|
||||||
LLFloaterBlacklist* floater = (LLFloaterBlacklist*)user_data;
|
|
||||||
|
|
||||||
LLFilePicker& file_picker = LLFilePicker::instance();
|
LLFilePicker& file_picker = LLFilePicker::instance();
|
||||||
if(file_picker.getOpenFile(LLFilePicker::FFLOAD_BLACKLIST))
|
if(file_picker.getOpenFile(LLFilePicker::FFLOAD_BLACKLIST))
|
||||||
{
|
{
|
||||||
@@ -188,9 +268,11 @@ void LLFloaterBlacklist::onClickLoad(void* user_data)
|
|||||||
LLSD data;
|
LLSD data;
|
||||||
if(LLSDSerialize::fromXML(data, xml_file) >= 1)
|
if(LLSDSerialize::fromXML(data, xml_file) >= 1)
|
||||||
{
|
{
|
||||||
gSavedSettings.setLLSD("Blacklist.Settings", data);
|
for(LLSD::map_iterator iter = data.beginMap(); iter != data.endMap(); ++iter)
|
||||||
LLFloaterBlacklist::loadFromSave();
|
{
|
||||||
floater->refresh();
|
blacklist_entries.insert(std::pair<LLUUID,LLSD>(LLUUID(iter->first),iter->second));
|
||||||
|
}
|
||||||
|
updateBlacklists();
|
||||||
}
|
}
|
||||||
xml_file.close();
|
xml_file.close();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,24 +10,42 @@ public:
|
|||||||
static void show();
|
static void show();
|
||||||
BOOL postBuild();
|
BOOL postBuild();
|
||||||
void refresh();
|
void refresh();
|
||||||
void add(LLUUID uuid);
|
static LLFloaterBlacklist* getInstance() { return sInstance; };
|
||||||
void clear();
|
|
||||||
void setEditID(LLUUID edit_id);
|
|
||||||
void removeEntry();
|
/*This is the function to call to add anything to the blacklist,
|
||||||
static void onClickAdd(void* user_data);
|
key is the asset ID
|
||||||
static void onClickClear(void* user_data);
|
LLSD data is as follows: LLSD[entry_type] = LLAssetType::Etype,
|
||||||
static void onCommitFileList(LLUICtrl* ctrl, void* user_data);
|
LLSD[entry_name] = std::string,
|
||||||
static void onClickCopyUUID(void* user_data);
|
//LLSD[entry_date] = (automatically generated std::string)
|
||||||
static void onClickRemove(void* user_data);
|
|
||||||
|
The LLSD object can hold other data without interfering with the function of this list
|
||||||
|
as long as you keep the above format.
|
||||||
|
*/
|
||||||
|
static void addEntry(LLUUID key, LLSD data);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static std::map<LLUUID,LLSD> blacklist_entries;
|
||||||
|
static std::vector<LLUUID> blacklist_textures;
|
||||||
|
|
||||||
static void loadFromSave();
|
static void loadFromSave();
|
||||||
static void onClickSave(void* user_data);
|
|
||||||
static void onClickLoad(void* user_data);
|
|
||||||
protected:
|
protected:
|
||||||
LLUUID mSelectID;
|
LLUUID mSelectID;
|
||||||
private:
|
private:
|
||||||
static LLFloaterBlacklist* sInstance;
|
static LLFloaterBlacklist* sInstance;
|
||||||
void setMassEnabled(bool enabled);
|
static void updateBlacklists();
|
||||||
void setEditEnabled(bool enabled);
|
static void saveToDisk();
|
||||||
|
static void onClickAdd(void* user_data);
|
||||||
|
static void onClickClear(void* user_data);
|
||||||
|
static void onClickSave(void* user_data);
|
||||||
|
static void onClickLoad(void* user_data);
|
||||||
|
static void onClickCopyUUID(void* user_data);
|
||||||
|
static void onClickRemove(void* user_data);
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
// </edit>
|
// </edit>
|
||||||
|
|||||||
@@ -5,15 +5,12 @@
|
|||||||
#include "llfloaterexploresounds.h"
|
#include "llfloaterexploresounds.h"
|
||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
#include "llscrolllistctrl.h"
|
#include "llscrolllistctrl.h"
|
||||||
#include "lllocalinventory.h"
|
|
||||||
#include "llagent.h"
|
#include "llagent.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
#include "llviewerobjectlist.h"
|
#include "llviewerobjectlist.h"
|
||||||
#include "llviewerregion.h"
|
#include "llviewerregion.h"
|
||||||
#include "llviewerparcelmgr.h"
|
|
||||||
#include "llparcel.h"
|
|
||||||
#include "llchat.h"
|
|
||||||
#include "llfloaterchat.h"
|
#include "llfloaterchat.h"
|
||||||
|
#include "llfloaterblacklist.h"
|
||||||
|
|
||||||
static const size_t num_collision_sounds = 28;
|
static const size_t num_collision_sounds = 28;
|
||||||
const LLUUID collision_sounds[num_collision_sounds] =
|
const LLUUID collision_sounds[num_collision_sounds] =
|
||||||
@@ -81,6 +78,7 @@ BOOL LLFloaterExploreSounds::postBuild(void)
|
|||||||
childSetAction("play_locally_btn", handle_play_locally, this);
|
childSetAction("play_locally_btn", handle_play_locally, this);
|
||||||
childSetAction("look_at_btn", handle_look_at, this);
|
childSetAction("look_at_btn", handle_look_at, this);
|
||||||
childSetAction("stop_btn", handle_stop, this);
|
childSetAction("stop_btn", handle_stop, this);
|
||||||
|
childSetAction("bl_btn", blacklistSound, this);
|
||||||
|
|
||||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("sound_list");
|
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("sound_list");
|
||||||
list->sortByColumn("playing", TRUE);
|
list->sortByColumn("playing", TRUE);
|
||||||
@@ -373,6 +371,35 @@ void LLFloaterExploreSounds::handle_stop(void* user_data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void LLFloaterExploreSounds::blacklistSound(void* user_data)
|
||||||
|
{
|
||||||
|
|
||||||
|
LLFloaterBlacklist::show();
|
||||||
|
LLFloaterExploreSounds* floater = (LLFloaterExploreSounds*)user_data;
|
||||||
|
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("sound_list");
|
||||||
|
|
||||||
|
typedef std::vector<LLScrollListItem*> item_map_t;
|
||||||
|
item_map_t selection = list->getAllSelected();
|
||||||
|
item_map_t::iterator selection_end = selection.end();
|
||||||
|
|
||||||
|
for(item_map_t::iterator selection_iter = selection.begin(); selection_iter != selection_end; ++selection_iter)
|
||||||
|
{
|
||||||
|
LLSoundHistoryItem item = floater->getItem((*selection_iter)->getValue());
|
||||||
|
if(item.mID.isNull()) continue;
|
||||||
|
|
||||||
|
LLSD sound_data;
|
||||||
|
std::string agent;
|
||||||
|
gCacheName->getFullName(item.mOwnerID, agent);
|
||||||
|
LLViewerRegion* cur_region = gAgent.getRegion();
|
||||||
|
|
||||||
|
if(cur_region)
|
||||||
|
sound_data["entry_name"] = llformat("Sound played by %s in region %s",agent.c_str(),cur_region->getName().c_str());
|
||||||
|
else
|
||||||
|
sound_data["entry_name"] = llformat("Sound played by %s",agent.c_str());
|
||||||
|
sound_data["entry_type"] = (LLAssetType::EType)item.mType;
|
||||||
|
sound_data["entry_agent"] = gAgent.getID();
|
||||||
|
LLFloaterBlacklist::addEntry(item.mAssetID,sound_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// </edit>
|
// </edit>
|
||||||
|
|||||||
@@ -19,8 +19,12 @@ public:
|
|||||||
LLSoundHistoryItem getItem(LLUUID itemID);
|
LLSoundHistoryItem getItem(LLUUID itemID);
|
||||||
|
|
||||||
static void handle_play_locally(void* user_data);
|
static void handle_play_locally(void* user_data);
|
||||||
|
static void handle_play_in_world(void* user_data);
|
||||||
static void handle_look_at(void* user_data);
|
static void handle_look_at(void* user_data);
|
||||||
|
static void handle_open(void* user_data);
|
||||||
|
static void handle_copy_uuid(void* user_data);
|
||||||
static void handle_stop(void* user_data);
|
static void handle_stop(void* user_data);
|
||||||
|
static void blacklistSound(void* user_data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual ~LLFloaterExploreSounds();
|
virtual ~LLFloaterExploreSounds();
|
||||||
|
|||||||
@@ -241,12 +241,11 @@ void LLPanelFriends::populateContactGroupSelect()
|
|||||||
|
|
||||||
void LLPanelFriends::setContactGroup(std::string contact_grp)
|
void LLPanelFriends::setContactGroup(std::string contact_grp)
|
||||||
{
|
{
|
||||||
if (contact_grp != "All")
|
LLChat msg("Group set to " + contact_grp);
|
||||||
{
|
LLFloaterChat::addChat(msg);
|
||||||
filterContacts();
|
refreshNames(LLFriendObserver::ADD);
|
||||||
categorizeContacts();
|
refreshUI();
|
||||||
}
|
categorizeContacts();
|
||||||
else refreshNames(LLFriendObserver::ADD);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLPanelFriends::categorizeContacts()
|
void LLPanelFriends::categorizeContacts()
|
||||||
@@ -264,17 +263,45 @@ void LLPanelFriends::categorizeContacts()
|
|||||||
std::vector<LLScrollListItem*> vFriends = mFriendsList->getAllData(); // all of it.
|
std::vector<LLScrollListItem*> vFriends = mFriendsList->getAllData(); // all of it.
|
||||||
for (std::vector<LLScrollListItem*>::iterator itr = vFriends.begin(); itr != vFriends.end(); ++itr)
|
for (std::vector<LLScrollListItem*>::iterator itr = vFriends.begin(); itr != vFriends.end(); ++itr)
|
||||||
{
|
{
|
||||||
BOOL show_entry = (contact_groups[group_name][(*itr)->getUUID().asString()].size() != 0);
|
BOOL show_entry = false;//contact_groups[group_name].has((*itr)->getUUID().asString());
|
||||||
|
|
||||||
|
S32 count = contact_groups[group_name].size();
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
if (contact_groups[group_name][i].asString() == (*itr)->getUUID().asString())
|
||||||
|
{
|
||||||
|
show_entry = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!show_entry)
|
if (!show_entry)
|
||||||
{
|
{
|
||||||
|
LLChat msg("False: contact_groups['" + group_name + "'].has('" + (*itr)->getUUID().asString() + "');");
|
||||||
|
LLFloaterChat::addChat(msg);
|
||||||
mFriendsList->deleteItems((*itr)->getValue());
|
mFriendsList->deleteItems((*itr)->getValue());
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LLChat msg("True: contact_groups['" + group_name + "'].has('" + (*itr)->getUUID().asString() + "');");
|
||||||
|
LLFloaterChat::addChat(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LLChat msg("Group set to all.");
|
||||||
|
LLFloaterChat::addChat(msg);
|
||||||
|
}
|
||||||
|
|
||||||
refreshUI();
|
refreshUI();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LLChat msg("Null combo.");
|
||||||
|
LLFloaterChat::addChat(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLPanelFriends::filterContacts()
|
void LLPanelFriends::filterContacts()
|
||||||
@@ -325,10 +352,7 @@ void LLPanelFriends::onChangeContactGroup(LLUICtrl* ctrl, void* user_data)
|
|||||||
if(panelp)
|
if(panelp)
|
||||||
{
|
{
|
||||||
LLComboBox* combo = panelp->getChild<LLComboBox>("buddy_group_combobox");
|
LLComboBox* combo = panelp->getChild<LLComboBox>("buddy_group_combobox");
|
||||||
if (combo->getValue().asString() != "All")
|
panelp->setContactGroup(combo->getValue().asString());
|
||||||
{
|
|
||||||
panelp->setContactGroup(combo->getValue().asString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// --
|
// --
|
||||||
|
|||||||
@@ -1,17 +1,22 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
<floater can_close="true" can_drag_on_left="false" can_minimize="true"
|
<floater can_close="true" can_drag_on_left="false" can_minimize="true"
|
||||||
can_resize="false" width="320" min_width="320" height="320" min_height="320"
|
can_resize="true" width="750" min_width="650" height="320" min_height="320"
|
||||||
name="floater_blacklist" title="Asset Blacklist" rect_control="FloaterVFSRect">
|
name="floater_blacklist" title="Asset Blacklist" rect_control="FloaterBlacklistRect">
|
||||||
<button name="add_btn" follows="left|top" width="100" bottom="-45" left="10" height="20" label="Add..."/>
|
<button name="add_btn" follows="left|top" width="100" bottom="-45" left="10" height="20" label="Add..."/>
|
||||||
<button name="clear_btn" follows="left|top" width="100" left_delta="100" bottom_delta="0" height="20" label="Clear"/>
|
<button name="remove_btn" follows="left|top" width="100" left_delta="110" bottom_delta="0" height="20" label="Remove"/>
|
||||||
<line_editor name="id_edit" enable="true" follows="left|bottom|right" bottom_delta="-23" left="10" width="300" height="20"/>
|
<combo_box name="asset_combo" follows="left|top" width="100" left_delta="110" bottom_delta="0" height="20" label="Asset Type"/>
|
||||||
<scroll_list bottom="30" can_resize="true" column_padding="0" draw_heading="true"
|
<line_editor name="id_edit" label="Asset UUID goes here." enable="true" follows="left|top|right" bottom_delta="-30" left="10" right="-10" width="300" height="20"/>
|
||||||
follows="left|top|bottom|right" left="10" multi_select="true"
|
<line_editor name="name_edit" label="Entry name goes here." enable="true" follows="left|top|right" bottom_delta="-23" left="10" right="-10" width="300" height="20"/>
|
||||||
name="file_list" right="-10" search_column="0" top="-70">
|
<scroll_list top="-100" bottom="35" can_resize="true" column_padding="0" draw_heading="true"
|
||||||
<column dynamicwidth="true" name="asset_id" label="Asset ID" />
|
follows="left|top|bottom|right" left="10" multi_select="true" name="file_list" right="-10" search_column="0">
|
||||||
|
<column dynamicwidth="false" name="asset_id" label="Asset ID" width ="00" />
|
||||||
|
<column dynamicwidth="true" name="entry_name" label="Name" />
|
||||||
|
<column dynamicwidth="false" name="entry_type" label="Type" width="110" />
|
||||||
|
<column dynamicwidth="false" name="entry_agent" label="Blacklisted by" width="170" />
|
||||||
|
<column dynamicwidth="false" name="entry_date" label="Date" width="130"/>
|
||||||
</scroll_list>
|
</scroll_list>
|
||||||
<button name="copy_uuid_btn" follows="left|bottom" width="75" bottom_delta="-23" left="10" height="20" label="Copy UUID"/>
|
<button name="save_btn" follows="left|bottom" width="75" bottom_delta="-23" left="10" height="20" label="Save XML"/>
|
||||||
<button name="remove_btn" follows="left|bottom" width="75" bottom_delta="0" left_delta="75" height="20" label="Remove"/>
|
|
||||||
<button name="save_btn" follows="left|bottom" width="75" bottom_delta="0" left_delta="75" height="20" label="Save XML"/>
|
|
||||||
<button name="load_btn" follows="left|bottom" width="75" bottom_delta="0" left_delta="75" height="20" label="Load XML"/>
|
<button name="load_btn" follows="left|bottom" width="75" bottom_delta="0" left_delta="75" height="20" label="Load XML"/>
|
||||||
|
<button name="clear_btn" follows="left|bottom" width="75" bottom_delta="0" left_delta="75" height="20" label="Clear"/>
|
||||||
|
<button name="copy_uuid_btn" follows="left|bottom" width="75" bottom_delta="0" left_delta="75" height="20" label="Copy UUID"/>
|
||||||
</floater>
|
</floater>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
label="Show Repeats" control_name="FloaterSoundsLogRepeats" />
|
label="Show Repeats" control_name="FloaterSoundsLogRepeats" />
|
||||||
<check_box follows="top|left" bottom_delta="0" left_delta="110" width="80" name="pause_chk"
|
<check_box follows="top|left" bottom_delta="0" left_delta="110" width="80" name="pause_chk"
|
||||||
label="Pause Log" initial_value="false"/>
|
label="Pause Log" initial_value="false"/>
|
||||||
<scroll_list bottom="30" can_resize="true" column_padding="0" draw_heading="true"
|
<scroll_list bottom="56" can_resize="true" column_padding="0" draw_heading="true"
|
||||||
follows="left|top|bottom|right" left="10" multi_select="true"
|
follows="left|top|bottom|right" left="10" multi_select="true"
|
||||||
name="sound_list" search_column="0" top="-60" right="-10">
|
name="sound_list" search_column="0" top="-60" right="-10">
|
||||||
<column width="20" tool_tip="Type" name="type" />
|
<column width="20" tool_tip="Type" name="type" />
|
||||||
@@ -32,10 +32,17 @@
|
|||||||
<column dynamicwidth="true" width="150" label="Owner" name="owner" />
|
<column dynamicwidth="true" width="150" label="Owner" name="owner" />
|
||||||
<column width="80" label="Sound" name="sound" />
|
<column width="80" label="Sound" name="sound" />
|
||||||
</scroll_list>
|
</scroll_list>
|
||||||
<button bottom="6" follows="bottom|left" height="20" label="Stop" name="stop_btn"
|
|
||||||
left="10" width="95"/>
|
<button bottom="31" follows="bottom|left" height="20" label="Look At" name="look_at_btn"
|
||||||
<button bottom_delta="0" follows="bottom|left" height="20" label="Look At" name="look_at_btn"
|
left="10" width="95"/>
|
||||||
left_delta="100" width="95"/>
|
|
||||||
<button bottom_delta="0" follows="bottom|left" height="20" label="Play Locally" name="play_locally_btn"
|
<button bottom_delta="0" follows="bottom|left" height="20" label="Play Locally" name="play_locally_btn"
|
||||||
left_delta="100" width="95"/>
|
left_delta="100" width="95"/>
|
||||||
|
<button bottom_delta="0" follows="bottom|left" height="20" label="Play In World" name="play_ambient_btn"
|
||||||
|
left_delta="100" width="95"/>
|
||||||
|
|
||||||
|
<button bottom="6" follows="bottom|left" height="20" label="Stop" name="stop_btn"
|
||||||
|
left="10" width="95"/>
|
||||||
|
<button bottom_delta="0" follows="bottom|left" height="20" label="Add To Blacklist" name="bl_btn"
|
||||||
|
left_delta="100" width="195"/>
|
||||||
|
|
||||||
</floater>
|
</floater>
|
||||||
|
|||||||
@@ -44,9 +44,9 @@
|
|||||||
height="18" left="-235" name="buddy_search_lineedit"
|
height="18" left="-235" name="buddy_search_lineedit"
|
||||||
tool_tip="The friend name you want to search for" width="130" />
|
tool_tip="The friend name you want to search for" width="130" />
|
||||||
<pad bottom="-7" height="0" left="-90" width="1" />
|
<pad bottom="-7" height="0" left="-90" width="1" />
|
||||||
<!--<button bottom_delta="-25" follows="top|right" height="22" label="Set Contact"
|
<button bottom_delta="-25" follows="top|right" height="22" label="Set Contact"
|
||||||
left_delta="0" name="assign_btn" tool_tip="Asign a friend to a Contact Group"
|
left_delta="0" name="assign_btn" tool_tip="Asign a friend to a Contact Group"
|
||||||
width="80" />-->
|
width="80" />
|
||||||
<button bottom_delta="-25" follows="top|right" height="22" label="IM/Call"
|
<button bottom_delta="-25" follows="top|right" height="22" label="IM/Call"
|
||||||
left_delta="0" name="im_btn" tool_tip="Open Instant Message session"
|
left_delta="0" name="im_btn" tool_tip="Open Instant Message session"
|
||||||
width="80" />
|
width="80" />
|
||||||
|
|||||||
@@ -193,6 +193,7 @@
|
|||||||
<ConsoleBackground value="0, 0, 0, 255" />
|
<ConsoleBackground value="0, 0, 0, 255" />
|
||||||
<FolderViewLoadingMessageTextColor value="240, 165, 90, 255"/>
|
<FolderViewLoadingMessageTextColor value="240, 165, 90, 255"/>
|
||||||
<InventoryBackgroundColor value="255, 255, 255, 80"/>
|
<InventoryBackgroundColor value="255, 255, 255, 80"/>
|
||||||
|
<ComboBoxBg value="255, 255, 255, 255"/>
|
||||||
|
|
||||||
<!-- Alert box colors -->
|
<!-- Alert box colors -->
|
||||||
<AlertBoxColor value="165, 180, 200, 245"/>
|
<AlertBoxColor value="165, 180, 200, 245"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user