Rework of the Tagsystem.

- Moved the Tagsystem to FSData for better integration. So other Modules can call it too.
- Added the Tagdata as LLSD (TPVD, Name, UUID) to llvoavatar (mClientTagData)
- Added the ability to display TPVD Viewers only.
- Added the Settings to Preferences -> Firestorm -> Tags
- Removed ShowViewerIDsOnNameTag cause it's replaced with "FSClientTagsVisibility">0
- Changed the Debug Settings from S32 to U32
master
Wolfspirit 2011-08-22 19:10:02 +02:00
parent c127113e96
commit 689e3f7a4d
9 changed files with 351 additions and 191 deletions

View File

@ -42,18 +42,29 @@
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<string>U32</string>
<key>Value</key>
<integer>2</integer>
</map>
<key>FSColorClienttags</key>
<map>
<key>Comment</key>
<string>If Clienttags should be colored</string>
<string>Color Clienttags by: 0=Off, 1=Single color per Viewer, 2=Userdefinied color (one color per UUID), 3=New Tagsystem Color</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<string>U32</string>
<key>Value</key>
<integer>2</integer>
</map>
<key>FSClientTagsVisibility</key>
<map>
<key>Comment</key>
<string>Show clienttags: 0=Clienttags Off, 1=That are on the TPVD (needs FSUseLegacyClienttags), 2=That are on the client_tag.xml (needs FSUseLegacyClienttags), 3=That using the new system</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>1</integer>
</map>
@ -331,18 +342,6 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>ShowViewerIDsOnNameTag</key>
<map>
<key>Comment</key>
<string>Show viewer identification when display hovertext names over avatars</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>PhoenixEnableAutoCorrect</key>
<map>
<key>Comment</key>

View File

@ -359,7 +359,7 @@ void FSData::processAgents(U32 status, std::string body)
void FSData::downloadClientTags()
{
if(gSavedSettings.getS32("FSUseLegacyClienttags")>1)
if(gSavedSettings.getU32("FSUseLegacyClienttags")>1)
{
LLSD headers;
headers.insert("User-Agent", LLViewerMedia::getCurrentUserAgent());
@ -367,7 +367,7 @@ void FSData::downloadClientTags()
LLHTTPClient::get(legacy_client_list,new FSDownloader(legacy_client_list),headers);
LL_INFOS("CLIENTTAGS DOWNLOADER") << "Getting new tags" << LL_ENDL;
}
else if(gSavedSettings.getS32("FSUseLegacyClienttags")>0)
else if(gSavedSettings.getU32("FSUseLegacyClienttags")>0)
{
updateClientTagsLocal();
}
@ -377,7 +377,6 @@ void FSData::downloadClientTags()
void FSData::processClientTags(U32 status,std::string body)
{
if(status != 200)
{
LL_WARNS("ClientTags") << "client_list_v2.xml download failed with status of " << status << LL_ENDL;
@ -408,6 +407,142 @@ void FSData::processClientTags(U32 status,std::string body)
}
LLSD FSData::resolveClientTag(LLUUID id){
//WS: Some helper function to make the request for old tags easier (if someone needs it)
return resolveClientTag(id, false, LLColor4::black);
}
LLSD FSData::resolveClientTag(LLUUID id, bool new_system, LLColor4 color){
//WS: Create a new LLSD based on the data from the LegacyClientList if
LLSD curtag;
curtag["uuid"]=id.asString();
curtag["id_based"]=new_system;
curtag["tex_color"]=color.getValue();
// If we don't want to display anything...return
if(gSavedSettings.getU32("FSClientTagsVisibility")==0) return curtag;
FSData* self = getInstance();
//WS: Do we want to use Legacy Clienttags?
if(gSavedSettings.getU32("FSUseLegacyClienttags")>0){
if(self->LegacyClientList.has(id.asString())){
curtag=self->LegacyClientList[id.asString()];
}
else{
if(id == LLUUID("5d9581af-d615-bc16-2667-2f04f8eeefe4"))//green
{
curtag["name"]="Phoenix";
curtag["color"] = LLColor4::green.getValue();
curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b";
}
else if(id == LLUUID("91144252-196e-bac9-3737-92752eee612d"))//white
{
curtag["name"] = "Canine (fallback)";
curtag["color"] = LLColor4::white.getValue();
}
else if(id == LLUUID("e35f7d40-6071-4b29-9727-5647bdafb5d5"))//white
{
curtag["name"] = "Phoenix";
curtag["color"] = LLColor4::white.getValue();
curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b";
}
else if(id == LLUUID("ae4e92fb-023d-23ba-d060-3403f953ab1a"))//pink
{
curtag["name"] = "Phoenix";
curtag["color"] = LLColor4::pink.getValue();
curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b";
}
else if(id == LLUUID("e71b780e-1a57-400d-4649-959f69ec7d51"))//red
{
curtag["name"] = "Phoenix";
curtag["color"] = LLColor4::red.getValue();
curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b";
}
else if(id == LLUUID("c1c189f5-6dab-fc03-ea5a-f9f68f90b018"))//orange
{
curtag["name"] = "Phoenix";
curtag["color"] = LLColor4::orange.getValue();
curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b";
}
else if(id == LLUUID("8cf0577c-22d3-6a73-523c-15c0a90d6c27")) //purple
{
curtag["name"] = "Phoenix";
curtag["color"] = LLColor4::purple.getValue();
curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b";
}
else if(id == LLUUID("5f0e7c32-38c3-9214-01f0-fb16a5b40128"))//yellow
{
curtag["name"] = "Phoenix";
curtag["color"] = LLColor4::yellow.getValue();
curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b";
}
else if(id == LLUUID("5bb6e4a6-8e24-7c92-be2e-91419bb0ebcb"))//blue
{
curtag["name"] = "Phoenix";
curtag["color"] = LLColor4::blue.getValue();
curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b";
}
else if(id == LLUUID("ed63fbd0-589e-fe1d-a3d0-16905efaa96b"))//default (red)
{
curtag["name"] = "Phoenix";
curtag["color"] = LLColor4::red.getValue();
}
else if(id == LLUUID("c228d1cf-4b5d-4ba8-84f4-899a0796aa97"))//viewer 2.0
{
curtag["name"] = "Viewer 2";
}
else if(id == LLUUID("cc7a030f-282f-c165-44d2-b5ee572e72bf"))
{
curtag["name"] = "Imprudence";
}
else if(id == LLUUID("54d93609-1392-2a93-255c-a9dd429ecca5"))
{
curtag["name"] = "Emergence";
}
else if(id == LLUUID("8873757c-092a-98fb-1afd-ecd347566fcd"))
{
curtag["name"] = "Ascent";
}
else if(id == LLUUID("f25263b7-6167-4f34-a4ef-af65213b2e39"))
{
curtag["name"] = "Singularity";
}
if(curtag.has("name")) curtag["tpvd"]=true;
}
}
// Filtering starts here:
//WS: If the current tag has an "alt" definied and we don't want multiple colors. Resolve the alt.
if((gSavedSettings.getU32("FSColorClienttags")==1) && curtag.has("alt")) curtag = resolveClientTag(curtag["alt"], new_system, color);
//WS: If we have a tag using the new system, check if we want to display it's name and/or color
if(new_system){
if(gSavedSettings.getU32("FSClientTagsVisibility")>=3){
U32 tag_len = strnlen((const char*)&id.mData[0], UUID_BYTES);
std::string clienttagname = std::string((const char*)&id.mData[0], tag_len);
LLStringFn::replace_ascii_controlchars(clienttagname, LL_UNKNOWN_CHAR);
curtag["name"] = clienttagname;
}
if(gSavedSettings.getU32("FSColorClienttags")>=3){
curtag["color"] = color.getValue();
}
}
//If we only want to display tpvd viewer. And "tpvd" is not available or false, then
// clear the data, but keep the basedata (like uuid, id_based and tex_color) for (maybe) later displaying.
if(gSavedSettings.getU32("FSClientTagsVisibility")<=1 && (!curtag.has("tpvd") || !curtag["tpvd"].asBoolean())){
curtag.clear();
}
curtag["uuid"]=id.asString();
curtag["id_based"]=new_system;
curtag["tex_color"]=color.getValue();
return curtag;
}
void FSData::updateClientTagsLocal()
{
std::string client_list_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "client_list_v2.xml");

View File

@ -57,7 +57,11 @@ public:
static void processClientTags(U32 status, std::string body);
static void msdata(U32 status, std::string body);
static void msblacklist(U32 status, std::string body);
static void updateClientTagsLocal();
static LLSD resolveClientTag(LLUUID id);
static LLSD resolveClientTag(LLUUID id, bool new_system, LLColor4 new_system_color);
static const U8 EM_SUPPORT = 0x01;
static const U8 EM_DEVELOPER = 0x02;
static const U8 PH_BETA = 0x01;

View File

@ -2948,16 +2948,22 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
|| is_cloud != mNameCloud)
{
//WS: If we got a uuid and if we know if it's id_based or not, ask FSDATA for the other tagdata, before we display it.
if(mClientTagData.has("uuid") && mClientTagData.has("id_based")){
LLColor4 color;
if(mClientTagData.has("tex_color")) color.setValue(mClientTagData["tex_color"]);
else color = LLColor4::black;
mClientTagData = FSData::resolveClientTag(LLUUID(mClientTagData["uuid"].asString()), mClientTagData["id_based"].asBoolean(),color);
}
LLColor4 name_tag_color = getNameTagColor(is_friend);
// Wolfspirit: If we don't need to display a friend,
// if we aren't self, if we use colored Clienttags and if we have a color
// then use that color as name_tag_color
static LLUICachedControl<bool> show_friends("NameTagShowFriends");
static LLUICachedControl<bool> use_colors("FSColorClienttags");
if(mHasClientTagColor && !(show_friends && is_friend) && use_colors && !this->isSelf()){
name_tag_color = mClientTagColor;
if(mClientTagData.has("color") && !(show_friends && is_friend) && gSavedSettings.getU32("FSColorClienttags")>0 && !this->isSelf()){
name_tag_color = mClientTagData["color"];
}
@ -3032,9 +3038,9 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
if (show_display_names)
{
if (!mClientTag.empty() && gSavedSettings.getBOOL("ShowViewerIDsOnNameTag"))
if (mClientTagData.has("name") && !mClientTagData["name"].asString().empty())
{
addNameTagLine(av_name.mDisplayName+" (" + mClientTag + ")",name_tag_color,LLFontGL::NORMAL, LLFontGL::getFontSansSerif());
addNameTagLine(av_name.mDisplayName+" (" + mClientTagData["name"].asString() + ")",name_tag_color,LLFontGL::NORMAL, LLFontGL::getFontSansSerif());
}
else
{
@ -3080,10 +3086,10 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
// [/RLVa:KB]
else // Only check for client tags when not RLV anon -AO
{
if (!mClientTag.empty() && gSavedSettings.getBOOL("ShowViewerIDsOnNameTag"))
if (mClientTagData.has("name") && !mClientTagData["name"].asString().empty())
{
lldebugs << "ClientTag is set! mClientTag=" << mClientTag << llendl;
addNameTagLine(full_name+" (" + mClientTag + ")",name_tag_color,LLFontGL::NORMAL, LLFontGL::getFontSansSerif());
lldebugs << "ClientTag is set! mClientTag=" << mClientTagData["name"].asString() << llendl;
addNameTagLine(full_name+" (" + mClientTagData["name"].asString() + ")",name_tag_color,LLFontGL::NORMAL, LLFontGL::getFontSansSerif());
}
else
{
@ -6984,133 +6990,7 @@ bool LLVOAvatar::visualParamWeightsAreDefault()
return rtn;
}
void LLVOAvatar::resolveClient(const LLUUID tag)
// looks at a UUID and tries to match it to a known client.
// hard coded list to be quick and dirty. TODO: Replace with the usual XML file.
// TODO: turn this into an enumeration-backed switch statement.
{
// Wolfspirit: The clienttag list is loaded into FSData::LegacyClientList
LLSD taglist = FSData::getInstance()->LegacyClientList;
mHasClientTagColor = false;
// Wolfspirit: If the Taglist is complete and the taglist contains our requested key, then set the ClientName and ClientColor
// else try to use our fallback alternatives.
if(taglist.has("isComplete") && taglist.has(tag.asString())){
LLSD tagdata = taglist[tag.asString()];
mClientTag = tagdata["name"].asString();
mClientTagColor.setValue(tagdata["color"]);
mHasClientTagColor = true;
}
else if(tag == LLUUID("5d9581af-d615-bc16-2667-2f04f8eeefe4"))//green
{
mClientTag = "Phoenix";
mClientTagColor = LLColor4::green;
mHasClientTagColor =true;
}
else if(tag == LLUUID("e35f7d40-6071-4b29-9727-5647bdafb5d5"))//white
{
mClientTag = "Phoenix";
mClientTagColor = LLColor4::white;
mHasClientTagColor =true;
}
else if(tag == LLUUID("ae4e92fb-023d-23ba-d060-3403f953ab1a"))//pink
{
mClientTag = "Phoenix";
mClientTagColor = LLColor4::pink;
mHasClientTagColor =true;
}
else if(tag == LLUUID("e71b780e-1a57-400d-4649-959f69ec7d51"))//red
{
mClientTag = "Phoenix";
mClientTagColor = LLColor4::red;
mHasClientTagColor =true;
}
else if(tag == LLUUID("c1c189f5-6dab-fc03-ea5a-f9f68f90b018"))//orange
{
mClientTag = "Phoenix";
mClientTagColor = LLColor4::orange;
mHasClientTagColor =true;
}
else if(tag == LLUUID("8cf0577c-22d3-6a73-523c-15c0a90d6c27")) //purple
{
mClientTag = "Phoenix";
mClientTagColor = LLColor4::purple;
mHasClientTagColor =true;
}
else if(tag == LLUUID("5f0e7c32-38c3-9214-01f0-fb16a5b40128"))//yellow
{
mClientTag = "Phoenix";
mClientTagColor = LLColor4::yellow;
mHasClientTagColor =true;
}
else if(tag == LLUUID("5bb6e4a6-8e24-7c92-be2e-91419bb0ebcb"))//blue
{
mClientTag = "Phoenix";
mClientTagColor = LLColor4::blue;
mHasClientTagColor =true;
}
else if(tag == LLUUID("ed63fbd0-589e-fe1d-a3d0-16905efaa96b"))//default (red)
{
mClientTag = "Phoenix";
mClientTagColor = LLColor4::red;
mHasClientTagColor =true;
}
else if(tag == LLUUID("c228d1cf-4b5d-4ba8-84f4-899a0796aa97"))//viewer 2.0
{
mClientTag = "Viewer 2";
}
else if(tag == LLUUID("0bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8"))
{
mClientTag = "MoyMix";
}
else if(tag == LLUUID("c58fca06-33b3-827d-d81c-a886a631affc"))
{
mClientTag = "Whale";
}
else if(tag == LLUUID("cc7a030f-282f-c165-44d2-b5ee572e72bf"))
{
mClientTag = "Imprudence";
}
else if(tag == LLUUID("2a9a406c-f448-68f2-4e38-878f8c46c190"))
{
mClientTag = "Meerkat";
}
else if(tag == LLUUID("b6820989-bf42-ff59-ddde-fd3fd3a74fe4"))
{
mClientTag = "Meerkat";
}
else if(tag == LLUUID("5aa5c70d-d787-571b-0495-4fc1bdef1500"))
{
mClientTag = "PAR"; // used to be LGG Proxy, more correct
}
else if(tag == LLUUID("54d93609-1392-2a93-255c-a9dd429ecca5"))
{
mClientTag = "Emergence";
}
else if(tag == LLUUID("8873757c-092a-98fb-1afd-ecd347566fcd"))
{
mClientTag = "Ascent";
}
else if(tag == LLUUID("734fed29-4c51-63e5-1648-6589949d7585"))
{
mClientTag = "Explicit";
}
else if(tag == LLUUID("b33b69ae-6b6c-b395-0175-ce76a871173b"))
{
mClientTag = "Nicholas";
}
else if(tag == LLUUID("f25263b7-6167-4f34-a4ef-af65213b2e39"))
{
mClientTag = "Singularity";
}
// Nothing found
else
mClientTag = "";
}
//-----------------------------------------------------------------------------
@ -7149,38 +7029,24 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
// dumpAvatarTEs( "POST processAvatarAppearance()" );
// <clientTags>
//Wolfspirit: Read the UUID, system and Texturecolor
LLTextureEntry* tex = getTE(0);
const LLUUID tag_uuid = tex->getID();
bool new_system=false;
if(tex->getGlow() > 0.0f){
new_system=true;
}
// Wolfspirit: Only resolve the Client via a list, when we want it to do that.
if(gSavedSettings.getS32("FSUseLegacyClienttags")>0) resolveClient(tag_uuid); // sets mClientTag
// Wolfspirit: Don't use old Version if we have a texture glow more then 0.0f (we are using the new System)
if (mClientTag != "" && !(tex->getGlow() > 0.0f))
{
//llinfos << "LLVOAvatar::processAvatarAppearance() Detected ClientTag=" << mClientTag << llendl;
mNameString.clear();
}
else if(tex->getGlow() > 0.0f)
{
// Wolfspirit: New Clienttag Version. Set Color and Text based on the Texture.
U32 tag_len = strnlen((const char*)&tag_uuid.mData[0], UUID_BYTES);
mClientTag = std::string((const char*)&tag_uuid.mData[0], tag_len);
mClientTagColor = tex->getColor();
mHasClientTagColor=true;
LLStringFn::replace_ascii_controlchars(mClientTag, LL_UNKNOWN_CHAR);
//llinfos << "LLVOAvatar::processAvatarAppearance() Detected ClientTag=" << mClientTag << llendl;
mNameString.clear();
}
else
{
mNameString.clear();
mHasClientTagColor=false;
}
//WS: Write them into an LLSD map
mClientTagData["uuid"]=tag_uuid.asString();
mClientTagData["id_based"]=new_system;
mClientTagData["tex_color"]=tex->getColor().getValue();
//WS: Clear mNameString to force a rebuild
mNameString.clear();
// </clientTags>
// prevent the overwriting of valid baked textures with invalid baked textures
for (U8 baked_index = 0; baked_index < mBakedTextureDatas.size(); baked_index++)
{

View File

@ -847,10 +847,8 @@ protected:
static void getAnimLabels(LLDynamicArray<std::string>* labels);
static void getAnimNames(LLDynamicArray<std::string>* names);
private:
void resolveClient(const LLUUID tag);
std::string mNameString; // UTF-8 title + name + status
std::string mClientTag;
LLColor4 mClientTagColor;
LLSD mClientTagData;
bool mHasClientTagColor;
std::string mTitle;
bool mNameAway;

View File

@ -8,6 +8,7 @@
#include "lggbeammapfloater.h"
#include "lggbeamcolormapfloater.h"
#include "lggautocorrectfloater.h"
#include "llvoavatar.h"
static LLRegisterPanelClassWrapper<PanelPreferenceFirestorm> t_pref_fs("panel_preference_firestorm");
@ -17,6 +18,7 @@ PanelPreferenceFirestorm::PanelPreferenceFirestorm() : LLPanelPreference(), m_ca
BOOL PanelPreferenceFirestorm::postBuild()
{
// LGG's Color Beams
refreshBeamLists();
@ -64,18 +66,33 @@ BOOL PanelPreferenceFirestorm::postBuild()
{
m_aoLineEditor->setEnabled(FALSE);
}
//WS: Set the combo_box vars and refresh/reload them
m_UseLegacyClienttags = getChild<LLComboBox>("UseLegacyClienttags");
m_ColorClienttags = getChild<LLComboBox>("ColorClienttags");
m_ClientTagsVisibility = getChild<LLComboBox>("ClientTagsVisibility");
refreshTagCombos();
return LLPanelPreference::postBuild();
}
void PanelPreferenceFirestorm::apply()
{
//WS: Apply the combo_boxes for tags
applyTagCombos();
}
void PanelPreferenceFirestorm::cancel()
{
//WS: Refresh/Reload the Combo_boxes for tags to show the right setting.
refreshTagCombos();
}
void PanelPreferenceFirestorm::refreshBeamLists()
{
LLComboBox* comboBox = getChild<LLComboBox>("PhoenixBeamShape_combo");
@ -168,4 +185,43 @@ void PanelPreferenceFirestorm::onBeamDelete()
void PanelPreferenceFirestorm::onAutoCorrectSettings()
{
LGGAutoCorrectFloater::showFloater();
}
void PanelPreferenceFirestorm::refreshTagCombos()
{
//WS: Set the combo_boxes to the right value
U32 usel_u = gSavedSettings.getU32("FSUseLegacyClienttags");
U32 tagv_u = gSavedSettings.getU32("FSClientTagsVisibility");
U32 tagc_u = gSavedSettings.getU32("FSColorClienttags");
std::string usel = llformat("%d",usel_u);
std::string tagv = llformat("%d",tagv_u);
std::string tagc = llformat("%d",tagc_u);
m_UseLegacyClienttags->setCurrentByIndex(usel_u);
m_ColorClienttags->setCurrentByIndex(tagc_u);
m_ClientTagsVisibility->setCurrentByIndex(tagv_u);
}
void PanelPreferenceFirestorm::applyTagCombos()
{
//WS: If the user hits "apply" then write everything (if something changed) into the Debug Settings
if(gSavedSettings.getU32("FSUseLegacyClienttags")!=m_UseLegacyClienttags->getCurrentIndex()
|| gSavedSettings.getU32("FSColorClienttags")!=m_ColorClienttags->getCurrentIndex()
|| gSavedSettings.getU32("FSClientTagsVisibility")!=m_ClientTagsVisibility->getCurrentIndex()){
gSavedSettings.setU32("FSUseLegacyClienttags",m_UseLegacyClienttags->getCurrentIndex());
gSavedSettings.setU32("FSColorClienttags",m_ColorClienttags->getCurrentIndex());
gSavedSettings.setU32("FSClientTagsVisibility",m_ClientTagsVisibility->getCurrentIndex());
//WS: Clear all nametags to make everything display properly!
LLVOAvatar::invalidateNameTags();
}
}

View File

@ -21,6 +21,10 @@ public:
void onAutoCorrectSettings();
void refreshTagCombos();
void applyTagCombos();
protected:
LLLineEditor* m_calcLineEditor;
LLLineEditor* m_acLineEditor;
@ -28,5 +32,9 @@ protected:
LLLineEditor* m_clearchatLineEditor;
LLLineEditor* m_musicLineEditor;
LLLineEditor* m_aoLineEditor;
LLComboBox* m_UseLegacyClienttags;
LLComboBox* m_ColorClienttags;
LLComboBox* m_ClientTagsVisibility;
};
#endif

View File

@ -1761,5 +1761,108 @@
control_name="FSSaveInventoryScriptsAsMono"/>
</panel>
<!--Tags-->
<panel
top_pad="5"
bottom="-1"
left="1"
right="-1"
follows="all"
label="Tags"
name="TagTab">
<text
type="string"
length="1"
follows="left|top"
height="15"
layout="topleft"
left="20"
name="whattagstoshow"
top_pad="20"
width="220">
What tags do you want to see?
</text>
<combo_box
follows="left|top"
height="23"
layout="topleft"
left_pad="2"
max_chars="135"
width="220"
allow_text_entry="false"
name="ClientTagsVisibility">
<combo_item name="No Viewertags" value="0">No Viewertags</combo_item>
<combo_item name="TPVD Viewer" value="1">TPVD Viewers (using a list)</combo_item>
<combo_item name="All known Viewers" value="2">All known Viewers (using a list)</combo_item>
<combo_item name="All Viewers" value="3">All Viewers</combo_item>
</combo_box>
<text
type="string"
length="1"
follows="left|top"
height="15"
layout="topleft"
left="20"
name="colorbasedonviewer"
top_pad="10"
width="220">
Tag Color based on Viewer?
</text>
<combo_box
follows="left|top"
height="23"
layout="topleft"
left_pad="2"
max_chars="135"
width="220"
allow_text_entry="false"
name="ColorClienttags">
<combo_item name="Color not based on Viewer" value="0">Color not based on Viewer</combo_item>
<combo_item name="Single color per Viewer" value="1">Single color per Viewer</combo_item>
<combo_item name="Multiple colors per Viewer" value="2">Multiple colors per Viewer</combo_item>
<combo_item name="Userdefined color" value="3">Userdefined Color</combo_item>
</combo_box>
<text
type="string"
length="1"
follows="left|top"
height="15"
layout="topleft"
left="20"
name="uselistfortags"
top_pad="10"
width="220">
Use a list to display Viewertags?
</text>
<combo_box
follows="left|top"
height="23"
layout="topleft"
left_pad="2"
max_chars="135"
width="220"
allow_text_entry="false"
name="UseLegacyClienttags">
<combo_item name="Don't use a list" value="0">Don't use a list</combo_item>
<combo_item name="Local Clienttags" value="1">Local Tag List</combo_item>
<combo_item name="Download Clienttags" value="2">Download Tag List at Viewer Start</combo_item>
</combo_box>
</panel>
</tab_container>
</panel>

View File

@ -313,15 +313,6 @@
function="FS.ToggleSortContacts" />
</check_box>
<check_box
control_name="ShowViewerIDsOnNameTag"
height="16"
label="Show Viewer ID"
layout="topleft"
left_pad="50"
name="show_viewerID"
tool_tip="Shows the name of the avatar's detected viewer next to their name (delayed effect)" />
<text
type="string"
length="1"