Merge branch 'master' of git://github.com/siana/SingularityViewer.git

This commit is contained in:
Shyotl
2011-03-15 02:36:25 -05:00
18 changed files with 158 additions and 282 deletions

157
README
View File

@@ -17,160 +17,7 @@ those based upon OpenSim plattform. It is directly based upon source code of
Ascent Viewer by Balseraph Software Group, which is in turn based upon source
code released by Linden Lab, with contributions from various sources.
I, Siana Gearz (Second Life Resident) am the sole maintainer of Singularity
Viewer, and to the best of my knowledge and effort, Singularity is fully
compatible to Second Life/ Linden Lab Terms of Service and Third Party Viewer
Policy and shall stay that way.
As this Readme grows out of date, please refer to
Following features are the focus of my work to distinguish it from Ascent:
* Ongoing effort to improve stability and performance beyond that of Ascent, and
hopefully also beyond that of any other Second Life viewer. In particular,
base code was upgraded from Snowglobe 1.4 to 1.5, texture fetch and texture
decode reimplemented based on work from Imprudence Viewer project. Several
performance and stability related improvements were implemented from scratch
or backported from more recent Linden Lab codebases.
* For roleplaying: RLVa system 1.1.3 which supports in-world RLV compatible
wearables. Thanks to Kitty Barnett for contributed implementation!
* Display names - partial support ported from Phoenix Viewer. Not as complete
as in Phoenix so far, needs further porting, and after that is done, needs
even more work.
Following features are present in Singularity, distinguishing it from official
Linden Lab viewers. These particular features have already been present in
Ascent Viewer, unless noted otherwise.
General conveniences:
* Identification of other viewers, avatar idle time
* Double-click local teleport (partial support)
* Pressing Esc to reset camera won't force to stand up
* Phantom Avatar lets you avoid physical push when you're being harassed
* Avatar Radar
* Alpha Skins and Tattoo Layers
* Enhanced Friend and Groups panels
* Script counting to check yourself and those around you for your impact on the
simulator performance
* Sound and animation explorers
* Multiple attachments per attachment point. Incompatible with Emerald system,
but compatible to Viewer 2.1 and more recent. Nonetheless, Emerald-compatible
attachments on other avatars can be displayed too. [NEW] in Singularity:
the worn items are managed in Viewer 2.2 compatible manner
* Vertical IM tabs
* Quick settings for performance and windlight in lower right
* Command line from Emerald for common operations
* Area search
* Windlight editor
* Built in pose stand
Improvements for content creators:
* Free texture upload for testing textures and sculpties
* Preview animations on yourself upon upload
* Copy and Paste in build panel
* Embedded Animation Override editor
* Rez Objects As Land Group option
* Math expressions in build panel, from Imprudence
* Alignment tool, by Qarl Fizz
* Measure distance between any 2 prims
* UUID display for various things - full perm textures, prims, avatars
* Enhanced inspection floater
Roleplaying:
* Fake away status
* Mu style posing, auto close OOC brackets
* Bouncy Breast physics effect
* Emerald-style privacy controls
And possibly some or many that i forgot.
System requierements: Dualcore CPU with SSE2 support, NVidia or ATI/AMD graphics
chip, 2GB RAM, Windows XP or newer, Ubuntu Linux 10.4 or newer.
Other systems support pending.
Thanks go to following people:
* Linden Lab for publishing viewer source code
* All the various TPV developers and Snowglobe contributors for creating a
huge body of code to borrow from and compare against
* Hazim for developing Inertia on which Ascent is based. A really fine dude,
although his viewer is not TOS compliant
* Shyotl Kuhr who did many of the oprimizations incorportated in Ascent and
some new for Singularity
* Beeks and Charbi for Ascent. Ascent was started as a project to bring
Inertia to TOS compliance, and went on further to incorporate more features
* Robin Cornelius and Thickbrick Sleaford from Imprudence - have been a constant
help with general issues and tech
* Henri Beauchamp and Lance Corrimal for being a great source to borrow from
.oO(if Henri just wasn't such an unapproachable arse who doesn't respond
to IMs or contact me when he bugfixes my patches?)
* Kitty Barnett for contributing RLVa, Inventory Links and Current Outfit Folder
* Tonya Souther and Wolfspirit Magic from Phoenix
Time for some FAQ! The questions are anonymized.
Q: I heard your viewer is malicious! I hate you!
A: This was not a question. Also the person who came up with the rumor is
malicious, whoever they might be.
Q: You are only 6 months old, thus you can't code!
A: And you don't have a life.
Q: You are only 6 months old, thus you must be a griefer alt!
A: Still not a question. And no, i'm really a young angel kitty -.-
Q: You are only 6 months old, thus you cannot know what Residents need!
A: Even if i was 1000, i'd still only know either what i myself need, or
whatever needs any Residents have expressed to me. Go ahead, get in touch.
Q: But all TPVs are shady!
A: You are shady. Still, not a question.
Q: Why isn't your viewer listed on Linden TPVD?
A: Oh thanks, a first real question! Because i haven't applied for it.
If there is a demand by real userbase someday, TPVD application will be
considered. It shouldn't be a problem because i check all of the code which
i commit, and borrow basically only from well known viewers from TPVD.
And oh besides, that the viewer is on TPVD doesn't mean it's safe. It is not
an unreasonable guess that it is, but there is quite a bit outside anyone's
control, unless Lindens set up a build farm which builds TPVs automatically
from publically released source, you just can't know that it matches up.
Q: I like your viewer! How can i help? (QUESTION HYPOTHETICAL)
A: If you are able to, fork my viewer source on GitHub, work your magic there,
ping me on it, and i'll see whether i want your changes back in my viewer.
Or build my viewer from source and find bugs.
If you don't have necessary skills for that, your bug reports are somewhat
unlikely to be processed because of lack of time on my hands.
At the very least, precise reproduction steps are needed!
Oh, and position of localization manager might be open.
Also needed: someone to build from source on Mac OS X.
Contact information:
Chat: http://webchat.freenode.net/?channels=SingularityViewer
(or freenode #SingularityViewer)
e-Mail: siana.gearz@googlemail.com
inSL: Siana Gearz - ONLY WHEN VISIBLE ONLINE!!!
TO-DO LIST:
* Integrate, test, fix, test, test, fix and test OpenJPEG v2,
inline interleaved operations.
* Unified, high performance memory manager for all 3 plattforms. jemalloc wins on
memory use, google tcmalloc wins in every other regard, including use for
debugging, possibility of manual full collect on e.g. teleport, clean cross
platform integration. Either are better at what Windows and Linux offer.
* Bug: if window is resized during teleport, HUDs don't adjust to new window ratio.
* Bug: focusing from minimap is defunct.
* Bug: foot shadows show even if avatar below ground, and sink into prims.
* Fairer sculpty boosting
* Complete Display names, better login mask for new Residents
* Purge FMOD, force OpenAL on all plattforms, improve OpenAL denorm performance,
implement embedded ShoutCast player, OR just borrow VLC from Impru
* One-handed camera control and walking
* Stereoscopic rendering, mirror effects, better deferred mode
* More early culling
* Coalesced Drawables layer - puuuuuh -.-
http://www.singularityviewer.org/about

View File

@@ -35,8 +35,8 @@
const S32 LL_VERSION_MAJOR = 1;
const S32 LL_VERSION_MINOR = 5;
const S32 LL_VERSION_PATCH = 4;
const S32 LL_VERSION_BUILD = 2;
const S32 LL_VERSION_PATCH = 5;
const S32 LL_VERSION_BUILD = 0;
const char * const LL_CHANNEL = "Singularity";

View File

@@ -101,8 +101,8 @@ const U32 SEPARATOR_HEIGHT_PIXELS = 8;
const S32 TEAROFF_SEPARATOR_HEIGHT_PIXELS = 10;
const S32 MENU_ITEM_PADDING = 4;
const std::string BOOLEAN_TRUE_PREFIX( "X" );
const std::string BRANCH_SUFFIX( ">" );
const std::string BOOLEAN_TRUE_PREFIX( "\xe2\x9c\x93" ); // U+2714 -- MC
const std::string BRANCH_SUFFIX( "\xE2\x96\xB6" ); // U+25B6 BLACK RIGHT-POINTING TRIANGLE
const std::string ARROW_UP ("^^^^^^^");
const std::string ARROW_DOWN("vvvvvvv");

View File

@@ -6110,7 +6110,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>Ubuntu-R.ttf</string>
<string>DroidSans.ttf</string>
</map>
<key>FontSansSerifBundledFallback</key>
<map>
@@ -6132,7 +6132,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>Ubuntu-B.ttf</string>
<string>DroidSans-Bold.ttf</string>
</map>
<key>FontSansSerifFallback</key>
<map>
@@ -6154,7 +6154,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>0.95</real>
<real>1.00</real>
</map>
<key>FontScreenDPI</key>
<map>
@@ -6176,7 +6176,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>16.0</real>
<real>14.0</real>
</map>
<key>FontSizeLarge</key>
<map>
@@ -6187,7 +6187,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>11.5</real>
<real>11.0</real>
</map>
<key>FontSizeMedium</key>
<map>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -39,25 +39,24 @@
#include "lleventpoll.h"
#include "llagent.h"
//mk
#include "llappviewer.h"
#include "llfloaterteleporthistory.h"
#include "llfloaterworldmap.h"
#include "lltimer.h"
#include "lluictrlfactory.h"
#include "llurldispatcher.h"
#include "llurlsimstring.h"
#include "llviewercontrol.h" // gSavedSettings
#include "llviewercontrol.h"
#include "llviewerwindow.h"
#include "llweb.h"
#include "apr_time.h"
// globals
LLFloaterTeleportHistory* gFloaterTeleportHistory;
LLFloaterTeleportHistory::LLFloaterTeleportHistory()
: LLFloater(std::string("teleporthistory")),
mPlacesList(NULL),
id(0)
mID(0)
{
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_teleport_history.xml", NULL);
}
@@ -71,7 +70,7 @@ LLFloaterTeleportHistory::~LLFloaterTeleportHistory()
void LLFloaterTeleportHistory::onFocusReceived()
{
// take care to enable or disable buttons depending on the selection in the places list
if(mPlacesList->getFirstSelected())
if (mPlacesList->getFirstSelected())
{
setButtonsEnabled(TRUE);
}
@@ -86,7 +85,7 @@ BOOL LLFloaterTeleportHistory::postBuild()
{
// make sure the cached pointer to the scroll list is valid
mPlacesList=getChild<LLScrollListCtrl>("places_list");
if(!mPlacesList)
if (!mPlacesList)
{
llwarns << "coud not get pointer to places list" << llendl;
return FALSE;
@@ -102,7 +101,7 @@ BOOL LLFloaterTeleportHistory::postBuild()
return TRUE;
}
void LLFloaterTeleportHistory::addEntry(std::string regionName, S16 x, S16 y, S16 z)
void LLFloaterTeleportHistory::addPendingEntry(std::string regionName, S16 x, S16 y, S16 z)
{
#ifdef LL_RRINTERFACE_H //MK
if (gRRenabled && gAgent.mRRInterface.mContainsShowloc)
@@ -110,51 +109,79 @@ void LLFloaterTeleportHistory::addEntry(std::string regionName, S16 x, S16 y, S1
return;
}
#endif //mk
// only if the cached scroll list pointer is valid
if(mPlacesList)
// Set pending entry timestamp
U32 utc_time;
utc_time = time_corrected();
struct tm* internal_time;
internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);
// check if we are in daylight savings time
std::string timeZone = " PST";
if (gPacificDaylightTime)
{
// prepare display of position
std::string position=llformat("%d, %d, %d", x, y, z);
// prepare simstring for later parsing
std::string simString = regionName + llformat("/%d/%d/%d", x, y, z);
simString = LLWeb::escapeURL(simString);
timeZone = " PDT";
}
#ifdef LOCALIZED_TIME
timeStructToFormattedString(internal_time, gSavedSettings.getString("LongTimeFormat"), mPendingTimeString);
mPendingTimeString += timeZone;
#else
mPendingTimeString = llformat("%02d:%02d:%02d", internal_time->tm_hour, internal_time->tm_min, internal_time->tm_sec) + timeZone;
#endif
// check if we are in daylight savings time
std::string timeZone = "PST";
if(is_daylight_savings()) timeZone = "PDT";
// Set pending region name
mPendingRegionName = regionName;
// do all time related stuff as closely together as possible, because every other operation
// might change the internal tm* buffer
struct tm* internal_time;
internal_time = utc_to_pacific_time(time_corrected(), is_daylight_savings());
std::string timeString=llformat("%02d:%02d:%02d ", internal_time->tm_hour, internal_time->tm_min, internal_time->tm_sec)+timeZone;
// Set pending position
mPendingPosition = llformat("%d, %d, %d", x, y, z);
// prepare simstring for later parsing
mPendingSimString = regionName + llformat("/%d/%d/%d", x, y, z);
mPendingSimString = LLWeb::escapeURL(mPendingSimString);
// Prepare the SLURL
mPendingSLURL = LLURLDispatcher::buildSLURL(regionName, x, y, z);
}
void LLFloaterTeleportHistory::addEntry(std::string parcelName)
{
if (mPendingRegionName.empty())
{
return;
}
// only if the cached scroll list pointer is valid
if (mPlacesList)
{
// build the list entry
LLSD value;
value["id"] = id;
value["columns"][0]["column"] = "region";
value["columns"][0]["value"] = regionName;
value["columns"][1]["column"] = "position";
value["columns"][1]["value"] = position;
value["columns"][2]["column"] = "visited";
value["columns"][2]["value"] = timeString;
value["id"] = mID;
value["columns"][LIST_PARCEL]["column"] = "parcel";
value["columns"][LIST_PARCEL]["value"] = parcelName;
value["columns"][LIST_REGION]["column"] = "region";
value["columns"][LIST_REGION]["value"] = mPendingRegionName;
value["columns"][LIST_POSITION]["column"] = "position";
value["columns"][LIST_POSITION]["value"] = mPendingPosition;
value["columns"][LIST_VISITED]["column"] = "visited";
value["columns"][LIST_VISITED]["value"] = mPendingTimeString;
// these columns are hidden and serve as data storage for simstring and SLURL
value["columns"][3]["column"] = "slurl";
value["columns"][3]["value"] = LLURLDispatcher::buildSLURL(regionName, x, y, z);
value["columns"][4]["column"] = "simstring";
value["columns"][4]["value"] = simString;
value["columns"][LIST_SLURL]["column"] = "slurl";
value["columns"][LIST_SLURL]["value"] = mPendingSLURL;
value["columns"][LIST_SIMSTRING]["column"] = "simstring";
value["columns"][LIST_SIMSTRING]["value"] = mPendingSimString;
// add the new list entry on top of the list, deselect all and disable the buttons
mPlacesList->addElement(value, ADD_TOP);
mPlacesList->deselectAllItems(TRUE);
setButtonsEnabled(FALSE);
id++;
mID++;
}
else
{
llwarns << "pointer to places list is NULL" << llendl;
}
mPendingRegionName.clear();
}
void LLFloaterTeleportHistory::setButtonsEnabled(BOOL on)
@@ -185,7 +212,7 @@ void LLFloaterTeleportHistory::onPlacesSelected(LLUICtrl* /* ctrl */, void* data
LLFloaterTeleportHistory* self = (LLFloaterTeleportHistory*) data;
// on selection change check if we need to enable or disable buttons
if(self->mPlacesList->getFirstSelected())
if (self->mPlacesList->getFirstSelected())
{
self->setButtonsEnabled(TRUE);
}
@@ -201,7 +228,7 @@ void LLFloaterTeleportHistory::onTeleport(void* data)
LLFloaterTeleportHistory* self = (LLFloaterTeleportHistory*) data;
// build secondlife::/app link from simstring for instant teleport to destination
std::string slapp="secondlife:///app/teleport/" + self->mPlacesList->getFirstSelected()->getColumn(4)->getValue().asString();
std::string slapp = "secondlife:///app/teleport/" + self->mPlacesList->getFirstSelected()->getColumn(LIST_SIMSTRING)->getValue().asString();
LLMediaCtrl* web = NULL;
LLURLDispatcher::dispatch(slapp, web, TRUE);
}
@@ -212,7 +239,7 @@ void LLFloaterTeleportHistory::onShowOnMap(void* data)
LLFloaterTeleportHistory* self = (LLFloaterTeleportHistory*) data;
// get simstring from selected entry and parse it for its components
std::string simString = self->mPlacesList->getFirstSelected()->getColumn(4)->getValue().asString();
std::string simString = self->mPlacesList->getFirstSelected()->getColumn(LIST_SIMSTRING)->getValue().asString();
std::string region = "";
S32 x = 128;
S32 y = 128;
@@ -231,6 +258,6 @@ void LLFloaterTeleportHistory::onCopySLURL(void* data)
LLFloaterTeleportHistory* self = (LLFloaterTeleportHistory*) data;
// get SLURL of the selected entry and copy it to the clipboard
std::string SLURL=self->mPlacesList->getFirstSelected()->getColumn(3)->getValue().asString();
std::string SLURL = self->mPlacesList->getFirstSelected()->getColumn(LIST_SLURL)->getValue().asString();
gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(SLURL));
}

View File

@@ -45,39 +45,54 @@
class LLFloaterTeleportHistory : public LLFloater
{
public:
LLFloaterTeleportHistory();
virtual ~LLFloaterTeleportHistory();
public:
LLFloaterTeleportHistory();
virtual ~LLFloaterTeleportHistory();
/// @brief: reimplemented to check for selection changes in the places list scrolllist
virtual void onFocusReceived();
/// @brief: reimplemented to check for selection changes in the places list scrolllist
virtual void onFocusReceived();
/// @brief: reimplemented to make the menu toggle work
virtual void onClose(bool app_quitting);
/// @brief: reimplemented to make the menu toggle work
virtual void onClose(bool app_quitting);
/// @brief: reimplemented to prevent this floater from closing while the viewer is shutting down
virtual BOOL canClose();
/// @brief: reimplemented to prevent this floater from closing while the viewer is shutting down
virtual BOOL canClose();
BOOL postBuild();
BOOL postBuild();
/// @brief: adds a teleport destination to the list of visited places
void addEntry(std::string regionName, S16 x, S16 y, S16 z);
/// @brief: adds the pending teleport destination
void addPendingEntry(std::string regionName, S16 x, S16 y, S16 z);
/// @brief: adds the destination to the list of visited places
void addEntry(std::string parcelName);
protected:
static void onPlacesSelected(LLUICtrl* ctrl, void* data);
static void onTeleport(void* data);
static void onShowOnMap(void* data);
static void onCopySLURL(void* data);
private:
enum HISTORY_COLUMN_ORDER
{
LIST_PARCEL,
LIST_REGION,
LIST_POSITION,
LIST_VISITED,
LIST_SLURL,
LIST_SIMSTRING
};
/// @brief: enables or disables the "Teleport", "Show On Map" and "Copy To SLURL" buttons **/
void setButtonsEnabled(BOOL on);
static void onPlacesSelected(LLUICtrl* ctrl, void* data);
static void onTeleport(void* data);
static void onShowOnMap(void* data);
static void onCopySLURL(void* data);
LLScrollListCtrl* mPlacesList;
/// @brief: enables or disables the "Teleport", "Show On Map" and "Copy To SLURL" buttons **/
void setButtonsEnabled(BOOL on);
S32 id;
LLScrollListCtrl* mPlacesList;
/// @brief: to see if this was the first time setVisible() was called (at program startup)
BOOL firstRun;
S32 mID;
std::string mPendingRegionName;
std::string mPendingPosition;
std::string mPendingSimString;
std::string mPendingTimeString;
std::string mPendingSLURL;
};
// globals

View File

@@ -3748,7 +3748,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
}
// add teleport destination to the list of visited places
gFloaterTeleportHistory->addEntry(regionp->getName(),(S16)agent_pos.mV[0],(S16)agent_pos.mV[1],(S16)agent_pos.mV[2]);
gFloaterTeleportHistory->addPendingEntry(regionp->getName(), (S16)agent_pos.mV[VX], (S16)agent_pos.mV[VY], (S16)agent_pos.mV[VZ]);
}
else
{

View File

@@ -53,6 +53,7 @@
#include "llfloatergroups.h"
//#include "llfloaterhtml.h"
#include "llfloatersellland.h"
#include "llfloaterteleporthistory.h"
#include "llfloatertools.h"
#include "llnotify.h"
#include "llparcelselection.h"
@@ -1518,6 +1519,9 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
}
}
// Add any pending entry to the TP history now that we got the *new* parcel name.
gFloaterTeleportHistory->addEntry(LLViewerParcelMgr::getInstance()->getAgentParcelName());
// Handle updating selections, if necessary.
if (sequence_id == SELECTED_PARCEL_SEQ_ID)
{

View File

@@ -1949,6 +1949,7 @@ BOOL LLVOAvatar::buildSkeleton(const LLVOAvatarSkeletonInfo *info)
LLVector3 scale(1.f, aspect, 1.f);
mScreenp->setScale(scale);
mScreenp->setWorldPosition(LLVector3::zero);
mScreenp->mUpdateXform = TRUE;
}
return TRUE;

View File

@@ -1,46 +1,28 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="false"
min_width="470" min_height="250" width="470" height="250" name="teleporthistory"
rect_control="FloaterTeleportHistoryRect" title="Teleport History">
<tab_container label="TPlistTabs" bottom="40" height="185" left="5" mouse_opaque="false" name="tplisttabs"
tab_min_width="50" tab_position="top" width="460" bg_opaque_color="0,0,0,0.0">
<panel border="true" bottom="-185" follows="left|top|right|bottom" height="185"
label="Teleported into" left="2" mouse_opaque="true" name="TP-in" width="455">
<scroll_list background_visible="true" draw_border="true" draw_stripes="true"
draw_heading="true" follows="left|top|right|bottom" left="2" top="5" width="450"
height="175" bottom_delta="-177" multi_select="false" name="places_list_in">
<column dynamicwidth="true" label="Region" name="region" />
<column dynamicwidth="true" label="Position" name="position" />
<column dynamicwidth="true" label="Visited" name="visited" />
<!--Hidden fields, used as storage for prebuilt strings, please keep at width 0-->
<column width="0" label="SLURL" name="slurl" />
<column width="0" label="Sim String" name="simstring" />
</scroll_list>
</panel>
<panel border="true" bottom="-185" follows="left|top|right|bottom" height="185"
label="Teleported out of" left="2" mouse_opaque="true" name="TP-out" width="455">
<scroll_list background_visible="true" draw_border="true" draw_stripes="true"
draw_heading="true" follows="left|top|right|bottom" left="2" top="5" width="450"
height="175" bottom_delta="-177" multi_select="false" name="places_list_out">
<column dynamicwidth="true" label="Region" name="region" />
<column dynamicwidth="true" label="Position" name="position" />
<column dynamicwidth="true" label="Visited" name="visited" />
<!--Hidden fields, used as storage for prebuilt strings, please keep at width 0-->
<column width="0" label="SLURL" name="slurl" />
<column width="0" label="Sim String" name="simstring" />
</scroll_list>
</panel>
</tab_container>
<button
bottom_delta="-24" enabled="false" follows="left|bottom" font="SansSerif" halign="center"
width="90" height="20" label="Teleport" label_selected="Teleport"
left="10" mouse_opaque="true" name="teleport" tool_tip="Teleport to selected location" />
<button bottom_delta="0" enabled="false" follows="left|bottom" font="SansSerif" halign="center"
height="20" label="Show On Map" label_selected="Show On Map"
left_delta="100" mouse_opaque="true" name="show_on_map"
tool_tip="Center map on this location" width="125" />
<button bottom_delta="0" enabled="false" follows="bottom|right" font="SansSerif"
height="20" label="Copy SLURL to clipboard" left="-230" name="copy_slurl"
tool_tip="Copies current location as SLURL to be used on the web."
width="222" />
</floater>
<floater name="teleporthistory" title="Teleport History" rect_control="FloaterTeleportHistoryRect"
can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true"
min_width="550" min_height="150" width="550" height="200">
<scroll_list name="places_list" can_resize="true" multi_select="false"
background_visible="true" draw_border="true" draw_stripes="true" draw_heading="true"
height="150" width="530" bottom_delta="-170" top="10" left="10" follows="left|top|right|bottom">
<column name="parcel" label="Parcel" dynamicwidth="true" />
<column name="region" label="Region" width="150" />
<column name="position" label="Position" width="90" />
<column name="visited" label="Visited" width="110" />
<!--Hidden fields, used as storage for prebuilt strings, please keep at width 0-->
<column name="slurl" label="" width="0" />
<column name="simstring" label="" width="0" />
</scroll_list>
<button name="teleport" label="Teleport" tool_tip="Teleport to selected location"
enabled="false" mouse_opaque="true" font="SansSerif" halign="center"
height="20" width="90" bottom_delta="-24" left="10" follows="left|bottom"
/>
<button name="show_on_map" label="Show on map" tool_tip="Center map on selected location."
enabled="false" mouse_opaque="true" font="SansSerif" halign="center"
height="20" width="125" bottom_delta="0" left_delta="100" follows="left|bottom"
/>
<button name="copy_slurl" label="Copy SLURL to clipboard" tool_tip="Copy selected location as SLURL."
enabled="false" mouse_opaque="true" font="SansSerif" halign="center"
height="20" width="180" bottom_delta="0" left_delta="135" follows="left|bottom"
/>
</floater>

View File

@@ -21,13 +21,13 @@
</font>
<font name="SansSerif" comment="Name of san-serif font (Truetype file name)">
<file>"MtBkLfRg.ttf"</file>
<file>DroidSans.ttf</file>
</font>
<font name="SansSerifBold"
comment="Name of bold sans-serif font"
font_style="Bold">
<file>MtBdLfRg.ttf</file>
<file>DroidSans-Bold.ttf</file>
</font>
<font name="Monospace"
@@ -92,19 +92,19 @@
/>
<font_size name="Huge"
comment="Size of huge font (points, or 1/72 of an inch)"
size="16.0"
size="14.0"
/>
<font_size name="Large"
comment="Size of large font (points, or 1/72 of an inch)"
size="12.0"
size="11.0"
/>
<font_size name="Medium"
comment="Size of medium font (points, or 1/72 of an inch)"
size="10.0"
size="9.5"
/>
<font_size name="Small"
comment="Size of small font (points, or 1/72 of an inch)"
size="9"
size="8.5"
/>
</fonts>

View File

@@ -15,21 +15,21 @@
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-20" disabled_color="BalanceTextColor" drop_shadow_visible="true"
enabled="true" follows="right|bottom" font="SansSerifSmall" h_pad="0"
halign="right" height="18" left="-210" mouse_opaque="true"
halign="right" height="18" left="-230" mouse_opaque="true"
name="BalanceText" text_color="BalanceTextColor" tool_tip="Account Balance"
v_pad="2" width="76">
v_pad="2" width="86">
Loading...
</text>
<button bottom="-18" enabled="true" follows="right|bottom" font="SansSerifSmall"
halign="center" height="18"
image_selected="button_enabled_selected_32x128.tga"
image_unselected="button_enabled_32x128.tga" label="[CURRENCY]"
left="-210" mouse_opaque="true" name="buycurrency" scale_image="true"
tool_tip="Buy currency" width="36" />
left="-220" mouse_opaque="true" name="buycurrency" scale_image="true"
tool_tip="Buy currency" width="24" />
<text type="string" length="12" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-20" disabled_color="TimeTextColor" drop_shadow_visible="true"
enabled="true" follows="right|bottom" font="SansSerifSmall" h_pad="0"
halign="right" height="18" left="-300" mouse_opaque="true" name="TimeText"
halign="right" height="18" left="-310" mouse_opaque="true" name="TimeText"
text_color="TimeTextColor" tool_tip="Current Time (Pacific)" v_pad="2" width="80">
12:00 AM
</text>