Merge branch 'master' of git://github.com/siana/SingularityViewer.git
This commit is contained in:
@@ -36,6 +36,8 @@
|
|||||||
#include "lluuid.h"
|
#include "lluuid.h"
|
||||||
#include "lltransactionflags.h"
|
#include "lltransactionflags.h"
|
||||||
#include "lltransactiontypes.h"
|
#include "lltransactiontypes.h"
|
||||||
|
|
||||||
|
#include "../newview/hippogridmanager.h"
|
||||||
|
|
||||||
const U8 TRANSACTION_FLAGS_NONE = 0;
|
const U8 TRANSACTION_FLAGS_NONE = 0;
|
||||||
const U8 TRANSACTION_FLAG_SOURCE_GROUP = 1;
|
const U8 TRANSACTION_FLAG_SOURCE_GROUP = 1;
|
||||||
@@ -114,7 +116,7 @@ std::string build_transfer_message_to_source(
|
|||||||
std::ostringstream ostr;
|
std::ostringstream ostr;
|
||||||
if(dest_id.isNull())
|
if(dest_id.isNull())
|
||||||
{
|
{
|
||||||
ostr << "You paid L$" << amount;
|
ostr << "You paid " << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() << amount;
|
||||||
switch(transaction_type)
|
switch(transaction_type)
|
||||||
{
|
{
|
||||||
case TRANS_GROUP_CREATE:
|
case TRANS_GROUP_CREATE:
|
||||||
@@ -132,7 +134,7 @@ std::string build_transfer_message_to_source(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ostr << "You paid " << dest_name << " L$" << amount;
|
ostr << "You paid " << dest_name << ' ' << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() << amount;
|
||||||
append_reason(ostr, transaction_type, description);
|
append_reason(ostr, transaction_type, description);
|
||||||
}
|
}
|
||||||
ostr << ".";
|
ostr << ".";
|
||||||
@@ -160,7 +162,7 @@ std::string build_transfer_message_to_destination(
|
|||||||
return description;
|
return description;
|
||||||
}
|
}
|
||||||
std::ostringstream ostr;
|
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);
|
append_reason(ostr, transaction_type, description);
|
||||||
ostr << ".";
|
ostr << ".";
|
||||||
return ostr.str();
|
return ostr.str();
|
||||||
|
|||||||
@@ -37,6 +37,8 @@
|
|||||||
|
|
||||||
#include "llnotifications.h"
|
#include "llnotifications.h"
|
||||||
|
|
||||||
|
#include "../newview/hippogridmanager.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#if LL_MSVC
|
#if LL_MSVC
|
||||||
#pragma warning( disable : 4265 ) // "class has virtual functions, but destructor is not virtual"
|
#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
|
// add default substitutions
|
||||||
// TODO: change this to read from the translatable strings file!
|
// 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["_URL"] = getURL();
|
||||||
mSubstitutions["_NAME"] = template_name;
|
mSubstitutions["_NAME"] = template_name;
|
||||||
// TODO: something like this so that a missing alert is sensible:
|
// 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 both first and last aren't set, assume we're grabbing the cached dir
|
||||||
if (!first.empty() && !last.empty())
|
if (!first.empty() && !last.empty())
|
||||||
@@ -595,6 +595,14 @@ void LLDir::setPerAccountChatLogsDir(const std::string &first, const std::string
|
|||||||
mPerAccountChatLogsDir += firstlower;
|
mPerAccountChatLogsDir += firstlower;
|
||||||
mPerAccountChatLogsDir += "_";
|
mPerAccountChatLogsDir += "_";
|
||||||
mPerAccountChatLogsDir += lastlower;
|
mPerAccountChatLogsDir += lastlower;
|
||||||
|
|
||||||
|
if (!grid.empty())
|
||||||
|
{
|
||||||
|
std::string gridlower(grid);
|
||||||
|
LLStringUtil::toLower(gridlower);
|
||||||
|
mPerAccountChatLogsDir += "@";
|
||||||
|
mPerAccountChatLogsDir += gridlower;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ class LLDir
|
|||||||
static std::string getForbiddenFileChars();
|
static std::string getForbiddenFileChars();
|
||||||
|
|
||||||
virtual void setChatLogsDir(const std::string &path); // Set the chat logs dir to this user's dir
|
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 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 void setSkinFolder(const std::string &skin_folder);
|
||||||
virtual bool setCacheDir(const std::string &path);
|
virtual bool setCacheDir(const std::string &path);
|
||||||
|
|||||||
@@ -8,6 +8,18 @@
|
|||||||
<string>settings_sh.xml</string>
|
<string>settings_sh.xml</string>
|
||||||
<string>settings_rlv.xml</string>
|
<string>settings_rlv.xml</string>
|
||||||
</array>
|
</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>
|
<key>CheckForGridUpdates</key>
|
||||||
<map>
|
<map>
|
||||||
@@ -10007,6 +10019,19 @@
|
|||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<string>http://search.secondlife.com/client_search.php?</string>
|
<string>http://search.secondlife.com/client_search.php?</string>
|
||||||
</map>
|
</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>
|
<key>SearchURLQuery</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
|
// Ported to Imprudence from the Hippo OpenSim Viewer by Jacek Antonelli
|
||||||
|
|
||||||
#include "llviewerprecompiledheaders.h"
|
#include "llviewerprecompiledheaders.h"
|
||||||
|
|
||||||
#include "hippogridmanager.h"
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
#include <climits>
|
|
||||||
#include <cstring>
|
|
||||||
#include <algorithm>
|
|
||||||
|
|
||||||
#include <stdtypes.h>
|
#include <stdtypes.h>
|
||||||
#include "lldir.h"
|
#include <lldir.h>
|
||||||
#include "lleconomy.h"
|
#include <lleconomy.h>
|
||||||
#include "llerror.h"
|
#include <llerror.h>
|
||||||
#include "llfile.h"
|
#include <llfile.h>
|
||||||
#include "llhttpclient.h"
|
#include <llhttpclient.h>
|
||||||
#include "llsdserialize.h"
|
#include <llsdserialize.h>
|
||||||
|
#include "lltrans.h"
|
||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
#include "llweb.h"
|
#include "llweb.h"
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
// ********************************************************************
|
// ********************************************************************
|
||||||
// Global Variables
|
// Global Variables
|
||||||
|
|
||||||
HippoGridManager *gHippoGridManager = 0;
|
HippoGridManager* gHippoGridManager = 0;
|
||||||
|
|
||||||
HippoGridInfo HippoGridInfo::FALLBACK_GRIDINFO("");
|
HippoGridInfo HippoGridInfo::FALLBACK_GRIDINFO("");
|
||||||
|
|
||||||
@@ -39,82 +39,352 @@ HippoGridInfo HippoGridInfo::FALLBACK_GRIDINFO("");
|
|||||||
// ********************************************************************
|
// ********************************************************************
|
||||||
// Initialize
|
// Initialize
|
||||||
|
|
||||||
HippoGridInfo::HippoGridInfo(const std::string &gridNick) :
|
HippoGridInfo::HippoGridInfo(const std::string& gridNick) :
|
||||||
mPlatform(PLATFORM_OTHER),
|
mPlatform(PLATFORM_OPENSIM),
|
||||||
mGridNick(gridNick),
|
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"),
|
mVoiceConnector("SLVoice"),
|
||||||
mRenderCompat(true),
|
mRenderCompat(true),
|
||||||
mMaxAgentGroups(-1),
|
mMaxAgentGroups(-1),
|
||||||
mVersion(0),
|
|
||||||
mCurrencySymbol("OS$"),
|
mCurrencySymbol("OS$"),
|
||||||
mRealCurrencySymbol("US$"),
|
mRealCurrencySymbol("US$"),
|
||||||
mDirectoryFee(30)
|
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)
|
void HippoGridInfo::setPlatform(Platform platform)
|
||||||
{
|
{
|
||||||
mPlatform = 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;
|
std::string tmp = platform;
|
||||||
for (unsigned i=0; i<platform.size(); i++)
|
for (unsigned i=0; i<platform.size(); i++)
|
||||||
tmp[i] = tolower(tmp[i]);
|
tmp[i] = tolower(tmp[i]);
|
||||||
|
|
||||||
if (tmp == "opensim") {
|
if (tmp == "opensim")
|
||||||
|
{
|
||||||
setPlatform(PLATFORM_OPENSIM);
|
setPlatform(PLATFORM_OPENSIM);
|
||||||
} else if (tmp == "secondlife") {
|
}
|
||||||
|
else if (tmp == "secondlife")
|
||||||
|
{
|
||||||
setPlatform(PLATFORM_SECONDLIFE);
|
setPlatform(PLATFORM_SECONDLIFE);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
setPlatform(PLATFORM_OTHER);
|
setPlatform(PLATFORM_OTHER);
|
||||||
llwarns << "Unknown platform '" << platform << "'." << llendl;
|
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
|
// 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()) {
|
// Don't worry about whether or not mSearchUrl is empty here anymore -- MC
|
||||||
// Second Life defaults
|
if (is_web)
|
||||||
if (ty == SEARCH_ALL_EMPTY) {
|
{
|
||||||
return gSavedSettings.getString("SearchURLDefault");
|
if (mPlatform == PLATFORM_SECONDLIFE)
|
||||||
} else if (ty == SEARCH_ALL_QUERY) {
|
{
|
||||||
return gSavedSettings.getString("SearchURLQuery");
|
// Second Life defaults
|
||||||
} else if (ty == SEARCH_ALL_TEMPLATE) {
|
if (ty == SEARCH_ALL_EMPTY)
|
||||||
return gSavedSettings.getString("SearchURLSuffix2");
|
{
|
||||||
} else {
|
return gSavedSettings.getString("SearchURLDefault");
|
||||||
llinfos << "Illegal search URL type " << ty << llendl;
|
}
|
||||||
return "";
|
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 {
|
else if (!mSearchUrl.empty())
|
||||||
// OpenSim and other
|
{
|
||||||
if (ty == SEARCH_ALL_EMPTY) {
|
// Search url sent to us in the login response
|
||||||
return (mSearchUrl + "panel=All&");
|
if (ty == SEARCH_ALL_EMPTY)
|
||||||
} else if (ty == SEARCH_ALL_QUERY) {
|
{
|
||||||
return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&");
|
return (mSearchUrl);
|
||||||
} else if (ty == SEARCH_ALL_TEMPLATE) {
|
}
|
||||||
return "lang=[LANG]&m=[MATURE]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]";
|
else if (ty == SEARCH_ALL_QUERY)
|
||||||
} else {
|
{
|
||||||
llinfos << "Illegal search URL type " << ty << llendl;
|
return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&");
|
||||||
return "";
|
}
|
||||||
|
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
|
//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)
|
if (strcasecmp(name, "gridnick") == 0)
|
||||||
self->mXmlState = XML_GRIDNICK;
|
self->mXmlState = XML_GRIDNICK;
|
||||||
else if (strcasecmp(name, "gridname") == 0)
|
else if (strcasecmp(name, "gridname") == 0)
|
||||||
@@ -135,48 +405,57 @@ void HippoGridInfo::onXmlElementStart(void *userData, const XML_Char *name, cons
|
|||||||
self->mXmlState = XML_REGISTER;
|
self->mXmlState = XML_REGISTER;
|
||||||
else if (strcasecmp(name, "password") == 0)
|
else if (strcasecmp(name, "password") == 0)
|
||||||
self->mXmlState = XML_PASSWORD;
|
self->mXmlState = XML_PASSWORD;
|
||||||
//else if (strcasecmp(name, "search") == 0)
|
else if (strcasecmp(name, "search") == 0)
|
||||||
//self->mXmlState = XML_SEARCH;
|
self->mXmlState = XML_SEARCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
//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;
|
self->mXmlState = XML_VOID;
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
//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;
|
HippoGridInfo* self = (HippoGridInfo*)userData;
|
||||||
switch (self->mXmlState) {
|
switch (self->mXmlState)
|
||||||
|
{
|
||||||
case XML_GRIDNICK:
|
case XML_GRIDNICK:
|
||||||
|
{
|
||||||
if (self->mGridNick == "") self->mGridNick.assign(s, len);
|
if (self->mGridNick == "") self->mGridNick.assign(s, len);
|
||||||
cleanUpGridNick(self->mGridNick);
|
self->mGridNick = sanitizeGridNick(self->mGridNick);
|
||||||
break;
|
|
||||||
|
|
||||||
case XML_PLATFORM: {
|
|
||||||
std::string platform(s, len);
|
|
||||||
self->setPlatform(platform);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case XML_LOGINURI:
|
case XML_PLATFORM:
|
||||||
self->mLoginUri.assign(s, len);
|
{
|
||||||
cleanUpUri(self->mLoginUri);
|
std::string platform(s, len);
|
||||||
|
self->setPlatform(platform);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case XML_HELPERURI:
|
case XML_LOGINURI:
|
||||||
self->mHelperUri.assign(s, len);
|
{
|
||||||
cleanUpUri(self->mHelperUri);
|
std::string loginuri(s, len);
|
||||||
|
self->mLoginUri = sanitizeUri( loginuri );
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case XML_SEARCH:
|
case XML_HELPERURI:
|
||||||
//self->mSearchUrl.assign(s, len);
|
{
|
||||||
//cleanUpQueryUrl(mSearchUrl);
|
std::string helperuri(s, len);
|
||||||
|
self->mHelperUri = sanitizeUri( helperuri );
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case XML_SEARCH:
|
||||||
|
{
|
||||||
|
self->mSearchUrl.assign(s, len);
|
||||||
|
//sanitizeQueryUrl(mSearchUrl);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case XML_GRIDNAME: self->mGridName.assign(s, len); break;
|
case XML_GRIDNAME: self->mGridName.assign(s, len); break;
|
||||||
case XML_LOGINPAGE: self->mLoginPage.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_SetElementHandler(parser, onXmlElementStart, onXmlElementEnd);
|
||||||
XML_SetCharacterDataHandler(parser, onXmlCharacterData);
|
XML_SetCharacterDataHandler(parser, onXmlCharacterData);
|
||||||
mXmlState = XML_VOID;
|
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;
|
llwarns << "XML Parse Error: " << XML_ErrorString(XML_GetErrorCode(parser)) << llendl;
|
||||||
success = false;
|
success = false;
|
||||||
}
|
}
|
||||||
@@ -240,15 +520,18 @@ std::string HippoGridInfo::getDirectoryFee() const
|
|||||||
{
|
{
|
||||||
std::string fee;
|
std::string fee;
|
||||||
formatFee(fee, mDirectoryFee, true);
|
formatFee(fee, mDirectoryFee, true);
|
||||||
if (fee != "free") fee += "/week";
|
if (fee != LLTrans::getString("hippo_label_free")) fee += "/" + LLTrans::getString("hippo_label_week");
|
||||||
return fee;
|
return fee;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HippoGridInfo::formatFee(std::string &fee, int cost, bool showFree) const
|
void HippoGridInfo::formatFee(std::string &fee, int cost, bool showFree) const
|
||||||
{
|
{
|
||||||
if (showFree && (cost == 0)) {
|
if (showFree && (cost == 0))
|
||||||
fee = "free";
|
{
|
||||||
} else {
|
fee = LLTrans::getString("hippo_label_free");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
fee = llformat("%s%d", getCurrencySymbol().c_str(), cost);
|
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 Helpers
|
||||||
|
|
||||||
// static
|
// 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"
|
"Other", "OpenSim", "SecondLife"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -271,39 +555,49 @@ const char *HippoGridInfo::getPlatformString(Platform platform)
|
|||||||
|
|
||||||
|
|
||||||
// static
|
// static
|
||||||
void HippoGridInfo::cleanUpGridNick(std::string &gridnick)
|
std::string HippoGridInfo::sanitizeGridNick(std::string &gridnick)
|
||||||
{
|
{
|
||||||
std::string tmp;
|
std::string tmp;
|
||||||
int size = gridnick.size();
|
int size = gridnick.size();
|
||||||
for (int i=0; i<size; i++) {
|
for (int i=0; i<size; i++)
|
||||||
|
{
|
||||||
char c = gridnick[i];
|
char c = gridnick[i];
|
||||||
if ((c == '_') || isalnum(c)) {
|
if ((c == '_') || isalnum(c))
|
||||||
|
{
|
||||||
tmp += tolower(c);
|
tmp += tolower(c);
|
||||||
} else if (isspace(c)) {
|
}
|
||||||
|
else if (isspace(c))
|
||||||
|
{
|
||||||
tmp += "_";
|
tmp += "_";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gridnick = tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
void HippoGridInfo::cleanUpUri(std::string &uri)
|
std::string HippoGridInfo::sanitizeUri(std::string &uri)
|
||||||
{
|
{
|
||||||
std::string::size_type n = uri.rfind('/');
|
// if (uri.empty()) {
|
||||||
if ((n == std::string::npos) || (n < 10))
|
// return "";
|
||||||
uri += '/';
|
// }
|
||||||
|
|
||||||
|
// // 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()
|
void HippoGridInfo::initFallback()
|
||||||
{
|
{
|
||||||
FALLBACK_GRIDINFO.mGridNick = "secondlife";
|
FALLBACK_GRIDINFO.mGridNick = "localhost";
|
||||||
FALLBACK_GRIDINFO.setPlatform(PLATFORM_SECONDLIFE);
|
FALLBACK_GRIDINFO.setPlatform(PLATFORM_OPENSIM);
|
||||||
FALLBACK_GRIDINFO.setGridName("secondlife");
|
FALLBACK_GRIDINFO.setGridName("Local Host");
|
||||||
FALLBACK_GRIDINFO.setLoginUri("https://login.agni.lindenlab.com/cgi-bin/login.cgi");
|
FALLBACK_GRIDINFO.setLoginUri("http://127.0.0.1:9000/");
|
||||||
FALLBACK_GRIDINFO.setLoginPage("http://phoenixviewer.com/app/login/");
|
FALLBACK_GRIDINFO.setHelperUri("http://127.0.0.1:9000/");
|
||||||
FALLBACK_GRIDINFO.setHelperUri("https://secondlife.com/helpers/");
|
|
||||||
FALLBACK_GRIDINFO.setWebSite("http://secondlife.com/");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -319,7 +613,10 @@ void HippoGridInfo::initFallback()
|
|||||||
// Initialize
|
// Initialize
|
||||||
|
|
||||||
HippoGridManager::HippoGridManager() :
|
HippoGridManager::HippoGridManager() :
|
||||||
mConnectedGrid(0)
|
mConnectedGrid(0),
|
||||||
|
mDefaultGridsVersion(0),
|
||||||
|
mCurrentGrid("osgrid"),
|
||||||
|
mDefaultGrid("osgrid")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,7 +629,8 @@ HippoGridManager::~HippoGridManager()
|
|||||||
void HippoGridManager::cleanup()
|
void HippoGridManager::cleanup()
|
||||||
{
|
{
|
||||||
std::map<std::string, HippoGridInfo*>::iterator it, end = mGridInfo.end();
|
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;
|
delete it->second;
|
||||||
}
|
}
|
||||||
mGridInfo.clear();
|
mGridInfo.clear();
|
||||||
@@ -351,42 +649,82 @@ void HippoGridManager::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void HippoGridManager::discardAndReload()
|
||||||
|
{
|
||||||
|
cleanup();
|
||||||
|
loadFromFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ********************************************************************
|
// ********************************************************************
|
||||||
// Public Access
|
// 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;
|
std::map<std::string, HippoGridInfo*>::const_iterator it;
|
||||||
it = mGridInfo.find(grid);
|
it = mGridInfo.find(grid);
|
||||||
if (it != mGridInfo.end()) {
|
if (it != mGridInfo.end())
|
||||||
|
{
|
||||||
return it->second;
|
return it->second;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
HippoGridInfo *HippoGridManager::getCurrentGrid() const
|
HippoGridInfo* HippoGridManager::getConnectedGrid() const
|
||||||
{
|
{
|
||||||
HippoGridInfo *grid = getGrid(mCurrentGrid);
|
return (mConnectedGrid)? mConnectedGrid: getCurrentGrid();
|
||||||
if (grid) {
|
}
|
||||||
|
|
||||||
|
|
||||||
|
HippoGridInfo* HippoGridManager::getCurrentGrid() const
|
||||||
|
{
|
||||||
|
HippoGridInfo* grid = getGrid(mCurrentGrid);
|
||||||
|
if (grid)
|
||||||
|
{
|
||||||
return grid;
|
return grid;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return &HippoGridInfo::FALLBACK_GRIDINFO;
|
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;
|
if (!grid) return;
|
||||||
const std::string &nick = grid->getGridNick();
|
const std::string& nick = grid->getGridNick();
|
||||||
if (nick == "") {
|
if (nick == "")
|
||||||
|
{
|
||||||
llwarns << "Ignoring to try adding grid with empty nick." << llendl;
|
llwarns << "Ignoring to try adding grid with empty nick." << llendl;
|
||||||
delete grid;
|
delete grid;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mGridInfo.find(nick) != mGridInfo.end()) {
|
if (mGridInfo.find(nick) != mGridInfo.end())
|
||||||
|
{
|
||||||
llwarns << "Ignoring to try adding existing grid " << nick << '.' << llendl;
|
llwarns << "Ignoring to try adding existing grid " << nick << '.' << llendl;
|
||||||
delete grid;
|
delete grid;
|
||||||
return;
|
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);
|
GridIterator it = mGridInfo.find(grid);
|
||||||
if (it == mGridInfo.end()) {
|
if (it == mGridInfo.end()) {
|
||||||
@@ -406,35 +744,45 @@ void HippoGridManager::deleteGrid(const std::string &grid)
|
|||||||
llinfos << "Number of grids now: " << mGridInfo.size() << llendl;
|
llinfos << "Number of grids now: " << mGridInfo.size() << llendl;
|
||||||
if (mGridInfo.empty()) llinfos << "Grid info map is empty." << llendl;
|
if (mGridInfo.empty()) llinfos << "Grid info map is empty." << llendl;
|
||||||
if (grid == mDefaultGrid)
|
if (grid == mDefaultGrid)
|
||||||
setDefaultGrid(""); // sets first grid, if map not empty
|
setDefaultGrid(LLStringUtil::null); // sets first grid, if map not empty
|
||||||
if (grid == mCurrentGrid)
|
if (grid == mCurrentGrid)
|
||||||
mCurrentGrid = mDefaultGrid;
|
mCurrentGrid = mDefaultGrid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void HippoGridManager::setDefaultGrid(const std::string &grid)
|
void HippoGridManager::setDefaultGrid(const std::string& grid)
|
||||||
{
|
{
|
||||||
GridIterator it = mGridInfo.find(grid);
|
GridIterator it = mGridInfo.find(grid);
|
||||||
if (it != mGridInfo.end()) {
|
if (it != mGridInfo.end())
|
||||||
|
{
|
||||||
mDefaultGrid = grid;
|
mDefaultGrid = grid;
|
||||||
} else if (mGridInfo.find("secondlife") != mGridInfo.end()) {
|
}
|
||||||
|
else if (mGridInfo.find("secondlife") != mGridInfo.end())
|
||||||
|
{
|
||||||
mDefaultGrid = "secondlife";
|
mDefaultGrid = "secondlife";
|
||||||
} else if (!mGridInfo.empty()) {
|
}
|
||||||
mDefaultGrid = mGridInfo.begin()->first;
|
else if (!mGridInfo.empty())
|
||||||
} else {
|
{
|
||||||
|
mDefaultGrid = mGridInfo.begin()->first;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
mDefaultGrid = "";
|
mDefaultGrid = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void HippoGridManager::setCurrentGrid(const std::string &grid)
|
void HippoGridManager::setCurrentGrid(const std::string& grid)
|
||||||
{
|
{
|
||||||
GridIterator it = mGridInfo.find(grid);
|
GridIterator it = mGridInfo.find(grid);
|
||||||
if (it != mGridInfo.end()) {
|
if (it != mGridInfo.end())
|
||||||
|
{
|
||||||
mCurrentGrid = grid;
|
mCurrentGrid = grid;
|
||||||
} else if (!mGridInfo.empty()) {
|
}
|
||||||
|
else if (!mGridInfo.empty())
|
||||||
|
{
|
||||||
llwarns << "Unknown grid '" << grid << "'. Setting to default grid." << llendl;
|
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()
|
void HippoGridManager::loadFromFile()
|
||||||
{
|
{
|
||||||
|
mDefaultGridsVersion = 0;
|
||||||
// load user grid info
|
// load user grid info
|
||||||
parseFile(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grids_sg1.xml"), false);
|
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.
|
// 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());
|
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.
|
// merge grid info from web site, if newer. Force load, if list of grids is empty.
|
||||||
if (gSavedSettings.getBOOL("CheckForGridUpdates"))
|
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"));
|
std::string last_grid = gSavedSettings.getString("LastSelectedGrid");
|
||||||
setCurrentGrid(gSavedSettings.getString("CmdLineGridChoice"));
|
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;
|
llinfos << "Loading grid info from '" << url << "'." << llendl;
|
||||||
|
|
||||||
@@ -467,7 +818,8 @@ void HippoGridManager::parseUrl(const char *url, bool mergeIfNewer)
|
|||||||
|
|
||||||
// check response, return on error
|
// check response, return on error
|
||||||
S32 status = response["status"].asInteger();
|
S32 status = response["status"].asInteger();
|
||||||
if ((status != 200) || !response["body"].isArray()) {
|
if ((status != 200) || !response["body"].isArray())
|
||||||
|
{
|
||||||
llinfos << "GridInfo Update failed (" << status << "): "
|
llinfos << "GridInfo Update failed (" << status << "): "
|
||||||
<< (response["body"].isString()? response["body"].asString(): "<unknown error>")
|
<< (response["body"].isString()? response["body"].asString(): "<unknown error>")
|
||||||
<< llendl;
|
<< llendl;
|
||||||
@@ -478,18 +830,20 @@ void HippoGridManager::parseUrl(const char *url, bool mergeIfNewer)
|
|||||||
parseData(gridInfo, mergeIfNewer);
|
parseData(gridInfo, mergeIfNewer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HippoGridManager::parseFile(const std::string &fileName, bool mergeIfNewer)
|
void HippoGridManager::parseFile(const std::string& fileName, bool mergeIfNewer)
|
||||||
{
|
{
|
||||||
llifstream infile;
|
llifstream infile;
|
||||||
infile.open(fileName.c_str());
|
infile.open(fileName.c_str());
|
||||||
if(!infile.is_open()) {
|
if (!infile.is_open())
|
||||||
|
{
|
||||||
llwarns << "Cannot find grid info file " << fileName << " to load." << llendl;
|
llwarns << "Cannot find grid info file " << fileName << " to load." << llendl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LLSD gridInfo;
|
LLSD gridInfo;
|
||||||
if (LLSDSerialize::fromXML(gridInfo, infile) <= 0) {
|
if (LLSDSerialize::fromXML(gridInfo, infile) <= 0)
|
||||||
llwarns << "Unable to parse grid info file " << fileName << '.' << llendl;
|
{
|
||||||
|
llwarns << "Unable to parse grid info file " << fileName << '.' << llendl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -500,46 +854,66 @@ void HippoGridManager::parseFile(const std::string &fileName, bool mergeIfNewer)
|
|||||||
|
|
||||||
void HippoGridManager::parseData(LLSD &gridInfo, 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();
|
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;
|
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"];
|
std::string gridnick = gridMap["gridnick"];
|
||||||
HippoGridInfo *grid;
|
HippoGridInfo* grid;
|
||||||
GridIterator it = mGridInfo.find(gridnick);
|
GridIterator it = mGridInfo.find(gridnick);
|
||||||
bool newGrid = (it == mGridInfo.end());
|
bool newGrid = (it == mGridInfo.end());
|
||||||
if (gridMap.has("version")) {
|
if (newGrid)
|
||||||
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) {
|
|
||||||
// create new grid info
|
// create new grid info
|
||||||
grid = new HippoGridInfo(gridnick);
|
grid = new HippoGridInfo(gridnick);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// update existing grid info
|
// update existing grid info
|
||||||
grid = it->second;
|
grid = it->second;
|
||||||
}
|
}
|
||||||
grid->setLoginUri(gridMap["loginuri"]);
|
grid->setLoginUri(gridMap["loginuri"]);
|
||||||
if (gridMap.has("platform")) grid->setPlatform(gridMap["platform"]);
|
if (gridMap.has("platform")) grid->setPlatform(gridMap["platform"]);
|
||||||
if (gridMap.has("gridname")) grid->setGridName(gridMap["gridname"]);
|
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("loginpage")) grid->setLoginPage(gridMap["loginpage"]);
|
||||||
if (gridMap.has("helperuri")) grid->setHelperUri(gridMap["helperuri"]);
|
if (gridMap.has("helperuri")) grid->setHelperUri(gridMap["helperuri"]);
|
||||||
if (gridMap.has("website")) grid->setWebSite(gridMap["website"]);
|
if (gridMap.has("website")) grid->setWebSite(gridMap["website"]);
|
||||||
if (gridMap.has("support")) grid->setSupportUrl(gridMap["support"]);
|
if (gridMap.has("support")) grid->setSupportUrl(gridMap["support"]);
|
||||||
if (gridMap.has("register")) grid->setRegisterUrl(gridMap["register"]);
|
if (gridMap.has("register")) grid->setRegisterUrl(gridMap["register"]);
|
||||||
if (gridMap.has("password")) grid->setPasswordUrl(gridMap["password"]);
|
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("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);
|
if (newGrid) addGrid(grid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -553,15 +927,17 @@ void HippoGridManager::saveFile()
|
|||||||
|
|
||||||
// build LLSD
|
// build LLSD
|
||||||
LLSD gridInfo;
|
LLSD gridInfo;
|
||||||
S32 i = 0;
|
gridInfo[0]["default_grids_version"] = mDefaultGridsVersion;
|
||||||
|
|
||||||
|
// add grids
|
||||||
|
S32 i = 1;
|
||||||
GridIterator it, end = mGridInfo.end();
|
GridIterator it, end = mGridInfo.end();
|
||||||
for (it = mGridInfo.begin(); it != end; ++it, i++) {
|
for (it = mGridInfo.begin(); it != end; ++it, i++)
|
||||||
HippoGridInfo *grid = it->second;
|
{
|
||||||
|
HippoGridInfo* grid = it->second;
|
||||||
gridInfo[i]["gridnick"] = grid->getGridNick();
|
gridInfo[i]["gridnick"] = grid->getGridNick();
|
||||||
gridInfo[i]["platform"] = HippoGridInfo::getPlatformString(grid->getPlatform());
|
gridInfo[i]["platform"] = HippoGridInfo::getPlatformString(grid->getPlatform());
|
||||||
gridInfo[i]["gridname"] = grid->getGridName();
|
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]["loginuri"] = grid->getLoginUri();
|
||||||
gridInfo[i]["loginpage"] = grid->getLoginPage();
|
gridInfo[i]["loginpage"] = grid->getLoginPage();
|
||||||
gridInfo[i]["helperuri"] = grid->getHelperUri();
|
gridInfo[i]["helperuri"] = grid->getHelperUri();
|
||||||
@@ -569,20 +945,26 @@ void HippoGridManager::saveFile()
|
|||||||
gridInfo[i]["support"] = grid->getSupportUrl();
|
gridInfo[i]["support"] = grid->getSupportUrl();
|
||||||
gridInfo[i]["register"] = grid->getRegisterUrl();
|
gridInfo[i]["register"] = grid->getRegisterUrl();
|
||||||
gridInfo[i]["password"] = grid->getPasswordUrl();
|
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]["render_compat"] = grid->isRenderCompat();
|
||||||
gridInfo[i]["version"] = grid->getVersion();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// write client grid info file
|
// 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;
|
llofstream file;
|
||||||
file.open(fileName.c_str());
|
file.open(fileName.c_str());
|
||||||
if (file.is_open()) {
|
if (file.is_open())
|
||||||
|
{
|
||||||
LLSDSerialize::toPrettyXML(gridInfo, file);
|
LLSDSerialize::toPrettyXML(gridInfo, file);
|
||||||
file.close();
|
file.close();
|
||||||
llinfos << "Saved grids to " << fileName << llendl;
|
llinfos << "Saved grids to " << fileName << llendl;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
llerrs << "Unable to open grid info file: " << fileName << llendl;
|
llerrs << "Unable to open grid info file: " << fileName << llendl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,11 @@
|
|||||||
#ifndef XML_STATIC
|
#ifndef XML_STATIC
|
||||||
#define XML_STATIC
|
#define XML_STATIC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LL_STANDALONE
|
#ifdef LL_STANDALONE
|
||||||
# include "expat.h"
|
#include <expat.h>
|
||||||
#else
|
#else
|
||||||
# include <expat/expat.h>
|
#include "expat/expat.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class LLSD;
|
class LLSD;
|
||||||
@@ -19,7 +20,6 @@ class LLSD;
|
|||||||
|
|
||||||
class HippoGridInfo
|
class HippoGridInfo
|
||||||
{
|
{
|
||||||
LOG_CLASS(HippoGridInfo);
|
|
||||||
public:
|
public:
|
||||||
enum Platform {
|
enum Platform {
|
||||||
PLATFORM_OTHER = 0,
|
PLATFORM_OTHER = 0,
|
||||||
@@ -33,62 +33,63 @@ public:
|
|||||||
SEARCH_ALL_TEMPLATE
|
SEARCH_ALL_TEMPLATE
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit HippoGridInfo(const std::string &gridNick);
|
explicit HippoGridInfo(const std::string& gridNick);
|
||||||
|
|
||||||
Platform getPlatform() const { return mPlatform; }
|
Platform getPlatform();
|
||||||
const std::string &getGridNick() const { return mGridNick; }
|
bool isOpenSimulator() const;
|
||||||
const std::string &getGridName() const { return mGridName; }
|
bool isSecondLife() const;
|
||||||
const std::string &getLastFName() const { return mLastFName; }
|
const std::string& getGridNick() const;
|
||||||
const std::string &getLastLName() const { return mLastLName; }
|
const std::string& getGridName() const;
|
||||||
const std::string &getLoginUri() const { return mLoginUri; }
|
const std::string& getLoginUri() const;
|
||||||
const std::string &getLoginPage() const { return mLoginPage; }
|
const std::string& getLoginPage() const;
|
||||||
const std::string &getHelperUri() const { return mHelperUri; }
|
const std::string& getHelperUri() const;
|
||||||
const std::string &getWebSite() const { return mWebSite; }
|
const std::string& getWebSite() const;
|
||||||
const std::string &getSupportUrl() const { return mSupportUrl; }
|
const std::string& getSupportUrl() const;
|
||||||
const std::string &getRegisterUrl() const { return mRegisterUrl; }
|
const std::string& getRegisterUrl() const;
|
||||||
const std::string &getPasswordUrl() const { return mPasswordUrl; }
|
const std::string& getPasswordUrl() const;
|
||||||
const std::string &getSearchUrl() const { return mSearchUrl; }
|
// Returns the url base used for the Web Search tab
|
||||||
const std::string &getVoiceConnector() const { return mVoiceConnector; }
|
const std::string& getSearchUrl() const;
|
||||||
std::string getSearchUrl(SearchType ty) const;
|
const std::string& getFirstName() const;
|
||||||
bool isRenderCompat() const { return mRenderCompat; }
|
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 getMaxAgentGroups() const { return mMaxAgentGroups; }
|
||||||
int getVersion() const { return mVersion; }
|
|
||||||
|
|
||||||
const std::string &getCurrencySymbol() const { return mCurrencySymbol; }
|
const std::string& getCurrencySymbol() const;
|
||||||
const std::string &getRealCurrencySymbol() const { return mRealCurrencySymbol; }
|
const std::string& getRealCurrencySymbol() const;
|
||||||
std::string getUploadFee() const;
|
std::string getUploadFee() const;
|
||||||
std::string getGroupCreationFee() const;
|
std::string getGroupCreationFee() const;
|
||||||
std::string getDirectoryFee() const;
|
std::string getDirectoryFee() const;
|
||||||
|
|
||||||
bool isOpenSimulator() const { return (mPlatform == PLATFORM_OPENSIM ); }
|
void setPlatform (const std::string& platform);
|
||||||
bool isSecondLife() const { return (mPlatform == PLATFORM_SECONDLIFE); }
|
void setPlatform (Platform platform);
|
||||||
|
void setGridName (const std::string& gridName);
|
||||||
void setPlatform (const std::string &platform);
|
void setLoginUri (const std::string& loginUri);
|
||||||
void setPlatform (Platform platform);
|
void setLoginPage(const std::string& loginPage);
|
||||||
void setGridName (const std::string &gridName) { mGridName = gridName; }
|
void setHelperUri(const std::string& helperUri);
|
||||||
void setLastFName (const std::string &firstName) { mLastFName = firstName; }
|
void setWebSite (const std::string& website);
|
||||||
void setLastLName (const std::string &lastName) { mLastLName = lastName; }
|
void setSupportUrl(const std::string& url);
|
||||||
void setLoginUri (const std::string &loginUri) { mLoginUri = loginUri; cleanUpUri(mLoginUri); }
|
void setRegisterUrl(const std::string& url);
|
||||||
void setLoginPage (const std::string &loginPage) { mLoginPage = loginPage; }
|
void setPasswordUrl(const std::string& url);
|
||||||
void setHelperUri (const std::string &helperUri) { mHelperUri = helperUri; cleanUpUri(mHelperUri); }
|
// sets the url base used for the Web Search tab
|
||||||
void setWebSite (const std::string &website) { mWebSite = website; }
|
void setSearchUrl(const std::string& url);
|
||||||
void setSupportUrl (const std::string &url) { mSupportUrl = url; }
|
void setRenderCompat(bool compat);
|
||||||
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 setMaxAgentGroups(int max) { mMaxAgentGroups = max; }
|
void setMaxAgentGroups(int max) { mMaxAgentGroups = max; }
|
||||||
void setVersion(int version) { mVersion = version; }
|
void setFirstName(const std::string& firstName);
|
||||||
void setVoiceConnector(const std::string &vc) { mVoiceConnector = vc; }
|
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 setCurrencySymbol(const std::string& sym);
|
||||||
void setRealCurrencySymbol(const std::string &sym) { mRealCurrencySymbol = sym.substr(0, 3); }
|
void setRealCurrencySymbol(const std::string& sym);
|
||||||
void setDirectoryFee(int fee) { mDirectoryFee = fee; }
|
void setDirectoryFee(int fee);
|
||||||
|
|
||||||
bool retrieveGridInfo();
|
bool retrieveGridInfo();
|
||||||
|
|
||||||
static const char *getPlatformString(Platform platform);
|
static const char* getPlatformString(Platform platform);
|
||||||
static void cleanUpGridNick(std::string &gridnick);
|
static std::string sanitizeGridNick(std::string &gridnick);
|
||||||
|
|
||||||
static HippoGridInfo FALLBACK_GRIDINFO;
|
static HippoGridInfo FALLBACK_GRIDINFO;
|
||||||
static void initFallback();
|
static void initFallback();
|
||||||
@@ -97,8 +98,6 @@ private:
|
|||||||
Platform mPlatform;
|
Platform mPlatform;
|
||||||
std::string mGridNick;
|
std::string mGridNick;
|
||||||
std::string mGridName;
|
std::string mGridName;
|
||||||
std::string mLastFName;
|
|
||||||
std::string mLastLName;
|
|
||||||
std::string mLoginUri;
|
std::string mLoginUri;
|
||||||
std::string mLoginPage;
|
std::string mLoginPage;
|
||||||
std::string mHelperUri;
|
std::string mHelperUri;
|
||||||
@@ -108,53 +107,56 @@ private:
|
|||||||
std::string mPasswordUrl;
|
std::string mPasswordUrl;
|
||||||
std::string mSearchUrl;
|
std::string mSearchUrl;
|
||||||
std::string mVoiceConnector;
|
std::string mVoiceConnector;
|
||||||
|
std::string mFirstName;
|
||||||
|
std::string mLastName;
|
||||||
|
std::string mAvatarPassword;
|
||||||
bool mRenderCompat;
|
bool mRenderCompat;
|
||||||
int mMaxAgentGroups;
|
int mMaxAgentGroups;
|
||||||
int mVersion;
|
|
||||||
|
|
||||||
std::string mCurrencySymbol;
|
std::string mCurrencySymbol;
|
||||||
std::string mRealCurrencySymbol;
|
std::string mRealCurrencySymbol;
|
||||||
int mDirectoryFee;
|
int mDirectoryFee;
|
||||||
|
|
||||||
// for parsing grid info XML
|
// for parsing grid info XML
|
||||||
enum XmlState {
|
enum XmlState
|
||||||
|
{
|
||||||
XML_VOID, XML_GRIDNICK, XML_PLATFORM, XML_GRIDNAME,
|
XML_VOID, XML_GRIDNICK, XML_PLATFORM, XML_GRIDNAME,
|
||||||
XML_LOGINURI, XML_LOGINPAGE, XML_HELPERURI,
|
XML_LOGINURI, XML_LOGINPAGE, XML_HELPERURI,
|
||||||
XML_WEBSITE, XML_SUPPORT, XML_REGISTER, XML_PASSWORD, XML_SEARCH
|
XML_WEBSITE, XML_SUPPORT, XML_REGISTER, XML_PASSWORD, XML_SEARCH
|
||||||
};
|
};
|
||||||
XmlState mXmlState;
|
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;
|
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 onXmlElementStart(void* userData, const XML_Char* name, const XML_Char** atts);
|
||||||
static void onXmlElementEnd(void *userData, const XML_Char *name);
|
static void onXmlElementEnd(void* userData, const XML_Char* name);
|
||||||
static void onXmlCharacterData(void *userData, const XML_Char *s, int len);
|
static void onXmlCharacterData(void* userData, const XML_Char* s, int len);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class HippoGridManager
|
class HippoGridManager
|
||||||
{
|
{
|
||||||
LOG_CLASS(HippoGridManager);
|
|
||||||
public:
|
public:
|
||||||
HippoGridManager();
|
HippoGridManager();
|
||||||
~HippoGridManager();
|
~HippoGridManager();
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
void saveFile();
|
void saveFile();
|
||||||
|
void discardAndReload();
|
||||||
|
|
||||||
HippoGridInfo *getGrid(const std::string &grid) const;
|
HippoGridInfo* getGrid(const std::string& grid) const;
|
||||||
HippoGridInfo *getConnectedGrid() const { return (mConnectedGrid)? mConnectedGrid: getCurrentGrid(); }
|
HippoGridInfo* getConnectedGrid() const;
|
||||||
HippoGridInfo *getCurrentGrid() const;
|
HippoGridInfo* getCurrentGrid() const;
|
||||||
const std::string &getDefaultGridNick() const { return mDefaultGrid; }
|
const std::string& getDefaultGridNick() const;
|
||||||
const std::string &getCurrentGridNick() const { return mCurrentGrid; }
|
const std::string& getCurrentGridNick() const;
|
||||||
|
|
||||||
void setDefaultGrid(const std::string &grid);
|
void setDefaultGrid(const std::string& grid);
|
||||||
void setCurrentGrid(const std::string &grid);
|
void setCurrentGrid(const std::string& grid);
|
||||||
void setCurrentGridAsConnected() { mConnectedGrid = getCurrentGrid(); }
|
void setCurrentGridAsConnected();
|
||||||
|
|
||||||
void addGrid(HippoGridInfo *grid);
|
void addGrid(HippoGridInfo* grid);
|
||||||
void deleteGrid(const std::string &grid);
|
void deleteGrid(const std::string& grid);
|
||||||
|
|
||||||
typedef std::map<std::string, HippoGridInfo*>::iterator GridIterator;
|
typedef std::map<std::string, HippoGridInfo*>::iterator GridIterator;
|
||||||
GridIterator beginGrid() { return mGridInfo.begin(); }
|
GridIterator beginGrid() { return mGridInfo.begin(); }
|
||||||
@@ -164,17 +166,18 @@ private:
|
|||||||
std::map<std::string, HippoGridInfo*> mGridInfo;
|
std::map<std::string, HippoGridInfo*> mGridInfo;
|
||||||
std::string mDefaultGrid;
|
std::string mDefaultGrid;
|
||||||
std::string mCurrentGrid;
|
std::string mCurrentGrid;
|
||||||
HippoGridInfo *mConnectedGrid;
|
HippoGridInfo* mConnectedGrid;
|
||||||
|
int mDefaultGridsVersion;
|
||||||
|
|
||||||
void cleanup();
|
void cleanup();
|
||||||
void loadFromFile();
|
void loadFromFile();
|
||||||
void parseFile(const std::string &fileName, bool mergeIfNewer);
|
void parseFile(const std::string& fileName, bool mergeIfNewer);
|
||||||
void parseUrl(const char *url, bool mergeIfNewer);
|
void parseUrl(const std::string url, bool mergeIfNewer);
|
||||||
void parseData(LLSD &gridInfo, bool mergeIfNewer);
|
void parseData(LLSD &gridInfo, bool mergeIfNewer);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
extern HippoGridManager *gHippoGridManager;
|
extern HippoGridManager* gHippoGridManager;
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ bool HippoPanelGridsImpl::saveCurGrid()
|
|||||||
// check nickname
|
// check nickname
|
||||||
std::string gridnick = childGetValue("gridnick");
|
std::string gridnick = childGetValue("gridnick");
|
||||||
if (gridnick == "<required>") gridnick = "";
|
if (gridnick == "<required>") gridnick = "";
|
||||||
HippoGridInfo::cleanUpGridNick(gridnick);
|
HippoGridInfo::sanitizeGridNick(gridnick);
|
||||||
childSetValue("gridnick", (gridnick != "")? gridnick: "<required>");
|
childSetValue("gridnick", (gridnick != "")? gridnick: "<required>");
|
||||||
if (gridnick == "") {
|
if (gridnick == "") {
|
||||||
LLNotifications::instance().add("GridsNoNick");
|
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
|
// Flush all of our caches on exit in the case of disconnect due to
|
||||||
// invalid packets.
|
// invalid packets.
|
||||||
// <edit>
|
|
||||||
if(1) return;
|
|
||||||
// </edit>
|
|
||||||
|
|
||||||
mPurgeOnExit = TRUE;
|
mPurgeOnExit = TRUE;
|
||||||
|
|
||||||
@@ -3146,17 +3143,23 @@ void LLAppViewer::badNetworkHandler()
|
|||||||
LLAppViewer::handleSyncViewerCrash();
|
LLAppViewer::handleSyncViewerCrash();
|
||||||
LLAppViewer::handleViewerCrash();
|
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;
|
std::ostringstream message;
|
||||||
message <<
|
message <<
|
||||||
"The viewer has detected mangled network data indicative\n"
|
"The viewer has detected mangled network data indicative\n"
|
||||||
"of a bad upstream network connection or an incomplete\n"
|
"of a bad upstream network connection or an incomplete\n"
|
||||||
"local installation of " << LLAppViewer::instance()->getSecondLifeTitle() << ". \n"
|
"local installation of " << gSecondLife << ". \n"
|
||||||
" \n"
|
" \n"
|
||||||
"Try uninstalling and reinstalling to see if this resolves \n"
|
"Try uninstalling and reinstalling to see if this resolves \n"
|
||||||
"the issue. \n"
|
"the issue. \n"
|
||||||
" \n"
|
" \n"
|
||||||
"If the problem continues, see the Tech Support FAQ at: \n"
|
"If the problem continues, please report the issue at: \n"
|
||||||
"www.secondlife.com/support";
|
"http://www.singularityviewer.org" << grid_support_msg;
|
||||||
forceDisconnect(message.str());
|
forceDisconnect(message.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,6 +63,8 @@
|
|||||||
#include "llscrolllistctrl.h"
|
#include "llscrolllistctrl.h"
|
||||||
#include "llsdserialize.h"
|
#include "llsdserialize.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// When uploading multiple files, don't display any of them when uploading more than this number.
|
// When uploading multiple files, don't display any of them when uploading more than this number.
|
||||||
static const S32 FILE_COUNT_DISPLAY_THRESHOLD = 5;
|
static const S32 FILE_COUNT_DISPLAY_THRESHOLD = 5;
|
||||||
|
|
||||||
@@ -228,6 +230,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
|
|||||||
|
|
||||||
LLSD args;
|
LLSD args;
|
||||||
args["AMOUNT"] = llformat("%d", expected_upload_cost);
|
args["AMOUNT"] = llformat("%d", expected_upload_cost);
|
||||||
|
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
LLNotifications::instance().add("UploadPayment", args);
|
LLNotifications::instance().add("UploadPayment", args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,8 @@
|
|||||||
#include "llxmlrpctransaction.h"
|
#include "llxmlrpctransaction.h"
|
||||||
#include "llviewernetwork.h"
|
#include "llviewernetwork.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
|
|
||||||
const F64 CURRENCY_ESTIMATE_FREQUENCY = 2.0;
|
const F64 CURRENCY_ESTIMATE_FREQUENCY = 2.0;
|
||||||
// how long of a pause in typing a currency buy amount before an
|
// 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.childShow("currency_action");
|
||||||
|
mPanel.childSetTextArg("currency_action", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
LLLineEditor* lindenAmount = mPanel.getChild<LLLineEditor>("currency_amt");
|
LLLineEditor* lindenAmount = mPanel.getChild<LLLineEditor>("currency_amt");
|
||||||
if (lindenAmount)
|
if (lindenAmount)
|
||||||
@@ -478,7 +481,9 @@ void LLCurrencyUIManager::buy(const std::string& buy_msg)
|
|||||||
|
|
||||||
LLUIString msg = buy_msg;
|
LLUIString msg = buy_msg;
|
||||||
msg.setArg("[LINDENS]", llformat("%d", impl.mUserCurrencyBuy));
|
msg.setArg("[LINDENS]", llformat("%d", impl.mUserCurrencyBuy));
|
||||||
|
msg.setArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
msg.setArg("[USD]", llformat("%#.2f", impl.mSiteCurrencyEstimatedCost / 100.0));
|
msg.setArg("[USD]", llformat("%#.2f", impl.mSiteCurrencyEstimatedCost / 100.0));
|
||||||
|
msg.setArg("[REALCURRENCY]", gHippoGridManager->getConnectedGrid()->getRealCurrencySymbol());
|
||||||
LLConfirmationManager::confirm(impl.mSiteConfirm,
|
LLConfirmationManager::confirm(impl.mSiteConfirm,
|
||||||
msg,
|
msg,
|
||||||
impl,
|
impl,
|
||||||
|
|||||||
@@ -47,6 +47,9 @@
|
|||||||
#include "floatervoicelicense.h"
|
#include "floatervoicelicense.h"
|
||||||
#include "llstartup.h"
|
#include "llstartup.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
|
|
||||||
// static
|
// static
|
||||||
std::set<std::string> LLFirstUse::sConfigVariables;
|
std::set<std::string> LLFirstUse::sConfigVariables;
|
||||||
|
|
||||||
@@ -90,6 +93,7 @@ void LLFirstUse::useBalanceIncrease(S32 delta)
|
|||||||
|
|
||||||
LLSD args;
|
LLSD args;
|
||||||
args["AMOUNT"] = llformat("%d",delta);
|
args["AMOUNT"] = llformat("%d",delta);
|
||||||
|
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
LLNotifications::instance().add("FirstBalanceIncrease", args);
|
LLNotifications::instance().add("FirstBalanceIncrease", args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -104,6 +108,7 @@ void LLFirstUse::useBalanceDecrease(S32 delta)
|
|||||||
|
|
||||||
LLSD args;
|
LLSD args;
|
||||||
args["AMOUNT"] = llformat("%d",-delta);
|
args["AMOUNT"] = llformat("%d",-delta);
|
||||||
|
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
LLNotifications::instance().add("FirstBalanceDecrease", args);
|
LLNotifications::instance().add("FirstBalanceDecrease", args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,8 @@
|
|||||||
#include "llglheaders.h"
|
#include "llglheaders.h"
|
||||||
#include "llwindow.h"
|
#include "llwindow.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// [RLVa:KB]
|
// [RLVa:KB]
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
@@ -133,6 +135,8 @@ LLFloaterAbout::LLFloaterAbout()
|
|||||||
|
|
||||||
std::string support;
|
std::string support;
|
||||||
support.append("\n\n");
|
support.append("\n\n");
|
||||||
|
support.append("Grid: " + gHippoGridManager->getConnectedGrid()->getGridName()
|
||||||
|
+ " (" + gHippoGridManager->getConnectedGrid()->getGridNick() + ")\n\n");
|
||||||
|
|
||||||
#if LL_MSVC
|
#if LL_MSVC
|
||||||
support.append(llformat("Built with MSVC version %d\n\n", _MSC_VER));
|
support.append(llformat("Built with MSVC version %d\n\n", _MSC_VER));
|
||||||
|
|||||||
@@ -68,6 +68,8 @@
|
|||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
//<edit>
|
//<edit>
|
||||||
#include "llinventorymodel.h" // gInventoryModel
|
#include "llinventorymodel.h" // gInventoryModel
|
||||||
//</edit>
|
//</edit>
|
||||||
@@ -194,7 +196,7 @@ BOOL LLFloaterAnimPreview::postBuild()
|
|||||||
childSetMaxValue("priority", 7);
|
childSetMaxValue("priority", 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
childSetLabelArg("ok_btn", "[AMOUNT]", llformat("%d",sUploadAmount));
|
childSetLabelArg("ok_btn", "[UPLOADFEE]", gHippoGridManager->getConnectedGrid()->getUploadFee());
|
||||||
childSetAction("ok_btn", onBtnOK, this);
|
childSetAction("ok_btn", onBtnOK, this);
|
||||||
setDefaultBtn();
|
setDefaultBtn();
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,8 @@
|
|||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
LLFloaterBuy* LLFloaterBuy::sInstance = NULL;
|
LLFloaterBuy* LLFloaterBuy::sInstance = NULL;
|
||||||
|
|
||||||
LLFloaterBuy::LLFloaterBuy()
|
LLFloaterBuy::LLFloaterBuy()
|
||||||
@@ -184,6 +186,7 @@ void LLFloaterBuy::show(const LLSaleInfo& sale_info)
|
|||||||
// Add after columns added so appropriate heights are correct.
|
// Add after columns added so appropriate heights are correct.
|
||||||
object_list->addElement(row);
|
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", "[AMOUNT]", llformat("%d", sale_info.getSalePrice()));
|
||||||
sInstance->childSetTextArg("buy_text", "[NAME]", owner_name);
|
sInstance->childSetTextArg("buy_text", "[NAME]", owner_name);
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,8 @@
|
|||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
LLFloaterBuyContents* LLFloaterBuyContents::sInstance = NULL;
|
LLFloaterBuyContents* LLFloaterBuyContents::sInstance = NULL;
|
||||||
|
|
||||||
LLFloaterBuyContents::LLFloaterBuyContents()
|
LLFloaterBuyContents::LLFloaterBuyContents()
|
||||||
@@ -129,6 +131,7 @@ void LLFloaterBuyContents::show(const LLSaleInfo& sale_info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sInstance->childSetTextArg("contains_text", "[NAME]", node->mName);
|
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", "[AMOUNT]", llformat("%d", sale_info.getSalePrice()));
|
||||||
sInstance->childSetTextArg("buy_text", "[NAME]", owner_name);
|
sInstance->childSetTextArg("buy_text", "[NAME]", owner_name);
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,8 @@
|
|||||||
#include "llwindow.h"
|
#include "llwindow.h"
|
||||||
#include "llappviewer.h"
|
#include "llappviewer.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
static const S32 STANDARD_BUY_AMOUNT = 2000;
|
static const S32 STANDARD_BUY_AMOUNT = 2000;
|
||||||
static const S32 MINIMUM_BALANCE_AMOUNT = 0;
|
static const S32 MINIMUM_BALANCE_AMOUNT = 0;
|
||||||
|
|
||||||
@@ -263,9 +265,11 @@ void LLFloaterBuyCurrencyUI::updateUI()
|
|||||||
childSetVisible("buy_action", true);
|
childSetVisible("buy_action", true);
|
||||||
childSetTextArg("buy_action", "[NAME]", mTargetName);
|
childSetTextArg("buy_action", "[NAME]", mTargetName);
|
||||||
childSetTextArg("buy_action", "[PRICE]", llformat("%d",mTargetPrice));
|
childSetTextArg("buy_action", "[PRICE]", llformat("%d",mTargetPrice));
|
||||||
|
childSetTextArg("buy_action", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
childSetTextArg("buy_action_unknown", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
childSetVisible("buy_action_unknown", true);
|
childSetVisible("buy_action_unknown", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -274,16 +278,19 @@ void LLFloaterBuyCurrencyUI::updateUI()
|
|||||||
childShow("balance_label");
|
childShow("balance_label");
|
||||||
childShow("balance_amount");
|
childShow("balance_amount");
|
||||||
childSetTextArg("balance_amount", "[AMT]", llformat("%d", balance));
|
childSetTextArg("balance_amount", "[AMT]", llformat("%d", balance));
|
||||||
|
childSetTextArg("balance_amount", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
S32 buying = mManager.getAmount();
|
S32 buying = mManager.getAmount();
|
||||||
childShow("buying_label");
|
childShow("buying_label");
|
||||||
childShow("buying_amount");
|
childShow("buying_amount");
|
||||||
childSetTextArg("buying_amount", "[AMT]", llformat("%d", buying));
|
childSetTextArg("buying_amount", "[AMT]", llformat("%d", buying));
|
||||||
|
childSetTextArg("buying_amount", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
S32 total = balance + buying;
|
S32 total = balance + buying;
|
||||||
childShow("total_label");
|
childShow("total_label");
|
||||||
childShow("total_amount");
|
childShow("total_amount");
|
||||||
childSetTextArg("total_amount", "[AMT]", llformat("%d", total));
|
childSetTextArg("total_amount", "[AMT]", llformat("%d", total));
|
||||||
|
childSetTextArg("total_amount", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
childSetVisible("purchase_warning_repurchase", false);
|
childSetVisible("purchase_warning_repurchase", false);
|
||||||
childSetVisible("purchase_warning_notenough", false);
|
childSetVisible("purchase_warning_notenough", false);
|
||||||
|
|||||||
@@ -66,6 +66,8 @@
|
|||||||
#include "llviewernetwork.h"
|
#include "llviewernetwork.h"
|
||||||
#include "roles_constants.h"
|
#include "roles_constants.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// NOTE: This is duplicated in lldatamoney.cpp ...
|
// NOTE: This is duplicated in lldatamoney.cpp ...
|
||||||
const F32 GROUP_LAND_BONUS_FACTOR = 1.1f;
|
const F32 GROUP_LAND_BONUS_FACTOR = 1.1f;
|
||||||
const F64 CURRENCY_ESTIMATE_FREQUENCY = 0.5;
|
const F64 CURRENCY_ESTIMATE_FREQUENCY = 0.5;
|
||||||
@@ -1024,6 +1026,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
|||||||
LLStringUtil::format_map_t string_args;
|
LLStringUtil::format_map_t string_args;
|
||||||
string_args["[AMOUNT]"] = llformat("%d", mParcelActualArea);
|
string_args["[AMOUNT]"] = llformat("%d", mParcelActualArea);
|
||||||
string_args["[AMOUNT2]"] = llformat("%d", mParcelSupportedObjects);
|
string_args["[AMOUNT2]"] = llformat("%d", mParcelSupportedObjects);
|
||||||
|
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
childSetText("info_size", getString("meters_supports_object", string_args));
|
childSetText("info_size", getString("meters_supports_object", string_args));
|
||||||
|
|
||||||
@@ -1227,7 +1230,8 @@ void LLFloaterBuyLandUI::refreshUI()
|
|||||||
|
|
||||||
childSetText("purchase_action",
|
childSetText("purchase_action",
|
||||||
llformat(
|
llformat(
|
||||||
"Pay L$ %d to %s for this land",
|
"Pay %s %d to %s for this land",
|
||||||
|
gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str(),
|
||||||
mParcelPrice,
|
mParcelPrice,
|
||||||
mParcelSellerName.c_str()
|
mParcelSellerName.c_str()
|
||||||
));
|
));
|
||||||
@@ -1239,6 +1243,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
|||||||
{
|
{
|
||||||
LLStringUtil::format_map_t string_args;
|
LLStringUtil::format_map_t string_args;
|
||||||
string_args["[AMOUNT]"] = llformat("%d", mAgentCashBalance);
|
string_args["[AMOUNT]"] = llformat("%d", mAgentCashBalance);
|
||||||
|
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
childSetText("currency_reason", getString("have_enough_lindens", string_args));
|
childSetText("currency_reason", getString("have_enough_lindens", string_args));
|
||||||
}
|
}
|
||||||
@@ -1247,6 +1252,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
|||||||
LLStringUtil::format_map_t string_args;
|
LLStringUtil::format_map_t string_args;
|
||||||
string_args["[AMOUNT]"] = llformat("%d", mAgentCashBalance);
|
string_args["[AMOUNT]"] = llformat("%d", mAgentCashBalance);
|
||||||
string_args["[AMOUNT2]"] = llformat("%d", mParcelPrice - mAgentCashBalance);
|
string_args["[AMOUNT2]"] = llformat("%d", mParcelPrice - mAgentCashBalance);
|
||||||
|
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
childSetText("currency_reason", getString("not_enough_lindens", string_args));
|
childSetText("currency_reason", getString("not_enough_lindens", string_args));
|
||||||
|
|
||||||
@@ -1257,6 +1263,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
|||||||
{
|
{
|
||||||
LLStringUtil::format_map_t string_args;
|
LLStringUtil::format_map_t string_args;
|
||||||
string_args["[AMOUNT]"] = llformat("%d", finalBalance);
|
string_args["[AMOUNT]"] = llformat("%d", finalBalance);
|
||||||
|
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
childSetText("currency_balance", getString("balance_left", string_args));
|
childSetText("currency_balance", getString("balance_left", string_args));
|
||||||
|
|
||||||
@@ -1265,6 +1272,7 @@ void LLFloaterBuyLandUI::refreshUI()
|
|||||||
{
|
{
|
||||||
LLStringUtil::format_map_t string_args;
|
LLStringUtil::format_map_t string_args;
|
||||||
string_args["[AMOUNT]"] = llformat("%d", mParcelPrice - mAgentCashBalance);
|
string_args["[AMOUNT]"] = llformat("%d", mParcelPrice - mAgentCashBalance);
|
||||||
|
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
childSetText("currency_balance", getString("balance_needed", string_args));
|
childSetText("currency_balance", getString("balance_needed", string_args));
|
||||||
|
|
||||||
@@ -1331,6 +1339,7 @@ void LLFloaterBuyLandUI::startBuyPreConfirm()
|
|||||||
LLStringUtil::format_map_t string_args;
|
LLStringUtil::format_map_t string_args;
|
||||||
string_args["[AMOUNT]"] = llformat("%d", mCurrency.getAmount());
|
string_args["[AMOUNT]"] = llformat("%d", mCurrency.getAmount());
|
||||||
string_args["[AMOUNT2]"] = llformat("%#.2f", mCurrency.getEstimate() / 100.0);
|
string_args["[AMOUNT2]"] = llformat("%#.2f", mCurrency.getEstimate() / 100.0);
|
||||||
|
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
action += getString("buy_for_US", string_args);
|
action += getString("buy_for_US", string_args);
|
||||||
}
|
}
|
||||||
@@ -1338,6 +1347,7 @@ void LLFloaterBuyLandUI::startBuyPreConfirm()
|
|||||||
LLStringUtil::format_map_t string_args;
|
LLStringUtil::format_map_t string_args;
|
||||||
string_args["[AMOUNT]"] = llformat("%d", mParcelPrice);
|
string_args["[AMOUNT]"] = llformat("%d", mParcelPrice);
|
||||||
string_args["[SELLER]"] = mParcelSellerName;
|
string_args["[SELLER]"] = mParcelSellerName;
|
||||||
|
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
action += getString("pay_to_for_land", string_args);
|
action += getString("pay_to_for_land", string_args);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,8 @@
|
|||||||
#include "lltransfertargetfile.h"
|
#include "lltransfertargetfile.h"
|
||||||
#include "lltransfersourcefile.h"
|
#include "lltransfersourcefile.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
const F32 SECONDS_BETWEEN_UPDATE_REQUESTS = 5.0f;
|
const F32 SECONDS_BETWEEN_UPDATE_REQUESTS = 5.0f;
|
||||||
|
|
||||||
static LLFloaterGodTools* sGodTools = NULL;
|
static LLFloaterGodTools* sGodTools = NULL;
|
||||||
@@ -135,6 +137,8 @@ LLFloaterGodTools::LLFloaterGodTools()
|
|||||||
sendRegionInfoRequest();
|
sendRegionInfoRequest();
|
||||||
|
|
||||||
childShowTab("GodTools Tabs", "region");
|
childShowTab("GodTools Tabs", "region");
|
||||||
|
|
||||||
|
childSetTextArg("land cost text", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
|||||||
@@ -62,6 +62,8 @@
|
|||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
// </edit>
|
// </edit>
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
//static
|
//static
|
||||||
S32 LLFloaterImagePreview::sUploadAmount = 10;
|
S32 LLFloaterImagePreview::sUploadAmount = 10;
|
||||||
|
|
||||||
@@ -107,7 +109,7 @@ BOOL LLFloaterImagePreview::postBuild()
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
childSetLabelArg("ok_btn", "[AMOUNT]", llformat("%d",sUploadAmount));
|
childSetLabelArg("ok_btn", "[UPLOADFEE]", gHippoGridManager->getConnectedGrid()->getUploadFee());
|
||||||
|
|
||||||
LLCtrlSelectionInterface* iface = childGetSelectionInterface("clothing_type_combo");
|
LLCtrlSelectionInterface* iface = childGetSelectionInterface("clothing_type_combo");
|
||||||
if (iface)
|
if (iface)
|
||||||
|
|||||||
@@ -79,7 +79,7 @@
|
|||||||
#include "roles_constants.h"
|
#include "roles_constants.h"
|
||||||
#include "llworld.h"
|
#include "llworld.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -668,6 +668,7 @@ void LLPanelLandGeneral::refresh()
|
|||||||
mSaleInfoForSaleNoObjects->setVisible(TRUE);
|
mSaleInfoForSaleNoObjects->setVisible(TRUE);
|
||||||
}
|
}
|
||||||
mSaleInfoNotForSale->setVisible(FALSE);
|
mSaleInfoNotForSale->setVisible(FALSE);
|
||||||
|
mSaleInfoForSale1->setTextArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
F32 cost_per_sqm = 0.0f;
|
F32 cost_per_sqm = 0.0f;
|
||||||
if (area > 0)
|
if (area > 0)
|
||||||
@@ -926,6 +927,7 @@ void LLPanelLandGeneral::onClickBuyPass(void* data)
|
|||||||
|
|
||||||
LLSD args;
|
LLSD args;
|
||||||
args["COST"] = cost;
|
args["COST"] = cost;
|
||||||
|
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
args["PARCEL_NAME"] = parcel_name;
|
args["PARCEL_NAME"] = parcel_name;
|
||||||
args["TIME"] = time;
|
args["TIME"] = time;
|
||||||
|
|
||||||
@@ -2124,6 +2126,7 @@ void LLPanelLandOptions::refreshSearch()
|
|||||||
}
|
}
|
||||||
BOOL show_directory = parcel->getParcelFlag(PF_SHOW_DIRECTORY);
|
BOOL show_directory = parcel->getParcelFlag(PF_SHOW_DIRECTORY);
|
||||||
mCheckShowDirectory ->set(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.
|
// Set by string in case the order in UI doesn't match the order by index.
|
||||||
// *TODO:Translate
|
// *TODO:Translate
|
||||||
@@ -2491,6 +2494,7 @@ void LLPanelLandAccess::refresh()
|
|||||||
|
|
||||||
S32 pass_price = parcel->getPassPrice();
|
S32 pass_price = parcel->getPassPrice();
|
||||||
childSetValue( "PriceSpin", (F32)pass_price );
|
childSetValue( "PriceSpin", (F32)pass_price );
|
||||||
|
childSetLabelArg("PriceSpin", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
F32 pass_hours = parcel->getPassHours();
|
F32 pass_hours = parcel->getPassHours();
|
||||||
childSetValue( "HoursSpin", pass_hours );
|
childSetValue( "HoursSpin", pass_hours );
|
||||||
|
|||||||
@@ -55,6 +55,8 @@
|
|||||||
#include "llassetstorage.h"
|
#include "llassetstorage.h"
|
||||||
#include "llinventorytype.h"
|
#include "llinventorytype.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
const S32 PREVIEW_LINE_HEIGHT = 19;
|
const S32 PREVIEW_LINE_HEIGHT = 19;
|
||||||
const S32 PREVIEW_CLOSE_BOX_SIZE = 16;
|
const S32 PREVIEW_CLOSE_BOX_SIZE = 16;
|
||||||
const S32 PREVIEW_BORDER_WIDTH = 2;
|
const S32 PREVIEW_BORDER_WIDTH = 2;
|
||||||
@@ -154,6 +156,7 @@ BOOL LLFloaterNameDesc::postBuild()
|
|||||||
childSetAction("cancel_btn", onBtnCancel, this);
|
childSetAction("cancel_btn", onBtnCancel, this);
|
||||||
|
|
||||||
// OK button
|
// OK button
|
||||||
|
childSetLabelArg("ok_btn", "[UPLOADFEE]", gHippoGridManager->getConnectedGrid()->getUploadFee());
|
||||||
childSetAction("ok_btn", onBtnOK, this);
|
childSetAction("ok_btn", onBtnOK, this);
|
||||||
setDefaultBtn("ok_btn");
|
setDefaultBtn("ok_btn");
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,8 @@
|
|||||||
|
|
||||||
#include "llassetuploadresponders.h"
|
#include "llassetuploadresponders.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
#if LL_MSVC
|
#if LL_MSVC
|
||||||
#pragma warning( disable : 4265 ) // "class has virtual functions, but destructor is not virtual"
|
#pragma warning( disable : 4265 ) // "class has virtual functions, but destructor is not virtual"
|
||||||
#endif
|
#endif
|
||||||
@@ -358,7 +360,12 @@ bool LLFloaterPostcard::missingSubjMsgAlertCallback(const LLSD& notification, co
|
|||||||
if((childGetValue("subject_form").asString()).empty())
|
if((childGetValue("subject_form").asString()).empty())
|
||||||
{
|
{
|
||||||
// Stuff the subject back into the form.
|
// 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)
|
if(!mHasFirstMsgFocus)
|
||||||
|
|||||||
@@ -59,6 +59,8 @@
|
|||||||
|
|
||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// <edit>
|
// <edit>
|
||||||
#include "llclipboard.h"
|
#include "llclipboard.h"
|
||||||
// </edit>
|
// </edit>
|
||||||
@@ -175,6 +177,8 @@ LLFloaterProperties::LLFloaterProperties(const std::string& name, const LLRect&
|
|||||||
}
|
}
|
||||||
sPropertiesObserverCount++;
|
sPropertiesObserverCount++;
|
||||||
|
|
||||||
|
childSetTextArg("TextPrice", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
// add the object to the static structure
|
// add the object to the static structure
|
||||||
LLUUID key = mItemID ^ mObjectID;
|
LLUUID key = mItemID ^ mObjectID;
|
||||||
sInstances.insert(instance_map::value_type(key, this));
|
sInstances.insert(instance_map::value_type(key, this));
|
||||||
|
|||||||
@@ -46,6 +46,8 @@
|
|||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// defined in llfloaterland.cpp
|
// defined in llfloaterland.cpp
|
||||||
void send_parcel_select_objects(S32 parcel_local_id, U32 return_type,
|
void send_parcel_select_objects(S32 parcel_local_id, U32 return_type,
|
||||||
uuid_list_t* return_ids = NULL);
|
uuid_list_t* return_ids = NULL);
|
||||||
@@ -284,6 +286,8 @@ void LLFloaterSellLandUI::refreshUI()
|
|||||||
childSetText("info_parcel", parcelp->getName());
|
childSetText("info_parcel", parcelp->getName());
|
||||||
childSetTextArg("info_size", "[AREA]", llformat("%d", mParcelActualArea));
|
childSetTextArg("info_size", "[AREA]", llformat("%d", mParcelActualArea));
|
||||||
|
|
||||||
|
childSetTextArg("price_ld", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
std::string price_str = childGetValue("price").asString();
|
std::string price_str = childGetValue("price").asString();
|
||||||
bool valid_price = false;
|
bool valid_price = false;
|
||||||
valid_price = (price_str != "") && LLLineEditor::prevalidateNonNegativeS32(utf8str_to_wstring(price_str));
|
valid_price = (price_str != "") && LLLineEditor::prevalidateNonNegativeS32(utf8str_to_wstring(price_str));
|
||||||
|
|||||||
@@ -77,6 +77,8 @@
|
|||||||
#include "llvfile.h"
|
#include "llvfile.h"
|
||||||
#include "llvfs.h"
|
#include "llvfs.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
///----------------------------------------------------------------------------
|
///----------------------------------------------------------------------------
|
||||||
/// Local function declarations, constants, enums, and typedefs
|
/// Local function declarations, constants, enums, and typedefs
|
||||||
///----------------------------------------------------------------------------
|
///----------------------------------------------------------------------------
|
||||||
@@ -1232,6 +1234,9 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
|
|||||||
// static
|
// static
|
||||||
void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
|
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");
|
LLRadioGroup* snapshot_type_radio = floater->getChild<LLRadioGroup>("snapshot_type_radio");
|
||||||
snapshot_type_radio->setSelectedIndex(gSavedSettings.getS32("LastSnapshotType"));
|
snapshot_type_radio->setSelectedIndex(gSavedSettings.getS32("LastSnapshotType"));
|
||||||
LLSnapshotLivePreview::ESnapshotType shot_type = getTypeIndex(floater);
|
LLSnapshotLivePreview::ESnapshotType shot_type = getTypeIndex(floater);
|
||||||
|
|||||||
@@ -52,6 +52,8 @@
|
|||||||
#include "lltransactiontypes.h"
|
#include "lltransactiontypes.h"
|
||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
///----------------------------------------------------------------------------
|
///----------------------------------------------------------------------------
|
||||||
/// Local function declarations, constants, enums, and typedefs
|
/// Local function declarations, constants, enums, and typedefs
|
||||||
///----------------------------------------------------------------------------
|
///----------------------------------------------------------------------------
|
||||||
@@ -111,6 +113,8 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
|||||||
|
|
||||||
childSetAction("fastpay 1",&LLFloaterPay::onGive,info);
|
childSetAction("fastpay 1",&LLFloaterPay::onGive,info);
|
||||||
childSetVisible("fastpay 1", FALSE);
|
childSetVisible("fastpay 1", FALSE);
|
||||||
|
childSetLabelArg("fastpay 1", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
|
|
||||||
mQuickPayButton[i] = getChild<LLButton>("fastpay 1");
|
mQuickPayButton[i] = getChild<LLButton>("fastpay 1");
|
||||||
mQuickPayInfo[i] = info;
|
mQuickPayInfo[i] = info;
|
||||||
@@ -121,6 +125,7 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
|||||||
|
|
||||||
childSetAction("fastpay 5",&LLFloaterPay::onGive,info);
|
childSetAction("fastpay 5",&LLFloaterPay::onGive,info);
|
||||||
childSetVisible("fastpay 5", FALSE);
|
childSetVisible("fastpay 5", FALSE);
|
||||||
|
childSetLabelArg("fastpay 5", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
mQuickPayButton[i] = getChild<LLButton>("fastpay 5");
|
mQuickPayButton[i] = getChild<LLButton>("fastpay 5");
|
||||||
mQuickPayInfo[i] = info;
|
mQuickPayInfo[i] = info;
|
||||||
@@ -131,6 +136,7 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
|||||||
|
|
||||||
childSetAction("fastpay 10",&LLFloaterPay::onGive,info);
|
childSetAction("fastpay 10",&LLFloaterPay::onGive,info);
|
||||||
childSetVisible("fastpay 10", FALSE);
|
childSetVisible("fastpay 10", FALSE);
|
||||||
|
childSetLabelArg("fastpay 10", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
mQuickPayButton[i] = getChild<LLButton>("fastpay 10");
|
mQuickPayButton[i] = getChild<LLButton>("fastpay 10");
|
||||||
mQuickPayInfo[i] = info;
|
mQuickPayInfo[i] = info;
|
||||||
@@ -141,6 +147,7 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
|||||||
|
|
||||||
childSetAction("fastpay 20",&LLFloaterPay::onGive,info);
|
childSetAction("fastpay 20",&LLFloaterPay::onGive,info);
|
||||||
childSetVisible("fastpay 20", FALSE);
|
childSetVisible("fastpay 20", FALSE);
|
||||||
|
childSetLabelArg("fastpay 20", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
mQuickPayButton[i] = getChild<LLButton>("fastpay 20");
|
mQuickPayButton[i] = getChild<LLButton>("fastpay 20");
|
||||||
mQuickPayInfo[i] = info;
|
mQuickPayInfo[i] = info;
|
||||||
@@ -148,6 +155,8 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
|||||||
|
|
||||||
|
|
||||||
childSetVisible("amount text", FALSE);
|
childSetVisible("amount text", FALSE);
|
||||||
|
childSetVisible("currency text", FALSE);
|
||||||
|
childSetTextArg("currency text", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
std::string last_amount;
|
std::string last_amount;
|
||||||
if(sLastAmount > 0)
|
if(sLastAmount > 0)
|
||||||
@@ -207,12 +216,14 @@ void LLFloaterPay::processPayPriceReply(LLMessageSystem* msg, void **userdata)
|
|||||||
self->childSetVisible("amount", FALSE);
|
self->childSetVisible("amount", FALSE);
|
||||||
self->childSetVisible("pay btn", FALSE);
|
self->childSetVisible("pay btn", FALSE);
|
||||||
self->childSetVisible("amount text", FALSE);
|
self->childSetVisible("amount text", FALSE);
|
||||||
|
self->childSetVisible("currency text", FALSE);
|
||||||
}
|
}
|
||||||
else if (PAY_PRICE_DEFAULT == price)
|
else if (PAY_PRICE_DEFAULT == price)
|
||||||
{
|
{
|
||||||
self->childSetVisible("amount", TRUE);
|
self->childSetVisible("amount", TRUE);
|
||||||
self->childSetVisible("pay btn", TRUE);
|
self->childSetVisible("pay btn", TRUE);
|
||||||
self->childSetVisible("amount text", TRUE);
|
self->childSetVisible("amount text", TRUE);
|
||||||
|
self->childSetVisible("currency text", TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -223,6 +234,7 @@ void LLFloaterPay::processPayPriceReply(LLMessageSystem* msg, void **userdata)
|
|||||||
self->childSetVisible("pay btn", TRUE);
|
self->childSetVisible("pay btn", TRUE);
|
||||||
self->childSetEnabled("pay btn", TRUE);
|
self->childSetEnabled("pay btn", TRUE);
|
||||||
self->childSetVisible("amount text", TRUE);
|
self->childSetVisible("amount text", TRUE);
|
||||||
|
self->childSetVisible("currency text", TRUE);
|
||||||
|
|
||||||
self->childSetText("amount", llformat("%d", llabs(price)));
|
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);
|
msg->getS32Fast(_PREHASH_ButtonData,_PREHASH_PayButton,pay_button,i);
|
||||||
if (pay_button > 0)
|
if (pay_button > 0)
|
||||||
{
|
{
|
||||||
std::string button_str = "L$";
|
std::string button_str = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
button_str += LLResMgr::getInstance()->getMonetaryString( pay_button );
|
button_str += LLResMgr::getInstance()->getMonetaryString( pay_button );
|
||||||
|
|
||||||
self->mQuickPayButton[i]->setLabelSelected(button_str);
|
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.
|
// 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 );
|
balance_str += LLResMgr::getInstance()->getMonetaryString( max_pay_amount );
|
||||||
const LLFontGL* font = LLResMgr::getInstance()->getRes(LLFONT_SANSSERIF);
|
const LLFontGL* font = LLResMgr::getInstance()->getRes(LLFONT_SANSSERIF);
|
||||||
S32 new_button_width = font->getWidth( std::string(balance_str));
|
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);
|
LLViewerObject* object = gObjectList.findObject(object_id);
|
||||||
if (!object) return;
|
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;
|
if (!floater) return;
|
||||||
|
|
||||||
LLSelectNode* node = floater->mObjectSelection->getFirstRootNode();
|
LLSelectNode* node = floater->mObjectSelection->getFirstRootNode();
|
||||||
@@ -356,12 +370,15 @@ void LLFloaterPay::payDirectly(money_callback callback,
|
|||||||
const LLUUID& target_id,
|
const LLUUID& target_id,
|
||||||
BOOL is_group)
|
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;
|
if (!floater) return;
|
||||||
|
|
||||||
floater->childSetVisible("amount", TRUE);
|
floater->childSetVisible("amount", TRUE);
|
||||||
floater->childSetVisible("pay btn", TRUE);
|
floater->childSetVisible("pay btn", TRUE);
|
||||||
floater->childSetVisible("amount text", TRUE);
|
floater->childSetVisible("amount text", TRUE);
|
||||||
|
floater->childSetVisible("currency text", TRUE);
|
||||||
|
|
||||||
floater->childSetVisible("fastpay text",TRUE);
|
floater->childSetVisible("fastpay text",TRUE);
|
||||||
for(S32 i=0;i<MAX_PAY_BUTTONS;++i)
|
for(S32 i=0;i<MAX_PAY_BUTTONS;++i)
|
||||||
|
|||||||
@@ -73,6 +73,8 @@
|
|||||||
#include "llhudmanager.h" // For testing effects
|
#include "llhudmanager.h" // For testing effects
|
||||||
#include "llhudeffect.h"
|
#include "llhudeffect.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// [RLVa:KB]
|
// [RLVa:KB]
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
@@ -433,7 +435,7 @@ void LLHoverView::updateText()
|
|||||||
|
|
||||||
if (object->flagTakesMoney() || (parent && parent->flagTakesMoney()) )
|
if (object->flagTakesMoney() || (parent && parent->flagTakesMoney()) )
|
||||||
{
|
{
|
||||||
line.append(LLTrans::getString("TooltipFlagL$") + " ");
|
line.append(gHippoGridManager->getConnectedGrid()->getCurrencySymbol() + " ");
|
||||||
suppressObjectHoverDisplay = FALSE; // Show tip
|
suppressObjectHoverDisplay = FALSE; // Show tip
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -479,6 +481,7 @@ void LLHoverView::updateText()
|
|||||||
else if (for_sale)
|
else if (for_sale)
|
||||||
{
|
{
|
||||||
LLStringUtil::format_map_t args;
|
LLStringUtil::format_map_t args;
|
||||||
|
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
args["[AMOUNT]"] = llformat("%d", nodep->mSaleInfo.getSalePrice());
|
args["[AMOUNT]"] = llformat("%d", nodep->mSaleInfo.getSalePrice());
|
||||||
line.append(LLTrans::getString("TooltipForSaleL$", args));
|
line.append(LLTrans::getString("TooltipForSaleL$", args));
|
||||||
suppressObjectHoverDisplay = FALSE; // Show tip
|
suppressObjectHoverDisplay = FALSE; // Show tip
|
||||||
@@ -661,6 +664,7 @@ void LLHoverView::updateText()
|
|||||||
if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE))
|
if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE))
|
||||||
{
|
{
|
||||||
LLStringUtil::format_map_t args;
|
LLStringUtil::format_map_t args;
|
||||||
|
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice());
|
args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice());
|
||||||
line = LLTrans::getString("TooltipForSaleL$", args);
|
line = LLTrans::getString("TooltipForSaleL$", args);
|
||||||
mText.push_back(line);
|
mText.push_back(line);
|
||||||
|
|||||||
@@ -55,6 +55,8 @@
|
|||||||
#include "lloverlaybar.h" // for gOverlayBar
|
#include "lloverlaybar.h" // for gOverlayBar
|
||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// [RLVa:KB] - Version: 1.23.4
|
// [RLVa:KB] - Version: 1.23.4
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
@@ -579,7 +581,10 @@ void LLNotifyBox::format(std::string& msg, const LLStringUtil::format_map_t& arg
|
|||||||
{
|
{
|
||||||
// XUI:translate!
|
// XUI:translate!
|
||||||
LLStringUtil::format_map_t targs = args;
|
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";
|
targs["[VIEWER_NAME]"] = "Singularity Viewer";
|
||||||
LLStringUtil::format(msg, targs);
|
LLStringUtil::format(msg, targs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,8 @@
|
|||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// Static functions
|
// Static functions
|
||||||
//
|
//
|
||||||
@@ -88,6 +90,8 @@ LLPanelAudioPrefs::~LLPanelAudioPrefs()
|
|||||||
BOOL LLPanelAudioPrefs::postBuild()
|
BOOL LLPanelAudioPrefs::postBuild()
|
||||||
{
|
{
|
||||||
refreshValues(); // initialize member data from saved settings
|
refreshValues(); // initialize member data from saved settings
|
||||||
|
childSetLabelArg("currency_change_threshold", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,8 @@
|
|||||||
#include "llviewerwindow.h" // for window width, height
|
#include "llviewerwindow.h" // for window width, height
|
||||||
#include "llappviewer.h" // abortQuit()
|
#include "llappviewer.h" // abortQuit()
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// [RLVa:KB]
|
// [RLVa:KB]
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
@@ -682,6 +684,7 @@ void LLPanelClassified::processClassifiedInfoReply(LLMessageSystem *msg, void **
|
|||||||
timeStructToFormattedString(now, gSavedSettings.getString("ShortDateFormat"), datestr);
|
timeStructToFormattedString(now, gSavedSettings.getString("ShortDateFormat"), datestr);
|
||||||
LLStringUtil::format_map_t string_args;
|
LLStringUtil::format_map_t string_args;
|
||||||
string_args["[DATE]"] = datestr;
|
string_args["[DATE]"] = datestr;
|
||||||
|
string_args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
string_args["[AMT]"] = llformat("%d", price_for_listing);
|
string_args["[AMT]"] = llformat("%d", price_for_listing);
|
||||||
self->childSetText("classified_info_text", self->getString("ad_placed_paid", string_args));
|
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;
|
LLSD args;
|
||||||
std::string price_text = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
|
std::string price_text = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
|
||||||
args["MIN_PRICE"] = price_text;
|
args["MIN_PRICE"] = price_text;
|
||||||
|
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
LLNotifications::instance().add("MinClassifiedPrice", args);
|
LLNotifications::instance().add("MinClassifiedPrice", args);
|
||||||
return;
|
return;
|
||||||
@@ -889,6 +893,7 @@ void LLPanelClassified::callbackGotPriceForListing(S32 option, std::string text,
|
|||||||
|
|
||||||
LLSD args;
|
LLSD args;
|
||||||
args["AMOUNT"] = llformat("%d", price_for_listing);
|
args["AMOUNT"] = llformat("%d", price_for_listing);
|
||||||
|
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
LLNotifications::instance().add("PublishClassified", args, LLSD(),
|
LLNotifications::instance().add("PublishClassified", args, LLSD(),
|
||||||
boost::bind(&LLPanelClassified::confirmPublish, self, _1, _2));
|
boost::bind(&LLPanelClassified::confirmPublish, self, _1, _2));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,6 +63,8 @@
|
|||||||
#include "llfloaterdirectory.h"
|
#include "llfloaterdirectory.h"
|
||||||
#include "llpaneldirbrowser.h"
|
#include "llpaneldirbrowser.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
#if LL_MSVC
|
#if LL_MSVC
|
||||||
// disable boost::lexical_cast warning
|
// disable boost::lexical_cast warning
|
||||||
#pragma warning (disable:4702)
|
#pragma warning (disable:4702)
|
||||||
@@ -220,8 +222,20 @@ void LLPanelDirFindAll::search(const std::string& search_text)
|
|||||||
|
|
||||||
if (!search_text.empty())
|
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 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)
|
if (mWebBrowser)
|
||||||
{
|
{
|
||||||
mWebBrowser->navigateTo(url);
|
mWebBrowser->navigateTo(url);
|
||||||
@@ -243,20 +257,48 @@ void LLPanelDirFind::focus()
|
|||||||
|
|
||||||
void LLPanelDirFind::navigateToDefaultPage()
|
void LLPanelDirFind::navigateToDefaultPage()
|
||||||
{
|
{
|
||||||
std::string start_url = getString("default_search_page");
|
std::string start_url = "";
|
||||||
BOOL inc_pg = childGetValue("incpg").asBoolean();
|
// Note: we use the web panel in OpenSim as well as Second Life -- MC
|
||||||
BOOL inc_mature = childGetValue("incmature").asBoolean();
|
if (gHippoGridManager->getConnectedGrid()->getSearchUrl().empty() &&
|
||||||
BOOL inc_adult = childGetValue("incadult").asBoolean();
|
!gHippoGridManager->getConnectedGrid()->isSecondLife())
|
||||||
if (!(inc_pg || inc_mature || inc_adult))
|
|
||||||
{
|
{
|
||||||
// if nothing's checked, just go for pg; we don't notify in
|
// OS-based but doesn't have its own web search url -- MC
|
||||||
// this case because it's a default page.
|
start_url = gSavedSettings.getString("SearchURLDefaultOpenSim");
|
||||||
inc_pg = true;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
start_url += getSearchURLSuffix(inc_pg, inc_mature, inc_adult);
|
{
|
||||||
|
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)
|
if (mWebBrowser)
|
||||||
{
|
{
|
||||||
@@ -265,10 +307,14 @@ void LLPanelDirFind::navigateToDefaultPage()
|
|||||||
}
|
}
|
||||||
// static
|
// static
|
||||||
std::string LLPanelDirFind::buildSearchURL(const std::string& search_text, const std::string& collection,
|
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");
|
std::string url;
|
||||||
if (!search_text.empty())
|
if (search_text.empty())
|
||||||
|
{
|
||||||
|
url = gHippoGridManager->getConnectedGrid()->getSearchUrl(HippoGridInfo::SEARCH_ALL_EMPTY, is_web);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
// Replace spaces with "+" for use by Google search appliance
|
// Replace spaces with "+" for use by Google search appliance
|
||||||
// Yes, this actually works for double-spaces
|
// 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);
|
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 substring = "[QUERY]";
|
||||||
std::string::size_type where = url.find(substring);
|
std::string::size_type where = url.find(substring);
|
||||||
if (where != std::string::npos)
|
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);
|
url += getSearchURLSuffix(inc_pg, inc_mature, inc_adult, is_web);
|
||||||
llinfos << "search url " << url << llendl;
|
llinfos << "web search url " << url << llendl;
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
// static
|
// 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
|
if (!url.empty())
|
||||||
// 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();
|
// 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;
|
return url;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,8 +61,8 @@ public:
|
|||||||
virtual void navigateToDefaultPage();
|
virtual void navigateToDefaultPage();
|
||||||
void focus();
|
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 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);
|
static std::string getSearchURLSuffix(bool inc_pg, bool inc_mature, bool inc_adult, bool is_web);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void onClickBack( void* data );
|
static void onClickBack( void* data );
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ void LLPanelDirGroups::search(const std::string& search_text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string selected_collection = "Groups";
|
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)
|
if (mWebBrowser)
|
||||||
{
|
{
|
||||||
mWebBrowser->navigateTo(url);
|
mWebBrowser->navigateTo(url);
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
#include "llviewermessage.h"
|
#include "llviewermessage.h"
|
||||||
#include "llnotify.h"
|
#include "llnotify.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Constants
|
// Constants
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -99,6 +102,10 @@ BOOL LLPanelDirLand::postBuild()
|
|||||||
childSetAction("Search", onClickSearchCore, this);
|
childSetAction("Search", onClickSearchCore, this);
|
||||||
setDefaultBtn("Search");
|
setDefaultBtn("Search");
|
||||||
|
|
||||||
|
childSetTextArg("land", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
childSetTextArg("pricecheck_symbol", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
childSetLabelArg("pricecheck", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
mCurrentSortColumn = "per_meter";
|
mCurrentSortColumn = "per_meter";
|
||||||
|
|
||||||
LLScrollListCtrl* results = getChild<LLScrollListCtrl>("results");
|
LLScrollListCtrl* results = getChild<LLScrollListCtrl>("results");
|
||||||
@@ -106,6 +113,16 @@ BOOL LLPanelDirLand::postBuild()
|
|||||||
{
|
{
|
||||||
results->setSortChangedCallback(onClickSort);
|
results->setSortChangedCallback(onClickSort);
|
||||||
results->sortByColumn(mCurrentSortColumn,mCurrentSortAscending);
|
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;
|
return TRUE;
|
||||||
|
|||||||
@@ -57,6 +57,8 @@
|
|||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// consts
|
// consts
|
||||||
const S32 MATURE_CONTENT = 1;
|
const S32 MATURE_CONTENT = 1;
|
||||||
const S32 NON_MATURE_CONTENT = 2;
|
const S32 NON_MATURE_CONTENT = 2;
|
||||||
@@ -187,6 +189,7 @@ BOOL LLPanelGroupGeneral::postBuild()
|
|||||||
mCtrlEnrollmentFee = getChild<LLCheckBoxCtrl>("check_enrollment_fee", recurse);
|
mCtrlEnrollmentFee = getChild<LLCheckBoxCtrl>("check_enrollment_fee", recurse);
|
||||||
if (mCtrlEnrollmentFee)
|
if (mCtrlEnrollmentFee)
|
||||||
{
|
{
|
||||||
|
mCtrlEnrollmentFee->setLabelArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
mCtrlEnrollmentFee->setCommitCallback(onCommitEnrollment);
|
mCtrlEnrollmentFee->setCommitCallback(onCommitEnrollment);
|
||||||
mCtrlEnrollmentFee->setCallbackUserData(this);
|
mCtrlEnrollmentFee->setCallbackUserData(this);
|
||||||
}
|
}
|
||||||
@@ -237,6 +240,8 @@ BOOL LLPanelGroupGeneral::postBuild()
|
|||||||
mComboActiveTitle->resetDirty();
|
mComboActiveTitle->resetDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LLStringUtil::format_map_t args;
|
||||||
|
args["[GROUPCREATEFEE]"] = gHippoGridManager->getConnectedGrid()->getGroupCreationFee();
|
||||||
mIncompleteMemberDataStr = getString("incomplete_member_data_str");
|
mIncompleteMemberDataStr = getString("incomplete_member_data_str");
|
||||||
mConfirmGroupCreateStr = getString("confirm_group_create_str");
|
mConfirmGroupCreateStr = getString("confirm_group_create_str");
|
||||||
|
|
||||||
@@ -257,9 +262,6 @@ BOOL LLPanelGroupGeneral::postBuild()
|
|||||||
mGroupName->setVisible(FALSE);
|
mGroupName->setVisible(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return LLPanelGroupTab::postBuild();
|
return LLPanelGroupTab::postBuild();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,6 +358,7 @@ void LLPanelGroupGeneral::onClickJoin(void *userdata)
|
|||||||
S32 cost = gdatap->mMembershipFee;
|
S32 cost = gdatap->mMembershipFee;
|
||||||
LLSD args;
|
LLSD args;
|
||||||
args["COST"] = llformat("%d", cost);
|
args["COST"] = llformat("%d", cost);
|
||||||
|
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
LLSD payload;
|
LLSD payload;
|
||||||
payload["group_id"] = self->mGroupID;
|
payload["group_id"] = self->mGroupID;
|
||||||
|
|
||||||
@@ -735,7 +738,9 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||||||
|
|
||||||
if ( visible )
|
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->setLabelSelected(fee_buff);
|
||||||
mBtnJoinGroup->setLabelUnselected(fee_buff);
|
mBtnJoinGroup->setLabelUnselected(fee_buff);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,8 @@
|
|||||||
#include "llfloaterworldmap.h"
|
#include "llfloaterworldmap.h"
|
||||||
#include "llviewermessage.h"
|
#include "llviewermessage.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class LLGroupMoneyTabEventHandler
|
class LLGroupMoneyTabEventHandler
|
||||||
@@ -527,6 +529,9 @@ void LLPanelGroupLandMoney::activate()
|
|||||||
tabp->selectFirstTab();
|
tabp->selectFirstTab();
|
||||||
mImplementationp->mBeenActivated = true;
|
mImplementationp->mBeenActivated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setLabelArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
childSetTextArg("group_money_heading", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
|
|
||||||
//fill in the max contribution
|
//fill in the max contribution
|
||||||
|
|
||||||
@@ -779,7 +784,9 @@ void LLPanelGroupLandMoney::processPlacesReply(LLMessageSystem* msg, void**)
|
|||||||
LLPanelGroupLandMoney* selfp = sGroupIDs.getIfThere(group_id);
|
LLPanelGroupLandMoney* selfp = sGroupIDs.getIfThere(group_id);
|
||||||
if(!selfp)
|
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;
|
<< llendl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1116,7 +1123,9 @@ void LLPanelGroupLandMoney::processGroupAccountDetailsReply(LLMessageSystem* msg
|
|||||||
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
|
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
|
||||||
if (gAgent.getID() != 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1287,7 +1296,9 @@ void LLPanelGroupLandMoney::processGroupAccountTransactionsReply(LLMessageSystem
|
|||||||
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
|
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
|
||||||
if (gAgent.getID() != 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1428,7 +1439,9 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
|
|||||||
text.append("The next stipend day is ");
|
text.append("The next stipend day is ");
|
||||||
text.append(next_stipend_date);
|
text.append(next_stipend_date);
|
||||||
text.append("\n\n");
|
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');
|
text.append(1, '\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1458,7 +1471,9 @@ void LLPanelGroupLandMoney::processGroupAccountSummaryReply(LLMessageSystem* msg
|
|||||||
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
|
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
|
||||||
if (gAgent.getID() != 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1470,7 +1485,9 @@ void LLPanelGroupLandMoney::processGroupAccountSummaryReply(LLMessageSystem* msg
|
|||||||
self = LLGroupMoneyTabEventHandler::sInstanceIDs.getIfThere(request_id);
|
self = LLGroupMoneyTabEventHandler::sInstanceIDs.getIfThere(request_id);
|
||||||
if (!self)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,6 +85,8 @@
|
|||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
///----------------------------------------------------------------------------
|
///----------------------------------------------------------------------------
|
||||||
/// Local function declarations, constants, enums, and typedefs
|
/// Local function declarations, constants, enums, and typedefs
|
||||||
///----------------------------------------------------------------------------
|
///----------------------------------------------------------------------------
|
||||||
@@ -237,6 +239,7 @@ void LLTaskInvFVBridge::buyItem()
|
|||||||
{
|
{
|
||||||
LLSD args;
|
LLSD args;
|
||||||
args["PRICE"] = llformat("%d",sale_info.getSalePrice());
|
args["PRICE"] = llformat("%d",sale_info.getSalePrice());
|
||||||
|
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
args["OWNER"] = owner_name;
|
args["OWNER"] = owner_name;
|
||||||
if (sale_info.getSaleType() != LLSaleInfo::FS_CONTENTS)
|
if (sale_info.getSaleType() != LLSaleInfo::FS_CONTENTS)
|
||||||
{
|
{
|
||||||
@@ -730,7 +733,7 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::ostringstream info;
|
std::ostringstream info;
|
||||||
info << "Buy for L$" << price;
|
info << "Buy for " << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() << price;
|
||||||
label.assign(info.str());
|
label.assign(info.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1120,7 +1123,7 @@ void LLTaskSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::ostringstream info;
|
std::ostringstream info;
|
||||||
info << "Buy for L$" << price;
|
info << "Buy for " << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() << price;
|
||||||
label.assign(info.str());
|
label.assign(info.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,8 @@
|
|||||||
|
|
||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// [RLVa:KB]
|
// [RLVa:KB]
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
@@ -217,6 +219,7 @@ void LLPanelLandInfo::refresh()
|
|||||||
&dwell);
|
&dwell);
|
||||||
if(is_public || (is_for_sale && LLViewerParcelMgr::getInstance()->getParcelSelection()->getWholeParcelSelected()))
|
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","[PRICE]", llformat("%d",claim_price));
|
||||||
childSetTextArg("label_area_price","[AREA]", llformat("%d",area));
|
childSetTextArg("label_area_price","[AREA]", llformat("%d",area));
|
||||||
childSetVisible("label_area_price",true);
|
childSetVisible("label_area_price",true);
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
#include "roles_constants.h"
|
#include "roles_constants.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -145,6 +145,10 @@ LLPanelPermissions::~LLPanelPermissions()
|
|||||||
|
|
||||||
void LLPanelPermissions::refresh()
|
void LLPanelPermissions::refresh()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
LLStringUtil::format_map_t argsCurrency;
|
||||||
|
argsCurrency["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
LLButton* BtnDeedToGroup = getChild<LLButton>("button deed");
|
LLButton* BtnDeedToGroup = getChild<LLButton>("button deed");
|
||||||
if(BtnDeedToGroup)
|
if(BtnDeedToGroup)
|
||||||
{
|
{
|
||||||
@@ -246,7 +250,7 @@ void LLPanelPermissions::refresh()
|
|||||||
}
|
}
|
||||||
|
|
||||||
childSetEnabled("Cost",false);
|
childSetEnabled("Cost",false);
|
||||||
childSetText("Cost",getString("Cost Default"));
|
childSetText("Cost", getString("Cost Default", argsCurrency));
|
||||||
childSetText("Edit Cost",LLStringUtil::null);
|
childSetText("Edit Cost",LLStringUtil::null);
|
||||||
childSetEnabled("Edit Cost",false);
|
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 there are multiple items for sale then set text to PRICE PER UNIT.
|
||||||
if (num_for_sale > 1)
|
if (num_for_sale > 1)
|
||||||
{
|
{
|
||||||
childSetText("Cost",getString("Cost Per Unit"));
|
childSetText("Cost",getString("Cost Per Unit", argsCurrency));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
childSetText("Cost",getString("Cost Default"));
|
childSetText("Cost",getString("Cost Default", argsCurrency));
|
||||||
}
|
}
|
||||||
|
|
||||||
LLLineEditor *editPrice = getChild<LLLineEditor>("Edit Cost");
|
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 multiple items are for sale, set text to TOTAL PRICE.
|
||||||
if (num_for_sale > 1)
|
if (num_for_sale > 1)
|
||||||
childSetText("Cost",getString("Cost Total"));
|
childSetText("Cost", getString("Cost Total", argsCurrency));
|
||||||
else
|
else
|
||||||
childSetText("Cost",getString("Cost Default"));
|
childSetText("Cost", getString("Cost Default", argsCurrency));
|
||||||
}
|
}
|
||||||
// This is a public object.
|
// This is a public object.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
childSetEnabled("Cost",false);
|
childSetEnabled("Cost",false);
|
||||||
childSetText("Cost",getString("Cost Default"));
|
childSetText("Cost", getString("Cost Default", argsCurrency));
|
||||||
|
|
||||||
childSetText("Edit Cost",LLStringUtil::null);
|
childSetText("Edit Cost",LLStringUtil::null);
|
||||||
childSetEnabled("Edit Cost",false);
|
childSetEnabled("Edit Cost",false);
|
||||||
@@ -1091,6 +1095,9 @@ void LLPanelPermissions::setAllSaleInfo()
|
|||||||
{
|
{
|
||||||
llinfos << "LLPanelPermissions::setAllSaleInfo()" << llendl;
|
llinfos << "LLPanelPermissions::setAllSaleInfo()" << llendl;
|
||||||
LLSaleInfo::EForSale sale_type = LLSaleInfo::FS_NOT;
|
LLSaleInfo::EForSale sale_type = LLSaleInfo::FS_NOT;
|
||||||
|
|
||||||
|
LLStringUtil::format_map_t argsCurrency;
|
||||||
|
argsCurrency["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
LLCheckBoxCtrl *checkPurchase = getChild<LLCheckBoxCtrl>("checkbox for sale");
|
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.
|
// Don't extract the price if it's labeled as MIXED or is empty.
|
||||||
const std::string& editPriceString = editPrice->getText();
|
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())
|
!editPriceString.empty())
|
||||||
{
|
{
|
||||||
price = atoi(editPriceString.c_str());
|
price = atoi(editPriceString.c_str());
|
||||||
|
|||||||
@@ -58,6 +58,8 @@
|
|||||||
#include "llweb.h"
|
#include "llweb.h"
|
||||||
#include "llsdutil.h"
|
#include "llsdutil.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
//static
|
//static
|
||||||
std::list<LLPanelPlace*> LLPanelPlace::sAllPanels;
|
std::list<LLPanelPlace*> LLPanelPlace::sAllPanels;
|
||||||
|
|
||||||
@@ -311,6 +313,7 @@ void LLPanelPlace::processParcelInfoReply(LLMessageSystem *msg, void **)
|
|||||||
if (flags & DFQ_FOR_SALE)
|
if (flags & DFQ_FOR_SALE)
|
||||||
{
|
{
|
||||||
LLUIString forsale = self->getString("forsale_text");
|
LLUIString forsale = self->getString("forsale_text");
|
||||||
|
forsale.setArg("[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
|
||||||
forsale.setArg("[PRICE]", llformat("%d", sale_price));
|
forsale.setArg("[PRICE]", llformat("%d", sale_price));
|
||||||
info_text += forsale;
|
info_text += forsale;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,8 @@
|
|||||||
|
|
||||||
#include "lldirpicker.h"
|
#include "lldirpicker.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// [RLVa:KB]
|
// [RLVa:KB]
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
@@ -186,9 +188,16 @@ void LLPrefsIMImpl::apply()
|
|||||||
|
|
||||||
gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath"));
|
gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath"));
|
||||||
|
|
||||||
gDirUtilp->setPerAccountChatLogsDir(gSavedSettings.getString("FirstName"),
|
if (gHippoGridManager->getCurrentGrid()->isSecondLife())
|
||||||
gSavedSettings.getString("LastName") );
|
{
|
||||||
LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
|
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_im_via_email = childGetValue("send_im_to_email").asBoolean();
|
||||||
bool new_hide_online = childGetValue("online_visibility").asBoolean();
|
bool new_hide_online = childGetValue("online_visibility").asBoolean();
|
||||||
|
|||||||
@@ -1005,8 +1005,6 @@ bool idle_startup()
|
|||||||
gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath"));
|
gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath"));
|
||||||
}
|
}
|
||||||
|
|
||||||
gDirUtilp->setPerAccountChatLogsDir(firstname, lastname);
|
|
||||||
|
|
||||||
LLFile::mkdir(gDirUtilp->getChatLogsDir());
|
LLFile::mkdir(gDirUtilp->getChatLogsDir());
|
||||||
LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
|
LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,8 @@
|
|||||||
// system includes
|
// system includes
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// [RLVa:KB]
|
// [RLVa:KB]
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
@@ -178,6 +180,11 @@ mSquareMetersCommitted(0)
|
|||||||
childSetActionTextbox("ParcelNameText", onClickParcelInfo );
|
childSetActionTextbox("ParcelNameText", onClickParcelInfo );
|
||||||
childSetActionTextbox("BalanceText", onClickBalance );
|
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
|
// Adding Net Stat Graph
|
||||||
S32 x = getRect().getWidth() - 2;
|
S32 x = getRect().getWidth() - 2;
|
||||||
S32 y = 0;
|
S32 y = 0;
|
||||||
@@ -663,10 +670,8 @@ void LLStatusBar::creditBalance(S32 credit)
|
|||||||
|
|
||||||
void LLStatusBar::setBalance(S32 balance)
|
void LLStatusBar::setBalance(S32 balance)
|
||||||
{
|
{
|
||||||
std::string money_str = LLResMgr::getInstance()->getMonetaryString( balance );
|
mTextBalance->setText(gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str() +
|
||||||
std::string balance_str = "L$";
|
LLResMgr::getInstance()->getMonetaryString(balance));
|
||||||
balance_str += money_str;
|
|
||||||
mTextBalance->setText( balance_str );
|
|
||||||
|
|
||||||
if (mBalance && (fabs((F32)(mBalance - balance)) > gSavedSettings.getF32("UISndMoneyChangeThreshold")))
|
if (mBalance && (fabs((F32)(mBalance - balance)) > gSavedSettings.getF32("UISndMoneyChangeThreshold")))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -253,6 +253,8 @@
|
|||||||
#include "llfloaterdisplayname.h"
|
#include "llfloaterdisplayname.h"
|
||||||
#include "llavatarnamecache.h"
|
#include "llavatarnamecache.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
using namespace LLVOAvatarDefines;
|
using namespace LLVOAvatarDefines;
|
||||||
void init_client_menu(LLMenuGL* menu);
|
void init_client_menu(LLMenuGL* menu);
|
||||||
void init_server_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
|
// Assume L$10 for now, the server will tell us the real cost at login
|
||||||
const std::string upload_cost("10");
|
const std::string upload_cost("10");
|
||||||
gMenuHolder->childSetLabelArg("Upload Image", "[COST]", upload_cost);
|
std::string fee = gHippoGridManager->getConnectedGrid()->getCurrencySymbol() + "10";
|
||||||
gMenuHolder->childSetLabelArg("Upload Sound", "[COST]", upload_cost);
|
gMenuHolder->childSetLabelArg("Upload Image", "[UPLOADFEE]", fee);
|
||||||
gMenuHolder->childSetLabelArg("Upload Animation", "[COST]", upload_cost);
|
gMenuHolder->childSetLabelArg("Upload Sound", "[UPLOADFEE]", fee);
|
||||||
gMenuHolder->childSetLabelArg("Bulk Upload", "[COST]", upload_cost);
|
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);
|
gAFKMenu = gMenuBarView->getChild<LLMenuItemCallGL>("Set Away", TRUE);
|
||||||
gBusyMenu = gMenuBarView->getChild<LLMenuItemCallGL>("Set Busy", 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;
|
delete_context_data = FALSE;
|
||||||
LLSD args;
|
LLSD args;
|
||||||
args["COST"] = llformat("%d", fee);
|
args["COST"] = llformat("%d", fee);
|
||||||
|
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
// Set the fee for next time to 0, so that we don't keep
|
// Set the fee for next time to 0, so that we don't keep
|
||||||
// asking about a fee.
|
// asking about a fee.
|
||||||
LLSD next_payload = notification["payload"];
|
LLSD next_payload = notification["payload"];
|
||||||
@@ -5448,10 +5449,14 @@ void process_economy_data(LLMessageSystem *msg, void** /*user_data*/)
|
|||||||
LLFloaterImagePreview::setUploadAmount(upload_cost);
|
LLFloaterImagePreview::setUploadAmount(upload_cost);
|
||||||
LLFloaterAnimPreview::setUploadAmount(upload_cost);
|
LLFloaterAnimPreview::setUploadAmount(upload_cost);
|
||||||
|
|
||||||
gMenuHolder->childSetLabelArg("Upload Image", "[COST]", llformat("%d", upload_cost));
|
std::string fee = gHippoGridManager->getConnectedGrid()->getUploadFee();
|
||||||
gMenuHolder->childSetLabelArg("Upload Sound", "[COST]", llformat("%d", upload_cost));
|
gMenuHolder->childSetLabelArg("Upload Image", "[UPLOADFEE]", fee);
|
||||||
gMenuHolder->childSetLabelArg("Upload Animation", "[COST]", llformat("%d", upload_cost));
|
gMenuHolder->childSetLabelArg("Upload Sound", "[UPLOADFEE]", fee);
|
||||||
gMenuHolder->childSetLabelArg("Bulk Upload", "[COST]", llformat("%d", upload_cost));
|
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)
|
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(", ");
|
||||||
}
|
}
|
||||||
|
|
||||||
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])
|
if (questions & LSCRIPTRunTimePermissionBits[i])
|
||||||
{
|
{
|
||||||
|
LLStringUtil::format_map_t args;
|
||||||
|
args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
|
||||||
|
|
||||||
count++;
|
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
|
// check whether permission question should cause special caution dialog
|
||||||
caution |= (SCRIPT_QUESTION_IS_CAUTION[i]);
|
caution |= (SCRIPT_QUESTION_IS_CAUTION[i]);
|
||||||
|
|||||||
@@ -42,6 +42,8 @@
|
|||||||
#include "llviewerimage.h"
|
#include "llviewerimage.h"
|
||||||
#include "llviewerimagelist.h"
|
#include "llviewerimagelist.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
// Timers to temporise database requests
|
// Timers to temporise database requests
|
||||||
const F32 AGENTS_UPDATE_TIMER = 60.0; // Seconds between 2 agent requests for a region
|
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
|
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: // land for sale
|
||||||
case MAP_ITEM_LAND_FOR_SALE_ADULT: // adult 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);
|
new_item.setTooltip(tooltip);
|
||||||
if (type == MAP_ITEM_LAND_FOR_SALE)
|
if (type == MAP_ITEM_LAND_FOR_SALE)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -42,6 +42,8 @@
|
|||||||
|
|
||||||
#include "llappviewer.h"
|
#include "llappviewer.h"
|
||||||
|
|
||||||
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
LLXMLRPCValue LLXMLRPCValue::operator[](const char* id) const
|
LLXMLRPCValue LLXMLRPCValue::operator[](const char* id) const
|
||||||
{
|
{
|
||||||
return LLXMLRPCValue(XMLRPC_VectorGetValueWithID(mV, id));
|
return LLXMLRPCValue(XMLRPC_VectorGetValueWithID(mV, id));
|
||||||
@@ -422,13 +424,15 @@ void LLXMLRPCTransaction::Impl::setStatus(Status status,
|
|||||||
default:
|
default:
|
||||||
// Usually this means that there's a problem with the login server,
|
// Usually this means that there's a problem with the login server,
|
||||||
// not with the client. Direct user to status page.
|
// 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 =
|
mStatusMessage =
|
||||||
"Despite our best efforts, something unexpected has gone wrong. \n"
|
"Despite our best efforts, something unexpected has gone wrong. \n"
|
||||||
" \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.";
|
"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)
|
void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
|
||||||
{
|
{
|
||||||
std::string message;
|
std::string message;
|
||||||
std::string uri = "http://secondlife.com/community/support.php";
|
std::string uri = gHippoGridManager->getCurrentGrid()->getSupportUrl();
|
||||||
|
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case CURLE_COULDNT_RESOLVE_HOST:
|
case CURLE_COULDNT_RESOLVE_HOST:
|
||||||
message =
|
message =
|
||||||
"DNS could not resolve the host name.\n"
|
"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"
|
"web site. If you can, but continue to receive this error,\n"
|
||||||
"please go to the support section and report this problem.";
|
"please go to the support section and report this problem.";
|
||||||
break;
|
break;
|
||||||
@@ -452,7 +456,7 @@ void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
|
|||||||
message =
|
message =
|
||||||
"The login server couldn't verify itself via SSL.\n"
|
"The login server couldn't verify itself via SSL.\n"
|
||||||
"If you continue to receive this error, please go\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.";
|
"and report the problem.";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -464,7 +468,7 @@ void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
|
|||||||
"are set correctly.\n"
|
"are set correctly.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"If you continue to receive this error, please go\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.";
|
"and report the problem.";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,7 @@
|
|||||||
bottom="-220" drop_shadow_visible="true" enabled="true" follows="left|top"
|
bottom="-220" drop_shadow_visible="true" enabled="true" follows="left|top"
|
||||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="96"
|
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">
|
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>
|
||||||
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||||
bottom="-240" drop_shadow_visible="true" enabled="false" follows="left|top"
|
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" />
|
width="119" />
|
||||||
<check_box bottom="-140" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom="-140" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false"
|
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"
|
mouse_opaque="true" name="ShowDirectoryCheck" radio_style="false"
|
||||||
tool_tip="Let people see this parcel in search results" width="268" />
|
tool_tip="Let people see this parcel in search results" width="268" />
|
||||||
<string name="search_enabled_tooltip">
|
<string name="search_enabled_tooltip">
|
||||||
@@ -1484,7 +1484,7 @@ Select the thumbnail to choose a different texture.
|
|||||||
</combo_item>
|
</combo_item>
|
||||||
</combo_box>
|
</combo_box>
|
||||||
<spinner bottom_delta="-20" enabled="false" follows="left|top" height="16" increment="1"
|
<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" />
|
max_val="500" min_val="1" mouse_opaque="true" name="PriceSpin" width="180" />
|
||||||
<spinner bottom_delta="-20" enabled="false" follows="left|top" height="16"
|
<spinner bottom_delta="-20" enabled="false" follows="left|top" height="16"
|
||||||
increment="0.25" initial_val="1" label="Hours of access:" label_width="120"
|
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>
|
</text>
|
||||||
<button bottom="10" follows="bottom|right" height="20" label="Cancel" name="cancel_btn"
|
<button bottom="10" follows="bottom|right" height="20" label="Cancel" name="cancel_btn"
|
||||||
right="290" width="123" />
|
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" />
|
left_delta="-129" name="ok_btn" width="123" />
|
||||||
<string name="failed_to_initialize">
|
<string name="failed_to_initialize">
|
||||||
Failed to initialize motion
|
Failed to initialize motion
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
bottom_delta="-28" drop_shadow_visible="true" follows="left|right|bottom"
|
bottom_delta="-28" drop_shadow_visible="true" follows="left|right|bottom"
|
||||||
font="SansSerif" h_pad="0" halign="left" height="24" left="15"
|
font="SansSerif" h_pad="0" halign="left" height="24" left="15"
|
||||||
mouse_opaque="true" name="buy_text" v_pad="0" width="281">
|
mouse_opaque="true" name="buy_text" v_pad="0" width="281">
|
||||||
Buy for L$[AMOUNT] from [NAME]?
|
Buy for [CURRENCY][AMOUNT] from [NAME]?
|
||||||
</text>
|
</text>
|
||||||
<button bottom="-244" follows="right|bottom" font="SansSerif" halign="center"
|
<button bottom="-244" follows="right|bottom" font="SansSerif" halign="center"
|
||||||
height="20" label="Cancel" label_selected="Cancel" left="216"
|
height="20" label="Cancel" label_selected="Cancel" left="216"
|
||||||
|
|||||||
@@ -30,15 +30,15 @@
|
|||||||
</text>
|
</text>
|
||||||
<text bottom_delta="0" follows="top|left" height="16" left="72"
|
<text bottom_delta="0" follows="top|left" height="16" left="72"
|
||||||
name="buy_action_unknown" right="-20" >
|
name="buy_action_unknown" right="-20" >
|
||||||
Buy L$ on the LindeX currency exchange
|
Buy [CURRENCY] on the LindeX currency exchange
|
||||||
</text>
|
</text>
|
||||||
<text bottom_delta="0" follows="top|left" height="16" left="72" name="buy_action"
|
<text bottom_delta="0" follows="top|left" height="16" left="72" name="buy_action"
|
||||||
right="-20" >
|
right="-20" >
|
||||||
[NAME] L$ [PRICE]
|
[NAME] [CURRENCY] [PRICE]
|
||||||
</text>
|
</text>
|
||||||
<text bottom_delta="-20" follows="top|left" height="16" left="72"
|
<text bottom_delta="-20" follows="top|left" height="16" left="72"
|
||||||
name="currency_action" width="40">
|
name="currency_action" width="40">
|
||||||
Buy L$
|
Buy [CURRENCY]
|
||||||
</text>
|
</text>
|
||||||
<line_editor bottom_delta="0" follows="top|right" height="16" left_delta="45"
|
<line_editor bottom_delta="0" follows="top|right" height="16" left_delta="45"
|
||||||
name="currency_amt" width="80">
|
name="currency_amt" width="80">
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
</text>
|
</text>
|
||||||
<text bottom_delta="0" follows="top|left" halign="right" height="16" left="80"
|
<text bottom_delta="0" follows="top|left" halign="right" height="16" left="80"
|
||||||
name="balance_amount" width="240">
|
name="balance_amount" width="240">
|
||||||
L$ [AMT]
|
[CURRENCY] [AMT]
|
||||||
</text>
|
</text>
|
||||||
<text bottom_delta="-20" follows="top|left" height="16" left="80" name="buying_label"
|
<text bottom_delta="-20" follows="top|left" height="16" left="80" name="buying_label"
|
||||||
width="240">
|
width="240">
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
</text>
|
</text>
|
||||||
<text bottom_delta="0" follows="top|left" halign="right" height="16" left="80"
|
<text bottom_delta="0" follows="top|left" halign="right" height="16" left="80"
|
||||||
name="buying_amount" width="240">
|
name="buying_amount" width="240">
|
||||||
L$ [AMT]
|
[CURRENCY] [AMT]
|
||||||
</text>
|
</text>
|
||||||
<text bottom_delta="-20" follows="top|left" height="16" left="80" name="total_label"
|
<text bottom_delta="-20" follows="top|left" height="16" left="80" name="total_label"
|
||||||
width="240">
|
width="240">
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
</text>
|
</text>
|
||||||
<text bottom_delta="0" follows="top|left" halign="right" height="16" left="80"
|
<text bottom_delta="0" follows="top|left" halign="right" height="16" left="80"
|
||||||
name="total_amount" width="240">
|
name="total_amount" width="240">
|
||||||
L$ [AMT]
|
[CURRENCY] [AMT]
|
||||||
</text>
|
</text>
|
||||||
<text bottom_delta="-48" follows="top|left" height="32" left="72"
|
<text bottom_delta="-48" follows="top|left" height="32" left="72"
|
||||||
name="purchase_warning_repurchase" right="-20" >
|
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"
|
<button bottom_delta="0" follows="bottom|left" height="20" label="Purchase"
|
||||||
left_delta="-96" name="buy_btn" width="90" />
|
left_delta="-96" name="buy_btn" width="90" />
|
||||||
<string name="buy_currency">
|
<string name="buy_currency">
|
||||||
Buy L$ [LINDENS] for approx. US$ [USD]
|
Buy [CURRENCY] [LINDENS] for approx. US$ [USD]
|
||||||
</string>
|
</string>
|
||||||
</floater>
|
</floater>
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ This parcel is 512 sq.m. of land.
|
|||||||
</text>
|
</text>
|
||||||
<text bottom_delta="-25" follows="top|left" height="16" left="72"
|
<text bottom_delta="-25" follows="top|left" height="16" left="72"
|
||||||
name="currency_action" width="90">
|
name="currency_action" width="90">
|
||||||
Buy additional L$
|
Buy additional [CURRENCY]
|
||||||
</text>
|
</text>
|
||||||
<pad height="0" width="8" />
|
<pad height="0" width="8" />
|
||||||
<line_editor bottom_delta="5" follows="top|right" height="16" left="170" name="currency_amt"
|
<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.
|
You hold [BUYER] sq.m. of land.
|
||||||
</string>
|
</string>
|
||||||
<string name="pay_to_for_land">
|
<string name="pay_to_for_land">
|
||||||
Pay L$ [AMOUNT] to [SELLER] for this land
|
Pay [CURRENCY] [AMOUNT] to [SELLER] for this land
|
||||||
</string>
|
</string>
|
||||||
<string name="buy_for_US">
|
<string name="buy_for_US">
|
||||||
Buy L$ [AMOUNT] for approx. US$ [AMOUNT2],
|
Buy [CURRENCY] [AMOUNT] for approx. US$ [AMOUNT2],
|
||||||
</string>
|
</string>
|
||||||
<string name="parcel_meters">
|
<string name="parcel_meters">
|
||||||
This parcel is [AMOUNT] sq.m.
|
This parcel is [AMOUNT] sq.m.
|
||||||
@@ -283,29 +283,29 @@ supports [AMOUNT2] objects
|
|||||||
objects not included
|
objects not included
|
||||||
</string>
|
</string>
|
||||||
<string name="info_price_string">
|
<string name="info_price_string">
|
||||||
L$ [PRICE]
|
[CURRENCY] [PRICE]
|
||||||
(L$ [PRICE_PER_SQM]/sq.m.)
|
([CURRENCY] [PRICE_PER_SQM]/sq.m.)
|
||||||
[SOLD_WITH_OBJECTS]
|
[SOLD_WITH_OBJECTS]
|
||||||
</string>
|
</string>
|
||||||
<string name="insufficient_land_credits">
|
<string name="insufficient_land_credits">
|
||||||
The group [GROUP] will need sufficient contributed land use credits to cover this parcel before the purchase will complete.
|
The group [GROUP] will need sufficient contributed land use credits to cover this parcel before the purchase will complete.
|
||||||
</string>
|
</string>
|
||||||
<string name="have_enough_lindens">
|
<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>
|
||||||
<string name="not_enough_lindens">
|
<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>
|
||||||
<string name="balance_left">
|
<string name="balance_left">
|
||||||
After the purchase, you will have L$ [AMOUNT] left.
|
After the purchase, you will have [CURRENCY] [AMOUNT] left.
|
||||||
</string>
|
</string>
|
||||||
<string name="balance_needed">
|
<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>
|
||||||
<string name="no_parcel_selected">
|
<string name="no_parcel_selected">
|
||||||
(no parcel selected)
|
(no parcel selected)
|
||||||
</string>
|
</string>
|
||||||
<string name="buy_currency">
|
<string name="buy_currency">
|
||||||
Buy L$ [LINDENS] for approx. US$ [USD]
|
Buy [CURRENCY] [LINDENS] for approx. US$ [USD]
|
||||||
</string>
|
</string>
|
||||||
</floater>
|
</floater>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
bottom_delta="-28" drop_shadow_visible="true" follows="left|right|bottom"
|
bottom_delta="-28" drop_shadow_visible="true" follows="left|right|bottom"
|
||||||
font="SansSerif" h_pad="0" halign="left" height="24" left="15"
|
font="SansSerif" h_pad="0" halign="left" height="24" left="15"
|
||||||
mouse_opaque="true" name="buy_text" v_pad="0" width="281">
|
mouse_opaque="true" name="buy_text" v_pad="0" width="281">
|
||||||
Buy for L$[AMOUNT] from [NAME]?
|
Buy for [CURRENCY] [AMOUNT] from [NAME]?
|
||||||
</text>
|
</text>
|
||||||
<button bottom="-244" follows="right|bottom" font="SansSerif" halign="center"
|
<button bottom="-244" follows="right|bottom" font="SansSerif" halign="center"
|
||||||
height="20" label="Cancel" label_selected="Cancel" left="216"
|
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].
|
'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been denied permission to: [PERMISSIONS].
|
||||||
</string>
|
</string>
|
||||||
<string name="ScriptTakeMoney">
|
<string name="ScriptTakeMoney">
|
||||||
Take Linden dollars (L$) from you
|
Take in-world money ([CURRENCY]) from you
|
||||||
</string>
|
</string>
|
||||||
<string name="ActOnControlInputs">
|
<string name="ActOnControlInputs">
|
||||||
Act on your control inputs
|
Act on your control inputs
|
||||||
|
|||||||
@@ -348,7 +348,7 @@
|
|||||||
None Found.
|
None Found.
|
||||||
</string>
|
</string>
|
||||||
<string name="land_help_text">
|
<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.
|
To buy direct, visit the land and click on the place name in the title bar.
|
||||||
</string>
|
</string>
|
||||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
<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"
|
<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"
|
bottom="-24" font="SansSerifSmall" halign="left" height="16" left="116" mouse_opaque="true"
|
||||||
name="pricecheck_symbol" width="15">
|
name="pricecheck_symbol" width="15">
|
||||||
L$
|
[CURRENCY]
|
||||||
</text>
|
</text>
|
||||||
<check_box bottom_delta="-18" control_name="FindLandArea" follows="left|top"
|
<check_box bottom_delta="-18" control_name="FindLandArea" follows="left|top"
|
||||||
font="SansSerifSmall" height="16" initial_value="true"
|
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 label="" name="type" width="-1" />
|
||||||
<column dynamicwidth="true" label="Name" name="name" />
|
<column dynamicwidth="true" label="Name" name="name" />
|
||||||
<column label="Type" name="landtype" width="50" />
|
<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="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>
|
</scroll_list>
|
||||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||||
bottom_delta="-20" drop_shadow_visible="true" follows="left|bottom"
|
bottom_delta="-20" drop_shadow_visible="true" follows="left|bottom"
|
||||||
|
|||||||
@@ -133,7 +133,7 @@
|
|||||||
bottom="-146" drop_shadow_visible="true" follows="left|top"
|
bottom="-146" drop_shadow_visible="true" follows="left|top"
|
||||||
font="SansSerif" h_pad="0" halign="left" height="16" left_delta="-108"
|
font="SansSerif" h_pad="0" halign="left" height="16" left_delta="-108"
|
||||||
mouse_opaque="true" name="land cost text" v_pad="0" width="110">
|
mouse_opaque="true" name="land cost text" v_pad="0" width="110">
|
||||||
L$ per sq. meter:
|
[CURRENCY] per sq. meter:
|
||||||
</text>
|
</text>
|
||||||
<button bottom="-170" follows="top|right" font="SansSerifSmall" halign="center"
|
<button bottom="-170" follows="top|right" font="SansSerifSmall" halign="center"
|
||||||
height="20" label="Refresh" label_selected="Refresh" left="278"
|
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." />
|
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"
|
<button bottom="10" follows="bottom|right" height="20" label="Cancel" left="165"
|
||||||
name="cancel_btn" width="125" />
|
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" />
|
left="15" name="ok_btn" width="125" />
|
||||||
</floater>
|
</floater>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<scroll_list draw_border="true" height="280" left="10" multi_select="true"
|
<scroll_list draw_border="true" height="280" left="10" multi_select="true"
|
||||||
name="upload_list" top="-30" width="400" />
|
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="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" />
|
width="110" />
|
||||||
<text bottom="356" height="15" left="420" name="preview_label2">
|
<text bottom="356" height="15" left="420" name="preview_label2">
|
||||||
Image Preview:
|
Image Preview:
|
||||||
|
|||||||
@@ -161,7 +161,7 @@
|
|||||||
bottom="-315" drop_shadow_visible="true" follows="left|top"
|
bottom="-315" drop_shadow_visible="true" follows="left|top"
|
||||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="42"
|
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="42"
|
||||||
mouse_opaque="true" name="TextPrice" v_pad="0" width="56">
|
mouse_opaque="true" name="TextPrice" v_pad="0" width="56">
|
||||||
Price: L$
|
Price: [CURRENCY]
|
||||||
</text>
|
</text>
|
||||||
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-315"
|
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-315"
|
||||||
enabled="true" follows="left|top|right" font="SansSerifSmall" height="16"
|
enabled="true" follows="left|top|right" font="SansSerifSmall" height="16"
|
||||||
|
|||||||
@@ -14,6 +14,6 @@
|
|||||||
width="280" />
|
width="280" />
|
||||||
<button bottom="10" follows="bottom|right" height="20" label="Cancel" left="182"
|
<button bottom="10" follows="bottom|right" height="20" label="Cancel" left="182"
|
||||||
name="cancel_btn" width="64" />
|
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" />
|
name="ok_btn" width="110" />
|
||||||
</floater>
|
</floater>
|
||||||
|
|||||||
@@ -36,14 +36,14 @@
|
|||||||
</text_editor>
|
</text_editor>
|
||||||
<text bottom_delta="-37" follows="left|bottom" font="SansSerifSmall" left="12"
|
<text bottom_delta="-37" follows="left|bottom" font="SansSerifSmall" left="12"
|
||||||
name="fine_print">
|
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>
|
</text>
|
||||||
<button bottom_delta="-32" follows="right|bottom" height="20" label="Cancel"
|
<button bottom_delta="-32" follows="right|bottom" height="20" label="Cancel"
|
||||||
name="cancel_btn" right="-10" width="100" />
|
name="cancel_btn" right="-10" width="100" />
|
||||||
<button bottom_delta="0" follows="right|bottom" height="20" label="Send"
|
<button bottom_delta="0" follows="right|bottom" height="20" label="Send"
|
||||||
left_delta="-106" name="send_btn" width="100" />
|
left_delta="-106" name="send_btn" width="100" />
|
||||||
<string name="default_subject">
|
<string name="default_subject">
|
||||||
Postcard from Second Life.
|
Postcard from [GRID_NAME].
|
||||||
</string>
|
</string>
|
||||||
<string name="default_message">
|
<string name="default_message">
|
||||||
Check this out!
|
Check this out!
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ and appear higher in searches.
|
|||||||
</text>
|
</text>
|
||||||
<text bottom="50" follows="top|left" font="SansSerif" height="20" left="15"
|
<text bottom="50" follows="top|left" font="SansSerif" height="20" left="15"
|
||||||
name="price_text" width="120">
|
name="price_text" width="120">
|
||||||
Price for Ad (L$):
|
Price for Ad ([CURRENCY]):
|
||||||
</text>
|
</text>
|
||||||
<line_editor bottom_delta="2" follows="top|left" height="20" left="125" max_length="6"
|
<line_editor bottom_delta="2" follows="top|left" height="20" left="125" max_length="6"
|
||||||
name="price_edit" width="60" />
|
name="price_edit" width="60" />
|
||||||
|
|||||||
@@ -34,12 +34,12 @@
|
|||||||
Choose an appropriate price for this land.
|
Choose an appropriate price for this land.
|
||||||
</text>
|
</text>
|
||||||
<text height="16" left="72" name="price_ld" width="20">
|
<text height="16" left="72" name="price_ld" width="20">
|
||||||
L$
|
[CURRENCY]
|
||||||
</text>
|
</text>
|
||||||
<line_editor bottom_delta="0" follows="top|left" height="16" increment="1" initial_val="0"
|
<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" />
|
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">
|
<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>
|
</text>
|
||||||
<icon follows="top|left" height="64" image_name="badge_note.j2c" left="0"
|
<icon follows="top|left" height="64" image_name="badge_note.j2c" left="0"
|
||||||
name="step_sell_to" width="64" />
|
name="step_sell_to" width="64" />
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
Send via email
|
Send via email
|
||||||
</radio_item>
|
</radio_item>
|
||||||
<radio_item bottom="-38" height="16" name="texture">
|
<radio_item bottom="-38" height="16" name="texture">
|
||||||
Save to your inventory (L$[AMOUNT])
|
Save to your inventory ([UPLOADFEE])
|
||||||
</radio_item>
|
</radio_item>
|
||||||
<radio_item bottom="-57" height="16" name="local">
|
<radio_item bottom="-57" height="16" name="local">
|
||||||
Save to your hard drive
|
Save to your hard drive
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
name="new_snapshot_btn" width="195" />
|
name="new_snapshot_btn" width="195" />
|
||||||
<button bottom_delta="-22" follows="left|top" height="20" label="Send" left="10"
|
<button bottom_delta="-22" follows="left|top" height="20" label="Send" left="10"
|
||||||
name="send_btn" width="105" />
|
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" />
|
name="upload_btn" width="105" />
|
||||||
<flyout_button bottom_delta="0" follows="left|top" height="20" label="Save" left="10"
|
<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"
|
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"
|
height="20" label="Cancel" label_selected="Cancel" left="200"
|
||||||
mouse_opaque="true" name="cancel_btn" width="90" />
|
mouse_opaque="true" name="cancel_btn" width="90" />
|
||||||
<button bottom="-180" follows="left|bottom" font="SansSerif" halign="center"
|
<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" />
|
left_delta="-135" mouse_opaque="true" name="ok_btn" width="130" />
|
||||||
</floater>
|
</floater>
|
||||||
|
|||||||
@@ -443,7 +443,7 @@
|
|||||||
bottom_delta="0" drop_shadow_visible="true" follows="left|top"
|
bottom_delta="0" drop_shadow_visible="true" follows="left|top"
|
||||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="90"
|
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="90"
|
||||||
mouse_opaque="true" name="Cost" v_pad="0" width="78">
|
mouse_opaque="true" name="Cost" v_pad="0" width="78">
|
||||||
Price: L$
|
Price: [CURRENCY]
|
||||||
</text>
|
</text>
|
||||||
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="0"
|
<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"
|
follows="left|top|right" font="SansSerifSmall" height="16" left_delta="80"
|
||||||
@@ -567,13 +567,13 @@
|
|||||||
Must select entire object to set permissions.
|
Must select entire object to set permissions.
|
||||||
</string>
|
</string>
|
||||||
<string name="Cost Default">
|
<string name="Cost Default">
|
||||||
Price: L$
|
Price: [CURRENCY]
|
||||||
</string>
|
</string>
|
||||||
<string name="Cost Total">
|
<string name="Cost Total">
|
||||||
Total Price: L$
|
Total Price: [CURRENCY]
|
||||||
</string>
|
</string>
|
||||||
<string name="Cost Per Unit">
|
<string name="Cost Per Unit">
|
||||||
Price Per: L$
|
Price Per: [CURRENCY]
|
||||||
</string>
|
</string>
|
||||||
<string name="Cost Mixed">
|
<string name="Cost Mixed">
|
||||||
Mixed Price
|
Mixed Price
|
||||||
@@ -1335,7 +1335,7 @@
|
|||||||
bottom_delta="-24" drop_shadow_visible="true" follows="left|top"
|
bottom_delta="-24" drop_shadow_visible="true" follows="left|top"
|
||||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="48"
|
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="48"
|
||||||
mouse_opaque="true" name="label_area_price" v_pad="0" width="150">
|
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>
|
||||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||||
bottom_delta="0" drop_shadow_visible="true" follows="left|top"
|
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"
|
<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"
|
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"/>
|
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" />
|
left="325" name="upload_button" width="120" />
|
||||||
<button bottom_delta="0" follows="bottom|left" height="22" label="Temp Upload"
|
<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."
|
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"
|
<menu bottom="273" create_jump_keys="true" drop_shadow="true" enabled="true"
|
||||||
height="263" label="File" left="0" mouse_opaque="false" name="File"
|
height="263" label="File" left="0" mouse_opaque="false" name="File"
|
||||||
opaque="true" tear_off="true" width="243">
|
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" >
|
mouse_opaque="true" name="Upload Image" shortcut="control|U" >
|
||||||
<on_click function="File.UploadImage" userdata="" />
|
<on_click function="File.UploadImage" userdata="" />
|
||||||
<on_enable function="File.EnableUpload" />
|
<on_enable function="File.EnableUpload" />
|
||||||
</menu_item_call>
|
</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" >
|
mouse_opaque="true" enabled="true" >
|
||||||
<on_click function="File.UploadSound" userdata="" />
|
<on_click function="File.UploadSound" userdata="" />
|
||||||
<on_enable function="File.EnableUpload" />
|
<on_enable function="File.EnableUpload" />
|
||||||
</menu_item_call>
|
</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" >
|
mouse_opaque="true" enabled="true" >
|
||||||
<on_click function="File.UploadAnim" userdata="" />
|
<on_click function="File.UploadAnim" userdata="" />
|
||||||
<on_enable function="File.EnableUpload" />
|
<on_enable function="File.EnableUpload" />
|
||||||
</menu_item_call>
|
</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" >
|
mouse_opaque="true" enabled="true" >
|
||||||
<on_click function="File.UploadBulk" userdata="" />
|
<on_click function="File.UploadBulk" userdata="" />
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
@@ -610,7 +610,7 @@
|
|||||||
<on_click function="PromptShowURL" name="ManageMyAccount_url"
|
<on_click function="PromptShowURL" name="ManageMyAccount_url"
|
||||||
userdata="WebLaunchJoinNow,http://secondlife.com/account/" />
|
userdata="WebLaunchJoinNow,http://secondlife.com/account/" />
|
||||||
</menu_item_call>
|
</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">
|
mouse_opaque="true" name="Buy and Sell L$..." width="166">
|
||||||
<on_click function="ShowFloater" userdata="buy currency" />
|
<on_click function="ShowFloater" userdata="buy currency" />
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
|
|||||||
@@ -496,7 +496,7 @@ Other residents can visit the URL you set when they look at your profile.
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="JoinGroupCanAfford"
|
name="JoinGroupCanAfford"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
Joining this group costs L$[COST].
|
Joining this group costs [CURRENCY][COST].
|
||||||
Do you wish to proceed?
|
Do you wish to proceed?
|
||||||
<usetemplate
|
<usetemplate
|
||||||
name="okcancelbuttons"
|
name="okcancelbuttons"
|
||||||
@@ -508,15 +508,15 @@ Do you wish to proceed?
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="JoinGroupCannotAfford"
|
name="JoinGroupCannotAfford"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
Joining this group costs L$[COST].
|
Joining this group costs [CURRENCY][COST].
|
||||||
You do not have enough L$ to join this group.
|
You do not have enough [CURRENCY] to join this group.
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
<notification
|
<notification
|
||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="LandBuyPass"
|
name="LandBuyPass"
|
||||||
type="alertmodal">
|
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
|
<usetemplate
|
||||||
name="okcancelbuttons"
|
name="okcancelbuttons"
|
||||||
notext="Cancel"
|
notext="Cancel"
|
||||||
@@ -527,8 +527,8 @@ For L$[COST] you can enter this land ('[PARCEL_NAME]') for [TIME] hour
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="SalePriceRestriction"
|
name="SalePriceRestriction"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
Sale price must be set to more than L$0 if selling to anyone.
|
Sale price must be set to more than [CURRENCY]0 if selling to anyone.
|
||||||
Please select an individual to sell to if selling for L$0.
|
Please select an individual to sell to if selling for [CURRENCY]0.
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
<notification
|
<notification
|
||||||
@@ -537,7 +537,7 @@ Please select an individual to sell to if selling for L$0.
|
|||||||
priority="high"
|
priority="high"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
The selected [LAND_SIZE] m² land is being set for sale.
|
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
|
<usetemplate
|
||||||
name="okcancelbuttons"
|
name="okcancelbuttons"
|
||||||
notext="Cancel"
|
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.
|
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.
|
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
|
<usetemplate
|
||||||
name="okcancelbuttons"
|
name="okcancelbuttons"
|
||||||
notext="Cancel"
|
notext="Cancel"
|
||||||
@@ -1911,7 +1911,7 @@ Select an entire parcel, or divide your parcel first.
|
|||||||
name="ReleaseLandWarning"
|
name="ReleaseLandWarning"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
You are about to release [AREA] m² of land.
|
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?
|
Release this land?
|
||||||
<usetemplate
|
<usetemplate
|
||||||
@@ -2221,7 +2221,7 @@ You must specify a name for your classified.
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="MinClassifiedPrice"
|
name="MinClassifiedPrice"
|
||||||
type="alertmodal">
|
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.
|
Please enter a higher price.
|
||||||
</notification>
|
</notification>
|
||||||
@@ -2501,7 +2501,7 @@ Please choose the male or female avatar. You can change your mind later.
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="NotEnoughCurrency"
|
name="NotEnoughCurrency"
|
||||||
type="alertmodal">
|
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>
|
||||||
|
|
||||||
<notification
|
<notification
|
||||||
@@ -2776,7 +2776,7 @@ Download to your Applications folder?
|
|||||||
name="DeedObjectToGroup"
|
name="DeedObjectToGroup"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
Deeding this object will cause the group to:
|
Deeding this object will cause the group to:
|
||||||
* Receive L$ paid into the object
|
* Receive [CURRENCY] paid into the object
|
||||||
<usetemplate
|
<usetemplate
|
||||||
ignoretext="When deeding objects to groups"
|
ignoretext="When deeding objects to groups"
|
||||||
name="okcancelignore"
|
name="okcancelignore"
|
||||||
@@ -3207,7 +3207,7 @@ Proceed?
|
|||||||
type="alert">
|
type="alert">
|
||||||
You are about to change the access list for a Linden owned estate (mainland, teen grid, orientation, etc.).
|
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.
|
It will change thousands of regions and make the spaceserver hiccup.
|
||||||
<usetemplate
|
<usetemplate
|
||||||
name="okcancelbuttons"
|
name="okcancelbuttons"
|
||||||
@@ -3569,7 +3569,7 @@ Asset ID for notecard is missing from database.
|
|||||||
type="alert">
|
type="alert">
|
||||||
Remember: Classified ad fees are non-refundable.
|
Remember: Classified ad fees are non-refundable.
|
||||||
|
|
||||||
Publish this classified now for L$[AMOUNT]?
|
Publish this classified now for [CURRENCY][AMOUNT]?
|
||||||
<usetemplate
|
<usetemplate
|
||||||
name="okcancelbuttons"
|
name="okcancelbuttons"
|
||||||
notext="Cancel"
|
notext="Cancel"
|
||||||
@@ -4065,7 +4065,7 @@ Please select only one object and try again.
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="BuyOriginal"
|
name="BuyOriginal"
|
||||||
type="alertmodal">
|
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 become the owner of this object.
|
||||||
You will be able to:
|
You will be able to:
|
||||||
Modify: [MODIFYPERM]
|
Modify: [MODIFYPERM]
|
||||||
@@ -4081,7 +4081,7 @@ You will be able to:
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="BuyOriginalNoOwner"
|
name="BuyOriginalNoOwner"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
Buy original object for L$[PRICE]?
|
Buy original object for [CURRENCY][PRICE]?
|
||||||
You will become the owner of this object.
|
You will become the owner of this object.
|
||||||
You will be able to:
|
You will be able to:
|
||||||
Modify: [MODIFYPERM]
|
Modify: [MODIFYPERM]
|
||||||
@@ -4097,7 +4097,7 @@ You will be able to:
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="BuyCopy"
|
name="BuyCopy"
|
||||||
type="alertmodal">
|
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.
|
The object will be copied to your inventory.
|
||||||
You will be able to:
|
You will be able to:
|
||||||
Modify: [MODIFYPERM]
|
Modify: [MODIFYPERM]
|
||||||
@@ -4113,7 +4113,7 @@ You will be able to:
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="BuyCopyNoOwner"
|
name="BuyCopyNoOwner"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
Buy a copy for L$[PRICE]?
|
Buy a copy for [CURRENCY][PRICE]?
|
||||||
The object will be copied to your inventory.
|
The object will be copied to your inventory.
|
||||||
You will be able to:
|
You will be able to:
|
||||||
Modify: [MODIFYPERM]
|
Modify: [MODIFYPERM]
|
||||||
@@ -4129,7 +4129,7 @@ You will be able to:
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="BuyContents"
|
name="BuyContents"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
Buy contents from [OWNER] for L$[PRICE]?
|
Buy contents from [OWNER] for [CURRENCY][PRICE]?
|
||||||
They will be copied to your inventory.
|
They will be copied to your inventory.
|
||||||
<usetemplate
|
<usetemplate
|
||||||
name="okcancelbuttons"
|
name="okcancelbuttons"
|
||||||
@@ -4141,7 +4141,7 @@ They will be copied to your inventory.
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="BuyContentsNoOwner"
|
name="BuyContentsNoOwner"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
Buy contents for L$[PRICE]?
|
Buy contents for [CURRENCY][PRICE]?
|
||||||
They will be copied to your inventory.
|
They will be copied to your inventory.
|
||||||
<usetemplate
|
<usetemplate
|
||||||
name="okcancelbuttons"
|
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"
|
label="About Requests for the Debit Permission"
|
||||||
name="DebitPermissionDetails"
|
name="DebitPermissionDetails"
|
||||||
type="alertmodal">
|
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
|
<usetemplate
|
||||||
name="okbutton"
|
name="okbutton"
|
||||||
yestext="OK"/>
|
yestext="OK"/>
|
||||||
@@ -5236,12 +5236,12 @@ Uploading in-world and web site snapshots...
|
|||||||
(Takes about 5 minutes.)
|
(Takes about 5 minutes.)
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
<notification
|
<notification
|
||||||
icon="notify.tga"
|
icon="notify.tga"
|
||||||
name="UploadPayment"
|
name="UploadPayment"
|
||||||
type="notify">
|
type="notify">
|
||||||
You paid L$[AMOUNT] to upload.
|
You paid [CURRENCY][AMOUNT] to upload.
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
<notification
|
<notification
|
||||||
icon="notifytip.tga"
|
icon="notifytip.tga"
|
||||||
@@ -6285,8 +6285,8 @@ Grant this request?
|
|||||||
icon="notify.tga"
|
icon="notify.tga"
|
||||||
name="FirstBalanceIncrease"
|
name="FirstBalanceIncrease"
|
||||||
type="notify">
|
type="notify">
|
||||||
You just received L$[AMOUNT].
|
You just received [CURRENCY][AMOUNT].
|
||||||
Objects and other users may give you L$.
|
Objects and other users may give you [CURRENCY].
|
||||||
Your balance is shown in the upper-right corner of the screen.
|
Your balance is shown in the upper-right corner of the screen.
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
@@ -6294,7 +6294,7 @@ Your balance is shown in the upper-right corner of the screen.
|
|||||||
icon="notify.tga"
|
icon="notify.tga"
|
||||||
name="FirstBalanceDecrease"
|
name="FirstBalanceDecrease"
|
||||||
type="notify">
|
type="notify">
|
||||||
You just paid L$[AMOUNT].
|
You just paid [CURRENCY][AMOUNT].
|
||||||
Your balance is shown in the upper-right corner of the screen.
|
Your balance is shown in the upper-right corner of the screen.
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
height="20" label="Auto-renew each week" left="10" name="auto_renew_check"
|
height="20" label="Auto-renew each week" left="10" name="auto_renew_check"
|
||||||
width="120" />
|
width="120" />
|
||||||
<string name="ad_placed_paid">
|
<string name="ad_placed_paid">
|
||||||
Ad placed: [DATE], Paid L$[AMT] for listing.
|
Ad placed: [DATE], Paid [CURRENCY][AMT] for listing.
|
||||||
</string>
|
</string>
|
||||||
<string name="update_txt">
|
<string name="update_txt">
|
||||||
Update
|
Update
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
<button bottom="400" follows="left|top" height="20" label="Update" left="30"
|
<button bottom="400" follows="left|top" height="20" label="Update" left="30"
|
||||||
name="classified_update_btn" width="70" />
|
name="classified_update_btn" width="70" />
|
||||||
<string name="ad_placed_paid">
|
<string name="ad_placed_paid">
|
||||||
Ad placed: [DATE], Paid L$[AMT] for listing.
|
Ad placed: [DATE], Paid [CURRENCY][AMT] for listing.
|
||||||
</string>
|
</string>
|
||||||
<string name="update_txt">
|
<string name="update_txt">
|
||||||
Update
|
Update
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
tool_tip="Offer this friend a teleport to your current location" width="80" />
|
tool_tip="Offer this friend a teleport to your current location" width="80" />
|
||||||
<button bottom_delta="-25" follows="top|right" height="22" label="Pay..."
|
<button bottom_delta="-25" follows="top|right" height="22" label="Pay..."
|
||||||
left_delta="0" name="pay_btn"
|
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..."
|
<button bottom_delta="-25" follows="top|right" height="22" label="Remove..."
|
||||||
left_delta="0" name="remove_btn"
|
left_delta="0" name="remove_btn"
|
||||||
tool_tip="Remove this person from your friends list" width="80" />
|
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
|
Group Charter
|
||||||
</text_editor>
|
</text_editor>
|
||||||
<button bottom_delta="0" follows="left|top" font="SansSerif" halign="center"
|
<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" />
|
mouse_opaque="true" name="join_button" width="128" />
|
||||||
<button bottom_delta="0" follows="left|top" font="SansSerif" halign="center"
|
<button bottom_delta="0" follows="left|top" font="SansSerif" halign="center"
|
||||||
height="22" label="Detailed View" label_selected="Detailed View"
|
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."
|
tool_tip="Sets whether this group allows new members to join without being invited."
|
||||||
width="95" />
|
width="95" />
|
||||||
<check_box bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16"
|
<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"
|
max_length="5" mouse_opaque="true" name="check_enrollment_fee"
|
||||||
radio_style="false"
|
radio_style="false"
|
||||||
tool_tip="Sets whether to require an enrollment fee to join the group."
|
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
|
Retrieving member data
|
||||||
</string>
|
</string>
|
||||||
<string name="confirm_group_create_str">
|
<string name="confirm_group_create_str">
|
||||||
Creating this group will cost L$100.
|
Creating this group will cost [GROUPCREATEFEE].
|
||||||
Are you really, really, REALLY sure you want to spend L$100 to create this group?
|
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.
|
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>
|
</string>
|
||||||
</panel>
|
</panel>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
<?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"
|
left="1" mouse_opaque="true" name="land_money_tab" select="false"
|
||||||
width="418">
|
width="418">
|
||||||
<string name="help_text">
|
<string name="help_text">
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
bottom_delta="-25" drop_shadow_visible="true" follows="left|top"
|
bottom_delta="-25" drop_shadow_visible="true" follows="left|top"
|
||||||
font="SansSerifBig" h_pad="0" halign="left" height="16" left="12"
|
font="SansSerifBig" h_pad="0" halign="left" height="16" left="12"
|
||||||
mouse_opaque="true" name="group_money_heading" v_pad="0" width="150">
|
mouse_opaque="true" name="group_money_heading" v_pad="0" width="150">
|
||||||
Group L$
|
Group [CURRENCY]
|
||||||
</text>
|
</text>
|
||||||
<tab_container border="false" bottom_delta="-189" height="180" left="6" mouse_opaque="false"
|
<tab_container border="false" bottom_delta="-189" height="180" left="6" mouse_opaque="false"
|
||||||
name="group_money_tab_container" tab_position="top" width="406">
|
name="group_money_tab_container" tab_position="top" width="406">
|
||||||
|
|||||||
@@ -35,10 +35,10 @@
|
|||||||
Traffic: [TRAFFIC]
|
Traffic: [TRAFFIC]
|
||||||
</string>
|
</string>
|
||||||
<string name="area_text">
|
<string name="area_text">
|
||||||
Area: [AREA] m².
|
Area: [AREA] m².
|
||||||
</string>
|
</string>
|
||||||
<string name="forsale_text">
|
<string name="forsale_text">
|
||||||
For Sale for L$[PRICE]
|
For Sale for [CURRENCY][PRICE]
|
||||||
</string>
|
</string>
|
||||||
<string name="auction_text">
|
<string name="auction_text">
|
||||||
Auction ID [ID].
|
Auction ID [ID].
|
||||||
|
|||||||
@@ -40,10 +40,10 @@
|
|||||||
Traffic: [TRAFFIC]
|
Traffic: [TRAFFIC]
|
||||||
</string>
|
</string>
|
||||||
<string name="area_text">
|
<string name="area_text">
|
||||||
Area: [AREA] m².
|
Area: [AREA] m².
|
||||||
</string>
|
</string>
|
||||||
<string name="forsale_text">
|
<string name="forsale_text">
|
||||||
For Sale for L$[PRICE]
|
For Sale for [CURRENCY][PRICE]
|
||||||
</string>
|
</string>
|
||||||
<string name="auction_text">
|
<string name="auction_text">
|
||||||
Auction ID [ID].
|
Auction ID [ID].
|
||||||
|
|||||||
@@ -54,8 +54,8 @@
|
|||||||
show_text="true" width="250" />
|
show_text="true" width="250" />
|
||||||
<spinner bottom_delta="-20" control_name="UISndMoneyChangeThreshold" decimal_digits="0"
|
<spinner bottom_delta="-20" control_name="UISndMoneyChangeThreshold" decimal_digits="0"
|
||||||
enabled="true" follows="left|top" height="16" increment="10"
|
enabled="true" follows="left|top" height="16" increment="10"
|
||||||
initial_val="10" label="L$ Change Threshold" label_width="128" left="148"
|
initial_val="10" label="[CURRENCY] change threshold:" label_width="128" left="148"
|
||||||
max_val="10000" min_val="0" mouse_opaque="true" name="L$ Change Threshold"
|
max_val="10000" min_val="0" mouse_opaque="true" name="currency_change_threshold"
|
||||||
width="192" />
|
width="192" />
|
||||||
<spinner bottom_delta="-20" control_name="UISndHealthReductionThreshold"
|
<spinner bottom_delta="-20" control_name="UISndHealthReductionThreshold"
|
||||||
decimal_digits="0" enabled="true" follows="left|top" height="16"
|
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" />
|
min_val="30" mouse_opaque="true" name="afk_timeout_spinner" width="202" />
|
||||||
<check_box bottom="-265" enabled="true"
|
<check_box bottom="-265" enabled="true"
|
||||||
follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
|
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"
|
mouse_opaque="true" name="notify_money_change_checkbox" radio_style="false"
|
||||||
width="256" />
|
width="256" />
|
||||||
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||||
|
|||||||
@@ -20,12 +20,12 @@
|
|||||||
v_pad="2" width="76">
|
v_pad="2" width="76">
|
||||||
Loading...
|
Loading...
|
||||||
</text>
|
</text>
|
||||||
<button bottom="-17" enabled="true" follows="right|bottom" font="SansSerif"
|
<button bottom="-18" enabled="true" follows="right|bottom" font="SansSerifSmall"
|
||||||
halign="center" height="16"
|
halign="center" height="18"
|
||||||
image_selected="status_buy_currency_pressed.tga"
|
image_selected="button_enabled_selected_32x128.tga"
|
||||||
image_unselected="status_buy_currency.tga" label="" label_selected=""
|
image_unselected="button_enabled_32x128.tga" label="[CURRENCY]"
|
||||||
left="-210" mouse_opaque="true" name="buycurrency" scale_image="true"
|
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"
|
<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"
|
bottom="-20" disabled_color="TimeTextColor" drop_shadow_visible="true"
|
||||||
enabled="true" follows="right|bottom" font="SansSerifSmall" h_pad="0"
|
enabled="true" follows="right|bottom" font="SansSerifSmall" h_pad="0"
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
<string name="TooltipFlagTemporary">Temporary</string>
|
<string name="TooltipFlagTemporary">Temporary</string>
|
||||||
<string name="TooltipFlagRightClickMenu">(Right-click for menu)</string>
|
<string name="TooltipFlagRightClickMenu">(Right-click for menu)</string>
|
||||||
<string name="TooltipFreeToCopy">Free to copy</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="TooltipForSaleMsg">For Sale: [MESSAGE]</string> <!-- Message (RetrievingData) -->
|
||||||
<string name="TooltipFlagGroupBuild">Group Build</string>
|
<string name="TooltipFlagGroupBuild">Group Build</string>
|
||||||
<string name="TooltipFlagNoBuild">No 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>
|
||||||
<string name="LSLTipText_llGiveMoney">
|
<string name="LSLTipText_llGiveMoney">
|
||||||
llGiveMoney(key destination, integer amount)
|
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>
|
||||||
<string name="LSLTipText_llMakeExplosion">
|
<string name="LSLTipText_llMakeExplosion">
|
||||||
llMakeExplosion(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
|
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>
|
||||||
<string name="LSLTipText_llModPow">
|
<string name="LSLTipText_llModPow">
|
||||||
integer llModPow(integer a, integer b, integer c)
|
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).
|
b is capped at 0xFFFF (16 bits).
|
||||||
</string>
|
</string>
|
||||||
<string name="LSLTipText_llGetInventoryType">
|
<string name="LSLTipText_llGetInventoryType">
|
||||||
|
|||||||
Reference in New Issue
Block a user