Merge branch 'master' of git://github.com/siana/SingularityViewer.git
This commit is contained in:
@@ -36,6 +36,8 @@
|
||||
#include "lluuid.h"
|
||||
#include "lltransactionflags.h"
|
||||
#include "lltransactiontypes.h"
|
||||
|
||||
#include "../newview/hippogridmanager.h"
|
||||
|
||||
const U8 TRANSACTION_FLAGS_NONE = 0;
|
||||
const U8 TRANSACTION_FLAG_SOURCE_GROUP = 1;
|
||||
@@ -114,7 +116,7 @@ std::string build_transfer_message_to_source(
|
||||
std::ostringstream ostr;
|
||||
if(dest_id.isNull())
|
||||
{
|
||||
ostr << "You paid L$" << amount;
|
||||
ostr << "You paid " << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() << amount;
|
||||
switch(transaction_type)
|
||||
{
|
||||
case TRANS_GROUP_CREATE:
|
||||
@@ -132,7 +134,7 @@ std::string build_transfer_message_to_source(
|
||||
}
|
||||
else
|
||||
{
|
||||
ostr << "You paid " << dest_name << " L$" << amount;
|
||||
ostr << "You paid " << dest_name << ' ' << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() << amount;
|
||||
append_reason(ostr, transaction_type, description);
|
||||
}
|
||||
ostr << ".";
|
||||
@@ -160,7 +162,7 @@ std::string build_transfer_message_to_destination(
|
||||
return description;
|
||||
}
|
||||
std::ostringstream ostr;
|
||||
ostr << source_name << " paid you L$" << amount;
|
||||
ostr << source_name << " paid you " << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() << amount;
|
||||
append_reason(ostr, transaction_type, description);
|
||||
ostr << ".";
|
||||
return ostr.str();
|
||||
|
||||
@@ -37,6 +37,8 @@
|
||||
|
||||
#include "llnotifications.h"
|
||||
|
||||
#include "../newview/hippogridmanager.h"
|
||||
|
||||
#include <algorithm>
|
||||
#if LL_MSVC
|
||||
#pragma warning( disable : 4265 ) // "class has virtual functions, but destructor is not virtual"
|
||||
@@ -605,7 +607,14 @@ void LLNotification::init(const std::string& template_name, const LLSD& form_ele
|
||||
|
||||
// add default substitutions
|
||||
// TODO: change this to read from the translatable strings file!
|
||||
mSubstitutions["SECOND_LIFE"] = "Second Life";
|
||||
mSubstitutions["[SECOND_LIFE]"] = "Second Life";
|
||||
mSubstitutions["[VIEWER_NAME]"] = LLNotifications::instance().getGlobalString("VIEWER_NAME");
|
||||
mSubstitutions["[VIEWER_SITE]"] = LLNotifications::instance().getGlobalString("VIEWER_SITE");
|
||||
|
||||
mSubstitutions["[GRID_NAME]"] = gHippoGridManager->getConnectedGrid()->getGridName();
|
||||
mSubstitutions["[GRID_SITE]"] = gHippoGridManager->getConnectedGrid()->getWebSite();
|
||||
mSubstitutions["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
mSubstitutions["_URL"] = getURL();
|
||||
mSubstitutions["_NAME"] = template_name;
|
||||
// TODO: something like this so that a missing alert is sensible:
|
||||
|
||||
@@ -579,7 +579,7 @@ void LLDir::setChatLogsDir(const std::string &path)
|
||||
}
|
||||
}
|
||||
|
||||
void LLDir::setPerAccountChatLogsDir(const std::string &first, const std::string &last)
|
||||
void LLDir::setPerAccountChatLogsDir(const std::string &grid, const std::string &first, const std::string &last)
|
||||
{
|
||||
// if both first and last aren't set, assume we're grabbing the cached dir
|
||||
if (!first.empty() && !last.empty())
|
||||
@@ -595,6 +595,14 @@ void LLDir::setPerAccountChatLogsDir(const std::string &first, const std::string
|
||||
mPerAccountChatLogsDir += firstlower;
|
||||
mPerAccountChatLogsDir += "_";
|
||||
mPerAccountChatLogsDir += lastlower;
|
||||
|
||||
if (!grid.empty())
|
||||
{
|
||||
std::string gridlower(grid);
|
||||
LLStringUtil::toLower(gridlower);
|
||||
mPerAccountChatLogsDir += "@";
|
||||
mPerAccountChatLogsDir += gridlower;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -130,7 +130,7 @@ class LLDir
|
||||
static std::string getForbiddenFileChars();
|
||||
|
||||
virtual void setChatLogsDir(const std::string &path); // Set the chat logs dir to this user's dir
|
||||
virtual void setPerAccountChatLogsDir(const std::string &first, const std::string &last); // Set the per user chat log directory.
|
||||
virtual void setPerAccountChatLogsDir(const std::string &grid, const std::string &first, const std::string &last); // Set the per user chat log directory.
|
||||
virtual void setLindenUserDir(const std::string &first, const std::string &last); // Set the linden user dir to this user's dir
|
||||
virtual void setSkinFolder(const std::string &skin_folder);
|
||||
virtual bool setCacheDir(const std::string &path);
|
||||
|
||||
@@ -8,6 +8,18 @@
|
||||
<string>settings_sh.xml</string>
|
||||
<string>settings_rlv.xml</string>
|
||||
</array>
|
||||
|
||||
<key>LastSelectedGrid</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Last grid selected from the grid pulldown</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string />
|
||||
</map>
|
||||
|
||||
<key>CheckForGridUpdates</key>
|
||||
<map>
|
||||
@@ -10007,6 +10019,19 @@
|
||||
<key>Value</key>
|
||||
<string>http://search.secondlife.com/client_search.php?</string>
|
||||
</map>
|
||||
<key>SearchURLDefaultOpenSim</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>URL to load for empty OpenSim searches</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>HideFromEditor</key>
|
||||
<integer>0</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>http://webi.metaverseink.com/opensim/results.jsp?</string>
|
||||
</map>
|
||||
<key>SearchURLQuery</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
// Ported to Imprudence from the Hippo OpenSim Viewer by Jacek Antonelli
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
#include <cctype>
|
||||
#include <climits>
|
||||
#include <cstring>
|
||||
#include <algorithm>
|
||||
|
||||
#include <stdtypes.h>
|
||||
#include "lldir.h"
|
||||
#include "lleconomy.h"
|
||||
#include "llerror.h"
|
||||
#include "llfile.h"
|
||||
#include "llhttpclient.h"
|
||||
#include "llsdserialize.h"
|
||||
#include <lldir.h>
|
||||
#include <lleconomy.h>
|
||||
#include <llerror.h>
|
||||
#include <llfile.h>
|
||||
#include <llhttpclient.h>
|
||||
#include <llsdserialize.h>
|
||||
#include "lltrans.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llweb.h"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// ********************************************************************
|
||||
// Global Variables
|
||||
|
||||
HippoGridManager *gHippoGridManager = 0;
|
||||
HippoGridManager* gHippoGridManager = 0;
|
||||
|
||||
HippoGridInfo HippoGridInfo::FALLBACK_GRIDINFO("");
|
||||
|
||||
@@ -39,82 +39,352 @@ HippoGridInfo HippoGridInfo::FALLBACK_GRIDINFO("");
|
||||
// ********************************************************************
|
||||
// Initialize
|
||||
|
||||
HippoGridInfo::HippoGridInfo(const std::string &gridNick) :
|
||||
mPlatform(PLATFORM_OTHER),
|
||||
HippoGridInfo::HippoGridInfo(const std::string& gridNick) :
|
||||
mPlatform(PLATFORM_OPENSIM),
|
||||
mGridNick(gridNick),
|
||||
mGridName(LLStringUtil::null),
|
||||
mLoginUri(LLStringUtil::null),
|
||||
mLoginPage(LLStringUtil::null),
|
||||
mHelperUri(LLStringUtil::null),
|
||||
mWebSite(LLStringUtil::null),
|
||||
mSupportUrl(LLStringUtil::null),
|
||||
mRegisterUrl(LLStringUtil::null),
|
||||
mPasswordUrl(LLStringUtil::null),
|
||||
mSearchUrl(LLStringUtil::null),
|
||||
mFirstName(LLStringUtil::null),
|
||||
mLastName(LLStringUtil::null),
|
||||
mAvatarPassword(LLStringUtil::null),
|
||||
mXmlState(XML_VOID),
|
||||
mVoiceConnector("SLVoice"),
|
||||
mRenderCompat(true),
|
||||
mMaxAgentGroups(-1),
|
||||
mVersion(0),
|
||||
mCurrencySymbol("OS$"),
|
||||
mRealCurrencySymbol("US$"),
|
||||
mDirectoryFee(30)
|
||||
{
|
||||
cleanUpGridNick(mGridNick);
|
||||
std::string nick = gridNick;
|
||||
mGridNick = sanitizeGridNick( nick );
|
||||
}
|
||||
|
||||
|
||||
// ********************************************************************
|
||||
// Getters
|
||||
|
||||
HippoGridInfo::Platform HippoGridInfo::getPlatform()
|
||||
{
|
||||
return mPlatform;
|
||||
}
|
||||
|
||||
bool HippoGridInfo::isOpenSimulator() const
|
||||
{
|
||||
return (mPlatform == HippoGridInfo::PLATFORM_OPENSIM);
|
||||
}
|
||||
|
||||
bool HippoGridInfo::isSecondLife() const
|
||||
{
|
||||
return (mPlatform == HippoGridInfo::PLATFORM_SECONDLIFE);
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getGridNick() const
|
||||
{
|
||||
return mGridNick;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getGridName() const
|
||||
{
|
||||
return mGridName;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getLoginUri() const
|
||||
{
|
||||
return mLoginUri;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getLoginPage() const
|
||||
{
|
||||
return mLoginPage;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getHelperUri() const
|
||||
{
|
||||
return mHelperUri;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getWebSite() const
|
||||
{
|
||||
return mWebSite;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getSupportUrl() const
|
||||
{
|
||||
return mSupportUrl;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getRegisterUrl() const
|
||||
{
|
||||
return mRegisterUrl;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getPasswordUrl() const
|
||||
{
|
||||
return mPasswordUrl;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getSearchUrl() const
|
||||
{
|
||||
return mSearchUrl;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getFirstName() const
|
||||
{
|
||||
return mFirstName;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getLastName() const
|
||||
{
|
||||
return mLastName;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getAvatarPassword() const
|
||||
{
|
||||
return mAvatarPassword;
|
||||
}
|
||||
|
||||
bool HippoGridInfo::isRenderCompat() const
|
||||
{
|
||||
return mRenderCompat;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getCurrencySymbol() const
|
||||
{
|
||||
return mCurrencySymbol;
|
||||
}
|
||||
|
||||
const std::string& HippoGridInfo::getRealCurrencySymbol() const
|
||||
{
|
||||
return mRealCurrencySymbol;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ********************************************************************
|
||||
// Setters
|
||||
|
||||
void HippoGridInfo::setPlatform(Platform platform)
|
||||
{
|
||||
mPlatform = platform;
|
||||
if (mPlatform == PLATFORM_SECONDLIFE) mCurrencySymbol = "L$";
|
||||
if (mPlatform == PLATFORM_SECONDLIFE)
|
||||
{
|
||||
mCurrencySymbol = "L$";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void HippoGridInfo::setPlatform(const std::string &platform)
|
||||
void HippoGridInfo::setPlatform(const std::string& platform)
|
||||
{
|
||||
std::string tmp = platform;
|
||||
for (unsigned i=0; i<platform.size(); i++)
|
||||
tmp[i] = tolower(tmp[i]);
|
||||
|
||||
if (tmp == "opensim") {
|
||||
if (tmp == "opensim")
|
||||
{
|
||||
setPlatform(PLATFORM_OPENSIM);
|
||||
} else if (tmp == "secondlife") {
|
||||
}
|
||||
else if (tmp == "secondlife")
|
||||
{
|
||||
setPlatform(PLATFORM_SECONDLIFE);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
setPlatform(PLATFORM_OTHER);
|
||||
llwarns << "Unknown platform '" << platform << "'." << llendl;
|
||||
}
|
||||
}
|
||||
|
||||
void HippoGridInfo::setGridName(const std::string& gridName)
|
||||
{
|
||||
mGridName = gridName;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setLoginUri(const std::string& loginUri)
|
||||
{
|
||||
std::string uri = loginUri;
|
||||
mLoginUri = sanitizeUri(uri);
|
||||
}
|
||||
|
||||
void HippoGridInfo::setLoginPage(const std::string& loginPage)
|
||||
{
|
||||
mLoginPage = loginPage;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setHelperUri(const std::string& helperUri)
|
||||
{
|
||||
std::string uri = helperUri;
|
||||
mHelperUri = sanitizeUri(uri);
|
||||
}
|
||||
|
||||
void HippoGridInfo::setWebSite(const std::string& website)
|
||||
{
|
||||
mWebSite = website;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setSupportUrl(const std::string& url)
|
||||
{
|
||||
mSupportUrl = url;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setRegisterUrl(const std::string& url)
|
||||
{
|
||||
mRegisterUrl = url;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setPasswordUrl(const std::string& url)
|
||||
{
|
||||
mPasswordUrl = url;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setSearchUrl(const std::string& url)
|
||||
{
|
||||
mSearchUrl = url;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setFirstName(const std::string& firstName)
|
||||
{
|
||||
mFirstName = firstName;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setLastName(const std::string& lastName)
|
||||
{
|
||||
mLastName = lastName;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setAvatarPassword(const std::string& avatarPassword)
|
||||
{
|
||||
mAvatarPassword = avatarPassword;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setRenderCompat(bool compat)
|
||||
{
|
||||
mRenderCompat = compat;
|
||||
}
|
||||
|
||||
void HippoGridInfo::setCurrencySymbol(const std::string& sym)
|
||||
{
|
||||
mCurrencySymbol = sym.substr(0, 3);
|
||||
}
|
||||
|
||||
void HippoGridInfo::setRealCurrencySymbol(const std::string& sym)
|
||||
{
|
||||
mRealCurrencySymbol = sym.substr(0, 3);
|
||||
}
|
||||
|
||||
void HippoGridInfo::setDirectoryFee(int fee)
|
||||
{
|
||||
mDirectoryFee = fee;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ********************************************************************
|
||||
// Grid Info
|
||||
|
||||
std::string HippoGridInfo::getSearchUrl(SearchType ty) const
|
||||
std::string HippoGridInfo::getSearchUrl(SearchType ty, bool is_web) const
|
||||
{
|
||||
if ((mPlatform == PLATFORM_SECONDLIFE) || mSearchUrl.empty()) {
|
||||
// Second Life defaults
|
||||
if (ty == SEARCH_ALL_EMPTY) {
|
||||
return gSavedSettings.getString("SearchURLDefault");
|
||||
} else if (ty == SEARCH_ALL_QUERY) {
|
||||
return gSavedSettings.getString("SearchURLQuery");
|
||||
} else if (ty == SEARCH_ALL_TEMPLATE) {
|
||||
return gSavedSettings.getString("SearchURLSuffix2");
|
||||
} else {
|
||||
llinfos << "Illegal search URL type " << ty << llendl;
|
||||
return "";
|
||||
// Don't worry about whether or not mSearchUrl is empty here anymore -- MC
|
||||
if (is_web)
|
||||
{
|
||||
if (mPlatform == PLATFORM_SECONDLIFE)
|
||||
{
|
||||
// Second Life defaults
|
||||
if (ty == SEARCH_ALL_EMPTY)
|
||||
{
|
||||
return gSavedSettings.getString("SearchURLDefault");
|
||||
}
|
||||
else if (ty == SEARCH_ALL_QUERY)
|
||||
{
|
||||
return gSavedSettings.getString("SearchURLQuery");
|
||||
}
|
||||
else if (ty == SEARCH_ALL_TEMPLATE)
|
||||
{
|
||||
return gSavedSettings.getString("SearchURLSuffix2");
|
||||
}
|
||||
else
|
||||
{
|
||||
llinfos << "Illegal search URL type " << ty << llendl;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// OpenSim and other
|
||||
if (ty == SEARCH_ALL_EMPTY) {
|
||||
return (mSearchUrl + "panel=All&");
|
||||
} else if (ty == SEARCH_ALL_QUERY) {
|
||||
return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&");
|
||||
} else if (ty == SEARCH_ALL_TEMPLATE) {
|
||||
return "lang=[LANG]&m=[MATURE]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]";
|
||||
} else {
|
||||
llinfos << "Illegal search URL type " << ty << llendl;
|
||||
return "";
|
||||
else if (!mSearchUrl.empty())
|
||||
{
|
||||
// Search url sent to us in the login response
|
||||
if (ty == SEARCH_ALL_EMPTY)
|
||||
{
|
||||
return (mSearchUrl);
|
||||
}
|
||||
else if (ty == SEARCH_ALL_QUERY)
|
||||
{
|
||||
return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&");
|
||||
}
|
||||
else if (ty == SEARCH_ALL_TEMPLATE)
|
||||
{
|
||||
return "lang=[LANG]&mat=[MATURITY]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]";
|
||||
}
|
||||
else
|
||||
{
|
||||
llinfos << "Illegal search URL type " << ty << llendl;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// OpenSim and other web search defaults
|
||||
if (ty == SEARCH_ALL_EMPTY)
|
||||
{
|
||||
return gSavedSettings.getString("SearchURLDefaultOpenSim");
|
||||
}
|
||||
else if (ty == SEARCH_ALL_QUERY)
|
||||
{
|
||||
return gSavedSettings.getString("SearchURLQueryOpenSim");
|
||||
}
|
||||
else if (ty == SEARCH_ALL_TEMPLATE)
|
||||
{
|
||||
return gSavedSettings.getString("SearchURLSuffixOpenSim");
|
||||
}
|
||||
else
|
||||
{
|
||||
llinfos << "Illegal search URL type " << ty << llendl;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use the old search all
|
||||
if (ty == SEARCH_ALL_EMPTY)
|
||||
{
|
||||
return (mSearchUrl + "panel=All&");
|
||||
}
|
||||
else if (ty == SEARCH_ALL_QUERY)
|
||||
{
|
||||
return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&");
|
||||
}
|
||||
else if (ty == SEARCH_ALL_TEMPLATE)
|
||||
{
|
||||
return "lang=[LANG]&m=[MATURITY]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]";
|
||||
}
|
||||
else
|
||||
{
|
||||
llinfos << "Illegal search URL type " << ty << llendl;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
void HippoGridInfo::onXmlElementStart(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
void HippoGridInfo::onXmlElementStart(void* userData, const XML_Char* name, const XML_Char** atts)
|
||||
{
|
||||
HippoGridInfo *self = (HippoGridInfo*)userData;
|
||||
HippoGridInfo* self = (HippoGridInfo*)userData;
|
||||
if (strcasecmp(name, "gridnick") == 0)
|
||||
self->mXmlState = XML_GRIDNICK;
|
||||
else if (strcasecmp(name, "gridname") == 0)
|
||||
@@ -135,48 +405,57 @@ void HippoGridInfo::onXmlElementStart(void *userData, const XML_Char *name, cons
|
||||
self->mXmlState = XML_REGISTER;
|
||||
else if (strcasecmp(name, "password") == 0)
|
||||
self->mXmlState = XML_PASSWORD;
|
||||
//else if (strcasecmp(name, "search") == 0)
|
||||
//self->mXmlState = XML_SEARCH;
|
||||
else if (strcasecmp(name, "search") == 0)
|
||||
self->mXmlState = XML_SEARCH;
|
||||
}
|
||||
|
||||
//static
|
||||
void HippoGridInfo::onXmlElementEnd(void *userData, const XML_Char *name)
|
||||
void HippoGridInfo::onXmlElementEnd(void* userData, const XML_Char* name)
|
||||
{
|
||||
HippoGridInfo *self = (HippoGridInfo*)userData;
|
||||
HippoGridInfo* self = (HippoGridInfo*)userData;
|
||||
self->mXmlState = XML_VOID;
|
||||
}
|
||||
|
||||
//static
|
||||
void HippoGridInfo::onXmlCharacterData(void *userData, const XML_Char *s, int len)
|
||||
void HippoGridInfo::onXmlCharacterData(void* userData, const XML_Char* s, int len)
|
||||
{
|
||||
HippoGridInfo *self = (HippoGridInfo*)userData;
|
||||
switch (self->mXmlState) {
|
||||
|
||||
case XML_GRIDNICK:
|
||||
HippoGridInfo* self = (HippoGridInfo*)userData;
|
||||
switch (self->mXmlState)
|
||||
{
|
||||
case XML_GRIDNICK:
|
||||
{
|
||||
if (self->mGridNick == "") self->mGridNick.assign(s, len);
|
||||
cleanUpGridNick(self->mGridNick);
|
||||
break;
|
||||
|
||||
case XML_PLATFORM: {
|
||||
std::string platform(s, len);
|
||||
self->setPlatform(platform);
|
||||
self->mGridNick = sanitizeGridNick(self->mGridNick);
|
||||
break;
|
||||
}
|
||||
|
||||
case XML_LOGINURI:
|
||||
self->mLoginUri.assign(s, len);
|
||||
cleanUpUri(self->mLoginUri);
|
||||
case XML_PLATFORM:
|
||||
{
|
||||
std::string platform(s, len);
|
||||
self->setPlatform(platform);
|
||||
break;
|
||||
}
|
||||
|
||||
case XML_HELPERURI:
|
||||
self->mHelperUri.assign(s, len);
|
||||
cleanUpUri(self->mHelperUri);
|
||||
case XML_LOGINURI:
|
||||
{
|
||||
std::string loginuri(s, len);
|
||||
self->mLoginUri = sanitizeUri( loginuri );
|
||||
break;
|
||||
}
|
||||
|
||||
case XML_SEARCH:
|
||||
//self->mSearchUrl.assign(s, len);
|
||||
//cleanUpQueryUrl(mSearchUrl);
|
||||
case XML_HELPERURI:
|
||||
{
|
||||
std::string helperuri(s, len);
|
||||
self->mHelperUri = sanitizeUri( helperuri );
|
||||
break;
|
||||
}
|
||||
|
||||
case XML_SEARCH:
|
||||
{
|
||||
self->mSearchUrl.assign(s, len);
|
||||
//sanitizeQueryUrl(mSearchUrl);
|
||||
break;
|
||||
}
|
||||
|
||||
case XML_GRIDNAME: self->mGridName.assign(s, len); break;
|
||||
case XML_LOGINPAGE: self->mLoginPage.assign(s, len); break;
|
||||
@@ -212,7 +491,8 @@ bool HippoGridInfo::retrieveGridInfo()
|
||||
XML_SetElementHandler(parser, onXmlElementStart, onXmlElementEnd);
|
||||
XML_SetCharacterDataHandler(parser, onXmlCharacterData);
|
||||
mXmlState = XML_VOID;
|
||||
if (!XML_Parse(parser, reply.data(), reply.size(), TRUE)) {
|
||||
if (!XML_Parse(parser, reply.data(), reply.size(), TRUE))
|
||||
{
|
||||
llwarns << "XML Parse Error: " << XML_ErrorString(XML_GetErrorCode(parser)) << llendl;
|
||||
success = false;
|
||||
}
|
||||
@@ -240,15 +520,18 @@ std::string HippoGridInfo::getDirectoryFee() const
|
||||
{
|
||||
std::string fee;
|
||||
formatFee(fee, mDirectoryFee, true);
|
||||
if (fee != "free") fee += "/week";
|
||||
if (fee != LLTrans::getString("hippo_label_free")) fee += "/" + LLTrans::getString("hippo_label_week");
|
||||
return fee;
|
||||
}
|
||||
|
||||
void HippoGridInfo::formatFee(std::string &fee, int cost, bool showFree) const
|
||||
{
|
||||
if (showFree && (cost == 0)) {
|
||||
fee = "free";
|
||||
} else {
|
||||
if (showFree && (cost == 0))
|
||||
{
|
||||
fee = LLTrans::getString("hippo_label_free");
|
||||
}
|
||||
else
|
||||
{
|
||||
fee = llformat("%s%d", getCurrencySymbol().c_str(), cost);
|
||||
}
|
||||
}
|
||||
@@ -258,9 +541,10 @@ void HippoGridInfo::formatFee(std::string &fee, int cost, bool showFree) const
|
||||
// Static Helpers
|
||||
|
||||
// static
|
||||
const char *HippoGridInfo::getPlatformString(Platform platform)
|
||||
const char* HippoGridInfo::getPlatformString(Platform platform)
|
||||
{
|
||||
static const char *platformStrings[PLATFORM_LAST] = {
|
||||
static const char* platformStrings[PLATFORM_LAST] =
|
||||
{
|
||||
"Other", "OpenSim", "SecondLife"
|
||||
};
|
||||
|
||||
@@ -271,39 +555,49 @@ const char *HippoGridInfo::getPlatformString(Platform platform)
|
||||
|
||||
|
||||
// static
|
||||
void HippoGridInfo::cleanUpGridNick(std::string &gridnick)
|
||||
std::string HippoGridInfo::sanitizeGridNick(std::string &gridnick)
|
||||
{
|
||||
std::string tmp;
|
||||
int size = gridnick.size();
|
||||
for (int i=0; i<size; i++) {
|
||||
for (int i=0; i<size; i++)
|
||||
{
|
||||
char c = gridnick[i];
|
||||
if ((c == '_') || isalnum(c)) {
|
||||
if ((c == '_') || isalnum(c))
|
||||
{
|
||||
tmp += tolower(c);
|
||||
} else if (isspace(c)) {
|
||||
}
|
||||
else if (isspace(c))
|
||||
{
|
||||
tmp += "_";
|
||||
}
|
||||
}
|
||||
gridnick = tmp;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// static
|
||||
void HippoGridInfo::cleanUpUri(std::string &uri)
|
||||
std::string HippoGridInfo::sanitizeUri(std::string &uri)
|
||||
{
|
||||
std::string::size_type n = uri.rfind('/');
|
||||
if ((n == std::string::npos) || (n < 10))
|
||||
uri += '/';
|
||||
// if (uri.empty()) {
|
||||
// return "";
|
||||
// }
|
||||
|
||||
// // If last character in uri is not "/"
|
||||
// // NOTE: This wrongly assumes that all URIs should end with "/"!
|
||||
// if (uri.compare(uri.length()-1, 1, "/") != 0) {
|
||||
// return uri + '/';
|
||||
// }
|
||||
|
||||
return uri;
|
||||
}
|
||||
|
||||
|
||||
void HippoGridInfo::initFallback()
|
||||
{
|
||||
FALLBACK_GRIDINFO.mGridNick = "secondlife";
|
||||
FALLBACK_GRIDINFO.setPlatform(PLATFORM_SECONDLIFE);
|
||||
FALLBACK_GRIDINFO.setGridName("secondlife");
|
||||
FALLBACK_GRIDINFO.setLoginUri("https://login.agni.lindenlab.com/cgi-bin/login.cgi");
|
||||
FALLBACK_GRIDINFO.setLoginPage("http://phoenixviewer.com/app/login/");
|
||||
FALLBACK_GRIDINFO.setHelperUri("https://secondlife.com/helpers/");
|
||||
FALLBACK_GRIDINFO.setWebSite("http://secondlife.com/");
|
||||
FALLBACK_GRIDINFO.mGridNick = "localhost";
|
||||
FALLBACK_GRIDINFO.setPlatform(PLATFORM_OPENSIM);
|
||||
FALLBACK_GRIDINFO.setGridName("Local Host");
|
||||
FALLBACK_GRIDINFO.setLoginUri("http://127.0.0.1:9000/");
|
||||
FALLBACK_GRIDINFO.setHelperUri("http://127.0.0.1:9000/");
|
||||
}
|
||||
|
||||
|
||||
@@ -319,7 +613,10 @@ void HippoGridInfo::initFallback()
|
||||
// Initialize
|
||||
|
||||
HippoGridManager::HippoGridManager() :
|
||||
mConnectedGrid(0)
|
||||
mConnectedGrid(0),
|
||||
mDefaultGridsVersion(0),
|
||||
mCurrentGrid("osgrid"),
|
||||
mDefaultGrid("osgrid")
|
||||
{
|
||||
}
|
||||
|
||||
@@ -332,7 +629,8 @@ HippoGridManager::~HippoGridManager()
|
||||
void HippoGridManager::cleanup()
|
||||
{
|
||||
std::map<std::string, HippoGridInfo*>::iterator it, end = mGridInfo.end();
|
||||
for (it=mGridInfo.begin(); it != end; ++it) {
|
||||
for (it=mGridInfo.begin(); it != end; ++it)
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
mGridInfo.clear();
|
||||
@@ -351,42 +649,82 @@ void HippoGridManager::init()
|
||||
}
|
||||
|
||||
|
||||
void HippoGridManager::discardAndReload()
|
||||
{
|
||||
cleanup();
|
||||
loadFromFile();
|
||||
}
|
||||
|
||||
|
||||
// ********************************************************************
|
||||
// Public Access
|
||||
|
||||
HippoGridInfo *HippoGridManager::getGrid(const std::string &grid) const
|
||||
HippoGridInfo* HippoGridManager::getGrid(const std::string& grid) const
|
||||
{
|
||||
std::map<std::string, HippoGridInfo*>::const_iterator it;
|
||||
it = mGridInfo.find(grid);
|
||||
if (it != mGridInfo.end()) {
|
||||
if (it != mGridInfo.end())
|
||||
{
|
||||
return it->second;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
HippoGridInfo *HippoGridManager::getCurrentGrid() const
|
||||
HippoGridInfo* HippoGridManager::getConnectedGrid() const
|
||||
{
|
||||
HippoGridInfo *grid = getGrid(mCurrentGrid);
|
||||
if (grid) {
|
||||
return (mConnectedGrid)? mConnectedGrid: getCurrentGrid();
|
||||
}
|
||||
|
||||
|
||||
HippoGridInfo* HippoGridManager::getCurrentGrid() const
|
||||
{
|
||||
HippoGridInfo* grid = getGrid(mCurrentGrid);
|
||||
if (grid)
|
||||
{
|
||||
return grid;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
return &HippoGridInfo::FALLBACK_GRIDINFO;
|
||||
}
|
||||
}
|
||||
|
||||
const std::string& HippoGridManager::getDefaultGridNick() const
|
||||
{
|
||||
return mDefaultGrid;
|
||||
}
|
||||
|
||||
void HippoGridManager::addGrid(HippoGridInfo *grid)
|
||||
const std::string& HippoGridManager::getCurrentGridNick() const
|
||||
{
|
||||
if (mCurrentGrid.empty())
|
||||
{
|
||||
return mDefaultGrid;
|
||||
}
|
||||
return mCurrentGrid;
|
||||
}
|
||||
|
||||
void HippoGridManager::setCurrentGridAsConnected()
|
||||
{
|
||||
mConnectedGrid = getCurrentGrid();
|
||||
}
|
||||
|
||||
|
||||
void HippoGridManager::addGrid(HippoGridInfo* grid)
|
||||
{
|
||||
if (!grid) return;
|
||||
const std::string &nick = grid->getGridNick();
|
||||
if (nick == "") {
|
||||
const std::string& nick = grid->getGridNick();
|
||||
if (nick == "")
|
||||
{
|
||||
llwarns << "Ignoring to try adding grid with empty nick." << llendl;
|
||||
delete grid;
|
||||
return;
|
||||
}
|
||||
if (mGridInfo.find(nick) != mGridInfo.end()) {
|
||||
if (mGridInfo.find(nick) != mGridInfo.end())
|
||||
{
|
||||
llwarns << "Ignoring to try adding existing grid " << nick << '.' << llendl;
|
||||
delete grid;
|
||||
return;
|
||||
@@ -395,7 +733,7 @@ void HippoGridManager::addGrid(HippoGridInfo *grid)
|
||||
}
|
||||
|
||||
|
||||
void HippoGridManager::deleteGrid(const std::string &grid)
|
||||
void HippoGridManager::deleteGrid(const std::string& grid)
|
||||
{
|
||||
GridIterator it = mGridInfo.find(grid);
|
||||
if (it == mGridInfo.end()) {
|
||||
@@ -406,35 +744,45 @@ void HippoGridManager::deleteGrid(const std::string &grid)
|
||||
llinfos << "Number of grids now: " << mGridInfo.size() << llendl;
|
||||
if (mGridInfo.empty()) llinfos << "Grid info map is empty." << llendl;
|
||||
if (grid == mDefaultGrid)
|
||||
setDefaultGrid(""); // sets first grid, if map not empty
|
||||
setDefaultGrid(LLStringUtil::null); // sets first grid, if map not empty
|
||||
if (grid == mCurrentGrid)
|
||||
mCurrentGrid = mDefaultGrid;
|
||||
}
|
||||
|
||||
|
||||
void HippoGridManager::setDefaultGrid(const std::string &grid)
|
||||
void HippoGridManager::setDefaultGrid(const std::string& grid)
|
||||
{
|
||||
GridIterator it = mGridInfo.find(grid);
|
||||
if (it != mGridInfo.end()) {
|
||||
if (it != mGridInfo.end())
|
||||
{
|
||||
mDefaultGrid = grid;
|
||||
} else if (mGridInfo.find("secondlife") != mGridInfo.end()) {
|
||||
}
|
||||
else if (mGridInfo.find("secondlife") != mGridInfo.end())
|
||||
{
|
||||
mDefaultGrid = "secondlife";
|
||||
} else if (!mGridInfo.empty()) {
|
||||
mDefaultGrid = mGridInfo.begin()->first;
|
||||
} else {
|
||||
}
|
||||
else if (!mGridInfo.empty())
|
||||
{
|
||||
mDefaultGrid = mGridInfo.begin()->first;
|
||||
}
|
||||
else
|
||||
{
|
||||
mDefaultGrid = "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void HippoGridManager::setCurrentGrid(const std::string &grid)
|
||||
void HippoGridManager::setCurrentGrid(const std::string& grid)
|
||||
{
|
||||
GridIterator it = mGridInfo.find(grid);
|
||||
if (it != mGridInfo.end()) {
|
||||
if (it != mGridInfo.end())
|
||||
{
|
||||
mCurrentGrid = grid;
|
||||
} else if (!mGridInfo.empty()) {
|
||||
}
|
||||
else if (!mGridInfo.empty())
|
||||
{
|
||||
llwarns << "Unknown grid '" << grid << "'. Setting to default grid." << llendl;
|
||||
mCurrentGrid = mDefaultGrid;
|
||||
mCurrentGrid = mDefaultGrid;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -444,20 +792,23 @@ void HippoGridManager::setCurrentGrid(const std::string &grid)
|
||||
|
||||
void HippoGridManager::loadFromFile()
|
||||
{
|
||||
mDefaultGridsVersion = 0;
|
||||
// load user grid info
|
||||
parseFile(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grids_sg1.xml"), false);
|
||||
// merge default grid info, if newer. Force load, if list of grids is empty.
|
||||
parseFile(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "default_grids.xml"), !mGridInfo.empty());
|
||||
// merge grid info from web site, if newer. Force load, if list of grids is empty.
|
||||
if (gSavedSettings.getBOOL("CheckForGridUpdates"))
|
||||
parseUrl("http://opensim-viewer.sourceforge.net/db/grids.php", !mGridInfo.empty());
|
||||
parseUrl(gSavedSettings.getString("GridUpdateList"), !mGridInfo.empty());
|
||||
|
||||
setDefaultGrid(gSavedSettings.getString("DefaultGrid"));
|
||||
setCurrentGrid(gSavedSettings.getString("CmdLineGridChoice"));
|
||||
std::string last_grid = gSavedSettings.getString("LastSelectedGrid");
|
||||
if (last_grid.empty()) last_grid = gSavedSettings.getString("DefaultGrid");
|
||||
setDefaultGrid(last_grid);
|
||||
setCurrentGrid(last_grid);
|
||||
}
|
||||
|
||||
|
||||
void HippoGridManager::parseUrl(const char *url, bool mergeIfNewer)
|
||||
void HippoGridManager::parseUrl(const std::string url, bool mergeIfNewer)
|
||||
{
|
||||
llinfos << "Loading grid info from '" << url << "'." << llendl;
|
||||
|
||||
@@ -467,7 +818,8 @@ void HippoGridManager::parseUrl(const char *url, bool mergeIfNewer)
|
||||
|
||||
// check response, return on error
|
||||
S32 status = response["status"].asInteger();
|
||||
if ((status != 200) || !response["body"].isArray()) {
|
||||
if ((status != 200) || !response["body"].isArray())
|
||||
{
|
||||
llinfos << "GridInfo Update failed (" << status << "): "
|
||||
<< (response["body"].isString()? response["body"].asString(): "<unknown error>")
|
||||
<< llendl;
|
||||
@@ -478,18 +830,20 @@ void HippoGridManager::parseUrl(const char *url, bool mergeIfNewer)
|
||||
parseData(gridInfo, mergeIfNewer);
|
||||
}
|
||||
|
||||
void HippoGridManager::parseFile(const std::string &fileName, bool mergeIfNewer)
|
||||
void HippoGridManager::parseFile(const std::string& fileName, bool mergeIfNewer)
|
||||
{
|
||||
llifstream infile;
|
||||
infile.open(fileName.c_str());
|
||||
if(!infile.is_open()) {
|
||||
if (!infile.is_open())
|
||||
{
|
||||
llwarns << "Cannot find grid info file " << fileName << " to load." << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
LLSD gridInfo;
|
||||
if (LLSDSerialize::fromXML(gridInfo, infile) <= 0) {
|
||||
llwarns << "Unable to parse grid info file " << fileName << '.' << llendl;
|
||||
if (LLSDSerialize::fromXML(gridInfo, infile) <= 0)
|
||||
{
|
||||
llwarns << "Unable to parse grid info file " << fileName << '.' << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -500,46 +854,66 @@ void HippoGridManager::parseFile(const std::string &fileName, bool mergeIfNewer)
|
||||
|
||||
void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer)
|
||||
{
|
||||
if (mergeIfNewer)
|
||||
{
|
||||
LLSD::array_const_iterator it, end = gridInfo.endArray();
|
||||
for (it = gridInfo.beginArray(); it != end; ++it)
|
||||
{
|
||||
LLSD gridMap = *it;
|
||||
if (gridMap.has("default_grids_version"))
|
||||
{
|
||||
int version = gridMap["default_grids_version"];
|
||||
if (version <= mDefaultGridsVersion) return;
|
||||
else break;
|
||||
}
|
||||
}
|
||||
if (it == end)
|
||||
{
|
||||
llwarns << "Grid data has no version number." << llendl;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
llinfos << "Loading grid data." << llendl;
|
||||
|
||||
LLSD::array_const_iterator it, end = gridInfo.endArray();
|
||||
for (it = gridInfo.beginArray(); it != end; ++it) {
|
||||
for (it = gridInfo.beginArray(); it != end; ++it)
|
||||
{
|
||||
LLSD gridMap = *it;
|
||||
if (gridMap.has("gridnick") && gridMap.has("loginuri")) {
|
||||
if (gridMap.has("default_grids_version"))
|
||||
{
|
||||
mDefaultGridsVersion = gridMap["default_grids_version"];
|
||||
}
|
||||
else if (gridMap.has("gridnick") && gridMap.has("loginuri"))
|
||||
{
|
||||
std::string gridnick = gridMap["gridnick"];
|
||||
HippoGridInfo *grid;
|
||||
HippoGridInfo* grid;
|
||||
GridIterator it = mGridInfo.find(gridnick);
|
||||
bool newGrid = (it == mGridInfo.end());
|
||||
if (gridMap.has("version")) {
|
||||
int version = gridMap["version"];
|
||||
if (version == -1) {
|
||||
// delete grid
|
||||
if (!newGrid) mGridInfo.erase(it);
|
||||
continue;
|
||||
} else if (mergeIfNewer && !newGrid && (version <= it->second->getVersion())) {
|
||||
// don't update if version is not newer
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (newGrid) {
|
||||
if (newGrid)
|
||||
{
|
||||
// create new grid info
|
||||
grid = new HippoGridInfo(gridnick);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
// update existing grid info
|
||||
grid = it->second;
|
||||
}
|
||||
grid->setLoginUri(gridMap["loginuri"]);
|
||||
if (gridMap.has("platform")) grid->setPlatform(gridMap["platform"]);
|
||||
if (gridMap.has("gridname")) grid->setGridName(gridMap["gridname"]);
|
||||
if (gridMap.has("lastlogin_fname")) grid->setLastFName(gridMap["lastlogin_fname"]);
|
||||
if (gridMap.has("lastlogin_lname")) grid->setLastLName(gridMap["lastlogin_lname"]);
|
||||
if (gridMap.has("loginpage")) grid->setLoginPage(gridMap["loginpage"]);
|
||||
if (gridMap.has("helperuri")) grid->setHelperUri(gridMap["helperuri"]);
|
||||
if (gridMap.has("website")) grid->setWebSite(gridMap["website"]);
|
||||
if (gridMap.has("support")) grid->setSupportUrl(gridMap["support"]);
|
||||
if (gridMap.has("register")) grid->setRegisterUrl(gridMap["register"]);
|
||||
if (gridMap.has("password")) grid->setPasswordUrl(gridMap["password"]);
|
||||
//if (gridMap.has("search")) grid->setSearchUrl(gridMap["search"]);
|
||||
if (gridMap.has("search")) grid->setSearchUrl(gridMap["search"]);
|
||||
if (gridMap.has("render_compat")) grid->setRenderCompat(gridMap["render_compat"]);
|
||||
if (gridMap.has("version")) grid->setVersion(gridMap["version"]);
|
||||
// if (gridMap.has("firstname")) grid->setFirstName(gridMap["firstname"]);
|
||||
// if (gridMap.has("lastname")) grid->setLastName(gridMap["lastname"]);
|
||||
// if (gridMap.has("avatarpassword")) grid->setAvatarPassword(gridMap["avatarpassword"]);
|
||||
if (newGrid) addGrid(grid);
|
||||
}
|
||||
}
|
||||
@@ -553,15 +927,17 @@ void HippoGridManager::saveFile()
|
||||
|
||||
// build LLSD
|
||||
LLSD gridInfo;
|
||||
S32 i = 0;
|
||||
gridInfo[0]["default_grids_version"] = mDefaultGridsVersion;
|
||||
|
||||
// add grids
|
||||
S32 i = 1;
|
||||
GridIterator it, end = mGridInfo.end();
|
||||
for (it = mGridInfo.begin(); it != end; ++it, i++) {
|
||||
HippoGridInfo *grid = it->second;
|
||||
for (it = mGridInfo.begin(); it != end; ++it, i++)
|
||||
{
|
||||
HippoGridInfo* grid = it->second;
|
||||
gridInfo[i]["gridnick"] = grid->getGridNick();
|
||||
gridInfo[i]["platform"] = HippoGridInfo::getPlatformString(grid->getPlatform());
|
||||
gridInfo[i]["gridname"] = grid->getGridName();
|
||||
if (!grid->getLastFName().empty()) gridInfo[i]["lastlogin_fname"] = grid->getLastFName();
|
||||
if (!grid->getLastLName().empty()) gridInfo[i]["lastlogin_lname"] = grid->getLastLName();
|
||||
gridInfo[i]["loginuri"] = grid->getLoginUri();
|
||||
gridInfo[i]["loginpage"] = grid->getLoginPage();
|
||||
gridInfo[i]["helperuri"] = grid->getHelperUri();
|
||||
@@ -569,20 +945,26 @@ void HippoGridManager::saveFile()
|
||||
gridInfo[i]["support"] = grid->getSupportUrl();
|
||||
gridInfo[i]["register"] = grid->getRegisterUrl();
|
||||
gridInfo[i]["password"] = grid->getPasswordUrl();
|
||||
//gridInfo[i]["search"] = grid->getSearchUrl();
|
||||
// gridInfo[i]["firstname"] = grid->getFirstName();
|
||||
// gridInfo[i]["lastname"] = grid->getLastName();
|
||||
// gridInfo[i]["avatarpassword"] = grid->getAvatarPassword();
|
||||
|
||||
gridInfo[i]["search"] = grid->getSearchUrl();
|
||||
gridInfo[i]["render_compat"] = grid->isRenderCompat();
|
||||
gridInfo[i]["version"] = grid->getVersion();
|
||||
}
|
||||
|
||||
// write client grid info file
|
||||
std::string fileName = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grids_sg1.xml");
|
||||
std::string fileName = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grid_info.xml");
|
||||
llofstream file;
|
||||
file.open(fileName.c_str());
|
||||
if (file.is_open()) {
|
||||
if (file.is_open())
|
||||
{
|
||||
LLSDSerialize::toPrettyXML(gridInfo, file);
|
||||
file.close();
|
||||
llinfos << "Saved grids to " << fileName << llendl;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
llerrs << "Unable to open grid info file: " << fileName << llendl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,11 @@
|
||||
#ifndef XML_STATIC
|
||||
#define XML_STATIC
|
||||
#endif
|
||||
|
||||
#ifdef LL_STANDALONE
|
||||
# include "expat.h"
|
||||
#include <expat.h>
|
||||
#else
|
||||
# include <expat/expat.h>
|
||||
#include "expat/expat.h"
|
||||
#endif
|
||||
|
||||
class LLSD;
|
||||
@@ -19,7 +20,6 @@ class LLSD;
|
||||
|
||||
class HippoGridInfo
|
||||
{
|
||||
LOG_CLASS(HippoGridInfo);
|
||||
public:
|
||||
enum Platform {
|
||||
PLATFORM_OTHER = 0,
|
||||
@@ -33,62 +33,63 @@ public:
|
||||
SEARCH_ALL_TEMPLATE
|
||||
};
|
||||
|
||||
explicit HippoGridInfo(const std::string &gridNick);
|
||||
explicit HippoGridInfo(const std::string& gridNick);
|
||||
|
||||
Platform getPlatform() const { return mPlatform; }
|
||||
const std::string &getGridNick() const { return mGridNick; }
|
||||
const std::string &getGridName() const { return mGridName; }
|
||||
const std::string &getLastFName() const { return mLastFName; }
|
||||
const std::string &getLastLName() const { return mLastLName; }
|
||||
const std::string &getLoginUri() const { return mLoginUri; }
|
||||
const std::string &getLoginPage() const { return mLoginPage; }
|
||||
const std::string &getHelperUri() const { return mHelperUri; }
|
||||
const std::string &getWebSite() const { return mWebSite; }
|
||||
const std::string &getSupportUrl() const { return mSupportUrl; }
|
||||
const std::string &getRegisterUrl() const { return mRegisterUrl; }
|
||||
const std::string &getPasswordUrl() const { return mPasswordUrl; }
|
||||
const std::string &getSearchUrl() const { return mSearchUrl; }
|
||||
const std::string &getVoiceConnector() const { return mVoiceConnector; }
|
||||
std::string getSearchUrl(SearchType ty) const;
|
||||
bool isRenderCompat() const { return mRenderCompat; }
|
||||
Platform getPlatform();
|
||||
bool isOpenSimulator() const;
|
||||
bool isSecondLife() const;
|
||||
const std::string& getGridNick() const;
|
||||
const std::string& getGridName() const;
|
||||
const std::string& getLoginUri() const;
|
||||
const std::string& getLoginPage() const;
|
||||
const std::string& getHelperUri() const;
|
||||
const std::string& getWebSite() const;
|
||||
const std::string& getSupportUrl() const;
|
||||
const std::string& getRegisterUrl() const;
|
||||
const std::string& getPasswordUrl() const;
|
||||
// Returns the url base used for the Web Search tab
|
||||
const std::string& getSearchUrl() const;
|
||||
const std::string& getFirstName() const;
|
||||
const std::string& getLastName() const;
|
||||
const std::string& getAvatarPassword() const;
|
||||
const std::string& getVoiceConnector() const { return mVoiceConnector; }
|
||||
std::string getSearchUrl(SearchType ty, bool is_web) const;
|
||||
bool isRenderCompat() const;
|
||||
int getMaxAgentGroups() const { return mMaxAgentGroups; }
|
||||
int getVersion() const { return mVersion; }
|
||||
|
||||
const std::string &getCurrencySymbol() const { return mCurrencySymbol; }
|
||||
const std::string &getRealCurrencySymbol() const { return mRealCurrencySymbol; }
|
||||
std::string getUploadFee() const;
|
||||
std::string getGroupCreationFee() const;
|
||||
std::string getDirectoryFee() const;
|
||||
const std::string& getCurrencySymbol() const;
|
||||
const std::string& getRealCurrencySymbol() const;
|
||||
std::string getUploadFee() const;
|
||||
std::string getGroupCreationFee() const;
|
||||
std::string getDirectoryFee() const;
|
||||
|
||||
bool isOpenSimulator() const { return (mPlatform == PLATFORM_OPENSIM ); }
|
||||
bool isSecondLife() const { return (mPlatform == PLATFORM_SECONDLIFE); }
|
||||
|
||||
void setPlatform (const std::string &platform);
|
||||
void setPlatform (Platform platform);
|
||||
void setGridName (const std::string &gridName) { mGridName = gridName; }
|
||||
void setLastFName (const std::string &firstName) { mLastFName = firstName; }
|
||||
void setLastLName (const std::string &lastName) { mLastLName = lastName; }
|
||||
void setLoginUri (const std::string &loginUri) { mLoginUri = loginUri; cleanUpUri(mLoginUri); }
|
||||
void setLoginPage (const std::string &loginPage) { mLoginPage = loginPage; }
|
||||
void setHelperUri (const std::string &helperUri) { mHelperUri = helperUri; cleanUpUri(mHelperUri); }
|
||||
void setWebSite (const std::string &website) { mWebSite = website; }
|
||||
void setSupportUrl (const std::string &url) { mSupportUrl = url; }
|
||||
void setRegisterUrl(const std::string &url) { mRegisterUrl = url; }
|
||||
void setPasswordUrl(const std::string &url) { mPasswordUrl = url; }
|
||||
void setSearchUrl (const std::string &url) { mSearchUrl = url; }
|
||||
void setRenderCompat(bool compat) { mRenderCompat = compat; }
|
||||
void setPlatform (const std::string& platform);
|
||||
void setPlatform (Platform platform);
|
||||
void setGridName (const std::string& gridName);
|
||||
void setLoginUri (const std::string& loginUri);
|
||||
void setLoginPage(const std::string& loginPage);
|
||||
void setHelperUri(const std::string& helperUri);
|
||||
void setWebSite (const std::string& website);
|
||||
void setSupportUrl(const std::string& url);
|
||||
void setRegisterUrl(const std::string& url);
|
||||
void setPasswordUrl(const std::string& url);
|
||||
// sets the url base used for the Web Search tab
|
||||
void setSearchUrl(const std::string& url);
|
||||
void setRenderCompat(bool compat);
|
||||
void setMaxAgentGroups(int max) { mMaxAgentGroups = max; }
|
||||
void setVersion(int version) { mVersion = version; }
|
||||
void setVoiceConnector(const std::string &vc) { mVoiceConnector = vc; }
|
||||
void setFirstName(const std::string& firstName);
|
||||
void setLastName(const std::string& lastName);
|
||||
void setAvatarPassword(const std::string& avatarPassword);
|
||||
void setVoiceConnector(const std::string& vc) { mVoiceConnector = vc; }
|
||||
|
||||
void setCurrencySymbol(const std::string &sym) { mCurrencySymbol = sym.substr(0, 3); }
|
||||
void setRealCurrencySymbol(const std::string &sym) { mRealCurrencySymbol = sym.substr(0, 3); }
|
||||
void setDirectoryFee(int fee) { mDirectoryFee = fee; }
|
||||
void setCurrencySymbol(const std::string& sym);
|
||||
void setRealCurrencySymbol(const std::string& sym);
|
||||
void setDirectoryFee(int fee);
|
||||
|
||||
bool retrieveGridInfo();
|
||||
|
||||
static const char *getPlatformString(Platform platform);
|
||||
static void cleanUpGridNick(std::string &gridnick);
|
||||
static const char* getPlatformString(Platform platform);
|
||||
static std::string sanitizeGridNick(std::string &gridnick);
|
||||
|
||||
static HippoGridInfo FALLBACK_GRIDINFO;
|
||||
static void initFallback();
|
||||
@@ -97,8 +98,6 @@ private:
|
||||
Platform mPlatform;
|
||||
std::string mGridNick;
|
||||
std::string mGridName;
|
||||
std::string mLastFName;
|
||||
std::string mLastLName;
|
||||
std::string mLoginUri;
|
||||
std::string mLoginPage;
|
||||
std::string mHelperUri;
|
||||
@@ -108,53 +107,56 @@ private:
|
||||
std::string mPasswordUrl;
|
||||
std::string mSearchUrl;
|
||||
std::string mVoiceConnector;
|
||||
std::string mFirstName;
|
||||
std::string mLastName;
|
||||
std::string mAvatarPassword;
|
||||
bool mRenderCompat;
|
||||
int mMaxAgentGroups;
|
||||
int mVersion;
|
||||
|
||||
std::string mCurrencySymbol;
|
||||
std::string mRealCurrencySymbol;
|
||||
int mDirectoryFee;
|
||||
|
||||
// for parsing grid info XML
|
||||
enum XmlState {
|
||||
enum XmlState
|
||||
{
|
||||
XML_VOID, XML_GRIDNICK, XML_PLATFORM, XML_GRIDNAME,
|
||||
XML_LOGINURI, XML_LOGINPAGE, XML_HELPERURI,
|
||||
XML_WEBSITE, XML_SUPPORT, XML_REGISTER, XML_PASSWORD, XML_SEARCH
|
||||
};
|
||||
XmlState mXmlState;
|
||||
|
||||
static void cleanUpUri(std::string &uri);
|
||||
static std::string sanitizeUri(std::string &uri);
|
||||
void formatFee(std::string &fee, int cost, bool showFree) const;
|
||||
|
||||
static void onXmlElementStart(void *userData, const XML_Char *name, const XML_Char **atts);
|
||||
static void onXmlElementEnd(void *userData, const XML_Char *name);
|
||||
static void onXmlCharacterData(void *userData, const XML_Char *s, int len);
|
||||
static void onXmlElementStart(void* userData, const XML_Char* name, const XML_Char** atts);
|
||||
static void onXmlElementEnd(void* userData, const XML_Char* name);
|
||||
static void onXmlCharacterData(void* userData, const XML_Char* s, int len);
|
||||
};
|
||||
|
||||
|
||||
class HippoGridManager
|
||||
{
|
||||
LOG_CLASS(HippoGridManager);
|
||||
public:
|
||||
HippoGridManager();
|
||||
~HippoGridManager();
|
||||
|
||||
void init();
|
||||
void saveFile();
|
||||
void discardAndReload();
|
||||
|
||||
HippoGridInfo *getGrid(const std::string &grid) const;
|
||||
HippoGridInfo *getConnectedGrid() const { return (mConnectedGrid)? mConnectedGrid: getCurrentGrid(); }
|
||||
HippoGridInfo *getCurrentGrid() const;
|
||||
const std::string &getDefaultGridNick() const { return mDefaultGrid; }
|
||||
const std::string &getCurrentGridNick() const { return mCurrentGrid; }
|
||||
HippoGridInfo* getGrid(const std::string& grid) const;
|
||||
HippoGridInfo* getConnectedGrid() const;
|
||||
HippoGridInfo* getCurrentGrid() const;
|
||||
const std::string& getDefaultGridNick() const;
|
||||
const std::string& getCurrentGridNick() const;
|
||||
|
||||
void setDefaultGrid(const std::string &grid);
|
||||
void setCurrentGrid(const std::string &grid);
|
||||
void setCurrentGridAsConnected() { mConnectedGrid = getCurrentGrid(); }
|
||||
void setDefaultGrid(const std::string& grid);
|
||||
void setCurrentGrid(const std::string& grid);
|
||||
void setCurrentGridAsConnected();
|
||||
|
||||
void addGrid(HippoGridInfo *grid);
|
||||
void deleteGrid(const std::string &grid);
|
||||
void addGrid(HippoGridInfo* grid);
|
||||
void deleteGrid(const std::string& grid);
|
||||
|
||||
typedef std::map<std::string, HippoGridInfo*>::iterator GridIterator;
|
||||
GridIterator beginGrid() { return mGridInfo.begin(); }
|
||||
@@ -164,17 +166,18 @@ private:
|
||||
std::map<std::string, HippoGridInfo*> mGridInfo;
|
||||
std::string mDefaultGrid;
|
||||
std::string mCurrentGrid;
|
||||
HippoGridInfo *mConnectedGrid;
|
||||
HippoGridInfo* mConnectedGrid;
|
||||
int mDefaultGridsVersion;
|
||||
|
||||
void cleanup();
|
||||
void loadFromFile();
|
||||
void parseFile(const std::string &fileName, bool mergeIfNewer);
|
||||
void parseUrl(const char *url, bool mergeIfNewer);
|
||||
void parseFile(const std::string& fileName, bool mergeIfNewer);
|
||||
void parseUrl(const std::string url, bool mergeIfNewer);
|
||||
void parseData(LLSD &gridInfo, bool mergeIfNewer);
|
||||
};
|
||||
|
||||
|
||||
extern HippoGridManager *gHippoGridManager;
|
||||
extern HippoGridManager* gHippoGridManager;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -304,7 +304,7 @@ bool HippoPanelGridsImpl::saveCurGrid()
|
||||
// check nickname
|
||||
std::string gridnick = childGetValue("gridnick");
|
||||
if (gridnick == "<required>") gridnick = "";
|
||||
HippoGridInfo::cleanUpGridNick(gridnick);
|
||||
HippoGridInfo::sanitizeGridNick(gridnick);
|
||||
childSetValue("gridnick", (gridnick != "")? gridnick: "<required>");
|
||||
if (gridnick == "") {
|
||||
LLNotifications::instance().add("GridsNoNick");
|
||||
|
||||
@@ -3133,9 +3133,6 @@ void LLAppViewer::badNetworkHandler()
|
||||
|
||||
// Flush all of our caches on exit in the case of disconnect due to
|
||||
// invalid packets.
|
||||
// <edit>
|
||||
if(1) return;
|
||||
// </edit>
|
||||
|
||||
mPurgeOnExit = TRUE;
|
||||
|
||||
@@ -3146,17 +3143,23 @@ void LLAppViewer::badNetworkHandler()
|
||||
LLAppViewer::handleSyncViewerCrash();
|
||||
LLAppViewer::handleViewerCrash();
|
||||
|
||||
std::string grid_support_msg = "";
|
||||
if (!gHippoGridManager->getCurrentGrid()->getSupportUrl().empty())
|
||||
{
|
||||
grid_support_msg = "\n\nOr visit the gird support page at: \n "
|
||||
+ gHippoGridManager->getCurrentGrid()->getSupportUrl();
|
||||
}
|
||||
std::ostringstream message;
|
||||
message <<
|
||||
"The viewer has detected mangled network data indicative\n"
|
||||
"of a bad upstream network connection or an incomplete\n"
|
||||
"local installation of " << LLAppViewer::instance()->getSecondLifeTitle() << ". \n"
|
||||
"local installation of " << gSecondLife << ". \n"
|
||||
" \n"
|
||||
"Try uninstalling and reinstalling to see if this resolves \n"
|
||||
"the issue. \n"
|
||||
" \n"
|
||||
"If the problem continues, see the Tech Support FAQ at: \n"
|
||||
"www.secondlife.com/support";
|
||||
"If the problem continues, please report the issue at: \n"
|
||||
"http://www.singularityviewer.org" << grid_support_msg;
|
||||
forceDisconnect(message.str());
|
||||
}
|
||||
|
||||
|
||||
@@ -63,6 +63,8 @@
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "llsdserialize.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// When uploading multiple files, don't display any of them when uploading more than this number.
|
||||
static const S32 FILE_COUNT_DISPLAY_THRESHOLD = 5;
|
||||
|
||||
@@ -228,6 +230,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
|
||||
|
||||
LLSD args;
|
||||
args["AMOUNT"] = llformat("%d", expected_upload_cost);
|
||||
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
LLNotifications::instance().add("UploadPayment", args);
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,8 @@
|
||||
#include "llxmlrpctransaction.h"
|
||||
#include "llviewernetwork.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
|
||||
const F64 CURRENCY_ESTIMATE_FREQUENCY = 2.0;
|
||||
// how long of a pause in typing a currency buy amount before an
|
||||
@@ -372,6 +374,7 @@ void LLCurrencyUIManager::Impl::updateUI()
|
||||
}
|
||||
|
||||
mPanel.childShow("currency_action");
|
||||
mPanel.childSetTextArg("currency_action", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
LLLineEditor* lindenAmount = mPanel.getChild<LLLineEditor>("currency_amt");
|
||||
if (lindenAmount)
|
||||
@@ -478,7 +481,9 @@ void LLCurrencyUIManager::buy(const std::string& buy_msg)
|
||||
|
||||
LLUIString msg = buy_msg;
|
||||
msg.setArg("[LINDENS]", llformat("%d", impl.mUserCurrencyBuy));
|
||||
msg.setArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
msg.setArg("[USD]", llformat("%#.2f", impl.mSiteCurrencyEstimatedCost / 100.0));
|
||||
msg.setArg("[REALCURRENCY]", gHippoGridManager->getConnectedGrid()->getRealCurrencySymbol());
|
||||
LLConfirmationManager::confirm(impl.mSiteConfirm,
|
||||
msg,
|
||||
impl,
|
||||
|
||||
@@ -47,6 +47,9 @@
|
||||
#include "floatervoicelicense.h"
|
||||
#include "llstartup.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
|
||||
// static
|
||||
std::set<std::string> LLFirstUse::sConfigVariables;
|
||||
|
||||
@@ -90,6 +93,7 @@ void LLFirstUse::useBalanceIncrease(S32 delta)
|
||||
|
||||
LLSD args;
|
||||
args["AMOUNT"] = llformat("%d",delta);
|
||||
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
LLNotifications::instance().add("FirstBalanceIncrease", args);
|
||||
}
|
||||
}
|
||||
@@ -104,6 +108,7 @@ void LLFirstUse::useBalanceDecrease(S32 delta)
|
||||
|
||||
LLSD args;
|
||||
args["AMOUNT"] = llformat("%d",-delta);
|
||||
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
LLNotifications::instance().add("FirstBalanceDecrease", args);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
#include "llglheaders.h"
|
||||
#include "llwindow.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// [RLVa:KB]
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
@@ -133,6 +135,8 @@ LLFloaterAbout::LLFloaterAbout()
|
||||
|
||||
std::string support;
|
||||
support.append("\n\n");
|
||||
support.append("Grid: " + gHippoGridManager->getConnectedGrid()->getGridName()
|
||||
+ " (" + gHippoGridManager->getConnectedGrid()->getGridNick() + ")\n\n");
|
||||
|
||||
#if LL_MSVC
|
||||
support.append(llformat("Built with MSVC version %d\n\n", _MSC_VER));
|
||||
|
||||
@@ -68,6 +68,8 @@
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
//<edit>
|
||||
#include "llinventorymodel.h" // gInventoryModel
|
||||
//</edit>
|
||||
@@ -194,7 +196,7 @@ BOOL LLFloaterAnimPreview::postBuild()
|
||||
childSetMaxValue("priority", 7);
|
||||
}
|
||||
|
||||
childSetLabelArg("ok_btn", "[AMOUNT]", llformat("%d",sUploadAmount));
|
||||
childSetLabelArg("ok_btn", "[UPLOADFEE]", gHippoGridManager->getConnectedGrid()->getUploadFee());
|
||||
childSetAction("ok_btn", onBtnOK, this);
|
||||
setDefaultBtn();
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llviewerwindow.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
LLFloaterBuy* LLFloaterBuy::sInstance = NULL;
|
||||
|
||||
LLFloaterBuy::LLFloaterBuy()
|
||||
@@ -184,6 +186,7 @@ void LLFloaterBuy::show(const LLSaleInfo& sale_info)
|
||||
// Add after columns added so appropriate heights are correct.
|
||||
object_list->addElement(row);
|
||||
|
||||
sInstance->childSetTextArg("buy_text", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
sInstance->childSetTextArg("buy_text", "[AMOUNT]", llformat("%d", sale_info.getSalePrice()));
|
||||
sInstance->childSetTextArg("buy_text", "[NAME]", owner_name);
|
||||
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llviewerwindow.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
LLFloaterBuyContents* LLFloaterBuyContents::sInstance = NULL;
|
||||
|
||||
LLFloaterBuyContents::LLFloaterBuyContents()
|
||||
@@ -129,6 +131,7 @@ void LLFloaterBuyContents::show(const LLSaleInfo& sale_info)
|
||||
}
|
||||
|
||||
sInstance->childSetTextArg("contains_text", "[NAME]", node->mName);
|
||||
sInstance->childSetTextArg("buy_text", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
sInstance->childSetTextArg("buy_text", "[AMOUNT]", llformat("%d", sale_info.getSalePrice()));
|
||||
sInstance->childSetTextArg("buy_text", "[NAME]", owner_name);
|
||||
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
#include "llwindow.h"
|
||||
#include "llappviewer.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
static const S32 STANDARD_BUY_AMOUNT = 2000;
|
||||
static const S32 MINIMUM_BALANCE_AMOUNT = 0;
|
||||
|
||||
@@ -263,9 +265,11 @@ void LLFloaterBuyCurrencyUI::updateUI()
|
||||
childSetVisible("buy_action", true);
|
||||
childSetTextArg("buy_action", "[NAME]", mTargetName);
|
||||
childSetTextArg("buy_action", "[PRICE]", llformat("%d",mTargetPrice));
|
||||
childSetTextArg("buy_action", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
}
|
||||
else
|
||||
{
|
||||
childSetTextArg("buy_action_unknown", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
childSetVisible("buy_action_unknown", true);
|
||||
}
|
||||
}
|
||||
@@ -274,16 +278,19 @@ void LLFloaterBuyCurrencyUI::updateUI()
|
||||
childShow("balance_label");
|
||||
childShow("balance_amount");
|
||||
childSetTextArg("balance_amount", "[AMT]", llformat("%d", balance));
|
||||
childSetTextArg("balance_amount", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
S32 buying = mManager.getAmount();
|
||||
childShow("buying_label");
|
||||
childShow("buying_amount");
|
||||
childSetTextArg("buying_amount", "[AMT]", llformat("%d", buying));
|
||||
childSetTextArg("buying_amount", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
S32 total = balance + buying;
|
||||
childShow("total_label");
|
||||
childShow("total_amount");
|
||||
childSetTextArg("total_amount", "[AMT]", llformat("%d", total));
|
||||
childSetTextArg("total_amount", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
childSetVisible("purchase_warning_repurchase", false);
|
||||
childSetVisible("purchase_warning_notenough", false);
|
||||
|
||||
@@ -66,6 +66,8 @@
|
||||
#include "llviewernetwork.h"
|
||||
#include "roles_constants.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// NOTE: This is duplicated in lldatamoney.cpp ...
|
||||
const F32 GROUP_LAND_BONUS_FACTOR = 1.1f;
|
||||
const F64 CURRENCY_ESTIMATE_FREQUENCY = 0.5;
|
||||
@@ -1024,6 +1026,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
||||
LLStringUtil::format_map_t string_args;
|
||||
string_args["[AMOUNT]"] = llformat("%d", mParcelActualArea);
|
||||
string_args["[AMOUNT2]"] = llformat("%d", mParcelSupportedObjects);
|
||||
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
childSetText("info_size", getString("meters_supports_object", string_args));
|
||||
|
||||
@@ -1227,7 +1230,8 @@ void LLFloaterBuyLandUI::refreshUI()
|
||||
|
||||
childSetText("purchase_action",
|
||||
llformat(
|
||||
"Pay L$ %d to %s for this land",
|
||||
"Pay %s %d to %s for this land",
|
||||
gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str(),
|
||||
mParcelPrice,
|
||||
mParcelSellerName.c_str()
|
||||
));
|
||||
@@ -1239,6 +1243,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
||||
{
|
||||
LLStringUtil::format_map_t string_args;
|
||||
string_args["[AMOUNT]"] = llformat("%d", mAgentCashBalance);
|
||||
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
childSetText("currency_reason", getString("have_enough_lindens", string_args));
|
||||
}
|
||||
@@ -1247,6 +1252,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
||||
LLStringUtil::format_map_t string_args;
|
||||
string_args["[AMOUNT]"] = llformat("%d", mAgentCashBalance);
|
||||
string_args["[AMOUNT2]"] = llformat("%d", mParcelPrice - mAgentCashBalance);
|
||||
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
childSetText("currency_reason", getString("not_enough_lindens", string_args));
|
||||
|
||||
@@ -1257,6 +1263,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
||||
{
|
||||
LLStringUtil::format_map_t string_args;
|
||||
string_args["[AMOUNT]"] = llformat("%d", finalBalance);
|
||||
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
childSetText("currency_balance", getString("balance_left", string_args));
|
||||
|
||||
@@ -1265,6 +1272,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
||||
{
|
||||
LLStringUtil::format_map_t string_args;
|
||||
string_args["[AMOUNT]"] = llformat("%d", mParcelPrice - mAgentCashBalance);
|
||||
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
childSetText("currency_balance", getString("balance_needed", string_args));
|
||||
|
||||
@@ -1331,6 +1339,7 @@ void LLFloaterBuyLandUI::startBuyPreConfirm()
|
||||
LLStringUtil::format_map_t string_args;
|
||||
string_args["[AMOUNT]"] = llformat("%d", mCurrency.getAmount());
|
||||
string_args["[AMOUNT2]"] = llformat("%#.2f", mCurrency.getEstimate() / 100.0);
|
||||
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
action += getString("buy_for_US", string_args);
|
||||
}
|
||||
@@ -1338,6 +1347,7 @@ void LLFloaterBuyLandUI::startBuyPreConfirm()
|
||||
LLStringUtil::format_map_t string_args;
|
||||
string_args["[AMOUNT]"] = llformat("%d", mParcelPrice);
|
||||
string_args["[SELLER]"] = mParcelSellerName;
|
||||
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
action += getString("pay_to_for_land", string_args);
|
||||
|
||||
|
||||
|
||||
@@ -77,6 +77,8 @@
|
||||
#include "lltransfertargetfile.h"
|
||||
#include "lltransfersourcefile.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
const F32 SECONDS_BETWEEN_UPDATE_REQUESTS = 5.0f;
|
||||
|
||||
static LLFloaterGodTools* sGodTools = NULL;
|
||||
@@ -135,6 +137,8 @@ LLFloaterGodTools::LLFloaterGodTools()
|
||||
sendRegionInfoRequest();
|
||||
|
||||
childShowTab("GodTools Tabs", "region");
|
||||
|
||||
childSetTextArg("land cost text", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
}
|
||||
|
||||
// static
|
||||
|
||||
@@ -62,6 +62,8 @@
|
||||
#include "llviewercontrol.h"
|
||||
// </edit>
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
//static
|
||||
S32 LLFloaterImagePreview::sUploadAmount = 10;
|
||||
|
||||
@@ -107,7 +109,7 @@ BOOL LLFloaterImagePreview::postBuild()
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
childSetLabelArg("ok_btn", "[AMOUNT]", llformat("%d",sUploadAmount));
|
||||
childSetLabelArg("ok_btn", "[UPLOADFEE]", gHippoGridManager->getConnectedGrid()->getUploadFee());
|
||||
|
||||
LLCtrlSelectionInterface* iface = childGetSelectionInterface("clothing_type_combo");
|
||||
if (iface)
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
#include "roles_constants.h"
|
||||
#include "llworld.h"
|
||||
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
|
||||
|
||||
@@ -668,6 +668,7 @@ void LLPanelLandGeneral::refresh()
|
||||
mSaleInfoForSaleNoObjects->setVisible(TRUE);
|
||||
}
|
||||
mSaleInfoNotForSale->setVisible(FALSE);
|
||||
mSaleInfoForSale1->setTextArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
F32 cost_per_sqm = 0.0f;
|
||||
if (area > 0)
|
||||
@@ -926,6 +927,7 @@ void LLPanelLandGeneral::onClickBuyPass(void* data)
|
||||
|
||||
LLSD args;
|
||||
args["COST"] = cost;
|
||||
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
args["PARCEL_NAME"] = parcel_name;
|
||||
args["TIME"] = time;
|
||||
|
||||
@@ -2124,6 +2126,7 @@ void LLPanelLandOptions::refreshSearch()
|
||||
}
|
||||
BOOL show_directory = parcel->getParcelFlag(PF_SHOW_DIRECTORY);
|
||||
mCheckShowDirectory ->set(show_directory);
|
||||
mCheckShowDirectory->setLabelArg("[DIRECTORYFEE]", gHippoGridManager->getConnectedGrid()->getDirectoryFee());
|
||||
|
||||
// Set by string in case the order in UI doesn't match the order by index.
|
||||
// *TODO:Translate
|
||||
@@ -2491,6 +2494,7 @@ void LLPanelLandAccess::refresh()
|
||||
|
||||
S32 pass_price = parcel->getPassPrice();
|
||||
childSetValue( "PriceSpin", (F32)pass_price );
|
||||
childSetLabelArg("PriceSpin", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
F32 pass_hours = parcel->getPassHours();
|
||||
childSetValue( "HoursSpin", pass_hours );
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
#include "llassetstorage.h"
|
||||
#include "llinventorytype.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
const S32 PREVIEW_LINE_HEIGHT = 19;
|
||||
const S32 PREVIEW_CLOSE_BOX_SIZE = 16;
|
||||
const S32 PREVIEW_BORDER_WIDTH = 2;
|
||||
@@ -154,6 +156,7 @@ BOOL LLFloaterNameDesc::postBuild()
|
||||
childSetAction("cancel_btn", onBtnCancel, this);
|
||||
|
||||
// OK button
|
||||
childSetLabelArg("ok_btn", "[UPLOADFEE]", gHippoGridManager->getConnectedGrid()->getUploadFee());
|
||||
childSetAction("ok_btn", onBtnOK, this);
|
||||
setDefaultBtn("ok_btn");
|
||||
|
||||
|
||||
@@ -64,6 +64,8 @@
|
||||
|
||||
#include "llassetuploadresponders.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
#if LL_MSVC
|
||||
#pragma warning( disable : 4265 ) // "class has virtual functions, but destructor is not virtual"
|
||||
#endif
|
||||
@@ -358,7 +360,12 @@ bool LLFloaterPostcard::missingSubjMsgAlertCallback(const LLSD& notification, co
|
||||
if((childGetValue("subject_form").asString()).empty())
|
||||
{
|
||||
// Stuff the subject back into the form.
|
||||
childSetValue("subject_form", getString("default_subject"));
|
||||
LLStringUtil::format_map_t targs;
|
||||
targs["[GRID_NAME]"] = gHippoGridManager->getConnectedGrid()->getGridName();
|
||||
std::string subj = getString("default_subject");
|
||||
LLStringUtil::format(subj, targs);
|
||||
|
||||
childSetValue("subject_form", subj);
|
||||
}
|
||||
|
||||
if(!mHasFirstMsgFocus)
|
||||
|
||||
@@ -59,6 +59,8 @@
|
||||
|
||||
#include "lluictrlfactory.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// <edit>
|
||||
#include "llclipboard.h"
|
||||
// </edit>
|
||||
@@ -175,6 +177,8 @@ LLFloaterProperties::LLFloaterProperties(const std::string& name, const LLRect&
|
||||
}
|
||||
sPropertiesObserverCount++;
|
||||
|
||||
childSetTextArg("TextPrice", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
// add the object to the static structure
|
||||
LLUUID key = mItemID ^ mObjectID;
|
||||
sInstances.insert(instance_map::value_type(key, this));
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llviewerwindow.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// defined in llfloaterland.cpp
|
||||
void send_parcel_select_objects(S32 parcel_local_id, U32 return_type,
|
||||
uuid_list_t* return_ids = NULL);
|
||||
@@ -284,6 +286,8 @@ void LLFloaterSellLandUI::refreshUI()
|
||||
childSetText("info_parcel", parcelp->getName());
|
||||
childSetTextArg("info_size", "[AREA]", llformat("%d", mParcelActualArea));
|
||||
|
||||
childSetTextArg("price_ld", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
std::string price_str = childGetValue("price").asString();
|
||||
bool valid_price = false;
|
||||
valid_price = (price_str != "") && LLLineEditor::prevalidateNonNegativeS32(utf8str_to_wstring(price_str));
|
||||
|
||||
@@ -77,6 +77,8 @@
|
||||
#include "llvfile.h"
|
||||
#include "llvfs.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
///----------------------------------------------------------------------------
|
||||
/// Local function declarations, constants, enums, and typedefs
|
||||
///----------------------------------------------------------------------------
|
||||
@@ -1232,6 +1234,9 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
|
||||
// static
|
||||
void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
|
||||
{
|
||||
std::string fee = gHippoGridManager->getConnectedGrid()->getUploadFee();
|
||||
floater->childSetLabelArg("upload_btn", "[UPLOADFEE]", fee);
|
||||
|
||||
LLRadioGroup* snapshot_type_radio = floater->getChild<LLRadioGroup>("snapshot_type_radio");
|
||||
snapshot_type_radio->setSelectedIndex(gSavedSettings.getS32("LastSnapshotType"));
|
||||
LLSnapshotLivePreview::ESnapshotType shot_type = getTypeIndex(floater);
|
||||
|
||||
@@ -52,6 +52,8 @@
|
||||
#include "lltransactiontypes.h"
|
||||
#include "lluictrlfactory.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
///----------------------------------------------------------------------------
|
||||
/// Local function declarations, constants, enums, and typedefs
|
||||
///----------------------------------------------------------------------------
|
||||
@@ -111,6 +113,8 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
||||
|
||||
childSetAction("fastpay 1",&LLFloaterPay::onGive,info);
|
||||
childSetVisible("fastpay 1", FALSE);
|
||||
childSetLabelArg("fastpay 1", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
|
||||
mQuickPayButton[i] = getChild<LLButton>("fastpay 1");
|
||||
mQuickPayInfo[i] = info;
|
||||
@@ -121,6 +125,7 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
||||
|
||||
childSetAction("fastpay 5",&LLFloaterPay::onGive,info);
|
||||
childSetVisible("fastpay 5", FALSE);
|
||||
childSetLabelArg("fastpay 5", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
mQuickPayButton[i] = getChild<LLButton>("fastpay 5");
|
||||
mQuickPayInfo[i] = info;
|
||||
@@ -131,6 +136,7 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
||||
|
||||
childSetAction("fastpay 10",&LLFloaterPay::onGive,info);
|
||||
childSetVisible("fastpay 10", FALSE);
|
||||
childSetLabelArg("fastpay 10", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
mQuickPayButton[i] = getChild<LLButton>("fastpay 10");
|
||||
mQuickPayInfo[i] = info;
|
||||
@@ -141,6 +147,7 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
||||
|
||||
childSetAction("fastpay 20",&LLFloaterPay::onGive,info);
|
||||
childSetVisible("fastpay 20", FALSE);
|
||||
childSetLabelArg("fastpay 20", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
mQuickPayButton[i] = getChild<LLButton>("fastpay 20");
|
||||
mQuickPayInfo[i] = info;
|
||||
@@ -148,6 +155,8 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
||||
|
||||
|
||||
childSetVisible("amount text", FALSE);
|
||||
childSetVisible("currency text", FALSE);
|
||||
childSetTextArg("currency text", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
std::string last_amount;
|
||||
if(sLastAmount > 0)
|
||||
@@ -207,12 +216,14 @@ void LLFloaterPay::processPayPriceReply(LLMessageSystem* msg, void **userdata)
|
||||
self->childSetVisible("amount", FALSE);
|
||||
self->childSetVisible("pay btn", FALSE);
|
||||
self->childSetVisible("amount text", FALSE);
|
||||
self->childSetVisible("currency text", FALSE);
|
||||
}
|
||||
else if (PAY_PRICE_DEFAULT == price)
|
||||
{
|
||||
self->childSetVisible("amount", TRUE);
|
||||
self->childSetVisible("pay btn", TRUE);
|
||||
self->childSetVisible("amount text", TRUE);
|
||||
self->childSetVisible("currency text", TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -223,6 +234,7 @@ void LLFloaterPay::processPayPriceReply(LLMessageSystem* msg, void **userdata)
|
||||
self->childSetVisible("pay btn", TRUE);
|
||||
self->childSetEnabled("pay btn", TRUE);
|
||||
self->childSetVisible("amount text", TRUE);
|
||||
self->childSetVisible("currency text", TRUE);
|
||||
|
||||
self->childSetText("amount", llformat("%d", llabs(price)));
|
||||
}
|
||||
@@ -240,7 +252,7 @@ void LLFloaterPay::processPayPriceReply(LLMessageSystem* msg, void **userdata)
|
||||
msg->getS32Fast(_PREHASH_ButtonData,_PREHASH_PayButton,pay_button,i);
|
||||
if (pay_button > 0)
|
||||
{
|
||||
std::string button_str = "L$";
|
||||
std::string button_str = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
button_str += LLResMgr::getInstance()->getMonetaryString( pay_button );
|
||||
|
||||
self->mQuickPayButton[i]->setLabelSelected(button_str);
|
||||
@@ -261,7 +273,7 @@ void LLFloaterPay::processPayPriceReply(LLMessageSystem* msg, void **userdata)
|
||||
}
|
||||
|
||||
// build a string containing the maximum value and calc nerw button width from it.
|
||||
std::string balance_str = "L$";
|
||||
std::string balance_str = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
balance_str += LLResMgr::getInstance()->getMonetaryString( max_pay_amount );
|
||||
const LLFontGL* font = LLResMgr::getInstance()->getRes(LLFONT_SANSSERIF);
|
||||
S32 new_button_width = font->getWidth( std::string(balance_str));
|
||||
@@ -323,7 +335,9 @@ void LLFloaterPay::payViaObject(money_callback callback, const LLUUID& object_id
|
||||
LLViewerObject* object = gObjectList.findObject(object_id);
|
||||
if (!object) return;
|
||||
|
||||
LLFloaterPay *floater = new LLFloaterPay("Give L$", callback, object_id, TRUE);
|
||||
LLFloaterPay *floater = new LLFloaterPay(
|
||||
"Give " + gHippoGridManager->getConnectedGrid()->getCurrencySymbol(),
|
||||
callback, object_id, TRUE);
|
||||
if (!floater) return;
|
||||
|
||||
LLSelectNode* node = floater->mObjectSelection->getFirstRootNode();
|
||||
@@ -356,12 +370,15 @@ void LLFloaterPay::payDirectly(money_callback callback,
|
||||
const LLUUID& target_id,
|
||||
BOOL is_group)
|
||||
{
|
||||
LLFloaterPay *floater = new LLFloaterPay("Give L$", callback, target_id, FALSE);
|
||||
LLFloaterPay *floater = new LLFloaterPay(
|
||||
"Give " + gHippoGridManager->getConnectedGrid()->getCurrencySymbol(),
|
||||
callback, target_id, FALSE);
|
||||
if (!floater) return;
|
||||
|
||||
floater->childSetVisible("amount", TRUE);
|
||||
floater->childSetVisible("pay btn", TRUE);
|
||||
floater->childSetVisible("amount text", TRUE);
|
||||
floater->childSetVisible("currency text", TRUE);
|
||||
|
||||
floater->childSetVisible("fastpay text",TRUE);
|
||||
for(S32 i=0;i<MAX_PAY_BUTTONS;++i)
|
||||
|
||||
@@ -73,6 +73,8 @@
|
||||
#include "llhudmanager.h" // For testing effects
|
||||
#include "llhudeffect.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// [RLVa:KB]
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
@@ -433,7 +435,7 @@ void LLHoverView::updateText()
|
||||
|
||||
if (object->flagTakesMoney() || (parent && parent->flagTakesMoney()) )
|
||||
{
|
||||
line.append(LLTrans::getString("TooltipFlagL$") + " ");
|
||||
line.append(gHippoGridManager->getConnectedGrid()->getCurrencySymbol() + " ");
|
||||
suppressObjectHoverDisplay = FALSE; // Show tip
|
||||
}
|
||||
|
||||
@@ -479,6 +481,7 @@ void LLHoverView::updateText()
|
||||
else if (for_sale)
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
args["[AMOUNT]"] = llformat("%d", nodep->mSaleInfo.getSalePrice());
|
||||
line.append(LLTrans::getString("TooltipForSaleL$", args));
|
||||
suppressObjectHoverDisplay = FALSE; // Show tip
|
||||
@@ -661,6 +664,7 @@ void LLHoverView::updateText()
|
||||
if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE))
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice());
|
||||
line = LLTrans::getString("TooltipForSaleL$", args);
|
||||
mText.push_back(line);
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
#include "lloverlaybar.h" // for gOverlayBar
|
||||
#include "lluictrlfactory.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// [RLVa:KB] - Version: 1.23.4
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
@@ -579,7 +581,10 @@ void LLNotifyBox::format(std::string& msg, const LLStringUtil::format_map_t& arg
|
||||
{
|
||||
// XUI:translate!
|
||||
LLStringUtil::format_map_t targs = args;
|
||||
targs["[SECOND_LIFE]"] = "Second Life";
|
||||
targs["[SECOND_LIFE]"] = gHippoGridManager->getConnectedGrid()->getGridName();
|
||||
targs["[GRID_NAME]"] = gHippoGridManager->getConnectedGrid()->getGridName();
|
||||
targs["[GRID_SITE]"] = gHippoGridManager->getConnectedGrid()->getWebSite();
|
||||
targs["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
targs["[VIEWER_NAME]"] = "Singularity Viewer";
|
||||
LLStringUtil::format(msg, targs);
|
||||
}
|
||||
|
||||
@@ -62,6 +62,8 @@
|
||||
#include "llviewerwindow.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
//
|
||||
// Static functions
|
||||
//
|
||||
@@ -88,6 +90,8 @@ LLPanelAudioPrefs::~LLPanelAudioPrefs()
|
||||
BOOL LLPanelAudioPrefs::postBuild()
|
||||
{
|
||||
refreshValues(); // initialize member data from saved settings
|
||||
childSetLabelArg("currency_change_threshold", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -71,6 +71,8 @@
|
||||
#include "llviewerwindow.h" // for window width, height
|
||||
#include "llappviewer.h" // abortQuit()
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// [RLVa:KB]
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
@@ -682,6 +684,7 @@ void LLPanelClassified::processClassifiedInfoReply(LLMessageSystem *msg, void **
|
||||
timeStructToFormattedString(now, gSavedSettings.getString("ShortDateFormat"), datestr);
|
||||
LLStringUtil::format_map_t string_args;
|
||||
string_args["[DATE]"] = datestr;
|
||||
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
string_args["[AMT]"] = llformat("%d", price_for_listing);
|
||||
self->childSetText("classified_info_text", self->getString("ad_placed_paid", string_args));
|
||||
|
||||
@@ -878,6 +881,7 @@ void LLPanelClassified::callbackGotPriceForListing(S32 option, std::string text,
|
||||
LLSD args;
|
||||
std::string price_text = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
|
||||
args["MIN_PRICE"] = price_text;
|
||||
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
LLNotifications::instance().add("MinClassifiedPrice", args);
|
||||
return;
|
||||
@@ -889,6 +893,7 @@ void LLPanelClassified::callbackGotPriceForListing(S32 option, std::string text,
|
||||
|
||||
LLSD args;
|
||||
args["AMOUNT"] = llformat("%d", price_for_listing);
|
||||
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
LLNotifications::instance().add("PublishClassified", args, LLSD(),
|
||||
boost::bind(&LLPanelClassified::confirmPublish, self, _1, _2));
|
||||
}
|
||||
|
||||
@@ -63,6 +63,8 @@
|
||||
#include "llfloaterdirectory.h"
|
||||
#include "llpaneldirbrowser.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
#if LL_MSVC
|
||||
// disable boost::lexical_cast warning
|
||||
#pragma warning (disable:4702)
|
||||
@@ -220,8 +222,20 @@ void LLPanelDirFindAll::search(const std::string& search_text)
|
||||
|
||||
if (!search_text.empty())
|
||||
{
|
||||
// Check whether or not we're on the old or web search All -- MC
|
||||
bool is_web = false;
|
||||
LLPanel* tabs_panel = mFloaterDirectory->getChild<LLTabContainer>("Directory Tabs")->getCurrentPanel();
|
||||
if (tabs_panel)
|
||||
{
|
||||
is_web = tabs_panel->getName() == "find_all_panel";
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "search panel not found! How can this be?!" << llendl;
|
||||
}
|
||||
|
||||
std::string selected_collection = childGetValue( "Category" ).asString();
|
||||
std::string url = buildSearchURL(search_text, selected_collection, inc_pg, inc_mature, inc_adult);
|
||||
std::string url = buildSearchURL(search_text, selected_collection, inc_pg, inc_mature, inc_adult, is_web);
|
||||
if (mWebBrowser)
|
||||
{
|
||||
mWebBrowser->navigateTo(url);
|
||||
@@ -243,20 +257,48 @@ void LLPanelDirFind::focus()
|
||||
|
||||
void LLPanelDirFind::navigateToDefaultPage()
|
||||
{
|
||||
std::string start_url = getString("default_search_page");
|
||||
BOOL inc_pg = childGetValue("incpg").asBoolean();
|
||||
BOOL inc_mature = childGetValue("incmature").asBoolean();
|
||||
BOOL inc_adult = childGetValue("incadult").asBoolean();
|
||||
if (!(inc_pg || inc_mature || inc_adult))
|
||||
std::string start_url = "";
|
||||
// Note: we use the web panel in OpenSim as well as Second Life -- MC
|
||||
if (gHippoGridManager->getConnectedGrid()->getSearchUrl().empty() &&
|
||||
!gHippoGridManager->getConnectedGrid()->isSecondLife())
|
||||
{
|
||||
// if nothing's checked, just go for pg; we don't notify in
|
||||
// this case because it's a default page.
|
||||
inc_pg = true;
|
||||
// OS-based but doesn't have its own web search url -- MC
|
||||
start_url = gSavedSettings.getString("SearchURLDefaultOpenSim");
|
||||
}
|
||||
|
||||
start_url += getSearchURLSuffix(inc_pg, inc_mature, inc_adult);
|
||||
else
|
||||
{
|
||||
if (gHippoGridManager->getConnectedGrid()->isSecondLife())
|
||||
{
|
||||
if (mBrowserName == "showcase_browser")
|
||||
{
|
||||
// note that the showcase URL in floater_directory.xml is no longer used
|
||||
start_url = gSavedSettings.getString("ShowcaseURLDefault");
|
||||
}
|
||||
else
|
||||
{
|
||||
start_url = gSavedSettings.getString("SearchURLDefault");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// OS-based but has its own web search url -- MC
|
||||
start_url = gHippoGridManager->getConnectedGrid()->getSearchUrl();
|
||||
}
|
||||
|
||||
llinfos << "default url: " << start_url << llendl;
|
||||
BOOL inc_pg = childGetValue("incpg").asBoolean();
|
||||
BOOL inc_mature = childGetValue("incmature").asBoolean();
|
||||
BOOL inc_adult = childGetValue("incadult").asBoolean();
|
||||
if (!(inc_pg || inc_mature || inc_adult))
|
||||
{
|
||||
// if nothing's checked, just go for pg; we don't notify in
|
||||
// this case because it's a default page.
|
||||
inc_pg = true;
|
||||
}
|
||||
|
||||
start_url += getSearchURLSuffix(inc_pg, inc_mature, inc_adult, true);
|
||||
}
|
||||
|
||||
llinfos << "default web search url: " << start_url << llendl;
|
||||
|
||||
if (mWebBrowser)
|
||||
{
|
||||
@@ -265,10 +307,14 @@ void LLPanelDirFind::navigateToDefaultPage()
|
||||
}
|
||||
// static
|
||||
std::string LLPanelDirFind::buildSearchURL(const std::string& search_text, const std::string& collection,
|
||||
bool inc_pg, bool inc_mature, bool inc_adult)
|
||||
bool inc_pg, bool inc_mature, bool inc_adult, bool is_web)
|
||||
{
|
||||
std::string url = gSavedSettings.getString("SearchURLDefault");
|
||||
if (!search_text.empty())
|
||||
std::string url;
|
||||
if (search_text.empty())
|
||||
{
|
||||
url = gHippoGridManager->getConnectedGrid()->getSearchUrl(HippoGridInfo::SEARCH_ALL_EMPTY, is_web);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Replace spaces with "+" for use by Google search appliance
|
||||
// Yes, this actually works for double-spaces
|
||||
@@ -291,7 +337,7 @@ std::string LLPanelDirFind::buildSearchURL(const std::string& search_text, const
|
||||
"-._~$+!*'()";
|
||||
std::string query = LLURI::escape(search_text_with_plus, allowed);
|
||||
|
||||
url = gSavedSettings.getString("SearchURLQuery");
|
||||
url = gHippoGridManager->getConnectedGrid()->getSearchUrl(HippoGridInfo::SEARCH_ALL_QUERY, is_web);
|
||||
std::string substring = "[QUERY]";
|
||||
std::string::size_type where = url.find(substring);
|
||||
if (where != std::string::npos)
|
||||
@@ -309,66 +355,74 @@ std::string LLPanelDirFind::buildSearchURL(const std::string& search_text, const
|
||||
}
|
||||
|
||||
}
|
||||
url += getSearchURLSuffix(inc_pg, inc_mature, inc_adult);
|
||||
llinfos << "search url " << url << llendl;
|
||||
url += getSearchURLSuffix(inc_pg, inc_mature, inc_adult, is_web);
|
||||
llinfos << "web search url " << url << llendl;
|
||||
return url;
|
||||
}
|
||||
// static
|
||||
std::string LLPanelDirFind::getSearchURLSuffix(bool inc_pg, bool inc_mature, bool inc_adult)
|
||||
std::string LLPanelDirFind::getSearchURLSuffix(bool inc_pg, bool inc_mature, bool inc_adult, bool is_web)
|
||||
{
|
||||
std::string url = gSavedSettings.getString("SearchURLSuffix2");
|
||||
std::string url = gHippoGridManager->getConnectedGrid()->getSearchUrl(HippoGridInfo::SEARCH_ALL_TEMPLATE, is_web);
|
||||
|
||||
// if the mature checkbox is unchecked, modify query to remove
|
||||
// terms with given phrase from the result set
|
||||
// This builds a value from 1-7 by or-ing together the flags, and then converts
|
||||
// it to a string.
|
||||
std::string substring="[MATURITY]";
|
||||
S32 maturityFlag =
|
||||
(inc_pg ? SEARCH_PG : SEARCH_NONE) |
|
||||
(inc_mature ? SEARCH_MATURE : SEARCH_NONE) |
|
||||
(inc_adult ? SEARCH_ADULT : SEARCH_NONE);
|
||||
url.replace(url.find(substring), substring.length(), boost::lexical_cast<std::string>(maturityFlag));
|
||||
|
||||
// Include region and x/y position, not for the GSA, but
|
||||
// just to get logs on the web server for search_proxy.php
|
||||
// showing where people were standing when they searched.
|
||||
std::string region_name;
|
||||
LLViewerRegion* region = gAgent.getRegion();
|
||||
if (region)
|
||||
if (!url.empty())
|
||||
{
|
||||
region_name = region->getName();
|
||||
// Note: opensim's default template (SearchURLSuffixOpenSim) is currently empty -- MC
|
||||
if (gHippoGridManager->getConnectedGrid()->isSecondLife() ||
|
||||
!gHippoGridManager->getConnectedGrid()->getSearchUrl().empty())
|
||||
{
|
||||
// if the mature checkbox is unchecked, modify query to remove
|
||||
// terms with given phrase from the result set
|
||||
// This builds a value from 1-7 by or-ing together the flags, and then converts
|
||||
// it to a string.
|
||||
std::string substring="[MATURITY]";
|
||||
S32 maturityFlag =
|
||||
(inc_pg ? SEARCH_PG : SEARCH_NONE) |
|
||||
(inc_mature ? SEARCH_MATURE : SEARCH_NONE) |
|
||||
(inc_adult ? SEARCH_ADULT : SEARCH_NONE);
|
||||
url.replace(url.find(substring), substring.length(), boost::lexical_cast<std::string>(maturityFlag));
|
||||
|
||||
// Include region and x/y position, not for the GSA, but
|
||||
// just to get logs on the web server for search_proxy.php
|
||||
// showing where people were standing when they searched.
|
||||
std::string region_name;
|
||||
LLViewerRegion* region = gAgent.getRegion();
|
||||
if (region)
|
||||
{
|
||||
region_name = region->getName();
|
||||
}
|
||||
// take care of spaces in names
|
||||
region_name = LLURI::escape(region_name);
|
||||
substring = "[REGION]";
|
||||
url.replace(url.find(substring), substring.length(), region_name);
|
||||
|
||||
LLVector3 pos_region = gAgent.getPositionAgent();
|
||||
|
||||
std::string x = llformat("%.0f", pos_region.mV[VX]);
|
||||
substring = "[X]";
|
||||
url.replace(url.find(substring), substring.length(), x);
|
||||
std::string y = llformat("%.0f", pos_region.mV[VY]);
|
||||
substring = "[Y]";
|
||||
url.replace(url.find(substring), substring.length(), y);
|
||||
std::string z = llformat("%.0f", pos_region.mV[VZ]);
|
||||
substring = "[Z]";
|
||||
url.replace(url.find(substring), substring.length(), z);
|
||||
|
||||
LLUUID session_id = gAgent.getSessionID();
|
||||
std::string session_string = session_id.getString();
|
||||
substring = "[SESSION]";
|
||||
url.replace(url.find(substring), substring.length(), session_string);
|
||||
|
||||
// set the currently selected language by asking the pref setting
|
||||
std::string language_string = LLUI::getLanguage();
|
||||
std::string language_tag = "[LANG]";
|
||||
url.replace( url.find( language_tag ), language_tag.length(), language_string );
|
||||
|
||||
// and set the flag for the teen grid
|
||||
std::string teen_string = gAgent.isTeen() ? "y" : "n";
|
||||
std::string teen_tag = "[TEEN]";
|
||||
url.replace( url.find( teen_tag ), teen_tag.length(), teen_string );
|
||||
}
|
||||
}
|
||||
// take care of spaces in names
|
||||
region_name = LLURI::escape(region_name);
|
||||
substring = "[REGION]";
|
||||
url.replace(url.find(substring), substring.length(), region_name);
|
||||
|
||||
LLVector3 pos_region = gAgent.getPositionAgent();
|
||||
|
||||
std::string x = llformat("%.0f", pos_region.mV[VX]);
|
||||
substring = "[X]";
|
||||
url.replace(url.find(substring), substring.length(), x);
|
||||
std::string y = llformat("%.0f", pos_region.mV[VY]);
|
||||
substring = "[Y]";
|
||||
url.replace(url.find(substring), substring.length(), y);
|
||||
std::string z = llformat("%.0f", pos_region.mV[VZ]);
|
||||
substring = "[Z]";
|
||||
url.replace(url.find(substring), substring.length(), z);
|
||||
|
||||
LLUUID session_id = gAgent.getSessionID();
|
||||
std::string session_string = session_id.getString();
|
||||
substring = "[SESSION]";
|
||||
url.replace(url.find(substring), substring.length(), session_string);
|
||||
|
||||
// set the currently selected language by asking the pref setting
|
||||
std::string language_string = LLUI::getLanguage();
|
||||
std::string language_tag = "[LANG]";
|
||||
url.replace( url.find( language_tag ), language_tag.length(), language_string );
|
||||
|
||||
// and set the flag for the teen grid
|
||||
std::string teen_string = gAgent.isTeen() ? "y" : "n";
|
||||
std::string teen_tag = "[TEEN]";
|
||||
url.replace( url.find( teen_tag ), teen_tag.length(), teen_string );
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
@@ -61,8 +61,8 @@ public:
|
||||
virtual void navigateToDefaultPage();
|
||||
void focus();
|
||||
|
||||
static std::string buildSearchURL(const std::string& search_text, const std::string& collection, bool inc_pg, bool inc_mature, bool inc_adult);
|
||||
static std::string getSearchURLSuffix(bool inc_pg, bool inc_mature, bool inc_adult);
|
||||
static std::string buildSearchURL(const std::string& search_text, const std::string& collection, bool inc_pg, bool inc_mature, bool inc_adult, bool is_web);
|
||||
static std::string getSearchURLSuffix(bool inc_pg, bool inc_mature, bool inc_adult, bool is_web);
|
||||
|
||||
private:
|
||||
static void onClickBack( void* data );
|
||||
|
||||
@@ -57,7 +57,7 @@ void LLPanelDirGroups::search(const std::string& search_text)
|
||||
}
|
||||
|
||||
std::string selected_collection = "Groups";
|
||||
std::string url = buildSearchURL(search_text, selected_collection, inc_pg, inc_mature, inc_adult);
|
||||
std::string url = buildSearchURL(search_text, selected_collection, inc_pg, inc_mature, inc_adult, true);
|
||||
if (mWebBrowser)
|
||||
{
|
||||
mWebBrowser->navigateTo(url);
|
||||
|
||||
@@ -52,6 +52,9 @@
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewermessage.h"
|
||||
#include "llnotify.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Constants
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -99,6 +102,10 @@ BOOL LLPanelDirLand::postBuild()
|
||||
childSetAction("Search", onClickSearchCore, this);
|
||||
setDefaultBtn("Search");
|
||||
|
||||
childSetTextArg("land", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
childSetTextArg("pricecheck_symbol", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
childSetLabelArg("pricecheck", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
mCurrentSortColumn = "per_meter";
|
||||
|
||||
LLScrollListCtrl* results = getChild<LLScrollListCtrl>("results");
|
||||
@@ -106,6 +113,16 @@ BOOL LLPanelDirLand::postBuild()
|
||||
{
|
||||
results->setSortChangedCallback(onClickSort);
|
||||
results->sortByColumn(mCurrentSortColumn,mCurrentSortAscending);
|
||||
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
int n = results->getNumColumns();
|
||||
for (int i=0; i<n; i++) {
|
||||
LLScrollListColumn *col = results->getColumn(i);
|
||||
std::string label = col->mLabel;
|
||||
LLStringUtil::format(label, args);
|
||||
results->setColumnLabel(col->mName, label);
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewerwindow.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// consts
|
||||
const S32 MATURE_CONTENT = 1;
|
||||
const S32 NON_MATURE_CONTENT = 2;
|
||||
@@ -187,6 +189,7 @@ BOOL LLPanelGroupGeneral::postBuild()
|
||||
mCtrlEnrollmentFee = getChild<LLCheckBoxCtrl>("check_enrollment_fee", recurse);
|
||||
if (mCtrlEnrollmentFee)
|
||||
{
|
||||
mCtrlEnrollmentFee->setLabelArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
mCtrlEnrollmentFee->setCommitCallback(onCommitEnrollment);
|
||||
mCtrlEnrollmentFee->setCallbackUserData(this);
|
||||
}
|
||||
@@ -237,6 +240,8 @@ BOOL LLPanelGroupGeneral::postBuild()
|
||||
mComboActiveTitle->resetDirty();
|
||||
}
|
||||
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[GROUPCREATEFEE]"] = gHippoGridManager->getConnectedGrid()->getGroupCreationFee();
|
||||
mIncompleteMemberDataStr = getString("incomplete_member_data_str");
|
||||
mConfirmGroupCreateStr = getString("confirm_group_create_str");
|
||||
|
||||
@@ -257,9 +262,6 @@ BOOL LLPanelGroupGeneral::postBuild()
|
||||
mGroupName->setVisible(FALSE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return LLPanelGroupTab::postBuild();
|
||||
}
|
||||
|
||||
@@ -356,6 +358,7 @@ void LLPanelGroupGeneral::onClickJoin(void *userdata)
|
||||
S32 cost = gdatap->mMembershipFee;
|
||||
LLSD args;
|
||||
args["COST"] = llformat("%d", cost);
|
||||
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
LLSD payload;
|
||||
payload["group_id"] = self->mGroupID;
|
||||
|
||||
@@ -735,7 +738,9 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
||||
|
||||
if ( visible )
|
||||
{
|
||||
fee_buff = llformat( "Join (L$%d)", gdatap->mMembershipFee);
|
||||
fee_buff = llformat( "Join (%s%d)",
|
||||
gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str(),
|
||||
gdatap->mMembershipFee);
|
||||
mBtnJoinGroup->setLabelSelected(fee_buff);
|
||||
mBtnJoinGroup->setLabelUnselected(fee_buff);
|
||||
}
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
#include "llfloaterworldmap.h"
|
||||
#include "llviewermessage.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class LLGroupMoneyTabEventHandler
|
||||
@@ -527,6 +529,9 @@ void LLPanelGroupLandMoney::activate()
|
||||
tabp->selectFirstTab();
|
||||
mImplementationp->mBeenActivated = true;
|
||||
}
|
||||
|
||||
setLabelArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
childSetTextArg("group_money_heading", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
//fill in the max contribution
|
||||
|
||||
@@ -779,7 +784,9 @@ void LLPanelGroupLandMoney::processPlacesReply(LLMessageSystem* msg, void**)
|
||||
LLPanelGroupLandMoney* selfp = sGroupIDs.getIfThere(group_id);
|
||||
if(!selfp)
|
||||
{
|
||||
llinfos << "Group Panel Land L$ " << group_id << " no longer in existence."
|
||||
llinfos << "Group Panel Land "
|
||||
<< gHippoGridManager->getConnectedGrid()->getCurrencySymbol()
|
||||
<< ' ' << group_id << " no longer in existence."
|
||||
<< llendl;
|
||||
return;
|
||||
}
|
||||
@@ -1116,7 +1123,9 @@ void LLPanelGroupLandMoney::processGroupAccountDetailsReply(LLMessageSystem* msg
|
||||
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
|
||||
if (gAgent.getID() != agent_id)
|
||||
{
|
||||
llwarns << "Got group L$ history reply for another agent!" << llendl;
|
||||
llwarns << "Got group "
|
||||
<< gHippoGridManager->getConnectedGrid()->getCurrencySymbol()
|
||||
<< " history reply for another agent!" << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1287,7 +1296,9 @@ void LLPanelGroupLandMoney::processGroupAccountTransactionsReply(LLMessageSystem
|
||||
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
|
||||
if (gAgent.getID() != agent_id)
|
||||
{
|
||||
llwarns << "Got group L$ history reply for another agent!" << llendl;
|
||||
llwarns << "Got group "
|
||||
<< gHippoGridManager->getConnectedGrid()->getCurrencySymbol()
|
||||
<< " history reply for another agent!" << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1428,7 +1439,9 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
|
||||
text.append("The next stipend day is ");
|
||||
text.append(next_stipend_date);
|
||||
text.append("\n\n");
|
||||
text.append(llformat("%-24sL$%6d\n", "Balance", balance ));
|
||||
text.append(llformat("%-24s%s%6d\n", "Balance",
|
||||
gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str(),
|
||||
balance));
|
||||
text.append(1, '\n');
|
||||
}
|
||||
|
||||
@@ -1458,7 +1471,9 @@ void LLPanelGroupLandMoney::processGroupAccountSummaryReply(LLMessageSystem* msg
|
||||
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
|
||||
if (gAgent.getID() != agent_id)
|
||||
{
|
||||
llwarns << "Got group L$ history reply for another agent!" << llendl;
|
||||
llwarns << "Got group "
|
||||
<< gHippoGridManager->getConnectedGrid()->getCurrencySymbol()
|
||||
<< " history reply for another agent!" << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1470,7 +1485,9 @@ void LLPanelGroupLandMoney::processGroupAccountSummaryReply(LLMessageSystem* msg
|
||||
self = LLGroupMoneyTabEventHandler::sInstanceIDs.getIfThere(request_id);
|
||||
if (!self)
|
||||
{
|
||||
llwarns << "GroupAccountSummary recieved for non-existent group L$ planning tab." << llendl;
|
||||
llwarns << "GroupAccountSummary recieved for non-existent group "
|
||||
<< gHippoGridManager->getConnectedGrid()->getCurrencySymbol()
|
||||
<< " planning tab." << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -85,6 +85,8 @@
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
///----------------------------------------------------------------------------
|
||||
/// Local function declarations, constants, enums, and typedefs
|
||||
///----------------------------------------------------------------------------
|
||||
@@ -237,6 +239,7 @@ void LLTaskInvFVBridge::buyItem()
|
||||
{
|
||||
LLSD args;
|
||||
args["PRICE"] = llformat("%d",sale_info.getSalePrice());
|
||||
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
args["OWNER"] = owner_name;
|
||||
if (sale_info.getSaleType() != LLSaleInfo::FS_CONTENTS)
|
||||
{
|
||||
@@ -730,7 +733,7 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
||||
else
|
||||
{
|
||||
std::ostringstream info;
|
||||
info << "Buy for L$" << price;
|
||||
info << "Buy for " << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() << price;
|
||||
label.assign(info.str());
|
||||
}
|
||||
|
||||
@@ -1120,7 +1123,7 @@ void LLTaskSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
||||
else
|
||||
{
|
||||
std::ostringstream info;
|
||||
info << "Buy for L$" << price;
|
||||
info << "Buy for " << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() << price;
|
||||
label.assign(info.str());
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,8 @@
|
||||
|
||||
#include "lluictrlfactory.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// [RLVa:KB]
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
@@ -217,6 +219,7 @@ void LLPanelLandInfo::refresh()
|
||||
&dwell);
|
||||
if(is_public || (is_for_sale && LLViewerParcelMgr::getInstance()->getParcelSelection()->getWholeParcelSelected()))
|
||||
{
|
||||
childSetTextArg("label_area_price","[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
childSetTextArg("label_area_price","[PRICE]", llformat("%d",claim_price));
|
||||
childSetTextArg("label_area_price","[AREA]", llformat("%d",area));
|
||||
childSetVisible("label_area_price",true);
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
#include "lluictrlfactory.h"
|
||||
#include "roles_constants.h"
|
||||
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
|
||||
|
||||
@@ -145,6 +145,10 @@ LLPanelPermissions::~LLPanelPermissions()
|
||||
|
||||
void LLPanelPermissions::refresh()
|
||||
{
|
||||
|
||||
LLStringUtil::format_map_t argsCurrency;
|
||||
argsCurrency["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
LLButton* BtnDeedToGroup = getChild<LLButton>("button deed");
|
||||
if(BtnDeedToGroup)
|
||||
{
|
||||
@@ -246,7 +250,7 @@ void LLPanelPermissions::refresh()
|
||||
}
|
||||
|
||||
childSetEnabled("Cost",false);
|
||||
childSetText("Cost",getString("Cost Default"));
|
||||
childSetText("Cost", getString("Cost Default", argsCurrency));
|
||||
childSetText("Edit Cost",LLStringUtil::null);
|
||||
childSetEnabled("Edit Cost",false);
|
||||
|
||||
@@ -464,11 +468,11 @@ void LLPanelPermissions::refresh()
|
||||
// If there are multiple items for sale then set text to PRICE PER UNIT.
|
||||
if (num_for_sale > 1)
|
||||
{
|
||||
childSetText("Cost",getString("Cost Per Unit"));
|
||||
childSetText("Cost",getString("Cost Per Unit", argsCurrency));
|
||||
}
|
||||
else
|
||||
{
|
||||
childSetText("Cost",getString("Cost Default"));
|
||||
childSetText("Cost",getString("Cost Default", argsCurrency));
|
||||
}
|
||||
|
||||
LLLineEditor *editPrice = getChild<LLLineEditor>("Edit Cost");
|
||||
@@ -509,15 +513,15 @@ void LLPanelPermissions::refresh()
|
||||
|
||||
// If multiple items are for sale, set text to TOTAL PRICE.
|
||||
if (num_for_sale > 1)
|
||||
childSetText("Cost",getString("Cost Total"));
|
||||
childSetText("Cost", getString("Cost Total", argsCurrency));
|
||||
else
|
||||
childSetText("Cost",getString("Cost Default"));
|
||||
childSetText("Cost", getString("Cost Default", argsCurrency));
|
||||
}
|
||||
// This is a public object.
|
||||
else
|
||||
{
|
||||
childSetEnabled("Cost",false);
|
||||
childSetText("Cost",getString("Cost Default"));
|
||||
childSetText("Cost", getString("Cost Default", argsCurrency));
|
||||
|
||||
childSetText("Edit Cost",LLStringUtil::null);
|
||||
childSetEnabled("Edit Cost",false);
|
||||
@@ -1091,6 +1095,9 @@ void LLPanelPermissions::setAllSaleInfo()
|
||||
{
|
||||
llinfos << "LLPanelPermissions::setAllSaleInfo()" << llendl;
|
||||
LLSaleInfo::EForSale sale_type = LLSaleInfo::FS_NOT;
|
||||
|
||||
LLStringUtil::format_map_t argsCurrency;
|
||||
argsCurrency["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
LLCheckBoxCtrl *checkPurchase = getChild<LLCheckBoxCtrl>("checkbox for sale");
|
||||
|
||||
@@ -1125,7 +1132,8 @@ void LLPanelPermissions::setAllSaleInfo()
|
||||
{
|
||||
// Don't extract the price if it's labeled as MIXED or is empty.
|
||||
const std::string& editPriceString = editPrice->getText();
|
||||
if (editPriceString != getString("Cost Mixed") && editPriceString != getString("Sale Mixed") &&
|
||||
if (editPriceString != getString("Cost Mixed", argsCurrency) &&
|
||||
editPriceString != getString("Sale Mixed", argsCurrency) &&
|
||||
!editPriceString.empty())
|
||||
{
|
||||
price = atoi(editPriceString.c_str());
|
||||
|
||||
@@ -58,6 +58,8 @@
|
||||
#include "llweb.h"
|
||||
#include "llsdutil.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
//static
|
||||
std::list<LLPanelPlace*> LLPanelPlace::sAllPanels;
|
||||
|
||||
@@ -311,6 +313,7 @@ void LLPanelPlace::processParcelInfoReply(LLMessageSystem *msg, void **)
|
||||
if (flags & DFQ_FOR_SALE)
|
||||
{
|
||||
LLUIString forsale = self->getString("forsale_text");
|
||||
forsale.setArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
forsale.setArg("[PRICE]", llformat("%d", sale_price));
|
||||
info_text += forsale;
|
||||
}
|
||||
|
||||
@@ -47,6 +47,8 @@
|
||||
|
||||
#include "lldirpicker.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// [RLVa:KB]
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
@@ -186,9 +188,16 @@ void LLPrefsIMImpl::apply()
|
||||
|
||||
gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath"));
|
||||
|
||||
gDirUtilp->setPerAccountChatLogsDir(gSavedSettings.getString("FirstName"),
|
||||
gSavedSettings.getString("LastName") );
|
||||
LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
|
||||
if (gHippoGridManager->getCurrentGrid()->isSecondLife())
|
||||
{
|
||||
gDirUtilp->setPerAccountChatLogsDir(LLStringUtil::null,
|
||||
gSavedSettings.getString("FirstName"), gSavedSettings.getString("LastName") );
|
||||
}
|
||||
else
|
||||
{
|
||||
gDirUtilp->setPerAccountChatLogsDir(gHippoGridManager->getCurrentGridNick(),
|
||||
gSavedSettings.getString("FirstName"), gSavedSettings.getString("LastName") );
|
||||
}
|
||||
|
||||
bool new_im_via_email = childGetValue("send_im_to_email").asBoolean();
|
||||
bool new_hide_online = childGetValue("online_visibility").asBoolean();
|
||||
|
||||
@@ -1005,8 +1005,6 @@ bool idle_startup()
|
||||
gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath"));
|
||||
}
|
||||
|
||||
gDirUtilp->setPerAccountChatLogsDir(firstname, lastname);
|
||||
|
||||
LLFile::mkdir(gDirUtilp->getChatLogsDir());
|
||||
LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
|
||||
|
||||
|
||||
@@ -86,6 +86,8 @@
|
||||
// system includes
|
||||
#include <iomanip>
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// [RLVa:KB]
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
@@ -178,6 +180,11 @@ mSquareMetersCommitted(0)
|
||||
childSetActionTextbox("ParcelNameText", onClickParcelInfo );
|
||||
childSetActionTextbox("BalanceText", onClickBalance );
|
||||
|
||||
// TODO: Disable buying currency when connected to non-SL grids
|
||||
// that don't support currency yet -- MC
|
||||
LLButton* buybtn = getChild<LLButton>("buycurrency");
|
||||
buybtn->setLabelArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
// Adding Net Stat Graph
|
||||
S32 x = getRect().getWidth() - 2;
|
||||
S32 y = 0;
|
||||
@@ -663,10 +670,8 @@ void LLStatusBar::creditBalance(S32 credit)
|
||||
|
||||
void LLStatusBar::setBalance(S32 balance)
|
||||
{
|
||||
std::string money_str = LLResMgr::getInstance()->getMonetaryString( balance );
|
||||
std::string balance_str = "L$";
|
||||
balance_str += money_str;
|
||||
mTextBalance->setText( balance_str );
|
||||
mTextBalance->setText(gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str() +
|
||||
LLResMgr::getInstance()->getMonetaryString(balance));
|
||||
|
||||
if (mBalance && (fabs((F32)(mBalance - balance)) > gSavedSettings.getF32("UISndMoneyChangeThreshold")))
|
||||
{
|
||||
|
||||
@@ -253,6 +253,8 @@
|
||||
#include "llfloaterdisplayname.h"
|
||||
#include "llavatarnamecache.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
void init_client_menu(LLMenuGL* menu);
|
||||
void init_server_menu(LLMenuGL* menu);
|
||||
@@ -740,10 +742,16 @@ void init_menus()
|
||||
|
||||
// Assume L$10 for now, the server will tell us the real cost at login
|
||||
const std::string upload_cost("10");
|
||||
gMenuHolder->childSetLabelArg("Upload Image", "[COST]", upload_cost);
|
||||
gMenuHolder->childSetLabelArg("Upload Sound", "[COST]", upload_cost);
|
||||
gMenuHolder->childSetLabelArg("Upload Animation", "[COST]", upload_cost);
|
||||
gMenuHolder->childSetLabelArg("Bulk Upload", "[COST]", upload_cost);
|
||||
std::string fee = gHippoGridManager->getConnectedGrid()->getCurrencySymbol() + "10";
|
||||
gMenuHolder->childSetLabelArg("Upload Image", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("Upload Sound", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("Upload Animation", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("Bulk Upload", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("ImportUpload", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("Buy and Sell L$...", "[CURRENCY]",
|
||||
gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
gMenuHolder->childSetLabelArg("Reload Balance", "[CURRENCY]",
|
||||
gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
|
||||
gAFKMenu = gMenuBarView->getChild<LLMenuItemCallGL>("Set Away", TRUE);
|
||||
gBusyMenu = gMenuBarView->getChild<LLMenuItemCallGL>("Set Busy", TRUE);
|
||||
|
||||
@@ -695,6 +695,7 @@ bool join_group_response(const LLSD& notification, const LLSD& response)
|
||||
delete_context_data = FALSE;
|
||||
LLSD args;
|
||||
args["COST"] = llformat("%d", fee);
|
||||
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
// Set the fee for next time to 0, so that we don't keep
|
||||
// asking about a fee.
|
||||
LLSD next_payload = notification["payload"];
|
||||
@@ -5448,10 +5449,14 @@ void process_economy_data(LLMessageSystem *msg, void** /*user_data*/)
|
||||
LLFloaterImagePreview::setUploadAmount(upload_cost);
|
||||
LLFloaterAnimPreview::setUploadAmount(upload_cost);
|
||||
|
||||
gMenuHolder->childSetLabelArg("Upload Image", "[COST]", llformat("%d", upload_cost));
|
||||
gMenuHolder->childSetLabelArg("Upload Sound", "[COST]", llformat("%d", upload_cost));
|
||||
gMenuHolder->childSetLabelArg("Upload Animation", "[COST]", llformat("%d", upload_cost));
|
||||
gMenuHolder->childSetLabelArg("Bulk Upload", "[COST]", llformat("%d", upload_cost));
|
||||
std::string fee = gHippoGridManager->getConnectedGrid()->getUploadFee();
|
||||
gMenuHolder->childSetLabelArg("Upload Image", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("Upload Sound", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("Upload Animation", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("Bulk Upload", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("ImportUpload", "[UPLOADFEE]", fee);
|
||||
gMenuHolder->childSetLabelArg("Buy and Sell L$...", "[CURRENCY]",
|
||||
gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||
}
|
||||
|
||||
void notify_cautioned_script_question(const LLSD& notification, const LLSD& response, S32 orig_questions, BOOL granted)
|
||||
@@ -5525,7 +5530,9 @@ void notify_cautioned_script_question(const LLSD& notification, const LLSD& resp
|
||||
perms.append(", ");
|
||||
}
|
||||
|
||||
perms.append(LLFloaterChat::getInstance()->getString(SCRIPT_QUESTIONS[i]));
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
perms.append(LLFloaterChat::getInstance()->getString(SCRIPT_QUESTIONS[i], args));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5686,8 +5693,11 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
|
||||
{
|
||||
if (questions & LSCRIPTRunTimePermissionBits[i])
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||
|
||||
count++;
|
||||
script_question += " " + LLFloaterChat::getInstance()->getString(SCRIPT_QUESTIONS[i]) + "\n";
|
||||
script_question += " " + LLFloaterChat::getInstance()->getString(SCRIPT_QUESTIONS[i], args) + "\n";
|
||||
|
||||
// check whether permission question should cause special caution dialog
|
||||
caution |= (SCRIPT_QUESTION_IS_CAUTION[i]);
|
||||
|
||||
@@ -42,6 +42,8 @@
|
||||
#include "llviewerimage.h"
|
||||
#include "llviewerimagelist.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
// Timers to temporise database requests
|
||||
const F32 AGENTS_UPDATE_TIMER = 60.0; // Seconds between 2 agent requests for a region
|
||||
const F32 REQUEST_ITEMS_TIMER = 10.f * 60.f; // Seconds before we consider re-requesting item data for the grid
|
||||
@@ -525,7 +527,10 @@ bool LLWorldMap::insertItem(U32 x_world, U32 y_world, std::string& name, LLUUID&
|
||||
case MAP_ITEM_LAND_FOR_SALE: // land for sale
|
||||
case MAP_ITEM_LAND_FOR_SALE_ADULT: // adult land for sale
|
||||
{
|
||||
std::string tooltip = llformat("%d sq. m. L$%d", extra, extra2);
|
||||
std::string tooltip = llformat("%d sq. m. %s%d",
|
||||
extra,
|
||||
gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str(),
|
||||
extra2);
|
||||
new_item.setTooltip(tooltip);
|
||||
if (type == MAP_ITEM_LAND_FOR_SALE)
|
||||
{
|
||||
|
||||
@@ -42,6 +42,8 @@
|
||||
|
||||
#include "llappviewer.h"
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
LLXMLRPCValue LLXMLRPCValue::operator[](const char* id) const
|
||||
{
|
||||
return LLXMLRPCValue(XMLRPC_VectorGetValueWithID(mV, id));
|
||||
@@ -422,13 +424,15 @@ void LLXMLRPCTransaction::Impl::setStatus(Status status,
|
||||
default:
|
||||
// Usually this means that there's a problem with the login server,
|
||||
// not with the client. Direct user to status page.
|
||||
// NOTE: these should really be gHippoGridManager->getCurrentGrid()->getGridName()
|
||||
// but apparently that's broken as of 1.3 b2 -- MC
|
||||
mStatusMessage =
|
||||
"Despite our best efforts, something unexpected has gone wrong. \n"
|
||||
" \n"
|
||||
"Please check secondlife.com/status \n"
|
||||
"Please check " + gHippoGridManager->getCurrentGrid()->getGridNick() + "'s status \n"
|
||||
"to see if there is a known problem with the service.";
|
||||
|
||||
mStatusURI = "http://secondlife.com/status/";
|
||||
//mStatusURI = "http://secondlife.com/status/";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -436,14 +440,14 @@ void LLXMLRPCTransaction::Impl::setStatus(Status status,
|
||||
void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
|
||||
{
|
||||
std::string message;
|
||||
std::string uri = "http://secondlife.com/community/support.php";
|
||||
std::string uri = gHippoGridManager->getCurrentGrid()->getSupportUrl();
|
||||
|
||||
switch (code)
|
||||
{
|
||||
case CURLE_COULDNT_RESOLVE_HOST:
|
||||
message =
|
||||
"DNS could not resolve the host name.\n"
|
||||
"Please verify that you can connect to the www.secondlife.com\n"
|
||||
"Please verify that you can connect to " + gHippoGridManager->getCurrentGrid()->getGridNick() + "'s\n"
|
||||
"web site. If you can, but continue to receive this error,\n"
|
||||
"please go to the support section and report this problem.";
|
||||
break;
|
||||
@@ -452,7 +456,7 @@ void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
|
||||
message =
|
||||
"The login server couldn't verify itself via SSL.\n"
|
||||
"If you continue to receive this error, please go\n"
|
||||
"to the Support section of the SecondLife.com web site\n"
|
||||
"to the Support section of " + gHippoGridManager->getCurrentGrid()->getGridNick() + "'s web site\n"
|
||||
"and report the problem.";
|
||||
break;
|
||||
|
||||
@@ -464,7 +468,7 @@ void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
|
||||
"are set correctly.\n"
|
||||
"\n"
|
||||
"If you continue to receive this error, please go\n"
|
||||
"to the Support section of the SecondLife.com web site\n"
|
||||
"to the Support section of " + gHippoGridManager->getCurrentGrid()->getGridNick() + "'s web site\n"
|
||||
"and report the problem.";
|
||||
break;
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
bottom="-220" drop_shadow_visible="true" enabled="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="96"
|
||||
mouse_opaque="true" name="For Sale: Price L$[PRICE]." v_pad="0" width="226">
|
||||
Price: L$[PRICE] (L$[PRICE_PER_SQM]/sq.m.).
|
||||
Price: [CURRENCY][PRICE] ([CURRENCY][PRICE_PER_SQM]/sq.m.).
|
||||
</text>
|
||||
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-240" drop_shadow_visible="true" enabled="false" follows="left|top"
|
||||
@@ -627,7 +627,7 @@ Go to World menu > About Land or select another parcel to show its details.
|
||||
width="119" />
|
||||
<check_box bottom="-140" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||
height="16" initial_value="false"
|
||||
label="Show Place in Search (L$30/week) under" left="14"
|
||||
label="Show Place in Search ([DIRECTORYFEE]) under" left="14"
|
||||
mouse_opaque="true" name="ShowDirectoryCheck" radio_style="false"
|
||||
tool_tip="Let people see this parcel in search results" width="268" />
|
||||
<string name="search_enabled_tooltip">
|
||||
@@ -1484,7 +1484,7 @@ Select the thumbnail to choose a different texture.
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<spinner bottom_delta="-20" enabled="false" follows="left|top" height="16" increment="1"
|
||||
initial_val="10" label="Price in L$:" label_width="120" left="28"
|
||||
initial_val="10" label="Price in [CURRENCY]:" label_width="120" left="28"
|
||||
max_val="500" min_val="1" mouse_opaque="true" name="PriceSpin" width="180" />
|
||||
<spinner bottom_delta="-20" enabled="false" follows="left|top" height="16"
|
||||
increment="0.25" initial_val="1" label="Hours of access:" label_width="120"
|
||||
|
||||
@@ -187,7 +187,7 @@ We recommend BVH files exported from Poser 4.
|
||||
</text>
|
||||
<button bottom="10" follows="bottom|right" height="20" label="Cancel" name="cancel_btn"
|
||||
right="290" width="123" />
|
||||
<button bottom="10" follows="bottom|left" height="20" label="Upload (L$[AMOUNT])"
|
||||
<button bottom="10" follows="bottom|left" height="20" label="Upload ([UPLOADFEE])"
|
||||
left_delta="-129" name="ok_btn" width="123" />
|
||||
<string name="failed_to_initialize">
|
||||
Failed to initialize motion
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
bottom_delta="-28" drop_shadow_visible="true" follows="left|right|bottom"
|
||||
font="SansSerif" h_pad="0" halign="left" height="24" left="15"
|
||||
mouse_opaque="true" name="buy_text" v_pad="0" width="281">
|
||||
Buy for L$[AMOUNT] from [NAME]?
|
||||
Buy for [CURRENCY][AMOUNT] from [NAME]?
|
||||
</text>
|
||||
<button bottom="-244" follows="right|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="Cancel" label_selected="Cancel" left="216"
|
||||
|
||||
@@ -30,15 +30,15 @@
|
||||
</text>
|
||||
<text bottom_delta="0" follows="top|left" height="16" left="72"
|
||||
name="buy_action_unknown" right="-20" >
|
||||
Buy L$ on the LindeX currency exchange
|
||||
Buy [CURRENCY] on the LindeX currency exchange
|
||||
</text>
|
||||
<text bottom_delta="0" follows="top|left" height="16" left="72" name="buy_action"
|
||||
right="-20" >
|
||||
[NAME] L$ [PRICE]
|
||||
[NAME] [CURRENCY] [PRICE]
|
||||
</text>
|
||||
<text bottom_delta="-20" follows="top|left" height="16" left="72"
|
||||
name="currency_action" width="40">
|
||||
Buy L$
|
||||
Buy [CURRENCY]
|
||||
</text>
|
||||
<line_editor bottom_delta="0" follows="top|right" height="16" left_delta="45"
|
||||
name="currency_amt" width="80">
|
||||
@@ -58,7 +58,7 @@
|
||||
</text>
|
||||
<text bottom_delta="0" follows="top|left" halign="right" height="16" left="80"
|
||||
name="balance_amount" width="240">
|
||||
L$ [AMT]
|
||||
[CURRENCY] [AMT]
|
||||
</text>
|
||||
<text bottom_delta="-20" follows="top|left" height="16" left="80" name="buying_label"
|
||||
width="240">
|
||||
@@ -66,7 +66,7 @@
|
||||
</text>
|
||||
<text bottom_delta="0" follows="top|left" halign="right" height="16" left="80"
|
||||
name="buying_amount" width="240">
|
||||
L$ [AMT]
|
||||
[CURRENCY] [AMT]
|
||||
</text>
|
||||
<text bottom_delta="-20" follows="top|left" height="16" left="80" name="total_label"
|
||||
width="240">
|
||||
@@ -74,7 +74,7 @@
|
||||
</text>
|
||||
<text bottom_delta="0" follows="top|left" halign="right" height="16" left="80"
|
||||
name="total_amount" width="240">
|
||||
L$ [AMT]
|
||||
[CURRENCY] [AMT]
|
||||
</text>
|
||||
<text bottom_delta="-48" follows="top|left" height="32" left="72"
|
||||
name="purchase_warning_repurchase" right="-20" >
|
||||
@@ -91,6 +91,6 @@ Increase the amount to buy.
|
||||
<button bottom_delta="0" follows="bottom|left" height="20" label="Purchase"
|
||||
left_delta="-96" name="buy_btn" width="90" />
|
||||
<string name="buy_currency">
|
||||
Buy L$ [LINDENS] for approx. US$ [USD]
|
||||
Buy [CURRENCY] [LINDENS] for approx. US$ [USD]
|
||||
</string>
|
||||
</floater>
|
||||
|
||||
@@ -159,7 +159,7 @@ This parcel is 512 sq.m. of land.
|
||||
</text>
|
||||
<text bottom_delta="-25" follows="top|left" height="16" left="72"
|
||||
name="currency_action" width="90">
|
||||
Buy additional L$
|
||||
Buy additional [CURRENCY]
|
||||
</text>
|
||||
<pad height="0" width="8" />
|
||||
<line_editor bottom_delta="5" follows="top|right" height="16" left="170" name="currency_amt"
|
||||
@@ -258,10 +258,10 @@ Try selecting a smaller area.
|
||||
You hold [BUYER] sq.m. of land.
|
||||
</string>
|
||||
<string name="pay_to_for_land">
|
||||
Pay L$ [AMOUNT] to [SELLER] for this land
|
||||
Pay [CURRENCY] [AMOUNT] to [SELLER] for this land
|
||||
</string>
|
||||
<string name="buy_for_US">
|
||||
Buy L$ [AMOUNT] for approx. US$ [AMOUNT2],
|
||||
Buy [CURRENCY] [AMOUNT] for approx. US$ [AMOUNT2],
|
||||
</string>
|
||||
<string name="parcel_meters">
|
||||
This parcel is [AMOUNT] sq.m.
|
||||
@@ -283,29 +283,29 @@ supports [AMOUNT2] objects
|
||||
objects not included
|
||||
</string>
|
||||
<string name="info_price_string">
|
||||
L$ [PRICE]
|
||||
(L$ [PRICE_PER_SQM]/sq.m.)
|
||||
[CURRENCY] [PRICE]
|
||||
([CURRENCY] [PRICE_PER_SQM]/sq.m.)
|
||||
[SOLD_WITH_OBJECTS]
|
||||
</string>
|
||||
<string name="insufficient_land_credits">
|
||||
The group [GROUP] will need sufficient contributed land use credits to cover this parcel before the purchase will complete.
|
||||
</string>
|
||||
<string name="have_enough_lindens">
|
||||
You have L$ [AMOUNT], which is enough to buy this land.
|
||||
You have [CURRENCY] [AMOUNT], which is enough to buy this land.
|
||||
</string>
|
||||
<string name="not_enough_lindens">
|
||||
You have only L$ [AMOUNT], and need L$ [AMOUNT2] more.
|
||||
You have only [CURRENCY] [AMOUNT], and need [CURRENCY] [AMOUNT2] more.
|
||||
</string>
|
||||
<string name="balance_left">
|
||||
After the purchase, you will have L$ [AMOUNT] left.
|
||||
After the purchase, you will have [CURRENCY] [AMOUNT] left.
|
||||
</string>
|
||||
<string name="balance_needed">
|
||||
You need to buy at least L$ [AMOUNT] to afford this land.
|
||||
You need to buy at least [CURRENCY] [AMOUNT] to afford this land.
|
||||
</string>
|
||||
<string name="no_parcel_selected">
|
||||
(no parcel selected)
|
||||
</string>
|
||||
<string name="buy_currency">
|
||||
Buy L$ [LINDENS] for approx. US$ [USD]
|
||||
Buy [CURRENCY] [LINDENS] for approx. US$ [USD]
|
||||
</string>
|
||||
</floater>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
bottom_delta="-28" drop_shadow_visible="true" follows="left|right|bottom"
|
||||
font="SansSerif" h_pad="0" halign="left" height="24" left="15"
|
||||
mouse_opaque="true" name="buy_text" v_pad="0" width="281">
|
||||
Buy for L$[AMOUNT] from [NAME]?
|
||||
Buy for [CURRENCY] [AMOUNT] from [NAME]?
|
||||
</text>
|
||||
<button bottom="-244" follows="right|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="Cancel" label_selected="Cancel" left="216"
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been denied permission to: [PERMISSIONS].
|
||||
</string>
|
||||
<string name="ScriptTakeMoney">
|
||||
Take Linden dollars (L$) from you
|
||||
Take in-world money ([CURRENCY]) from you
|
||||
</string>
|
||||
<string name="ActOnControlInputs">
|
||||
Act on your control inputs
|
||||
|
||||
@@ -348,7 +348,7 @@
|
||||
None Found.
|
||||
</string>
|
||||
<string name="land_help_text">
|
||||
Land can be bought direct for Linden Dollars (L$) or at auction for either L$ or US$.
|
||||
Land can be bought direct for in-world money ([CURRENCY]) or at auction for either [CURRENCY] or US$.
|
||||
To buy direct, visit the land and click on the place name in the title bar.
|
||||
</string>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
@@ -391,7 +391,7 @@ To buy direct, visit the land and click on the place name in the title bar.
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" follows="left|top"
|
||||
bottom="-24" font="SansSerifSmall" halign="left" height="16" left="116" mouse_opaque="true"
|
||||
name="pricecheck_symbol" width="15">
|
||||
L$
|
||||
[CURRENCY]
|
||||
</text>
|
||||
<check_box bottom_delta="-18" control_name="FindLandArea" follows="left|top"
|
||||
font="SansSerifSmall" height="16" initial_value="true"
|
||||
@@ -418,9 +418,9 @@ To buy direct, visit the land and click on the place name in the title bar.
|
||||
<column label="" name="type" width="-1" />
|
||||
<column dynamicwidth="true" label="Name" name="name" />
|
||||
<column label="Type" name="landtype" width="50" />
|
||||
<column label="L$ Price" name="price" width="65" />
|
||||
<column label="[CURRENCY] Price" name="price" width="65" />
|
||||
<column label="Area" name="area" width="50" />
|
||||
<column label="L$/m²" name="per_meter" width="65" />
|
||||
<column label="[CURRENCY]/m²" name="per_meter" width="65" />
|
||||
</scroll_list>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-20" drop_shadow_visible="true" follows="left|bottom"
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
bottom="-146" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerif" h_pad="0" halign="left" height="16" left_delta="-108"
|
||||
mouse_opaque="true" name="land cost text" v_pad="0" width="110">
|
||||
L$ per sq. meter:
|
||||
[CURRENCY] per sq. meter:
|
||||
</text>
|
||||
<button bottom="-170" follows="top|right" font="SansSerifSmall" halign="center"
|
||||
height="20" label="Refresh" label_selected="Refresh" left="278"
|
||||
|
||||
@@ -1,657 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater can_close="true" can_drag_on_left="false" can_minimize="true"
|
||||
can_resize="false" height="360" min_height="100" min_width="100"
|
||||
name="groupinfo" title="The Lindens - Group Information" width="458">
|
||||
<tab_container bottom="-330" height="306" left="0" mouse_opaque="false" name="tab"
|
||||
tab_position="top" width="458">
|
||||
<panel bottom="-305" follows="left|top|right|bottom" height="289" label="General"
|
||||
left="1" mouse_opaque="true" name="gen" width="456">
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-24" drop_shadow_visible="true" follows="left|top" font="SansSerif"
|
||||
h_pad="0" halign="left" height="16" left="12" mouse_opaque="true"
|
||||
name="title_box" v_pad="0" width="436">
|
||||
Group Info
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-18" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt" v_pad="0" width="436">
|
||||
Groups are a fun way to collaborate with your friends.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-16" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt2" v_pad="0" width="436">
|
||||
Groups let you have titles and insignia and vote.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-16" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt3" v_pad="0" width="436">
|
||||
Anyone may create a group. Each person may belong to up to 15 groups.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-16" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt4" v_pad="0" width="436">
|
||||
Groups must have at least 3 members to stay active.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-16" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="group_create_text" v_pad="0" width="436">
|
||||
Creating a group costs L$100.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-32" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl" v_pad="0" width="70">
|
||||
Name:
|
||||
</text>
|
||||
<line_editor bevel_style="in" bg_readonly_color="0, 0, 0, 0" border_style="line"
|
||||
border_thickness="1" bottom="-138" follows="left|top" font="SansSerifSmall"
|
||||
height="16" left_delta="75" max_length="35" mouse_opaque="true" name="name"
|
||||
text_readonly_color="1, 1, 1, 1" width="361" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-156" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left="12"
|
||||
mouse_opaque="true" name="founder_label" v_pad="0" width="70">
|
||||
Founder:
|
||||
</text>
|
||||
<name_editor bevel_style="in" bg_readonly_color="0, 0, 0, 0" border_style="line"
|
||||
border_thickness="1" bottom="-156" follows="left|top" font="SansSerifSmall"
|
||||
height="16" left_delta="75" max_length="35" mouse_opaque="true"
|
||||
name="founder" text_readonly_color="1, 1, 1, 1" width="361" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-174" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl2" v_pad="0" width="70">
|
||||
Charter:
|
||||
</text>
|
||||
<text_editor bg_readonly_color="0, 0, 0, 0" bottom="-206" embedded_items="false"
|
||||
follows="left|top" font="SansSerifSmall" height="48" left="87"
|
||||
max_length="511" mouse_opaque="true" name="charter"
|
||||
text_readonly_color="1, 1, 1, 1" width="361" word_wrap="true" />
|
||||
<check_box bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16"
|
||||
initial_value="true" label="Show In Group List" left="87"
|
||||
mouse_opaque="true" name="sho" radio_style="false" width="361" />
|
||||
<check_box bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16"
|
||||
initial_value="false" label="Show Members In Group List" left="87"
|
||||
mouse_opaque="true" name="sho_mem" radio_style="false" width="361" />
|
||||
<check_box bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16"
|
||||
initial_value="false" label="Publish on the web." left="87"
|
||||
mouse_opaque="true" name="allow_publish" radio_style="false"
|
||||
tool_tip="Publish your profile information on the web." width="361" />
|
||||
<button bottom="-260" follows="left|top" font="SansSerif" halign="center" height="16"
|
||||
label="?" label_selected="?" left_delta="130" mouse_opaque="true"
|
||||
name="publish_help_btn" width="20" />
|
||||
<check_box bottom="-278" follows="left|top" font="SansSerifSmall" height="16"
|
||||
initial_value="false" label="Mature" left="87" mouse_opaque="true"
|
||||
name="mature" radio_style="false"
|
||||
tool_tip="Your profile information is considered mature." width="361" />
|
||||
</panel>
|
||||
<panel bottom="-305" follows="left|top|right|bottom" height="289" label="Titles"
|
||||
left="1" mouse_opaque="true" name="tit" width="456">
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-24" drop_shadow_visible="true" follows="left|top" font="SansSerif"
|
||||
h_pad="0" halign="left" height="16" left="12" mouse_opaque="true"
|
||||
name="txt" v_pad="0" width="436">
|
||||
Group Titles
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-18" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt2" v_pad="0" width="436">
|
||||
Groups can have officers and members, both of whom can have special titles.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-16" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt3" v_pad="0" width="436">
|
||||
These titles appear before their names in the world, in chat, and in IM.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-32" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl" v_pad="0" width="70">
|
||||
Officer Title:
|
||||
</text>
|
||||
<line_editor bevel_style="in" bg_readonly_color="0, 0, 0, 0" border_style="line"
|
||||
border_thickness="1" bottom="-90" follows="left|top" font="SansSerifSmall"
|
||||
height="16" left_delta="75" max_length="20" mouse_opaque="true" name="ohon"
|
||||
text_readonly_color="1, 1, 1, 1" width="105" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-90" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left_delta="110"
|
||||
mouse_opaque="true" name="lbl2" v_pad="0" width="70">
|
||||
Member Title:
|
||||
</text>
|
||||
<line_editor bevel_style="in" bg_readonly_color="0, 0, 0, 0" border_style="line"
|
||||
border_thickness="1" bottom="-90" follows="left|top" font="SansSerifSmall"
|
||||
height="16" left_delta="75" max_length="20" mouse_opaque="true" name="mhon"
|
||||
text_readonly_color="1, 1, 1, 1" width="105" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-124" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl3" v_pad="0" width="436">
|
||||
Drag a texture out of your inventory to set the group's insignia.
|
||||
</text>
|
||||
<texture_picker bottom="-220" follows="left|top" height="80" left="87" mouse_opaque="true"
|
||||
name="insig" tool_tip="Click to choose a picture" width="64" />
|
||||
</panel>
|
||||
<panel bottom="-305" follows="left|top|right|bottom" height="289" label="Members"
|
||||
left="1" mouse_opaque="true" name="mem" width="456">
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-24" drop_shadow_visible="true" follows="left|top" font="SansSerif"
|
||||
h_pad="0" halign="left" height="16" left="12" mouse_opaque="true"
|
||||
name="txt" v_pad="0" width="436">
|
||||
Group Members
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-18" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt2" v_pad="0" width="436">
|
||||
Current Group officers and members.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-16" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt3" v_pad="0" width="436">
|
||||
Click on a name to view to the member's profile.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-18" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl" v_pad="0" width="70">
|
||||
Officers:
|
||||
</text>
|
||||
<name_list allow_calling_card_drop="false" background_visible="false"
|
||||
bg_selected_color="0.243137, 0.243137, 0.243137, 1" bottom="-132"
|
||||
column_padding="0" draw_border="true" fg_disable_color="1, 1, 1, 1"
|
||||
fg_selected_color="1, 1, 1, 1" fg_unselected_color="1, 1, 1, 1"
|
||||
follows="left|top" height="72" left="87" mouse_opaque="true"
|
||||
multi_select="false" name="officers" width="361" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-150" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left="12"
|
||||
mouse_opaque="true" name="members_label" v_pad="0" width="70">
|
||||
Members:
|
||||
</text>
|
||||
<name_list allow_calling_card_drop="false" background_visible="false" bottom="-254"
|
||||
column_padding="0" draw_border="true" fg_disable_color="1, 1, 1, 1"
|
||||
fg_selected_color="1, 1, 1, 1" fg_unselected_color="1, 1, 1, 1"
|
||||
follows="left|top" height="120" left="87" mouse_opaque="true"
|
||||
multi_select="false" name="members" width="361" />
|
||||
<button bottom_delta="-27" follows="left|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="Eject Member" label_selected="Eject Member" left="87"
|
||||
mouse_opaque="true" name="eject_member_btn" width="120" />
|
||||
</panel>
|
||||
<panel bottom="-305" follows="left|top|right|bottom" height="289" label="Voting"
|
||||
left="1" mouse_opaque="true" name="voting" width="456">
|
||||
<tab_container bottom="-289" height="285" left="30" mouse_opaque="false" name="tab"
|
||||
tab_position="top" width="400">
|
||||
<panel bottom="-284" follows="left|top|right|bottom" height="268" label="Election"
|
||||
left="1" mouse_opaque="true" name="recall" width="398">
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-18" drop_shadow_visible="true" follows="left|top" font="SansSerif"
|
||||
h_pad="0" halign="left" height="10" left="12" mouse_opaque="false"
|
||||
name="txt" v_pad="0" width="363">
|
||||
Group Election
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-24" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="false" name="instructions" v_pad="0" width="350">
|
||||
Press the Start Election button to start a new election.
|
||||
The candidates will include all non-officer group members.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-26" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="10" left="12"
|
||||
mouse_opaque="false" name="lbl" v_pad="0" width="70">
|
||||
Candidates:
|
||||
</text>
|
||||
<name_list allow_calling_card_drop="false" background_visible="false"
|
||||
bg_selected_color="0.243137, 0.243137, 0.243137, 1" bottom="-150"
|
||||
column_padding="0" draw_border="true" fg_disable_color="1, 1, 1, 1"
|
||||
fg_selected_color="1, 1, 1, 1" fg_unselected_color="1, 1, 1, 1"
|
||||
follows="left|top" height="94" left="87" mouse_opaque="true"
|
||||
multi_select="false" name="candidates" width="290" />
|
||||
<button bottom_delta="-116" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="Vote" label_selected="Vote" left="87" mouse_opaque="true"
|
||||
name="btn_vote" width="60" />
|
||||
<button bottom="-266" follows="left|top" font="SansSerif" halign="center" height="20"
|
||||
label="Abstain" label_selected="Abstain" left_delta="68"
|
||||
mouse_opaque="true" name="btn_abstain" width="60" />
|
||||
<button bottom="-260" follows="top|right" font="SansSerif" halign="center" height="20"
|
||||
label="Start Election" label_selected="Start Election" left="218"
|
||||
mouse_opaque="true" name="btn_start_election" width="160" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-172" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="12"
|
||||
mouse_opaque="false" name="lbl2" v_pad="0" width="70">
|
||||
Quorum:
|
||||
</text>
|
||||
<spinner bottom="-172" decimal_digits="0" follows="left|top" height="20" increment="1"
|
||||
initial_val="1" left_delta="75" max_val="111" min_val="1"
|
||||
mouse_opaque="true" name="quorum"
|
||||
tool_tip="# of total voting members needed for election results to be binding."
|
||||
width="40" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-172" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="20" left_delta="45"
|
||||
mouse_opaque="false" name="quorum_text" v_pad="0" width="300">
|
||||
out of 111 total group members.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-196" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="210"
|
||||
mouse_opaque="false" name="lbl3" v_pad="0" width="65">
|
||||
Majority:
|
||||
</text>
|
||||
<radio_group bottom="-232" follows="left|top" height="60" left="270" mouse_opaque="true"
|
||||
name="majority" tool_tip="Majority of total votes needed to win."
|
||||
width="105">
|
||||
<radio_item bottom="-19" follows="left|top" height="15" left="4" mouse_opaque="true"
|
||||
name="radio" width="99">
|
||||
Simple Majority
|
||||
</radio_item>
|
||||
<radio_item bottom_delta="-19" follows="left|top" height="15" left="4" mouse_opaque="true"
|
||||
name="radio2" width="93">
|
||||
2/3 Majority
|
||||
</radio_item>
|
||||
<radio_item bottom_delta="-19" follows="left|top" height="15" left="4" mouse_opaque="true"
|
||||
name="radio3" width="93">
|
||||
Unanimous
|
||||
</radio_item>
|
||||
</radio_group>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-203" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="12"
|
||||
mouse_opaque="false" name="duration_lbl" v_pad="0" width="70">
|
||||
Duration:
|
||||
</text>
|
||||
<spinner bottom="-200" decimal_digits="0" follows="left|top" height="20" increment="1"
|
||||
initial_val="7" left_delta="75" max_val="30" min_val="1"
|
||||
mouse_opaque="true" name="duration"
|
||||
tool_tip="# of days the election will last." width="40" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-203" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="20" left_delta="45"
|
||||
mouse_opaque="false" name="duration_days" v_pad="0" width="300">
|
||||
days
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-224" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="12"
|
||||
mouse_opaque="false" name="start_lbl" v_pad="0" width="70">
|
||||
Election Start:
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-224" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="20" left_delta="75"
|
||||
mouse_opaque="false" name="start_date" v_pad="0" width="200" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-242" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="12"
|
||||
mouse_opaque="false" name="end_lbl" v_pad="0" width="70">
|
||||
Election Ends:
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-242" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="20" left_delta="75"
|
||||
mouse_opaque="false" name="end_date" v_pad="0" width="200" />
|
||||
</panel>
|
||||
<panel bottom="-284" follows="left|top|right|bottom" height="268" label="Proposal"
|
||||
left="1" mouse_opaque="true" name="panel_group_proposals" width="398">
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-18" drop_shadow_visible="true" follows="left|top" font="SansSerif"
|
||||
h_pad="0" halign="left" height="10" left="12" mouse_opaque="false"
|
||||
name="txt" v_pad="0" width="363">
|
||||
Group Proposals
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-24" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="false" name="instructions" v_pad="0" width="350">
|
||||
There are no active proposals. Press the Create Proposal button to
|
||||
create a new proposal.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-26" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="10" left="12"
|
||||
mouse_opaque="false" name="proposal_lbl" v_pad="0" width="70">
|
||||
Proposals:
|
||||
</text>
|
||||
<scroll_list background_visible="false" bg_selected_color="0.243137, 0.243137, 0.243137, 1"
|
||||
bottom="-190" column_padding="5" draw_border="true"
|
||||
fg_disable_color="1, 1, 1, 1" fg_selected_color="0, 0, 0, 1"
|
||||
fg_unselected_color="1, 1, 1, 1" follows="left|top" height="134" left="87"
|
||||
mouse_opaque="true" multi_select="false" name="proposals" width="290" />
|
||||
<text_editor bg_readonly_color="0, 0, 0, 0" bg_writeable_color="1, 1, 1, 1"
|
||||
bottom_delta="40" embedded_items="false" follows="left|top"
|
||||
font="SansSerif" height="94" left="87" max_length="255" mouse_opaque="true"
|
||||
name="proposal_text" text_readonly_color="1, 1, 1, 1" width="290"
|
||||
word_wrap="false" />
|
||||
<button bottom_delta="-22" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="Yes" label_selected="Yes" left="87" mouse_opaque="true"
|
||||
name="btn_yes" width="60" />
|
||||
<button bottom="-172" follows="left|top" font="SansSerif" halign="center" height="20"
|
||||
label="No" label_selected="No" left_delta="68" mouse_opaque="true"
|
||||
name="btn_no" width="60" />
|
||||
<button bottom="-172" follows="left|top" font="SansSerif" halign="center" height="20"
|
||||
label="Abstain" label_selected="Abstain" left_delta="68"
|
||||
mouse_opaque="true" name="btn_abstain" width="60" />
|
||||
<button bottom="-172" follows="left|top" font="SansSerif" halign="center" height="20"
|
||||
label="View List" label_selected="View List" left_delta="68"
|
||||
mouse_opaque="true" name="btn_view_list" width="90" />
|
||||
<button bottom_delta="-44" follows="left|top" font="SansSerif" halign="center"
|
||||
height="20" label="View Item" label_selected="View Item" left="291"
|
||||
mouse_opaque="true" name="btn_view_item" width="90" />
|
||||
<button bottom="-216" follows="left|top" font="SansSerif" halign="center" height="20"
|
||||
label="Create Proposal" label_selected="Create Proposal" left_delta="-204"
|
||||
mouse_opaque="true" name="btn_proposal" width="160" />
|
||||
<button bottom_delta="-50" follows="left|top" font="SansSerif" halign="center"
|
||||
height="20" label="Submit" label_selected="Submit" left="87"
|
||||
mouse_opaque="true" name="btn_submit" width="60" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-200" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="12"
|
||||
mouse_opaque="false" name="quorum_lbl" v_pad="0" width="70">
|
||||
Quorum:
|
||||
</text>
|
||||
<spinner bottom="-200" decimal_digits="0" follows="left|top" height="20" increment="1"
|
||||
initial_val="0" left_delta="75" max_val="111" min_val="1"
|
||||
mouse_opaque="true" name="quorum"
|
||||
tool_tip="# of total voting members needed for election results to be binding."
|
||||
width="40" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-200" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="20" left_delta="45"
|
||||
mouse_opaque="false" name="quorum_text" v_pad="0" width="300">
|
||||
out of 111 total group members.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-224" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="210"
|
||||
mouse_opaque="false" name="majority_lbl" v_pad="0" width="65">
|
||||
Majority:
|
||||
</text>
|
||||
<radio_group bottom="-260" follows="left|top" height="60" left="270" mouse_opaque="true"
|
||||
name="majority" tool_tip="Majority of total votes needed to win."
|
||||
width="105">
|
||||
<radio_item bottom="-19" follows="left|top" height="15" left="4" mouse_opaque="true"
|
||||
name="radio" width="99">
|
||||
Simple Majority
|
||||
</radio_item>
|
||||
<radio_item bottom_delta="-19" follows="left|top" height="15" left="4" mouse_opaque="true"
|
||||
name="radio2" width="93">
|
||||
2/3 Majority
|
||||
</radio_item>
|
||||
<radio_item bottom_delta="-19" follows="left|top" height="15" left="4" mouse_opaque="true"
|
||||
name="radio3" width="93">
|
||||
Unanimous
|
||||
</radio_item>
|
||||
</radio_group>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-227" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="12"
|
||||
mouse_opaque="false" name="duration_lbl" v_pad="0" width="70">
|
||||
Duration:
|
||||
</text>
|
||||
<spinner bottom="-224" decimal_digits="0" follows="left|top" height="20" increment="1"
|
||||
initial_val="7" left_delta="75" max_val="30" min_val="1"
|
||||
mouse_opaque="true" name="duration"
|
||||
tool_tip="# of days the election will last." width="40" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-227" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="20" left_delta="45"
|
||||
mouse_opaque="false" name="duration_text" v_pad="0" width="300">
|
||||
days
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-248" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="12"
|
||||
mouse_opaque="false" name="start_lbl" v_pad="0" width="70">
|
||||
Voting Start:
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-248" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="20" left_delta="75"
|
||||
mouse_opaque="false" name="start_date" v_pad="0" width="200" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-266" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="20" left="12"
|
||||
mouse_opaque="false" name="end_lbl" v_pad="0" width="70">
|
||||
Voting Ends:
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-266" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="20" left_delta="75"
|
||||
mouse_opaque="false" name="end_date" v_pad="0" width="200" />
|
||||
</panel>
|
||||
<panel bottom="-284" follows="left|top|right|bottom" height="268" label="History"
|
||||
left="1" mouse_opaque="true" name="History" width="398">
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-18" drop_shadow_visible="true" follows="left|top" font="SansSerif"
|
||||
h_pad="0" halign="left" height="10" left="12" mouse_opaque="false"
|
||||
name="txt" v_pad="0" width="363">
|
||||
Group Voting History
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-24" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="false" name="instructions" v_pad="0" width="350">
|
||||
You may view past group vote results by selecting the vote and.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-14" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="false" name="instructions2" v_pad="0" width="350">
|
||||
pressing View Item.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-12" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="10" left="12"
|
||||
mouse_opaque="false" name="history_list_lbl" v_pad="0" width="70">
|
||||
Past Votes:
|
||||
</text>
|
||||
<scroll_list background_visible="false" bg_selected_color="1, 1, 1, 1" bottom="-230"
|
||||
column_padding="10" draw_border="true" fg_disable_color="1, 1, 1, 1"
|
||||
fg_selected_color="0, 0, 0, 1" fg_unselected_color="1, 1, 1, 1"
|
||||
follows="left|top" height="170" left="87" mouse_opaque="true"
|
||||
multi_select="false" name="history_list" width="300" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-68" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="10" left="12"
|
||||
mouse_opaque="false" name="vote_text_lbl" v_pad="0" width="70">
|
||||
Vote Results:
|
||||
</text>
|
||||
<text_editor bg_readonly_color="0, 0, 0, 0" bg_writeable_color="1, 1, 1, 1" bottom="-230"
|
||||
embedded_items="false" follows="left|top" font="SansSerif" height="170"
|
||||
left="87" max_length="1024" mouse_opaque="true" name="vote_text"
|
||||
text_readonly_color="1, 1, 1, 1" width="300" word_wrap="false" />
|
||||
<button bottom="-260" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="View List" label_selected="View List" left="291" mouse_opaque="true"
|
||||
name="btn_view_list" width="90" />
|
||||
<button bottom_delta="0" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="View Item" label_selected="View Item" left_delta="0"
|
||||
mouse_opaque="true" name="btn_view_item" width="90" />
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
<panel bottom="-305" follows="left|top|right|bottom" height="289" label="Invite"
|
||||
left="1" mouse_opaque="true" name="inv" width="456">
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-24" drop_shadow_visible="true" follows="left|top" font="SansSerif"
|
||||
h_pad="0" halign="left" height="16" left="12" mouse_opaque="true"
|
||||
name="txt" v_pad="0" width="436">
|
||||
Group Invitations
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-18" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt2" v_pad="0" width="436">
|
||||
Invitations are sent via instant message.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-16" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt3" v_pad="0" width="436">
|
||||
Click on the add button to add users to the list.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-32" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl" v_pad="0" width="70">
|
||||
Officers:
|
||||
</text>
|
||||
<name_list allow_calling_card_drop="true" background_visible="true" bottom="-134"
|
||||
column_padding="5" draw_border="true" follows="top" height="60" left="87"
|
||||
mouse_opaque="true" multi_select="false" name="inv officers" width="290" />
|
||||
<button bottom_delta="-22" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="Add Officer..." label_selected="Add Officer..." left="87"
|
||||
mouse_opaque="true" name="add_officer_btn" width="120" />
|
||||
<button bottom="-156" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="Remove Selected" label_selected="Remove Selected" left_delta="128"
|
||||
mouse_opaque="true" name="remove_officer_btn" width="120" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-174" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl2" v_pad="0" width="70">
|
||||
Members:
|
||||
</text>
|
||||
<name_list allow_calling_card_drop="true" background_visible="true" bottom="-218"
|
||||
column_padding="5" draw_border="true" follows="top" height="60" left="87"
|
||||
mouse_opaque="true" multi_select="false" name="inv members" width="290" />
|
||||
<button bottom_delta="-22" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="Add Member..." label_selected="Add Member..." left="87"
|
||||
mouse_opaque="true" name="add_member_btn" width="120" />
|
||||
<button bottom="-240" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="Remove Selected" label_selected="Remove Selected" left_delta="128"
|
||||
mouse_opaque="true" name="remove_member_btn" width="120" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-258" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="right" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl3" v_pad="0" width="70">
|
||||
Signup Fee:
|
||||
</text>
|
||||
<spinner bottom="-258" decimal_digits="0" follows="left|top" height="16" increment="1"
|
||||
initial_val="0" left_delta="75" max_val="1e+007" min_val="0"
|
||||
mouse_opaque="true" name="fee" width="60" />
|
||||
<check_box bottom_delta="-24" follows="left|top" font="SansSerifSmall" height="16"
|
||||
initial_value="false" label="Open enrollment (no invite necessary)"
|
||||
left="87" mouse_opaque="true" name="open" radio_style="false" width="361" />
|
||||
</panel>
|
||||
<panel bottom="-305" follows="left|top|right|bottom" height="289" label="Land"
|
||||
left="1" mouse_opaque="true" name="land" width="456">
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-24" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="txt" v_pad="0" width="436">
|
||||
Group Owned Land
|
||||
</text>
|
||||
<scroll_list background_visible="true" bottom_delta="-152" column_padding="5"
|
||||
draw_border="true" follows="top" height="150" left="8" mouse_opaque="true"
|
||||
multi_select="false" name="parcel list" width="440" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="-18" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl" v_pad="0" width="180">
|
||||
Total Contributed Land:
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-210" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="32" left="192"
|
||||
mouse_opaque="true" name="total" v_pad="0" width="75" />
|
||||
<button bottom="-198" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="Map..." label_selected="Map..." left="380" mouse_opaque="true"
|
||||
name="map_btn" width="60" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-216" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl2" v_pad="0" width="180">
|
||||
Total Land In Use:
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-232" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="32" left="192"
|
||||
mouse_opaque="true" name="committed" v_pad="0" width="75" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-238" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="lbl3" v_pad="0" width="180">
|
||||
Land Available:
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-254" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="32" left="192"
|
||||
mouse_opaque="true" name="avail" v_pad="0" width="75" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-260" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="your_contrib_label" v_pad="0" width="180" />
|
||||
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-260"
|
||||
follows="left|top" font="SansSerifSmall" height="16" left_delta="185"
|
||||
max_length="10" mouse_opaque="true" name="your_contrib" width="60" />
|
||||
<button bottom="-264" follows="top" font="SansSerif" halign="center" height="20"
|
||||
label="Set Contribution" label_selected="Set Contribution" left_delta="103"
|
||||
mouse_opaque="true" name="set_contrib_btn" width="140" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-284" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="warning_label" v_pad="0" width="436">
|
||||
WARNING: Group maintains too much land. Group members need to contribute more.
|
||||
</text>
|
||||
</panel>
|
||||
<panel bottom="-305" follows="left|top|right|bottom" height="289" label="Money"
|
||||
left="1" mouse_opaque="true" name="mon" width="456">
|
||||
<tab_container bottom="-289" height="285" left="0" mouse_opaque="false"
|
||||
name="group money history tab" tab_position="top" width="400">
|
||||
<panel bottom="-284" follows="left|top|right|bottom" height="268" label="Planning"
|
||||
left="1" mouse_opaque="true" name="money panel" width="398">
|
||||
<text_editor bg_readonly_color="0.784314, 0.819608, 0.8, 1" bottom="-260"
|
||||
embedded_items="false" follows="left|top|right|bottom" font="Monospace"
|
||||
height="252" left="8" max_length="2147483647" mouse_opaque="true"
|
||||
name="money text" width="382" word_wrap="false" />
|
||||
</panel>
|
||||
<panel bottom="-284" follows="left|top|right|bottom" height="268" label="Details"
|
||||
left="1" mouse_opaque="true" name="money panel2" width="398">
|
||||
<text_editor bg_readonly_color="0.784314, 0.819608, 0.8, 1" bottom="-232"
|
||||
embedded_items="false" follows="left|top|right|bottom" font="Monospace"
|
||||
height="224" left="8" max_length="2147483647" mouse_opaque="true"
|
||||
name="money text" width="382" word_wrap="false" />
|
||||
<button bottom="-260" follows="left|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="< Earlier" label_selected="< Earlier" left="24"
|
||||
mouse_opaque="true" name="< Earlier" tool_tip="Go back in time"
|
||||
width="80" />
|
||||
<button bottom="-260" follows="right|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="Later >" label_selected="Later >" left_delta="270"
|
||||
mouse_opaque="true" name="Later >" tool_tip="Go forward in time"
|
||||
width="80" />
|
||||
</panel>
|
||||
<panel bottom="-284" follows="left|top|right|bottom" height="268" label="Sales"
|
||||
left="1" mouse_opaque="true" name="money panel3" width="398">
|
||||
<text_editor bg_readonly_color="0.784314, 0.819608, 0.8, 1" bottom="-232"
|
||||
embedded_items="false" follows="left|top|right|bottom" font="Monospace"
|
||||
height="224" left="8" max_length="2147483647" mouse_opaque="true"
|
||||
name="money text" width="382" word_wrap="false" />
|
||||
<button bottom="-260" follows="left|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="< Earlier" label_selected="< Earlier" left="24"
|
||||
mouse_opaque="true" name="< Earlier" tool_tip="Go back in time"
|
||||
width="80" />
|
||||
<button bottom="-260" follows="right|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="Later >" label_selected="Later >" left_delta="270"
|
||||
mouse_opaque="true" name="Later >" tool_tip="Go forward in time"
|
||||
width="80" />
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
</tab_container>
|
||||
<button bottom="-352" follows="left|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="OK" label_selected="OK" left="320" mouse_opaque="true"
|
||||
name="OK" width="60" />
|
||||
<button bottom="-352" follows="left|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="Cancel" label_selected="Cancel" left_delta="68"
|
||||
mouse_opaque="true" name="Cancel" width="60" />
|
||||
</floater>
|
||||
@@ -63,6 +63,6 @@ Try saving image as 24 bit Targa (.tga).
|
||||
left_delta="155" name="temp_check" width="280" tooltip="Sets the asset to be temporary, meaning its free, but in return, only good for a short time before it ceases to exist." />
|
||||
<button bottom="10" follows="bottom|right" height="20" label="Cancel" left="165"
|
||||
name="cancel_btn" width="125" />
|
||||
<button bottom="10" follows="bottom|left" height="20" label="Upload (L$[AMOUNT])"
|
||||
<button bottom="10" follows="bottom|left" height="20" label="Upload ([UPLOADFEE])"
|
||||
left="15" name="ok_btn" width="125" />
|
||||
</floater>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<scroll_list draw_border="true" height="280" left="10" multi_select="true"
|
||||
name="upload_list" top="-30" width="400" />
|
||||
<button bottom="10" height="20" label="Cancel" left="182" name="cancel_btn" width="64" />
|
||||
<button bottom="10" height="20" label="Upload (L$10)" left="31" name="ok_btn"
|
||||
<button bottom="10" height="20" label="Upload ([ULOADFEE])" left="31" name="ok_btn"
|
||||
width="110" />
|
||||
<text bottom="356" height="15" left="420" name="preview_label2">
|
||||
Image Preview:
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
bottom="-315" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="42"
|
||||
mouse_opaque="true" name="TextPrice" v_pad="0" width="56">
|
||||
Price: L$
|
||||
Price: [CURRENCY]
|
||||
</text>
|
||||
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-315"
|
||||
enabled="true" follows="left|top|right" font="SansSerifSmall" height="16"
|
||||
|
||||
@@ -14,6 +14,6 @@
|
||||
width="280" />
|
||||
<button bottom="10" follows="bottom|right" height="20" label="Cancel" left="182"
|
||||
name="cancel_btn" width="64" />
|
||||
<button bottom="10" follows="bottom|left" height="20" label="Upload (L$[AMOUNT])" left="31"
|
||||
<button bottom="10" follows="bottom|left" height="20" label="Upload ([UPLOADFEE])" left="31"
|
||||
name="ok_btn" width="110" />
|
||||
</floater>
|
||||
|
||||
@@ -36,14 +36,14 @@
|
||||
</text_editor>
|
||||
<text bottom_delta="-37" follows="left|bottom" font="SansSerifSmall" left="12"
|
||||
name="fine_print">
|
||||
If your recipient joins SL, you'll get a referral bonus.
|
||||
If your recipient joins our universe, you'll get a referral bonus.
|
||||
</text>
|
||||
<button bottom_delta="-32" follows="right|bottom" height="20" label="Cancel"
|
||||
name="cancel_btn" right="-10" width="100" />
|
||||
<button bottom_delta="0" follows="right|bottom" height="20" label="Send"
|
||||
left_delta="-106" name="send_btn" width="100" />
|
||||
<string name="default_subject">
|
||||
Postcard from Second Life.
|
||||
Postcard from [GRID_NAME].
|
||||
</string>
|
||||
<string name="default_message">
|
||||
Check this out!
|
||||
|
||||
@@ -14,7 +14,7 @@ and appear higher in searches.
|
||||
</text>
|
||||
<text bottom="50" follows="top|left" font="SansSerif" height="20" left="15"
|
||||
name="price_text" width="120">
|
||||
Price for Ad (L$):
|
||||
Price for Ad ([CURRENCY]):
|
||||
</text>
|
||||
<line_editor bottom_delta="2" follows="top|left" height="20" left="125" max_length="6"
|
||||
name="price_edit" width="60" />
|
||||
|
||||
@@ -34,12 +34,12 @@
|
||||
Choose an appropriate price for this land.
|
||||
</text>
|
||||
<text height="16" left="72" name="price_ld" width="20">
|
||||
L$
|
||||
[CURRENCY]
|
||||
</text>
|
||||
<line_editor bottom_delta="0" follows="top|left" height="16" increment="1" initial_val="0"
|
||||
left_delta="20" max_val="999999999" min_val="0" name="price" width="100" />
|
||||
<text bottom_delta="0" height="16" left_delta="110" name="price_per_m" width="200">
|
||||
(L$[PER_METER] per square meter)
|
||||
([CURRENCY][PER_METER] per square meter)
|
||||
</text>
|
||||
<icon follows="top|left" height="64" image_name="badge_note.j2c" left="0"
|
||||
name="step_sell_to" width="64" />
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
Send via email
|
||||
</radio_item>
|
||||
<radio_item bottom="-38" height="16" name="texture">
|
||||
Save to your inventory (L$[AMOUNT])
|
||||
Save to your inventory ([UPLOADFEE])
|
||||
</radio_item>
|
||||
<radio_item bottom="-57" height="16" name="local">
|
||||
Save to your hard drive
|
||||
@@ -26,7 +26,7 @@
|
||||
name="new_snapshot_btn" width="195" />
|
||||
<button bottom_delta="-22" follows="left|top" height="20" label="Send" left="10"
|
||||
name="send_btn" width="105" />
|
||||
<button bottom_delta="0" follows="left|top" height="20" label="Save (L$[AMOUNT])" left="10"
|
||||
<button bottom_delta="0" follows="left|top" height="20" label="Save ([UPLOADFEE])" left="10"
|
||||
name="upload_btn" width="105" />
|
||||
<flyout_button bottom_delta="0" follows="left|top" height="20" label="Save" left="10"
|
||||
list_position="below" mouse_opaque="true" name="save_btn" tool_tip="Save image to a file"
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
height="20" label="Cancel" label_selected="Cancel" left="200"
|
||||
mouse_opaque="true" name="cancel_btn" width="90" />
|
||||
<button bottom="-180" follows="left|bottom" font="SansSerif" halign="center"
|
||||
height="20" label="Upload (L$[AMOUNT])"
|
||||
height="20" label="Upload ([UPLOADFEE])"
|
||||
left_delta="-135" mouse_opaque="true" name="ok_btn" width="130" />
|
||||
</floater>
|
||||
|
||||
@@ -443,7 +443,7 @@
|
||||
bottom_delta="0" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="90"
|
||||
mouse_opaque="true" name="Cost" v_pad="0" width="78">
|
||||
Price: L$
|
||||
Price: [CURRENCY]
|
||||
</text>
|
||||
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="0"
|
||||
follows="left|top|right" font="SansSerifSmall" height="16" left_delta="80"
|
||||
@@ -567,13 +567,13 @@
|
||||
Must select entire object to set permissions.
|
||||
</string>
|
||||
<string name="Cost Default">
|
||||
Price: L$
|
||||
Price: [CURRENCY]
|
||||
</string>
|
||||
<string name="Cost Total">
|
||||
Total Price: L$
|
||||
Total Price: [CURRENCY]
|
||||
</string>
|
||||
<string name="Cost Per Unit">
|
||||
Price Per: L$
|
||||
Price Per: [CURRENCY]
|
||||
</string>
|
||||
<string name="Cost Mixed">
|
||||
Mixed Price
|
||||
@@ -1335,7 +1335,7 @@
|
||||
bottom_delta="-24" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="48"
|
||||
mouse_opaque="true" name="label_area_price" v_pad="0" width="150">
|
||||
Price: L$[PRICE] for [AREA] sq. m.
|
||||
Price: [CURRENCY][PRICE] for [AREA] sq. m.
|
||||
</text>
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom_delta="0" drop_shadow_visible="true" follows="left|top"
|
||||
|
||||
@@ -137,7 +137,7 @@ Try saving image as 24 bit Targa (.tga).
|
||||
<slider bottom_delta="0" can_edit_text="false" enabled="false" width="185" height="16" mouse_opaque="true"
|
||||
decimal_digits="0" increment="1" initial_val="16" left="30" min_val="1.0" max_val="16.0" visible="false"
|
||||
name="timeline" show_text="false" value="1" control_name="AnimationTimelineScrubber"/>
|
||||
<button bottom="9" follows="bottom|left" height="22" label="Upload (L$10)"
|
||||
<button bottom="9" follows="bottom|left" height="22" label="Upload ([UPLOADFEE])"
|
||||
left="325" name="upload_button" width="120" />
|
||||
<button bottom_delta="0" follows="bottom|left" height="22" label="Temp Upload"
|
||||
left_delta="125" name="upload_button" tool_tip="Uploads a temporary version of the texture. It's free, but has a limited lifespan and area it can be used."
|
||||
|
||||
@@ -5,22 +5,22 @@
|
||||
<menu bottom="273" create_jump_keys="true" drop_shadow="true" enabled="true"
|
||||
height="263" label="File" left="0" mouse_opaque="false" name="File"
|
||||
opaque="true" tear_off="true" width="243">
|
||||
<menu_item_call enabled="true" label="Image (L$[COST])..."
|
||||
<menu_item_call enabled="true" label="Image ([UPLOADFEE])..."
|
||||
mouse_opaque="true" name="Upload Image" shortcut="control|U" >
|
||||
<on_click function="File.UploadImage" userdata="" />
|
||||
<on_enable function="File.EnableUpload" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Sound (L$[COST])..." name="Upload Sound"
|
||||
<menu_item_call label="Sound ([UPLOADFEE])..." name="Upload Sound"
|
||||
mouse_opaque="true" enabled="true" >
|
||||
<on_click function="File.UploadSound" userdata="" />
|
||||
<on_enable function="File.EnableUpload" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Animation (L$[COST])..." name="Upload Animation"
|
||||
<menu_item_call label="Animation ([UPLOADFEE])..." name="Upload Animation"
|
||||
mouse_opaque="true" enabled="true" >
|
||||
<on_click function="File.UploadAnim" userdata="" />
|
||||
<on_enable function="File.EnableUpload" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Bulk (L$[COST] per file)..." name="Bulk Upload"
|
||||
<menu_item_call label="Bulk ([UPLOADFEE] per file)..." name="Bulk Upload"
|
||||
mouse_opaque="true" enabled="true" >
|
||||
<on_click function="File.UploadBulk" userdata="" />
|
||||
</menu_item_call>
|
||||
@@ -610,7 +610,7 @@
|
||||
<on_click function="PromptShowURL" name="ManageMyAccount_url"
|
||||
userdata="WebLaunchJoinNow,http://secondlife.com/account/" />
|
||||
</menu_item_call>
|
||||
<menu_item_call bottom="-286" enabled="true" height="19" label="Buy L$..." left="0"
|
||||
<menu_item_call bottom="-286" enabled="true" height="19" label="Buy [CURRENCY]..." left="0"
|
||||
mouse_opaque="true" name="Buy and Sell L$..." width="166">
|
||||
<on_click function="ShowFloater" userdata="buy currency" />
|
||||
</menu_item_call>
|
||||
|
||||
@@ -496,7 +496,7 @@ Other residents can visit the URL you set when they look at your profile.
|
||||
icon="alertmodal.tga"
|
||||
name="JoinGroupCanAfford"
|
||||
type="alertmodal">
|
||||
Joining this group costs L$[COST].
|
||||
Joining this group costs [CURRENCY][COST].
|
||||
Do you wish to proceed?
|
||||
<usetemplate
|
||||
name="okcancelbuttons"
|
||||
@@ -508,15 +508,15 @@ Do you wish to proceed?
|
||||
icon="alertmodal.tga"
|
||||
name="JoinGroupCannotAfford"
|
||||
type="alertmodal">
|
||||
Joining this group costs L$[COST].
|
||||
You do not have enough L$ to join this group.
|
||||
Joining this group costs [CURRENCY][COST].
|
||||
You do not have enough [CURRENCY] to join this group.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="LandBuyPass"
|
||||
type="alertmodal">
|
||||
For L$[COST] you can enter this land ('[PARCEL_NAME]') for [TIME] hours. Buy a pass?
|
||||
For [CURRENCY][COST] you can enter this land ('[PARCEL_NAME]') for [TIME] hours. Buy a pass?
|
||||
<usetemplate
|
||||
name="okcancelbuttons"
|
||||
notext="Cancel"
|
||||
@@ -527,8 +527,8 @@ For L$[COST] you can enter this land ('[PARCEL_NAME]') for [TIME] hour
|
||||
icon="alertmodal.tga"
|
||||
name="SalePriceRestriction"
|
||||
type="alertmodal">
|
||||
Sale price must be set to more than L$0 if selling to anyone.
|
||||
Please select an individual to sell to if selling for L$0.
|
||||
Sale price must be set to more than [CURRENCY]0 if selling to anyone.
|
||||
Please select an individual to sell to if selling for [CURRENCY]0.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
@@ -537,7 +537,7 @@ Please select an individual to sell to if selling for L$0.
|
||||
priority="high"
|
||||
type="alertmodal">
|
||||
The selected [LAND_SIZE] m² land is being set for sale.
|
||||
Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NAME].
|
||||
Your selling price will be [CURRENCY][SALE_PRICE] and will be authorized for sale to [NAME].
|
||||
<usetemplate
|
||||
name="okcancelbuttons"
|
||||
notext="Cancel"
|
||||
@@ -551,7 +551,7 @@ Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NA
|
||||
ATTENTION: Clicking 'sell to anyone' makes your land available to the entire Second Life community, even those not in this region.
|
||||
|
||||
The selected [LAND_SIZE] m² land is being set for sale.
|
||||
Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NAME].
|
||||
Your selling price will be [CURRENCY][SALE_PRICE] and will be authorized for sale to [NAME].
|
||||
<usetemplate
|
||||
name="okcancelbuttons"
|
||||
notext="Cancel"
|
||||
@@ -1911,7 +1911,7 @@ Select an entire parcel, or divide your parcel first.
|
||||
name="ReleaseLandWarning"
|
||||
type="alertmodal">
|
||||
You are about to release [AREA] m² of land.
|
||||
Releasing this parcel will remove it from your land holdings, but will not grant any L$.
|
||||
Releasing this parcel will remove it from your land holdings, but will not grant any [CURRENCY].
|
||||
|
||||
Release this land?
|
||||
<usetemplate
|
||||
@@ -2221,7 +2221,7 @@ You must specify a name for your classified.
|
||||
icon="alertmodal.tga"
|
||||
name="MinClassifiedPrice"
|
||||
type="alertmodal">
|
||||
Price to pay for listing must be at least L$[MIN_PRICE].
|
||||
Price to pay for listing must be at least [CURRENCY][MIN_PRICE].
|
||||
|
||||
Please enter a higher price.
|
||||
</notification>
|
||||
@@ -2501,7 +2501,7 @@ Please choose the male or female avatar. You can change your mind later.
|
||||
icon="alertmodal.tga"
|
||||
name="NotEnoughCurrency"
|
||||
type="alertmodal">
|
||||
[NAME] L$ [PRICE] You don't have enough L$ to do that.
|
||||
[NAME] [CURRENCY] [PRICE] You don't have enough [CURRENCY] to do that.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
@@ -2776,7 +2776,7 @@ Download to your Applications folder?
|
||||
name="DeedObjectToGroup"
|
||||
type="alertmodal">
|
||||
Deeding this object will cause the group to:
|
||||
* Receive L$ paid into the object
|
||||
* Receive [CURRENCY] paid into the object
|
||||
<usetemplate
|
||||
ignoretext="When deeding objects to groups"
|
||||
name="okcancelignore"
|
||||
@@ -3207,7 +3207,7 @@ Proceed?
|
||||
type="alert">
|
||||
You are about to change the access list for a Linden owned estate (mainland, teen grid, orientation, etc.).
|
||||
|
||||
This is DANGEROUS and should only be done to invoke the hack allowing objects/L$ to be transfered in/out of a grid.
|
||||
This is DANGEROUS and should only be done to invoke the hack allowing objects/[CURRENCY] to be transfered in/out of a grid.
|
||||
It will change thousands of regions and make the spaceserver hiccup.
|
||||
<usetemplate
|
||||
name="okcancelbuttons"
|
||||
@@ -3569,7 +3569,7 @@ Asset ID for notecard is missing from database.
|
||||
type="alert">
|
||||
Remember: Classified ad fees are non-refundable.
|
||||
|
||||
Publish this classified now for L$[AMOUNT]?
|
||||
Publish this classified now for [CURRENCY][AMOUNT]?
|
||||
<usetemplate
|
||||
name="okcancelbuttons"
|
||||
notext="Cancel"
|
||||
@@ -4065,7 +4065,7 @@ Please select only one object and try again.
|
||||
icon="alertmodal.tga"
|
||||
name="BuyOriginal"
|
||||
type="alertmodal">
|
||||
Buy original object from [OWNER] for L$[PRICE]?
|
||||
Buy original object from [OWNER] for [CURRENCY][PRICE]?
|
||||
You will become the owner of this object.
|
||||
You will be able to:
|
||||
Modify: [MODIFYPERM]
|
||||
@@ -4081,7 +4081,7 @@ You will be able to:
|
||||
icon="alertmodal.tga"
|
||||
name="BuyOriginalNoOwner"
|
||||
type="alertmodal">
|
||||
Buy original object for L$[PRICE]?
|
||||
Buy original object for [CURRENCY][PRICE]?
|
||||
You will become the owner of this object.
|
||||
You will be able to:
|
||||
Modify: [MODIFYPERM]
|
||||
@@ -4097,7 +4097,7 @@ You will be able to:
|
||||
icon="alertmodal.tga"
|
||||
name="BuyCopy"
|
||||
type="alertmodal">
|
||||
Buy a copy from [OWNER] for L$[PRICE]?
|
||||
Buy a copy from [OWNER] for [CURRENCY][PRICE]?
|
||||
The object will be copied to your inventory.
|
||||
You will be able to:
|
||||
Modify: [MODIFYPERM]
|
||||
@@ -4113,7 +4113,7 @@ You will be able to:
|
||||
icon="alertmodal.tga"
|
||||
name="BuyCopyNoOwner"
|
||||
type="alertmodal">
|
||||
Buy a copy for L$[PRICE]?
|
||||
Buy a copy for [CURRENCY][PRICE]?
|
||||
The object will be copied to your inventory.
|
||||
You will be able to:
|
||||
Modify: [MODIFYPERM]
|
||||
@@ -4129,7 +4129,7 @@ You will be able to:
|
||||
icon="alertmodal.tga"
|
||||
name="BuyContents"
|
||||
type="alertmodal">
|
||||
Buy contents from [OWNER] for L$[PRICE]?
|
||||
Buy contents from [OWNER] for [CURRENCY][PRICE]?
|
||||
They will be copied to your inventory.
|
||||
<usetemplate
|
||||
name="okcancelbuttons"
|
||||
@@ -4141,7 +4141,7 @@ They will be copied to your inventory.
|
||||
icon="alertmodal.tga"
|
||||
name="BuyContentsNoOwner"
|
||||
type="alertmodal">
|
||||
Buy contents for L$[PRICE]?
|
||||
Buy contents for [CURRENCY][PRICE]?
|
||||
They will be copied to your inventory.
|
||||
<usetemplate
|
||||
name="okcancelbuttons"
|
||||
@@ -5057,7 +5057,7 @@ Items may not be purchased while they are part of an attachment.
|
||||
label="About Requests for the Debit Permission"
|
||||
name="DebitPermissionDetails"
|
||||
type="alertmodal">
|
||||
Granting this request gives a script ongoing permission to take Linden dollars (L$) from your account. To revoke this permission, the object owner must delete the object or reset the scripts in the object.
|
||||
Granting this request gives a script ongoing permission to take in-world money ([CURRENCY]) from your account. To revoke this permission, the object owner must delete the object or reset the scripts in the object.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
@@ -5236,12 +5236,12 @@ Uploading in-world and web site snapshots...
|
||||
(Takes about 5 minutes.)
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
<notification
|
||||
icon="notify.tga"
|
||||
name="UploadPayment"
|
||||
type="notify">
|
||||
You paid L$[AMOUNT] to upload.
|
||||
</notification>
|
||||
You paid [CURRENCY][AMOUNT] to upload.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
@@ -6285,8 +6285,8 @@ Grant this request?
|
||||
icon="notify.tga"
|
||||
name="FirstBalanceIncrease"
|
||||
type="notify">
|
||||
You just received L$[AMOUNT].
|
||||
Objects and other users may give you L$.
|
||||
You just received [CURRENCY][AMOUNT].
|
||||
Objects and other users may give you [CURRENCY].
|
||||
Your balance is shown in the upper-right corner of the screen.
|
||||
</notification>
|
||||
|
||||
@@ -6294,7 +6294,7 @@ Your balance is shown in the upper-right corner of the screen.
|
||||
icon="notify.tga"
|
||||
name="FirstBalanceDecrease"
|
||||
type="notify">
|
||||
You just paid L$[AMOUNT].
|
||||
You just paid [CURRENCY][AMOUNT].
|
||||
Your balance is shown in the upper-right corner of the screen.
|
||||
</notification>
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
height="20" label="Auto-renew each week" left="10" name="auto_renew_check"
|
||||
width="120" />
|
||||
<string name="ad_placed_paid">
|
||||
Ad placed: [DATE], Paid L$[AMT] for listing.
|
||||
Ad placed: [DATE], Paid [CURRENCY][AMT] for listing.
|
||||
</string>
|
||||
<string name="update_txt">
|
||||
Update
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<button bottom="400" follows="left|top" height="20" label="Update" left="30"
|
||||
name="classified_update_btn" width="70" />
|
||||
<string name="ad_placed_paid">
|
||||
Ad placed: [DATE], Paid L$[AMT] for listing.
|
||||
Ad placed: [DATE], Paid [CURRENCY][AMT] for listing.
|
||||
</string>
|
||||
<string name="update_txt">
|
||||
Update
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
tool_tip="Offer this friend a teleport to your current location" width="80" />
|
||||
<button bottom_delta="-25" follows="top|right" height="22" label="Pay..."
|
||||
left_delta="0" name="pay_btn"
|
||||
tool_tip="Give Linden dollars (L$) to this friend" width="80" />
|
||||
tool_tip="Give in-world money ([CURRENCY]) to this friend" width="80" />
|
||||
<button bottom_delta="-25" follows="top|right" height="22" label="Remove..."
|
||||
left_delta="0" name="remove_btn"
|
||||
tool_tip="Remove this person from your friends list" width="80" />
|
||||
|
||||
@@ -59,7 +59,7 @@ Hover your mouse over the options for more help.
|
||||
Group Charter
|
||||
</text_editor>
|
||||
<button bottom_delta="0" follows="left|top" font="SansSerif" halign="center"
|
||||
height="22" label="Join (L$0)" label_selected="Join (L$0)" left="7"
|
||||
height="22" label="Join ([CURRENCY]0)" label_selected="Join ([CURRENCY]0)" left="7"
|
||||
mouse_opaque="true" name="join_button" width="128" />
|
||||
<button bottom_delta="0" follows="left|top" font="SansSerif" halign="center"
|
||||
height="22" label="Detailed View" label_selected="Detailed View"
|
||||
@@ -97,7 +97,7 @@ Hover your mouse over the options for more help.
|
||||
tool_tip="Sets whether this group allows new members to join without being invited."
|
||||
width="95" />
|
||||
<check_box bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16"
|
||||
initial_value="false" label="Enrollment fee: L$" left_delta="16"
|
||||
initial_value="false" label="Enrollment fee: [CURRENCY]" left_delta="16"
|
||||
max_length="5" mouse_opaque="true" name="check_enrollment_fee"
|
||||
radio_style="false"
|
||||
tool_tip="Sets whether to require an enrollment fee to join the group."
|
||||
@@ -147,8 +147,8 @@ Hover your mouse over the options for more help.
|
||||
Retrieving member data
|
||||
</string>
|
||||
<string name="confirm_group_create_str">
|
||||
Creating this group will cost L$100.
|
||||
Are you really, really, REALLY sure you want to spend L$100 to create this group?
|
||||
Creating this group will cost [GROUPCREATEFEE].
|
||||
Are you really, really, REALLY sure you want to spend [GROUPCREATEFEE] to create this group?
|
||||
Be aware that if nobody else joins this group within 48 hours, it will be disbanded and the group's name will be unavailable for future use.
|
||||
</string>
|
||||
</panel>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel border="true" bottom="0" follows="all" height="470" label="Land & L$"
|
||||
<panel border="true" bottom="0" follows="all" height="470" label="Land & Money"
|
||||
left="1" mouse_opaque="true" name="land_money_tab" select="false"
|
||||
width="418">
|
||||
<string name="help_text">
|
||||
@@ -107,7 +107,7 @@
|
||||
bottom_delta="-25" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifBig" h_pad="0" halign="left" height="16" left="12"
|
||||
mouse_opaque="true" name="group_money_heading" v_pad="0" width="150">
|
||||
Group L$
|
||||
Group [CURRENCY]
|
||||
</text>
|
||||
<tab_container border="false" bottom_delta="-189" height="180" left="6" mouse_opaque="false"
|
||||
name="group_money_tab_container" tab_position="top" width="406">
|
||||
|
||||
@@ -35,10 +35,10 @@
|
||||
Traffic: [TRAFFIC]
|
||||
</string>
|
||||
<string name="area_text">
|
||||
Area: [AREA] m².
|
||||
Area: [AREA] m².
|
||||
</string>
|
||||
<string name="forsale_text">
|
||||
For Sale for L$[PRICE]
|
||||
For Sale for [CURRENCY][PRICE]
|
||||
</string>
|
||||
<string name="auction_text">
|
||||
Auction ID [ID].
|
||||
|
||||
@@ -40,10 +40,10 @@
|
||||
Traffic: [TRAFFIC]
|
||||
</string>
|
||||
<string name="area_text">
|
||||
Area: [AREA] m².
|
||||
Area: [AREA] m².
|
||||
</string>
|
||||
<string name="forsale_text">
|
||||
For Sale for L$[PRICE]
|
||||
For Sale for [CURRENCY][PRICE]
|
||||
</string>
|
||||
<string name="auction_text">
|
||||
Auction ID [ID].
|
||||
|
||||
@@ -54,8 +54,8 @@
|
||||
show_text="true" width="250" />
|
||||
<spinner bottom_delta="-20" control_name="UISndMoneyChangeThreshold" decimal_digits="0"
|
||||
enabled="true" follows="left|top" height="16" increment="10"
|
||||
initial_val="10" label="L$ Change Threshold" label_width="128" left="148"
|
||||
max_val="10000" min_val="0" mouse_opaque="true" name="L$ Change Threshold"
|
||||
initial_val="10" label="[CURRENCY] change threshold:" label_width="128" left="148"
|
||||
max_val="10000" min_val="0" mouse_opaque="true" name="currency_change_threshold"
|
||||
width="192" />
|
||||
<spinner bottom_delta="-20" control_name="UISndHealthReductionThreshold"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="16"
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
min_val="30" mouse_opaque="true" name="afk_timeout_spinner" width="202" />
|
||||
<check_box bottom="-265" enabled="true"
|
||||
follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
|
||||
label="Notify when Linden dollars (L$) spent or received" left="151"
|
||||
label="Notify when in-world money ([CURRENCY]) spent or received" left="151"
|
||||
mouse_opaque="true" name="notify_money_change_checkbox" radio_style="false"
|
||||
width="256" />
|
||||
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
|
||||
@@ -20,12 +20,12 @@
|
||||
v_pad="2" width="76">
|
||||
Loading...
|
||||
</text>
|
||||
<button bottom="-17" enabled="true" follows="right|bottom" font="SansSerif"
|
||||
halign="center" height="16"
|
||||
image_selected="status_buy_currency_pressed.tga"
|
||||
image_unselected="status_buy_currency.tga" label="" label_selected=""
|
||||
<button bottom="-18" enabled="true" follows="right|bottom" font="SansSerifSmall"
|
||||
halign="center" height="18"
|
||||
image_selected="button_enabled_selected_32x128.tga"
|
||||
image_unselected="button_enabled_32x128.tga" label="[CURRENCY]"
|
||||
left="-210" mouse_opaque="true" name="buycurrency" scale_image="true"
|
||||
tool_tip="Buy currency" width="16" />
|
||||
tool_tip="Buy currency" width="36" />
|
||||
<text type="string" length="12" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-20" disabled_color="TimeTextColor" drop_shadow_visible="true"
|
||||
enabled="true" follows="right|bottom" font="SansSerifSmall" h_pad="0"
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<string name="TooltipFlagTemporary">Temporary</string>
|
||||
<string name="TooltipFlagRightClickMenu">(Right-click for menu)</string>
|
||||
<string name="TooltipFreeToCopy">Free to copy</string>
|
||||
<string name="TooltipForSaleL$">For Sale: L$[AMOUNT]</string> <!-- L$ version -->
|
||||
<string name="TooltipForSaleL$">For Sale: [CURRENCY][AMOUNT]</string> <!-- L$ version -->
|
||||
<string name="TooltipForSaleMsg">For Sale: [MESSAGE]</string> <!-- Message (RetrievingData) -->
|
||||
<string name="TooltipFlagGroupBuild">Group Build</string>
|
||||
<string name="TooltipFlagNoBuild">No Build</string>
|
||||
@@ -611,7 +611,7 @@ Returns a string that is src with all lower-case characters
|
||||
</string>
|
||||
<string name="LSLTipText_llGiveMoney">
|
||||
llGiveMoney(key destination, integer amount)
|
||||
Transfers amount of L$ from script owner to destination
|
||||
Transfers amount of [CURRENCY] from script owner to destination
|
||||
</string>
|
||||
<string name="LSLTipText_llMakeExplosion">
|
||||
llMakeExplosion(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
|
||||
@@ -1431,7 +1431,7 @@ Returns a list containing results of the sent query
|
||||
</string>
|
||||
<string name="LSLTipText_llModPow">
|
||||
integer llModPow(integer a, integer b, integer c)
|
||||
Returns a raised to the b power, mod c. ( (a**b)%c )
|
||||
Returns a raised to the b power, mod c. ( (a**b)%c )
|
||||
b is capped at 0xFFFF (16 bits).
|
||||
</string>
|
||||
<string name="LSLTipText_llGetInventoryType">
|
||||
|
||||
Reference in New Issue
Block a user