Compare commits

..

69 Commits
1.8.2 ... 1.8.3

Author SHA1 Message Date
Latif Khalifa
ae38835959 Version 1.8.3 2013-09-18 06:55:30 +02:00
Inusaito Sayori
a4c0cab6a0 Fix 1098 (caused by silly mistake in filepicker bit for windows) 2013-09-17 18:32:54 -04:00
Latif Khalifa
dd1cb4921f Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-17 21:41:58 +02:00
Aleric Inglewood
9ac7a139af Rewrite of LLLogChat::loadHistory.
Tested to work.
2013-09-17 21:41:49 +02:00
Drake Arconis
eeeaaa3535 Translation poking for my last commit 2013-09-17 01:58:48 -04:00
Drake Arconis
08654cc859 Fixed profile floater not displaying custom account type strings from server 2013-09-17 01:31:54 -04:00
Latif Khalifa
3f1d05b839 Re-apply warning fix after the previous revert 2013-09-17 05:04:44 +02:00
Latif Khalifa
7346931f7f Revert OCD commit tick.
Revert "Appease VS2010 warning and make ui code more consistent with the modern standard in daeexport.cpp"

This reverts commit cb6dec62ec.
2013-09-17 04:59:25 +02:00
Inusaito Sayori
132574f53c Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-09-16 22:46:32 -04:00
Inusaito Sayori
37c2bb0a6e Merge branch 'master' of git://github.com/lkalif/SingularityViewer 2013-09-16 22:46:21 -04:00
Inusaito Sayori
9b33e592fa Fix log being read from the top, woops 2013-09-16 22:44:31 -04:00
Inusaito Sayori
69a6968775 Request: Add menu item separator between replace and remove. 2013-09-16 22:36:48 -04:00
Latif Khalifa
afec67e596 Kill a compiler warning 2013-09-17 01:48:39 +02:00
Latif Khalifa
97c8218463 Don't crash when chanelp returned is null 2013-09-17 01:48:11 +02:00
Inusaito Sayori
f73caef7a5 Fix log timestamp inconsistency when including seconds 2013-09-16 14:31:58 -04:00
Inusaito Sayori
cb6dec62ec Appease VS2010 warning and make ui code more consistent with the modern standard in daeexport.cpp 2013-09-15 18:01:21 -04:00
Latif Khalifa
a2b2af6eb7 Don't pass std::string to llformat 2013-09-15 10:40:16 +02:00
Latif Khalifa
a5aedfb783 Typo fix 2013-09-15 10:29:52 +02:00
Latif Khalifa
b4697bf732 Made texture export on by default when exporting Collada. 2013-09-15 09:26:49 +02:00
Latif Khalifa
b2ae9feda0 Collada export, now with more awesome
* Added support for exporting textures
* Added support for applying texture parameters
* Added support for merging faces with same textures
* Added support for skipping transparent faces
2013-09-15 09:19:21 +02:00
Latif Khalifa
0de1e27470 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-15 09:14:23 +02:00
Inusaito Sayori
e5f2d5f76e Fix Save Preview As... for textures, now save as any type we can encode to!
Removes the previous method and condenses the menu entries back into one.
 - Translations have been updated except for German, German will need to update the translation for "Save Preview As..." since the name hasn't changed.
Adds FFSAVE_IMAGE to the filepicker enums
Crossplatformity:
 - The Windows version works nicely
 - The Linux version may not work or even compile but it should..
 - The Mac version hasn't been added, instead it will default to accept any(all filter), should the provided file extension be invalid a notification will display.
2013-09-14 21:21:36 -04:00
Inusaito Sayori
42f8875d69 Group chat seems to want script reset from object inventory, so here you go. 2013-09-14 21:07:01 -04:00
Inusaito Sayori
0d1c4def2d Feature Request: Add a debug setting to prevent double clicking on the world map resulting in a teleport
Adds DoubleClickTeleportMap to debug settings.
2013-09-14 20:59:12 -04:00
Inusaito Sayori
0b20babd35 Feature Request: Add a debug setting for how many lines of history to show when LogShowHistory
LogShowHistoryLines is the setting
This change cleans up some very C code in lllogchat.cpp
2013-09-14 20:55:19 -04:00
Inusaito Sayori
9b984d425d Feature Request: Add an option to show the grid name in title
LiruGridInTitle is the debug
2013-09-14 20:51:03 -04:00
Inusaito Sayori
461f6f6ade Since views cleanup their children, drop target's destructor doesn't need to. 2013-09-13 19:08:52 -04:00
Damian Zhaoying
701d8ba37b fix typo and update text for new option in avatar menu 2013-09-13 14:16:49 -03:00
Aleric Inglewood
dcbcc7ea3c Avoid compile error when using glh and boost at the same time.
Defining a macro in a header that doesn't have any namespace prefix
like GLH_ ugh. Very bad.

Changed the macro into an inline function inside namespace glh.
2013-09-13 17:22:56 +02:00
Inusaito Sayori
a0a51fb762 Max prim scale on opensim is now 8192 (server restrictions may apply, limit one per customer) 2013-09-12 22:35:31 -04:00
Inusaito Sayori
5058e3e87d Don't changeCameraToDefault when notecards open. 2013-09-12 18:44:30 -04:00
Inusaito Sayori
c6e2559d3e Correct a typo in setting name for preferences panel 2013-09-12 17:11:26 -04:00
Latif Khalifa
c14d46074c Re initiate spatial partitions in the main region after a long teleport jump.
Also kill objects in the regions we left behind.
Restore max octree range to 1024 * 1024
2013-09-12 09:42:55 +02:00
Inusaito Sayori
5b73586b95 Display the current region's grid coordinates in Help->About Singularity 2013-09-12 00:42:03 -04:00
Latif Khalifa
5573499b9d Reduce max size of octree root to 2048^2 in an attempt to avoid float errors leading to crashes on very long teleports 2013-09-12 03:09:51 +02:00
Inusaito Sayori
5575ff2b90 Default all available items to be included in new outfits 2013-09-11 18:54:27 -04:00
Latif Khalifa
3d6b94d2ed Avoid infinite recursion crashes with wider octree range 2013-09-11 23:28:26 +02:00
Inusaito Sayori
312a58584e Fix some cases where busy and muted were not evaluated properly for automated handling of incoming messages 2013-09-11 15:38:35 -04:00
Latif Khalifa
170d9c7983 Made max octree range power of two.
Fixes crashes observed in "Forum" region in SL where some
avatars seem to be flying millions of meters up in the air.
2013-09-11 19:58:02 +02:00
Inusaito Sayori
9786bc47fb Clear out comment text when saving to solve Issue 1078
Thanks to Zi Ree for this fix
2013-09-11 03:11:10 -04:00
Latif Khalifa
3045f93f62 Increased octree limit to 32k. Addresses "4096 bug" in Opensim
Thanks to NickyD for tracking down the cause.

Refereces:

https://jira.secondlife.com/browse/SVC-2941
http://redmine.kokuaviewer.org/issues/465
http://jira.phoenixviewer.com/browse/FIRE-11593
2013-09-10 19:19:05 +02:00
Latif Khalifa
56af88fb94 Revert "Removed internal limit 2^20 for lloctree"
This reverts commit 7376c833c7.
2013-09-10 19:16:02 +02:00
Latif Khalifa
7376c833c7 Removed internal limit 2^20 for lloctree
This addresses "4096 bug" affecting long Opensim teleports

Patch by NickyD (Firestorm)

Refereces:

https://jira.secondlife.com/browse/SVC-2941
http://redmine.kokuaviewer.org/issues/465
http://jira.phoenixviewer.com/browse/FIRE-11593
2013-09-10 13:22:01 +02:00
Latif Khalifa
0d893c5217 Revert "Possible fix for "4096 bug" affecting long Opensim teleports"
This reverts commit f7cf69ec95.
2013-09-10 13:02:38 +02:00
Latif Khalifa
8a69b9e50d Revert "Patch tool completely misplaced a hunk in previous commit"
This reverts commit 99893ee992.
2013-09-10 13:02:17 +02:00
Latif Khalifa
99893ee992 Patch tool completely misplaced a hunk in previous commit 2013-09-10 04:19:01 +02:00
Latif Khalifa
f7cf69ec95 Possible fix for "4096 bug" affecting long Opensim teleports
Patch by Tonya Souther (Firestorm)
Refereces:

https://jira.secondlife.com/browse/SVC-2941
http://redmine.kokuaviewer.org/issues/465
http://jira.phoenixviewer.com/browse/FIRE-11593
2013-09-10 03:53:03 +02:00
Inusaito Sayori
27b2f14193 Fix for STORM-1948; modified version of viewer-release's 683b1ecc6ce8255d31cad3c674ffaf87353c6469
To maintain compatibility with grids that still use the old home position set notification method, a common function is called.
The fix has also been applied for the special case of death teleports.
2013-09-09 21:27:33 -04:00
Inusaito Sayori
e36c0095e0 Add NewIMsPerConversationReset to reset the visibility of the New IMs button when the communicate floater has been opened and closed and NewIMsPerConversation is in use
(this is now the default behavior of NewIMsPerConversation)
2013-09-09 21:08:38 -04:00
Inusaito Sayori
0b1a172a91 Fix up spanish translation for the IM flyout button 2013-09-09 21:03:41 -04:00
Inusaito Sayori
b5cc29ebbc Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-09-09 20:56:07 -04:00
Inusaito Sayori
88af3cabc3 Fix the issue of system messages being counted towards unread IMs 2013-09-09 20:55:21 -04:00
Latif Khalifa
f838c235cb Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-09-09 10:24:29 +02:00
Inusaito Sayori
0e5085e6bc Fix owner mask being displayed in the debug permissions for everyone mask 2013-09-08 10:50:16 -04:00
Inusaito Sayori
380642044f Revert "Mewmew"
This reverts commit 27dcbef8fa.
2013-09-06 15:42:14 -04:00
Inusaito Sayori
22fee625e5 Revert "You, my friend, are a victim of disorganized thinking."
This reverts commit d956f60c0b.
2013-09-06 15:39:00 -04:00
Damian Zhaoying
7d4c633514 Update changes in floater IMs 2013-09-02 18:12:31 -03:00
Latif Khalifa
c7d5ef31c0 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-01 02:26:05 +02:00
Aleric Inglewood
fc70dd436f Fix of issue 1055
Thanks to sappadillidallagio and warctor/Parker for reporting.
2013-08-31 22:56:37 +02:00
Inusaito Sayori
d9bff43dd8 At the Singularity group's request: Another attempt to mute voice upon reconnecting to local voice if the setting requests such 2013-08-29 14:05:24 -04:00
Inusaito Sayori
50a85109a0 Improvements to NewIMsPerConversation mechaics and includes cleanup in lloverlaybar.cpp 2013-08-29 14:01:23 -04:00
Inusaito Sayori
adeb340e93 Includes cleanup in llimpanel.* and llimview.cpp 2013-08-29 13:57:54 -04:00
Inusaito Sayori
539eb2e348 Add buttons back to the IM floater, taking the space that RP Mode once occupied
Also fix concise IM buttons from looking awful, concise stays concise, only the dropdown button there.
2013-08-29 13:56:14 -04:00
Inusaito Sayori
b3f414c4ad Move RP Mode check into the Profile button dropdown 2013-08-29 13:45:24 -04:00
Inusaito Sayori
83c66c978b Option to ding on each new IM for given private IM sessions
Ding noises configurable via LiruNewMessageSound* debug settings
2013-08-29 13:35:35 -04:00
Inusaito Sayori
344909c0a3 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-08-28 03:38:02 -04:00
Damian Zhaoying
ce1c554fa3 Spanish Translation. Added new option in voice control panel. Added new option web profile in calling card options in menu inventory 2013-08-28 04:34:08 -03:00
Inusaito Sayori
e032c53bc6 Feature Request: Make the map dot color for everyone else customizable
Switches MapAvatar from being part of a skin's colors.xml to being a user setting (optionally vanity per account)
This makes sense because all the other dots were at the user's control already.
2013-08-28 03:29:57 -04:00
Inusaito Sayori
e08c05fbd6 Feature Request: Add debug setting ResetViewTurnsAvatar to solve the problem described in Issue 715 Comment 10
Solves https://jira.secondlife.com/browse/VWR-27956
2013-08-28 01:12:03 -04:00
69 changed files with 1495 additions and 635 deletions

View File

@@ -399,7 +399,7 @@ void LLAudioEngine::idle(F32 max_decode_time)
}
LLAudioChannel *channelp = sourcep->getChannel();
bool is_stopped = channelp && channelp->isPlaying();
bool is_stopped = !channelp || !channelp->isPlaying();
if (is_stopped || (sourcep->isLoop() && channelp->mLoopedThisFrame))
{
// This sound isn't playing, so we just process move the queue

View File

@@ -35,7 +35,7 @@
const S32 LL_VERSION_MAJOR = 1;
const S32 LL_VERSION_MINOR = 8;
const S32 LL_VERSION_PATCH = 2;
const S32 LL_VERSION_PATCH = 3;
const S32 LL_VERSION_BUILD = ${vBUILD};
const char * const LL_CHANNEL = "${VIEWER_CHANNEL}";

View File

@@ -623,6 +623,9 @@ public:
child->insert(data);
}
}
// Singu note: now that we allow wider range in octree, discard them here
// if they fall out of range
#if 0
else
{
//it's not in here, give it to the root
@@ -641,6 +644,7 @@ public:
node->insert(data);
}
}
#endif
return false;
}
@@ -1010,7 +1014,7 @@ public:
}
LLVector4a MAX_MAG;
MAX_MAG.splat(1024.f*1024.f);
MAX_MAG.splat(1024.f * 1024.f);
const LLVector4a& v = data->getPositionGroup();

View File

@@ -218,7 +218,6 @@ public:
virtual BOOL canSaveAs() const { return FALSE; }
virtual void saveAs() {}
virtual void saveAsType(BOOL type=false) {}
void setSnapTarget(LLHandle<LLFloater> handle) { mSnappedTo = handle; }
void clearSnapTarget() { mSnappedTo.markDead(); }

View File

@@ -71,10 +71,10 @@ glh_linear.h
#define GLH_EPSILON GLH_REAL(10e-6)
#define GLH_PI GLH_REAL(3.1415926535897932384626433832795)
#define equivalent(a,b) (((a < b + GLH_EPSILON) && (a > b - GLH_EPSILON)) ? true : false)
namespace glh
{
inline bool equivalent(GLH_REAL a, GLH_REAL b) { return b - GLH_EPSILON < a && a < b + GLH_EPSILON; }
inline GLH_REAL to_degrees(GLH_REAL radians) { return radians*GLH_RAD_TO_DEG; }
inline GLH_REAL to_radians(GLH_REAL degrees) { return degrees*GLH_DEG_TO_RAD; }

View File

@@ -674,6 +674,19 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>LiruGridInTitle</key>
<map>
<key>Comment</key>
<string>Show grid name in the viewer window title (takes effect upon next login)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<boolean>0</boolean>
<key>IsCOA</key>
<integer>1</integer>
</map>
<key>LiruGroupNoticeTimes</key>
<map>
<key>Comment</key>
@@ -762,6 +775,32 @@
<key>Value</key>
<integer>20000</integer>
</map>
<key>LiruNewMessageSound</key>
<map>
<key>Comment</key>
<string>Sound ID to play when ding is on for an IM session and an IM comes in.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>67cc2844-00f3-2b3c-b991-6418d01e1bb7</string>
<key>IsCOA</key>
<integer>1</integer>
</map>
<key>LiruNewMessageSoundForSystemMessages</key>
<map>
<key>Comment</key>
<string>Sound ID to play when ding is on for an IM session and a system message comes through, like when the correspondent starts typing or logs off. (Defaults to off)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string/>
<key>IsCOA</key>
<integer>1</integer>
</map>
<key>LiruNoTransactionClutter</key>
<map>
<key>Comment</key>
@@ -807,6 +846,19 @@ Found in Advanced->Rendering->Info Displays</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>LogShowHistoryLines</key>
<map>
<key>Comment</key>
<string>Lines of history to load from log file if LogShowHistory is true.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>32</integer>
<key>IsCOA</key>
<integer>1</integer>
</map>
<key>ContactsUseHorizontalButtons</key>
<map>
<key>Comment</key>
@@ -951,6 +1003,17 @@ This should be as low as possible, but too low may break functionality</string>
<key>Value</key>
<boolean>0</boolean>
</map>
<key>NewIMsPerConversationReset</key>
<map>
<key>Comment</key>
<string>When NewIMsPerConversation is on, this determines when the New IMs button becomes visible while the communicate floater is closed. True will wait until a new IM is received, false displays as long as a conversation is unread.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<boolean>1</boolean>
</map>
<key>ResetFocusOnSelfClick</key>
<map>
<key>Comment</key>
@@ -962,6 +1025,17 @@ This should be as low as possible, but too low may break functionality</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>ResetViewTurnsAvatar</key>
<map>
<key>Comment</key>
<string>When true, resetting view by hitting escape or using the menu entry will turn your avatar to the direction the camera was pointed</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<boolean>0</boolean>
</map>
<key>ShowDisplayNameChanges</key>
<map>
<key>Comment</key>
@@ -5794,6 +5868,17 @@ This should be as low as possible, but too low may break functionality</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>DoubleClickTeleportMap</key>
<map>
<key>Comment</key>
<string>Enable double-click-teleport for the map</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>DoubleClickTeleportMiniMap</key>
<map>
<key>Comment</key>
@@ -17428,6 +17513,77 @@ This should be as low as possible, but too low may break functionality</string>
<key>Value</key>
<real>1280.0</real>
</map>
<key>ColladaExportFloaterRect</key>
<map>
<key>Comment</key>
<string>Collada floater position</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Rect</string>
<key>Value</key>
<array>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
</array>
</map>
<key>DAEExportConsolidateMaterials</key>
<map>
<key>Comment</key>
<string>Combine faces with same texture</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>DAEExportSkipTransparent</key>
<map>
<key>Comment</key>
<string>Skip exporting faces with default transparent texture or full transparent</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>DAEExportTextures</key>
<map>
<key>Comment</key>
<string>Export textures when exporting Collada</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>DAEExportTextureParams</key>
<map>
<key>Comment</key>
<string>Apply texture params suchs as repeats to the exported UV map</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>DAEExportTexturesType</key>
<map>
<key>Comment</key>
<string>Image file format to use when exporting Collada</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<integer>0</integer>
</map>
</map>
</llsd>

View File

@@ -204,6 +204,24 @@
<key>IsCOA</key>
<integer>1</integer>
</map>
<key>MapAvatar</key>
<map>
<key>Comment</key>
<string>Color for map dots of residents who don't qualify for any color else.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Color4</string>
<key>Value</key>
<array>
<real>0.0</real>
<real>1.0</real>
<real>0.0</real>
<real>1.0</real>
</array>
<key>IsCOA</key>
<integer>1</integer>
</map>
<key>ColorFriendChat</key>
<map>
<key>Comment</key>

View File

@@ -297,7 +297,7 @@ void LLPrefsAscentChat::refreshValues()
mOneLineConfButt = gSavedSettings.getBOOL("UseConciseConferenceButtons");
mOnlyComm = gSavedSettings.getBOOL("CommunicateSpecificShortcut");
mItalicizeActions = gSavedSettings.getBOOL("LiruItalicizeActions");
mLegacySpeakerNames = gSavedSettings.getBOOL("LiruILegacySpeakerNames");
mLegacySpeakerNames = gSavedSettings.getBOOL("LiruLegacySpeakerNames");
//Autoresponse ------------------------------------------------------------------------
mIMResponseAnyoneItemID = gSavedPerAccountSettings.getString("AutoresponseAnyoneItemID");
@@ -535,7 +535,7 @@ void LLPrefsAscentChat::cancel()
gSavedSettings.setBOOL("UseConciseConferenceButtons", mOneLineConfButt);
gSavedSettings.setBOOL("CommunicateSpecificShortcut", mOnlyComm);
gSavedSettings.setBOOL("LiruItalicizeActions", mItalicizeActions);
gSavedSettings.setBOOL("LiruILegacySpeakerNames", mLegacySpeakerNames);
gSavedSettings.setBOOL("LiruLegacySpeakerNames", mLegacySpeakerNames);
//Autoresponse ------------------------------------------------------------------------
gSavedPerAccountSettings.setString("AutoresponseAnyoneItemID", mIMResponseAnyoneItemID);

View File

@@ -187,6 +187,7 @@ void LLPrefsAscentVan::refreshValues()
mEstateOwnerColor = gSavedSettings.getColor4("AscentEstateOwnerColor");
mLindenColor = gSavedSettings.getColor4("AscentLindenColor");
mMutedColor = gSavedSettings.getColor4("AscentMutedColor");
mMapAvatarColor = gSavedSettings.getColor4("MapAvatar");
mCustomColor = gSavedSettings.getColor4("MoyMiniMapCustomColor");
mColorFriendChat = gSavedSettings.getBOOL("ColorFriendChat");
mColorEOChat = gSavedSettings.getBOOL("ColorEstateOwnerChat");
@@ -258,6 +259,7 @@ void LLPrefsAscentVan::cancel()
gSavedSettings.setColor4("AscentEstateOwnerColor", mEstateOwnerColor);
gSavedSettings.setColor4("AscentLindenColor", mLindenColor);
gSavedSettings.setColor4("AscentMutedColor", mMutedColor);
gSavedSettings.setColor4("MapAvatar", mMapAvatarColor);
gSavedSettings.setColor4("MoyMiniMapCustomColor", mCustomColor);
gSavedSettings.setBOOL("ColorFriendChat", mColorFriendChat);
gSavedSettings.setBOOL("ColorEstateOwnerChat", mColorEOChat);

View File

@@ -84,6 +84,7 @@ protected:
LLColor4 mEstateOwnerColor;
LLColor4 mLindenColor;
LLColor4 mMutedColor;
LLColor4 mMapAvatarColor;
LLColor4 mCustomColor;
bool mColorFriendChat;
bool mColorEOChat;

File diff suppressed because it is too large Load Diff

View File

@@ -1,48 +1,110 @@
/**
* @file daeexport.h
* @brief A system which allows saving in-world objects to Collada .DAE files for offline texturizing/shading.
* @authors Latif Khalifa
*
* $LicenseInfo:firstyear=2013&license=LGPLV2.1$
* Copyright (C) 2013 Latif Khalifa
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
* @file daeexport.h
* @brief A system which allows saving in-world objects to Collada .DAE files for offline texturizing/shading.
* @authors Latif Khalifa
*
* $LicenseInfo:firstyear=2013&license=LGPLV2.1$
* Copyright (C) 2013 Latif Khalifa
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
#ifndef DAEEXPORT_H_
#define DAEEXPORT_H_
#include <dom/domElements.h>
#include "lltextureentry.h"
class LLViewerObject;
class DAESaver
{
typedef std::vector<std::pair<LLViewerObject*,std::string> > obj_info_t;
public:
class MaterialInfo
{
public:
LLUUID textureID;
LLColor4 color;
std::string name;
bool matches(LLTextureEntry* te)
{
return (textureID == te->getID()) && (color == te->getColor());
}
bool operator== (const MaterialInfo& rhs)
{
return (textureID == rhs.textureID) && (color == rhs.color) && (name == rhs.name);
}
bool operator!= (const MaterialInfo& rhs)
{
return !(*this == rhs);
}
MaterialInfo()
{
}
MaterialInfo(const MaterialInfo& rhs)
{
textureID = rhs.textureID;
color = rhs.color;
name = rhs.name;
}
MaterialInfo& operator= (const MaterialInfo& rhs)
{
textureID = rhs.textureID;
color = rhs.color;
name = rhs.name;
return *this;
}
};
typedef std::vector<std::pair<LLViewerObject*,std::string> > obj_info_t;
typedef std::vector<LLUUID> id_list_t;
typedef std::vector<std::string> string_list_t;
typedef std::vector<S32> int_list_t;
typedef std::vector<MaterialInfo> material_list_t;
material_list_t mAllMaterials;
id_list_t mTextures;
string_list_t mTextureNames;
obj_info_t mObjects;
LLVector3 mOffset;
std::string mImageFormat;
S32 mTotalNumMaterials;
DAESaver();
void Add(const LLViewerObject* prim, const std::string name);
void updateTextureInfo();
void add(const LLViewerObject* prim, const std::string name);
bool saveDAE(std::string filename);
private:
void transformTexCoord(S32 num_vert, LLVector2* coord, LLVector3* positions, LLVector3* normals, LLTextureEntry* te, LLVector3 scale);
void addSource(daeElement* mesh, const char* src_id, std::string params, const std::vector<F32> &vals);
void addPolygons(daeElement* mesh, const char* geomID, const char* materialID, LLViewerObject* obj, int face_to_include);
void addPolygons(daeElement* mesh, const char* geomID, const char* materialID, LLViewerObject* obj, int_list_t* faces_to_include);
bool skipFace(LLTextureEntry *te);
MaterialInfo getMaterial(LLTextureEntry* te);
void getMaterials(LLViewerObject* obj, material_list_t* ret);
void getFacesWithMaterial(LLViewerObject* obj, MaterialInfo& mat, int_list_t* ret);
void generateEffects(daeElement *effects);
void generateImagesSection(daeElement* images);
};
#endif // DAEEXPORT_H_

View File

@@ -33,7 +33,7 @@ void HippoLimits::setOpenSimLimits()
{
mMaxAgentGroups = gHippoGridManager->getConnectedGrid()->getMaxAgentGroups();
if (mMaxAgentGroups < 0) mMaxAgentGroups = 50;
mMaxPrimScale = 256.0f;
mMaxPrimScale = 8192.0f;
mMaxHeight = 10000.0f;
if (gHippoGridManager->getConnectedGrid()->isRenderCompat()) {
llinfos << "Using rendering compatible OpenSim limits." << llendl;

View File

@@ -57,8 +57,17 @@ void LFFloaterInvPanel::show(const LLUUID& cat_id, LLInventoryModel* model, cons
// static
void LFFloaterInvPanel::closeAll()
{
for (instance_iter i = endInstances(); i >= beginInstances(); --i)
i->close();
// We must make a copy first, because LLInstanceTracker doesn't allow destruction while having iterators to it.
std::vector<LFFloaterInvPanel*> cache;
for (instance_iter i = beginInstances(); i != endInstances(); ++i)
{
cache.push_back(&*i);
}
// Now close all panels, without using instance_iter iterators.
for (std::vector<LFFloaterInvPanel*>::iterator i = cache.begin(); i != cache.end(); ++i)
{
(*i)->close();
}
}
// virtual

View File

@@ -79,8 +79,6 @@ LLDropTarget::LLDropTarget(const LLDropTarget::Params& p)
LLDropTarget::~LLDropTarget()
{
delete mText;
delete mBorder;
}
// static

View File

@@ -187,17 +187,22 @@ LLFloaterAbout::LLFloaterAbout()
llformat("%.1f, %.1f, %.1f ", pos.mdV[VX], pos.mdV[VY], pos.mdV[VZ]));
support.append(pos_text);
std::string region_text = llformat("in %s located at ",
gAgent.getRegion()->getName().c_str());
support.append(region_text);
if (const LLViewerRegion* region = gAgent.getRegion())
{
const LLVector3d& coords(region->getOriginGlobal());
std::string region_text = llformat("in %s (%.0f, %.0f) located at ", region->getName().c_str(), coords.mdV[VX]/REGION_WIDTH_METERS, coords.mdV[VY]/REGION_WIDTH_METERS);
support.append(region_text);
std::string buffer;
buffer = region->getHost().getHostName();
support.append(buffer);
support.append(" (");
buffer = region->getHost().getString();
support.append(buffer);
support.append(")");
}
support.append("\n");
std::string buffer;
buffer = gAgent.getRegion()->getHost().getHostName();
support.append(buffer);
support.append(" (");
buffer = gAgent.getRegion()->getHost().getString();
support.append(buffer);
support.append(")\n");
support.append(gLastVersionChannel);
support.append("\n");

View File

@@ -33,50 +33,31 @@
#include "llimpanel.h"
#include "indra_constants.h"
#include "llfocusmgr.h"
#include "llfontgl.h"
#include "llrect.h"
#include "llerror.h"
#include "llstring.h"
#include "message.h"
#include "lltextbox.h"
#include "llnotificationsutil.h"
#include "ascentkeyword.h"
#include "llagent.h"
#include "llavataractions.h"
#include "llavatarnamecache.h"
#include "llbutton.h"
#include "llcallingcard.h"
#include "llchat.h"
#include "llconsole.h"
#include "llgroupactions.h"
#include "llcombobox.h"
#include "llfloaterchat.h"
#include "llfloaterinventory.h"
#include "llgroupactions.h"
#include "llhttpclient.h"
#include "llimview.h"
#include "llinventory.h"
#include "llinventoryfunctions.h"
#include "llfloaterinventory.h"
#include "llcheckboxctrl.h"
#include "llkeyboard.h"
#include "lllineeditor.h"
#include "llnotify.h"
#include "llmutelist.h"
#include "llnotificationsutil.h"
#include "llparticipantlist.h"
#include "llresmgr.h"
#include "llspeakers.h"
#include "llstylemap.h"
#include "lltrans.h"
#include "lltabcontainer.h"
#include "llviewertexteditor.h"
#include "llviewermessage.h"
#include "llviewerstats.h"
#include "llviewercontrol.h"
#include "lluictrlfactory.h"
#include "llviewertexteditor.h"
#include "llviewerstats.h"
#include "llviewerwindow.h"
#include "llvoicechannel.h"
#include "lllogchat.h"
#include "llweb.h"
#include "llhttpclient.h"
#include "llmutelist.h"
#include "llstylemap.h"
#include "ascentkeyword.h"
#include "boost/algorithm/string.hpp"
@@ -549,6 +530,7 @@ BOOL LLFloaterIMPanel::postBuild()
if (checkRequirements())
{
mDing = false;
mRPMode = false;
mInputEditor = getChild<LLLineEditor>("chat_editor");
@@ -561,16 +543,20 @@ BOOL LLFloaterIMPanel::postBuild()
mInputEditor->setReplaceNewlinesWithSpaces( FALSE );
mInputEditor->setPassDelete( TRUE );
if (LLUICtrl* ctrl = findChild<LLUICtrl>("instant_message_flyout"))
if (LLComboBox* flyout = findChild<LLComboBox>("instant_message_flyout"))
{
ctrl->setCommitCallback(boost::bind(&LLFloaterIMPanel::onFlyoutCommit, this, _2));
flyout->setCommitCallback(boost::bind(&LLFloaterIMPanel::onFlyoutCommit, this, flyout, _2));
flyout->add(getString("ding off"), 6);
flyout->add(getString("rp mode off"), 7);
}
if (LLUICtrl* ctrl = findChild<LLUICtrl>("tp_btn"))
ctrl->setCommitCallback(boost::bind(static_cast<void(*)(const LLUUID&)>(LLAvatarActions::offerTeleport), mOtherParticipantUUID));
if (LLUICtrl* ctrl = findChild<LLUICtrl>("pay_btn"))
ctrl->setCommitCallback(boost::bind(LLAvatarActions::pay, mOtherParticipantUUID));
if (LLButton* btn = findChild<LLButton>("group_info_btn"))
btn->setCommitCallback(boost::bind(LLGroupActions::show, mSessionUUID));
if (LLUICtrl* ctrl = findChild<LLUICtrl>("history_btn"))
ctrl->setCommitCallback(boost::bind(&LLFloaterIMPanel::onClickHistory, this));
if (LLUICtrl* ctrl = findChild<LLUICtrl>("rp_mode"))
ctrl->setCommitCallback(boost::bind(&LLFloaterIMPanel::onRPMode, this, _2));
getChild<LLButton>("start_call_btn")->setCommitCallback(boost::bind(&LLIMMgr::startCall, gIMMgr, mSessionUUID, LLVoiceChannel::OUTGOING_CALL));
getChild<LLButton>("end_call_btn")->setCommitCallback(boost::bind(&LLIMMgr::endCall, gIMMgr, mSessionUUID));
@@ -797,6 +783,13 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, LLColor4 incol
incolor = mKeywordsColor;
}
}
if (mDing && (!hasFocus() || !gFocusMgr.getAppHasFocus()))
{
static const LLCachedControl<std::string> ding("LiruNewMessageSound");
static const LLCachedControl<std::string> dong("LiruNewMessageSoundForSystemMessages");
LLUI::sAudioCallback(LLUUID(source.notNull() ? ding : dong));
}
}
const LLColor4& color = incolor;
@@ -876,13 +869,13 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, LLColor4 incol
// [/Ansariel: Display name support]
}
if (!isInVisibleChain() || (!hasFocus() && getParent() == gFloaterView))
{
mNumUnreadMessages++;
}
if (source.notNull())
{
if (!isInVisibleChain() || (!hasFocus() && getParent() == gFloaterView))
{
mNumUnreadMessages++;
}
mSpeakers->speakerChatted(source);
mSpeakers->setSpeakerTyping(source, FALSE);
}
@@ -1053,13 +1046,7 @@ void LLFloaterIMPanel::onTabClick(void* userdata)
self->setInputFocus(TRUE);
}
void LLFloaterIMPanel::onRPMode(const LLSD& value)
{
mRPMode = value.asBoolean();
}
void LLFloaterIMPanel::onFlyoutCommit(const LLSD& value)
void LLFloaterIMPanel::onFlyoutCommit(LLComboBox* flyout, const LLSD& value)
{
if (value.isUndefined())
{
@@ -1073,6 +1060,30 @@ void LLFloaterIMPanel::onFlyoutCommit(const LLSD& value)
else if (option == 3) LLAvatarActions::teleportRequest(mOtherParticipantUUID);
else if (option == 4) LLAvatarActions::pay(mOtherParticipantUUID);
else if (option == 5) LLAvatarActions::inviteToGroup(mOtherParticipantUUID);
else if (option >= 6) // Options that change labels need to stay in order at the end
{
std::string ding_label(mDing ? getString("ding on") : getString("ding off"));
std::string rp_label(mRPMode ? getString("rp mode on") : getString("rp mode off"));
// First remove them all
flyout->remove(ding_label);
flyout->remove(rp_label);
// Toggle as requested, adjust the strings
if (option == 6)
{
mDing = !mDing;
ding_label = mDing ? getString("ding on") : getString("ding off");
}
else if (option == 7)
{
mRPMode = !mRPMode;
rp_label = mRPMode ? getString("rp mode on") : getString("rp mode off");
}
// Last add them back
flyout->add(ding_label, 6);
flyout->add(rp_label, 7);
}
}
void LLFloaterIMPanel::onClickHistory()

View File

@@ -32,22 +32,19 @@
#ifndef LL_IMPANEL_H
#define LL_IMPANEL_H
#include "llavatarnamecache.h"
#include "llfloater.h"
#include "lllogchat.h"
#include "lluuid.h"
#include "lldarray.h"
#include "llinstantmessage.h"
#include "llvoiceclient.h"
#include "llstyle.h"
class LLLineEditor;
class LLViewerTextEditor;
class LLInventoryItem;
class LLInventoryCategory;
class LLIMSpeakerMgr;
class LLParticipantList;
class LLAvatarName;
class LLButton;
class LLIMSpeakerMgr;
class LLIMInfo;
class LLInventoryCategory;
class LLInventoryItem;
class LLLineEditor;
class LLParticipantList;
class LLViewerTextEditor;
class LLVoiceChannel;
class LLFloaterIMPanel : public LLFloater
@@ -95,7 +92,6 @@ public:
void selectAll();
void selectNone();
void setVisible(BOOL b);
BOOL mRPMode;
S32 getNumUnreadMessages() { return mNumUnreadMessages; }
@@ -114,8 +110,7 @@ public:
static void onTabClick( void* userdata );
void onClickHistory();
void onRPMode(const LLSD& value);
void onFlyoutCommit(const LLSD& value);
void onFlyoutCommit(class LLComboBox* flyout, const LLSD& value);
static void onClickStartCall( void* userdata );
static void onClickEndCall( void* userdata );
void onClickToggleActiveSpeakers(const LLSD& value);
@@ -240,6 +235,9 @@ private:
BOOL mProfileButtonEnabled;
BOOL mCallBackEnabled;
bool mDing; // Whether or not to play a ding on new messages
bool mRPMode;
LLIMSpeakerMgr* mSpeakers;
LLParticipantList* mSpeakerPanel;

View File

@@ -34,35 +34,25 @@
#include "llimview.h"
#include "llfontgl.h"
#include "llrect.h"
#include "llbutton.h"
#include "llhttpclient.h"
#include "llhttpnode.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "llsdserialize.h"
#include "llsdutil_math.h"
#include "llstring.h"
#include "lltrans.h"
#include "lluictrlfactory.h"
#include "llagent.h"
#include "llagentcamera.h"
#include "llavataractions.h"
#include "llcallingcard.h"
#include "llchat.h"
#include "llresmgr.h"
#include "llavatarnamecache.h"
#include "llfloaterchat.h"
#include "llfloaterchatterbox.h"
#include "llhttpnode.h"
#include "llimpanel.h"
#include "llnotificationsutil.h"
#include "llsdserialize.h"
#include "llspeakers.h"
#include "lltabcontainer.h"
#include "llmutelist.h"
#include "llviewermenu.h"
#include "llviewermessage.h"
#include "llviewerwindow.h"
#include "llspeakers.h"
#include "llvoavatar.h" // For mIdleTimer reset
#include "llnotify.h"
#include "llviewerregion.h"
// [RLVa:KB]
@@ -80,6 +70,7 @@ LLIMMgr* gIMMgr = NULL;
//
// Helper Functions
//
std::string formatted_time(const time_t& the_time);
LLVOAvatar* find_avatar_from_object(const LLUUID& id);
LLColor4 agent_chat_color(const LLUUID& id, const std::string& name, bool local_chat)

View File

@@ -3440,6 +3440,7 @@ void LLFolderBridge::buildContextMenuFolderOptions(U32 flags)
mItems.push_back(std::string("Replace Outfit"));
}
mItems.push_back(std::string("Replace Remove Separator"));
mItems.push_back(std::string("Remove From Outfit"));
if (!LLAppearanceMgr::getCanRemoveFromCOF(mUUID))
{

View File

@@ -36,9 +36,7 @@
#include "lllogchat.h"
#include "llappviewer.h"
#include "llfloaterchat.h"
#include "llviewercontrol.h"
const S32 LOG_RECALL_SIZE = 2048;
//static
std::string LLLogChat::makeLogFileName(std::string filename)
@@ -94,7 +92,7 @@ std::string LLLogChat::timestamp(bool withdate)
std::string text;
if (withdate)
if (withseconds)
text = llformat("[%d-%02d-%02d %02d:%02d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min, timep->tm_sec);
text = llformat("[%d/%02d/%02d %02d:%02d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min, timep->tm_sec);
else
text = llformat("[%d/%02d/%02d %02d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min);
else
@@ -129,55 +127,79 @@ void LLLogChat::saveHistory(std::string const& filename, std::string line)
}
}
void LLLogChat::loadHistory(std::string const& filename , void (*callback)(ELogLineType,std::string,void*), void* userdata)
static long const LOG_RECALL_BUFSIZ = 2048;
void LLLogChat::loadHistory(std::string const& filename , void (*callback)(ELogLineType, std::string, void*), void* userdata)
{
if(!filename.size())
bool filename_empty = filename.empty();
if (filename_empty)
{
llwarns << "Filename is Empty!" << llendl;
return ;
llwarns << "filename is empty!" << llendl;
}
LLFILE* fptr = LLFile::fopen(makeLogFileName(filename), "r"); /*Flawfinder: ignore*/
if (!fptr)
else while(1) // So we can use break.
{
//LLUIString message = LLFloaterChat::getInstance()->getString("IM_logging_string");
//callback(LOG_EMPTY,"IM_logging_string",userdata);
callback(LOG_EMPTY,LLStringUtil::null,userdata);
return; //No previous conversation with this name.
}
else
{
char buffer[LOG_RECALL_SIZE]; /*Flawfinder: ignore*/
char *bptr;
S32 len;
bool firstline=TRUE;
// The number of lines to return.
static const LLCachedControl<U32> lines("LogShowHistoryLines", 32);
if (lines == 0) break;
if ( fseek(fptr, (LOG_RECALL_SIZE - 1) * -1 , SEEK_END) )
{ //File is smaller than recall size. Get it all.
firstline = FALSE;
if ( fseek(fptr, 0, SEEK_SET) )
{
fclose(fptr);
return;
}
}
// Open the log file.
LLFILE* fptr = LLFile::fopen(makeLogFileName(filename), "rb");
if (!fptr) break;
while ( fgets(buffer, LOG_RECALL_SIZE, fptr) && !feof(fptr) )
// Set pos to point to the last character of the file, if any.
if (fseek(fptr, 0, SEEK_END)) break;
long pos = ftell(fptr) - 1;
if (pos < 0) break;
char buffer[LOG_RECALL_BUFSIZ];
bool error = false;
int nlines = 0;
while (pos > 0 && nlines < lines)
{
len = strlen(buffer) - 1; /*Flawfinder: ignore*/
for ( bptr = (buffer + len); (*bptr == '\n' || *bptr == '\r') && bptr>buffer; bptr--) *bptr='\0';
if (!firstline)
// Read the LOG_RECALL_BUFSIZ characters before pos.
size_t size = llmin(LOG_RECALL_BUFSIZ, pos);
pos -= size;
fseek(fptr, pos, SEEK_SET);
size_t len = fread(buffer, 1, size, fptr);
error = len != size;
if (error) break;
// Count the number of newlines in it and set pos to the beginning of the first line to return when we found enough.
for (char const* p = buffer + size - 1; p >= buffer; --p)
{
callback(LOG_LINE,std::string(buffer),userdata);
}
else
{
firstline = FALSE;
if (*p == '\n')
{
if (++nlines == lines)
{
pos += p - buffer + 1;
break;
}
}
}
}
callback(LOG_END,LLStringUtil::null,userdata);
if (error)
{
fclose(fptr);
break;
}
// Set the file pointer at the first line to return.
fseek(fptr, pos, SEEK_SET);
// Read lines from the file one by one until we reach the end of the file.
while (fgets(buffer, LOG_RECALL_BUFSIZ, fptr))
{
size_t len = strlen(buffer);
if (buffer[len - 1] == '\n') // In case the log file doesn't end on a new-line (is that even possible?)
{
buffer[len - 1] = '\0';
}
callback(LOG_LINE, buffer, userdata);
}
fclose(fptr);
callback(LOG_END, LLStringUtil::null, userdata);
return;
}
callback(LOG_EMPTY, LLStringUtil::null, userdata);
}

View File

@@ -62,9 +62,9 @@ LLMakeOutfitDialog::LLMakeOutfitDialog(bool modal) : LLModalDialog(LLStringUtil:
else
{
bool enabled = gAgentWearables.getWearableCount((LLWearableType::EType)i); // TODO: MULTI-WEARABLE
bool selected = enabled && (LLWearableType::WT_SHIRT <= i); // only select clothing by default
//bool selected = enabled && (LLWearableType::WT_SHIRT <= i); // only select clothing by default
childSetEnabled(name, enabled);
childSetValue(name, selected);
childSetValue(name, enabled);
}
}
@@ -81,6 +81,7 @@ LLMakeOutfitDialog::LLMakeOutfitDialog(bool modal) : LLModalDialog(LLStringUtil:
std::string name = std::string("checkbox_") + attachment->getName();
mCheckBoxList.push_back(std::make_pair(name, attachment_pt));
childSetEnabled(name, object_attached);
childSetValue(name, object_attached);
}
}

View File

@@ -375,7 +375,7 @@ void LLNetMap::draw()
// Draw avatars
// LLColor4 mapcolor = gAvatarMapColor;
static const LLCachedControl<LLColor4> standard_color(gColors,"MapAvatar",LLColor4(0.f,1.f,0.f,1.f));
static const LLCachedControl<LLColor4> standard_color("MapAvatar",LLColor4(0.f,1.f,0.f,1.f));
static const LLCachedControl<LLColor4> friend_color_stored("AscentFriendColor",LLColor4(1.f,1.f,0.f,1.f));
static const LLCachedControl<LLColor4> em_color("AscentEstateOwnerColor",LLColor4(1.f,0.6f,1.f,1.f));
static const LLCachedControl<LLColor4> linden_color("AscentLindenColor",LLColor4(0.f,0.f,1.f,1.f));

View File

@@ -39,21 +39,13 @@
#include "aoremotectrl.h"
#include "llaudioengine.h"
#include "importtracker.h"
#include "llrender.h"
#include "llagent.h"
#include "llagentcamera.h"
#include "llbutton.h"
#include "llchatbar.h"
#include "llfocusmgr.h"
#include "llimpanel.h"
#include "llimview.h"
#include "llfloaterchatterbox.h"
#include "llmediaremotectrl.h"
#include "llpanelaudiovolume.h"
#include "llparcel.h"
#include "lltextbox.h"
#include "llui.h"
#include "llviewercontrol.h"
#include "llviewertexturelist.h"
#include "llviewerjoystick.h"
#include "llviewermedia.h"
@@ -62,20 +54,13 @@
#include "llviewerparcelmedia.h"
#include "llviewerparcelmgr.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
#include "llviewerwindow.h"
#include "llvoiceclient.h"
#include "llvoavatarself.h"
#include "llvoiceremotectrl.h"
#include "llmediactrl.h"
#include "llselectmgr.h"
#include "wlfPanel_AdvSettings.h"
#include "llpanelnearbymedia.h"
#include "llcontrol.h"
// [RLVa:KB]
#include "rlvhandler.h"
// [/RLVa:KB]
@@ -309,22 +294,19 @@ void LLOverlayBar::refresh()
{
bool buttons_changed = FALSE;
if (LLButton* button = updateButtonVisiblity(mNewIM,gIMMgr->getIMReceived()))
int unread_count(gIMMgr->getIMUnreadCount());
static const LLCachedControl<bool> per_conversation("NewIMsPerConversation");
static const LLCachedControl<bool> reset_count("NewIMsPerConversationReset");
if (per_conversation && (!reset_count || unread_count) && !LLFloaterChatterBox::instanceVisible())
{
unread_count = 0;
for(std::set<LLHandle<LLFloater> >::const_iterator it = gIMMgr->getIMFloaterHandles().begin(); it != gIMMgr->getIMFloaterHandles().end(); ++it)
if (LLFloaterIMPanel* im_floater = static_cast<LLFloaterIMPanel*>(it->get()))
if (im_floater->getParent() != gFloaterView && im_floater->getNumUnreadMessages()) // Only count docked IMs
++unread_count;
}
if (LLButton* button = updateButtonVisiblity(mNewIM, unread_count))
{
int unread_count(0);
static const LLCachedControl<bool> per_conversation("NewIMsPerConversation");
if (per_conversation)
{
for(std::set<LLHandle<LLFloater> >::const_iterator it = gIMMgr->getIMFloaterHandles().begin(); it != gIMMgr->getIMFloaterHandles().end(); ++it)
if (LLFloaterIMPanel* im_floater = static_cast<LLFloaterIMPanel*>(it->get()))
if (im_floater->getParent() != gFloaterView && im_floater->getNumUnreadMessages()) // Only count docked IMs
++unread_count;
}
else
{
unread_count = gIMMgr->getIMUnreadCount();
}
if (unread_count > 0)
{
if (unread_count > 1)

View File

@@ -46,6 +46,7 @@
#include "llagent.h"
#include "llavataractions.h"
#include "llavatarpropertiesprocessor.h"
#include "llcallingcard.h"
#include "lldroptarget.h"
#include "llfloatergroupinfo.h"
@@ -183,56 +184,11 @@ void LLPanelAvatarSecondLife::processProperties(void* data, EAvatarProcessorType
if (pAvatarData && (mAvatarID == pAvatarData->avatar_id) && (pAvatarData->avatar_id != LLUUID::null))
{
LLStringUtil::format_map_t args;
U8 caption_index = 0;
std::string caption_text = getString("CaptionTextAcctInfo");
const char* ACCT_TYPE[] =
{
"AcctTypeResident",
"AcctTypeTrial",
"AcctTypeCharterMember",
"AcctTypeEmployee"
};
caption_index = llclamp(caption_index, (U8)0, (U8)(LL_ARRAY_SIZE(ACCT_TYPE)-1));
args["[ACCTTYPE]"] = getString(ACCT_TYPE[caption_index]);
args["[ACCTTYPE]"] = LLAvatarPropertiesProcessor::accountType(pAvatarData);
args["[PAYMENTINFO]"] = LLAvatarPropertiesProcessor::paymentInfo(pAvatarData);
args["[AGEVERIFICATION]"] = " ";
std::string payment_text = " ";
const S32 DEFAULT_CAPTION_LINDEN_INDEX = 3;
if(caption_index != DEFAULT_CAPTION_LINDEN_INDEX)
{
if(pAvatarData->flags & AVATAR_TRANSACTED)
{
payment_text = "PaymentInfoUsed";
}
else if (pAvatarData->flags & AVATAR_IDENTIFIED)
{
payment_text = "PaymentInfoOnFile";
}
else
{
payment_text = "NoPaymentInfoOnFile";
}
args["[PAYMENTINFO]"] = getString(payment_text);
// Do not display age verification status at this time - Mostly because it /doesn't work/. -HgB
/*bool age_verified = (pAvatarData->flags & AVATAR_AGEVERIFIED); // Not currently getting set in dataserver/lldataavatar.cpp for privacy consideration
std::string age_text = age_verified ? "AgeVerified" : "NotAgeVerified";
args["[AGEVERIFICATION]"] = getString(age_text);
*/
args["[AGEVERIFICATION]"] = " ";
}
else
{
args["[PAYMENTINFO]"] = " ";
args["[AGEVERIFICATION]"] = " ";
}
LLStringUtil::format(caption_text, args);
childSetValue("acct", caption_text);
getChild<LLUICtrl>("acct")->setValue(getString("CaptionTextAcctInfo", args));
getChild<LLTextureCtrl>("img")->setImageAssetID(pAvatarData->image_id);

View File

@@ -671,19 +671,34 @@ BOOL LLTaskInvFVBridge::dragOrDrop(MASK mask, BOOL drop,
// llwarns << "LLTaskInvFVBridge::dropped() - not implemented" << llendl;
//}
void pack_script_message(LLMessageSystem*, const LLInventoryItem*, const LLViewerObject*);
void reset_script(const LLInventoryItem* item, const LLViewerObject* obj)
{
if (!item || !obj) return;
gMessageSystem->newMessageFast(_PREHASH_ScriptReset);
pack_script_message(gMessageSystem, item, obj);
gMessageSystem->sendReliable(obj->getRegion()->getHost());
}
void set_script_running(bool running, const LLInventoryItem* item, const LLViewerObject* obj)
{
if (!item || !obj) return;
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_SetScriptRunning);
pack_script_message(msg, item, obj);
msg->addBOOLFast(_PREHASH_Running, running);
msg->sendReliable(obj->getRegion()->getHost());
}
void pack_script_message(LLMessageSystem* msg, const LLInventoryItem* item, const LLViewerObject* obj)
{
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgentID);
msg->addUUIDFast(_PREHASH_SessionID, gAgentSessionID);
msg->nextBlockFast(_PREHASH_Script);
msg->addUUIDFast(_PREHASH_ObjectID, obj->getID());
msg->addUUIDFast(_PREHASH_ItemID, item->getUUID());
msg->addBOOLFast(_PREHASH_Running, running);
msg->sendReliable(obj->getRegion()->getHost());
}
// virtual
@@ -719,6 +734,10 @@ void LLTaskInvFVBridge::performAction(LLInventoryModel* model, std::string actio
{
showProperties();
}
else if (action == "reset_script")
{
reset_script(findItem(), gObjectList.findObject(mPanel->getTaskUUID()));
}
else if (action == "start_script")
{
set_script_running(true, findItem(), gObjectList.findObject(mPanel->getTaskUUID()));
@@ -777,11 +796,13 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
if (LLAssetType::AT_LSL_TEXT == item->getType())
{
items.push_back(std::string("Task Reset"));
items.push_back(std::string("Task Set Running"));
items.push_back(std::string("Task Set Not Running"));
const LLViewerObject* obj = gObjectList.findObject(mPanel->getTaskUUID());
if (!obj || !(obj->permModify() || obj->permYouOwner()))
{
disabled_items.push_back(std::string("Task Reset"));
disabled_items.push_back(std::string("Task Set Running"));
disabled_items.push_back(std::string("Task Set Not Running"));
}

View File

@@ -692,16 +692,18 @@ void LLPanelPermissions::refresh()
getChild<LLUICtrl>("B:")->setValue("B: " + perm_string);
getChildView("B:")->setVisible( TRUE);
/*
perm_string = mask_to_string(owner_mask_on);
if (!supports_export && owner_mask_on & PERM_EXPORT) // Hide Export when not available
perm_string.erase(perm_string.find_last_of("E"));
//getChild<LLUICtrl>("O:")->setValue("O: " + perm_string);
//getChildView("O:")->setVisible( TRUE);
getChild<LLUICtrl>("O:")->setValue("O: " + perm_string);
getChildView("O:")->setVisible( TRUE);
*/
getChild<LLUICtrl>("G:")->setValue("G: " + mask_to_string(group_mask_on));
getChildView("G:")->setVisible( TRUE);
perm_string = mask_to_string(owner_mask_on);
perm_string = mask_to_string(everyone_mask_on);
if (!supports_export && everyone_mask_on & PERM_EXPORT) // Hide Export when not available
perm_string.erase(perm_string.find_last_of("E"));
getChild<LLUICtrl>("E:")->setValue("E: " + perm_string);

View File

@@ -159,8 +159,6 @@ LLPreviewNotecard::LLPreviewNotecard(const std::string& name,
}
initMenu();
gAgentCamera.changeCameraToDefault();
}
LLPreviewNotecard::~LLPreviewNotecard()

View File

@@ -1447,6 +1447,7 @@ void LLPreviewLSL::saveIfNeeded(bool sync /*= true*/)
mPendingUploads = 0;
mScriptEd->mErrorList->deleteAllItems();
mScriptEd->mErrorList->setCommentText("");
mScriptEd->mEditor->makePristine();
// save off asset into file
@@ -2190,6 +2191,7 @@ void LLLiveLSLEditor::saveIfNeeded(bool sync /*= true*/)
mScriptEd->enableSave(FALSE);
mScriptEd->mEditor->makePristine();
mScriptEd->mErrorList->deleteAllItems();
mScriptEd->mErrorList->setCommentText("");
// set up the save on the local machine.
mScriptEd->mEditor->makePristine();

View File

@@ -40,8 +40,7 @@
#include "llcombobox.h"
#include "statemachine/aifilepicker.h"
#include "llfloaterinventory.h"
#include "llimagepng.h"
#include "llimagetga.h"
#include "llimage.h"
#include "llinventory.h"
#include "llnotificationsutil.h"
#include "llresmgr.h"
@@ -377,27 +376,16 @@ BOOL LLPreviewTexture::canSaveAs() const
return mIsCopyable && !mLoadingFullImage && mImage.notNull() && !mImage->isMissingAsset();
}
static bool sPng(false);
// virtual
void LLPreviewTexture::saveAsType(BOOL png)
void LLPreviewTexture::saveAs()
{
if( mLoadingFullImage )
return;
const LLViewerInventoryItem* item = getItem() ;
AIFilePicker* filepicker = AIFilePicker::create();
sPng = png;
if(png)
{
filepicker->open(item ? LLDir::getScrubbedFileName(item->getName()) + ".png" : LLStringUtil::null, FFSAVE_PNG, "", "image");
filepicker->run(boost::bind(&LLPreviewTexture::saveAs_continued, this, item, filepicker));
}
else
{
filepicker->open(item ? LLDir::getScrubbedFileName(item->getName()) + ".tga" : LLStringUtil::null, FFSAVE_TGA, "", "image");
filepicker->run(boost::bind(&LLPreviewTexture::saveAs_continued, this, item, filepicker));
}
filepicker->open(item ? LLDir::getScrubbedFileName(item->getName()) + ".png" : LLStringUtil::null, FFSAVE_IMAGE, "", "image");
filepicker->run(boost::bind(&LLPreviewTexture::saveAs_continued, this, item, filepicker));
}
void LLPreviewTexture::saveAs_continued(LLViewerInventoryItem const* item, AIFilePicker* filepicker)
@@ -446,16 +434,14 @@ void LLPreviewTexture::onFileLoadedForSave(BOOL success,
if( self && final && success )
{
//FIXME: There has to be a better way
LLPointer<LLImagePNG> image_png = new LLImagePNG;
LLPointer<LLImageTGA> image_tga = new LLImageTGA;
if( sPng ? !image_png->encode( src, 0.0 ) : !image_tga->encode( src ) )
LLPointer<LLImageFormatted> image = LLImageFormatted::createFromExtension(self->mSaveFileName);
if (!image || !image->encode(src, 0.0))
{
LLSD args;
args["FILE"] = self->mSaveFileName;
LLNotificationsUtil::add("CannotEncodeFile", args);
}
else if( sPng ? !image_png->save( self->mSaveFileName ) : !image_tga->save( self->mSaveFileName ) )
else if (!image->save(self->mSaveFileName))
{
LLSD args;
args["FILE"] = self->mSaveFileName;

View File

@@ -63,8 +63,7 @@ public:
virtual void draw();
virtual BOOL canSaveAs() const;
virtual void saveAs(){ saveAsType(false); }
void saveAsType(BOOL png);
virtual void saveAs();
void saveAs_continued(LLViewerInventoryItem const* item, AIFilePicker* filepicker);
virtual LLUUID getItemID();
virtual std::string getItemCreatorName();

View File

@@ -1551,6 +1551,7 @@ bool idle_startup()
{
name += " " + lastname;
}
if (gSavedSettings.getBOOL("LiruGridInTitle")) gWindowTitle += "- " + gHippoGridManager->getCurrentGrid()->getGridName() + " ";
gViewerWindow->getWindow()->setTitle(gWindowTitle += "- " + name);
// Pass the user information to the voice chat server interface.
LLVoiceClient::getInstance()->userAuthorized(name, gAgentID);

View File

@@ -2891,24 +2891,18 @@ class LLObjectEnableExport : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
LLPermissions perms;
bool new_value = LLSelectMgr::getInstance()->selectGetPermissions(perms) && perms.isOwned(); // At least one object, accumulated permissions of all objects.
ExportPolicy export_policy = LFSimFeatureHandler::instance().exportPolicy();
if (new_value && !(export_policy == ep_export_bit && (perms.getMaskEveryone() & PERM_EXPORT))) // No need to call allowExportBy if PERM_EXPORT is set on (all) root objects.
bool can_export_any = false;
LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
for (LLObjectSelection::iterator node = selection->begin(); node != selection->end(); ++node)
{
bool can_export_any = false;
LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
for (LLObjectSelection::iterator node = selection->begin(); node != selection->end(); ++node)
if ((*node)->mPermissions->allowExportBy(gAgent.getID(), export_policy))
{
if ((*node)->mPermissions->allowExportBy(gAgent.getID(), export_policy))
{
can_export_any = true;
break;
}
can_export_any = true;
break;
}
new_value = can_export_any;
}
gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value);
gMenuHolder->findControl(userdata["control"].asString())->setValue(can_export_any);
return true;
}
};
@@ -4117,6 +4111,11 @@ void reset_view_final( BOOL proceed )
return;
}
if (!gViewerWindow->getLeftMouseDown() && gAgentCamera.cameraThirdPerson() && gSavedSettings.getBOOL("ResetViewTurnsAvatar") && !gSavedSettings.getBOOL("FreezeTime"))
{
gAgentCamera.setFocusOnAvatar(TRUE, ANIMATE);
}
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
gAgentCamera.resetView(TRUE, TRUE);
gAgentCamera.setLookAt(LOOKAT_TARGET_CLEAR);

View File

@@ -541,19 +541,6 @@ class LLFileSavePreview : public view_listener_t
}
};
class LLFileSavePreviewPNG : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
LLFloater* top = gFloaterView->getFrontmost();
if (top)
{
top->saveAsType(true);
}
return true;
}
};
class LLFileTakeSnapshot : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@@ -1384,7 +1371,6 @@ void init_menu_file()
(new LLFileLocalAssetBrowser())->registerListener(gMenuHolder, "File.LocalAssetBrowser");
// </edit>
(new LLFileSavePreview())->registerListener(gMenuHolder, "File.SavePreview");
(new LLFileSavePreviewPNG())->registerListener(gMenuHolder, "File.SavePreviewPNG");
(new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot");
(new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk");
(new LLFileQuit())->registerListener(gMenuHolder, "File.Quit");

View File

@@ -2298,9 +2298,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
gIMMgr->processIMTypingStop(im_info);
}
// [/RLVa:KB]
// else if (offline == IM_ONLINE && !is_linden && is_busy && name != SYSTEM_FROM)
// else if (offline == IM_ONLINE && !is_linden && !is_muted && is_busy && name != SYSTEM_FROM)
// [RLVa:KB] - Checked: 2010-11-30 (RLVa-1.3.0c) | Modified: RLVa-1.3.0c
else if ( (offline == IM_ONLINE && !is_linden && is_busy && name != SYSTEM_FROM) && (gRlvHandler.canReceiveIM(from_id)) )
else if ( (offline == IM_ONLINE && !is_linden && !is_muted && is_busy && name != SYSTEM_FROM) && (gRlvHandler.canReceiveIM(from_id)) )
// [/RLVa:KB]
{
// return a standard "busy" message, but only do it to online IM
@@ -2732,7 +2732,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
case IM_GROUP_INVITATION:
{
//if (!is_linden && (is_busy || is_muted))
if ((is_busy || is_muted))
if (is_muted) return;
if (is_busy)
{
LLMessageSystem *msg = gMessageSystem;
busy_message(msg,from_id);
@@ -3327,7 +3328,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
payload["online"] = (offline == IM_ONLINE);
payload["sender"] = msg->getSender().getIPandPort();
if (is_busy)
if (!is_muted && is_busy)
{
busy_message(msg, from_id);
LLNotifications::instance().forceResponse(LLNotification::Params("OfferFriendship").payload(payload), 1);
@@ -4029,7 +4030,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
LLLocalSpeakerMgr::getInstance()->setSpeakerTyping(from_id, FALSE);
static_cast<LLVOAvatar*>(chatter)->stopTyping();
if (!is_muted && !is_busy)
if (!is_muted /*&& !is_busy*/)
{
static const LLCachedControl<bool> use_chat_bubbles("UseChatBubbles",false);
visible_in_chat_bubble = use_chat_bubbles;
@@ -4562,6 +4563,21 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
gAgent.getRegion()->getOriginGlobal());
gAgent.setRegion(regionp);
gObjectList.shiftObjects(shift_vector);
// Is this a really long jump?
if (shift_vector.length() > 2048.f * 256.f)
{
regionp->reInitPartitions();
gAgent.setRegion(regionp);
// Kill objects in the regions we left behind
for (LLWorld::region_list_t::const_iterator r = LLWorld::getInstance()->getRegionList().begin();
r != LLWorld::getInstance()->getRegionList().end(); ++r)
{
if (*r != regionp)
{
gObjectList.killObjects(*r);
}
}
}
gAssetStorage->setUpstream(msg->getSender());
gCacheName->setUpstream(msg->getSender());
gViewerThrottle.sendToSim();
@@ -6457,6 +6473,15 @@ bool handle_teleport_access_blocked(LLSD& llsdBlock)
return returnValue;
}
void home_position_set()
{
// save the home location image to disk
std::string snap_filename = gDirUtilp->getLindenUserDir();
snap_filename += gDirUtilp->getDirDelimiter();
snap_filename += SCREEN_HOME_FILENAME;
gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE);
}
bool attempt_standard_notification(LLMessageSystem* msgsystem)
{
// if we have additional alert data
@@ -6519,7 +6544,16 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
return true;
}
}
// HACK -- handle callbacks for specific alerts.
if (notificationID == "HomePositionSet")
{
home_position_set();
}
else if (notificationID == "YouDiedAndGotTPHome")
{
LLViewerStats::getInstance()->incStat(LLViewerStats::ST_KILLED_COUNT);
}
LLNotificationsUtil::add(notificationID, llsdBlock);
return true;
}
@@ -6596,11 +6630,7 @@ void process_alert_core(const std::string& message, BOOL modal)
}
else if( message == "Home position set." )
{
// save the home location image to disk
std::string snap_filename = gDirUtilp->getLindenUserDir();
snap_filename += gDirUtilp->getDirDelimiter();
snap_filename += SCREEN_HOME_FILENAME;
gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE);
home_position_set();
}
const std::string ALERT_PREFIX("ALERT: ");

View File

@@ -338,7 +338,11 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
// Create the object lists
initStats();
initPartitions();
}
void LLViewerRegion::initPartitions()
{
//create object partitions
//MUST MATCH declaration of eObjectPartitions
mImpl->mObjectPartition.push_back(new LLHUDPartition()); //PARTITION_HUD
@@ -357,6 +361,12 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
mImpl->mObjectPartition.push_back(NULL); //PARTITION_NONE
}
void LLViewerRegion::reInitPartitions()
{
std::for_each(mImpl->mObjectPartition.begin(), mImpl->mObjectPartition.end(), DeletePointer());
mImpl->mObjectPartition.clear();
initPartitions();
}
void LLViewerRegion::initStats()
{

View File

@@ -369,10 +369,12 @@ public:
};
void showReleaseNotes();
void reInitPartitions();
protected:
void disconnectAllNeighbors();
void initStats();
void initPartitions();
public:
LLWind mWind;

View File

@@ -685,6 +685,13 @@ void LLVoiceChannelProximal::activate()
// we're connected to a non-spatial channel, so disconnect.
LLVoiceClient::getInstance()->leaveNonSpatialChannel();
}
// Singu Note: Mic default state is OFF for local voice
if (LLVoiceClient::getInstance()->getUserPTTState() && LLVoiceClient::getInstance()->getPTTIsToggle() && gSavedSettings.getBOOL("AutoDisengageMic"))
{
LLVoiceClient::getInstance()->inputUserControlState(true);
}
LLVoiceChannel::activate();
}

View File

@@ -1204,7 +1204,7 @@ void LLWorldMapView::drawAgents()
{
F32 agents_scale = (sMapScale * 0.9f) / 256.f;
LLColor4 avatar_color = gColors.getColor( "MapAvatar" );
LLColor4 avatar_color = gSavedSettings.getColor( "MapAvatar" );
// LLColor4 friend_color = gColors.getColor( "MapFriend" );
for (handle_list_t::iterator iter = mVisibleRegions.begin(); iter != mVisibleRegions.end(); ++iter)
@@ -2137,6 +2137,7 @@ BOOL LLWorldMapView::handleDoubleClick( S32 x, S32 y, MASK mask )
}
default:
{
if (!gSavedSettings.getBOOL("DoubleClickTeleportMap")) return true;
if (LLWorldMap::getInstance()->isTracking())
{
LLWorldMap::getInstance()->setTrackingDoubleClick();

View File

@@ -5,15 +5,6 @@
<string name="CaptionTextAcctInfo">[ACCTTYPE]
[PAYMENTINFO]
[AGEVERIFICATION]</string>
<string name="AcctTypeResident">Einwohner</string>
<string name="AcctTypeTrial">Test</string>
<string name="AcctTypeCharterMember">Charta-Mitglied</string>
<string name="AcctTypeEmployee">Linden Lab-Mitarbeiter</string>
<string name="PaymentInfoUsed">Zahlungsinfo verwendet</string>
<string name="PaymentInfoOnFile">Zahlungsinfo archiviert</string>
<string name="NoPaymentInfoOnFile">Keine Zahlungsinfo archiviert</string>
<string name="AgeVerified">Altersgeprüft</string>
<string name="NotAgeVerified">Nicht altersgeprüft</string>
<button label="Kopiere Schlüssel" tool_tip="Schlüssel in die Zwischenablage kopieren" name="copy_key"/>
<button name="web_profile" label="Web Profil"/>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="Collada Export" title="Collada Export" width="600" height="260" can_close="true" can_minimize="true">
<string name="texture_progress">Collada Export: Saving textures ([COUNT] remaining)</string>
<text name="file name" follows="bottom|left" left="10" bottom="-48" height="20">File Name:</text>
<line_editor name="file name editor" follows="bottom|left" left_delta="60" bottom_delta="4" width="360" height="20"/>
<button name="browse button" label="Browse" follows="bottom|left" left_delta="363" bottom_delta="0" width="80" height="20">
<button.commit_callback function="ColladaExport.FilePicker"/>
</button>
<button name="export button" label="Export" follows="bottom|left" left_delta="83" bottom_delta="0" width="80" height="20">
<button.commit_callback function="ColladaExport.Export"/>
</button>
<panel border="true" left="10" bottom_delta="-88" height="80" width="200" follows="bottom|left" name="object info panel">
<text name="Object info" bottom="-20" height="20" left="5">Object Info</text>
<text name="Object Name" bottom_delta="-20" height="20" left="10">Name: [NAME]</text>
<text name="Exportable Prims" bottom_delta="-20" height="20" left="10">Exportable Prims: [COUNT]/[TOTAL]</text>
<text name="Exportable Textures" bottom_delta="-20" height="20">Exportable Textures: [COUNT]/[TOTAL]</text>
</panel>
<panel border="true" bottom_delta="-120" height="115" width="200" follows="bottom|left" name="options panel">
<text name="Object info" bottom="-20" height="20" left="5">Options</text>
<check_box name="texture export check" label="Export Textures" height="20" bottom_delta="-20" left="10" control_name="DAEExportTextures">
<check_box.commit_callback function="ColladaExport.TextureExport"/>
</check_box>
<combo_box name="texture type combo" bottom_delta="0" left_delta="120" height="20" width="60" control_name="DAEExportTexturesType">
<combo_item name="tga" value="0">TGA</combo_item>
<combo_item name="png" value="1">PNG</combo_item>
<combo_item name="j2c" value="2">J2C</combo_item>
<combo_item name="bmp" value="3">BMP</combo_item>
<combo_item name="jpg" value="4">JPG</combo_item>
<combo_box.commit_callback function="ColladaExport.TextureTypeCombo" />
</combo_box>
<check_box name="consolidate check" label="Consolidate faces" tool_tip="Export faces that have the same texture as one" bottom_delta="-20" left="10" height="20" control_name="DAEExportConsolidateMaterials"/>
<check_box name="skip transparent check" label="Skip transparent textures" bottom_delta="-20" height="20" control_name="DAEExportSkipTransparent"/>
<check_box name="texture params check" label="Apply texture params" bottom_delta="-20" height="20" control_name="DAEExportTextureParams"/>
</panel>
<scroll_container name="textures container" follows="all" bottom="-252" left_delta="205" width="380" height="200"/>
</floater>

View File

@@ -12,14 +12,17 @@
<string name="unavailable_text_label">Text chat is not available for this call.</string>
<string name="inventory_item_offered">Inventory item offered</string>
<flyout_button bottom="-37" height="20" label="Profile" left="5" name="instant_message_flyout" width="80" list_position="below">
<flyout_button_item label="History" name="history_btn" value="1"/>
<flyout_button_item label="Offer Teleport" name="profile_tele_btn" value="2"/>
<!--flyout_button_item label="Request Teleport" name="profile_tele_btn" value="3"/-->
<flyout_button_item label="Pay" name="profile_tele_btn" value="4"/>
<flyout_button_item label="Invite To Group" name="profile_tele_btn" value="5"/>
<flyout_button_item label="Request Teleport" name="request_teleport_item" value="3"/>
<flyout_button_item label="Invite To Group" name="group_invite_item" value="5"/>
</flyout_button>
<check_box bottom="-37" follows="top" height="20" left_delta="80" name="rp_mode">RP Mode</check_box>
<button bottom="-37" follows="left|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="80" name="start_call_btn" width="80"/>
<string name="ding on" value="Ding on new messages (On)"/>
<string name="ding off" value="Ding on new messages (Off)"/>
<string name="rp mode on" value="RP Mode (On)"/>
<string name="rp mode off" value="RP Mode (Off)"/>
<button bottom_delta="0" follows="left|top" height="20" left_delta="81" width="50" name="tp_btn" label="TP"/>
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="pay_btn" label="Pay"/>
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="history_btn" label="Log"/>
<button bottom="-37" follows="left|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="50" name="start_call_btn" width="80"/>
<button bottom="-37" follows="top" height="20" image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" label="End" name="end_call_btn" visible="false" width="80"/>
<panel border="false" bottom="-34" follows="left|top" height="20" left_delta="80" name="speaker_controls" width="100">
<volume_slider bottom="0" follows="bottom" height="15" increment="0.05" initial_val="0.5" max_val="1.0" min_val="0.0" name="speaker_volume" width="56"/>

View File

@@ -11,15 +11,18 @@
<string name="default_text_label">Click here to instant message.</string>
<string name="unavailable_text_label">Text chat is not available for this call.</string>
<string name="inventory_item_offered">Inventory item offered</string>
<flyout_button bottom="-20" follows="right|top" halign="center" height="20" label="Profile" left_delta="60" name="instant_message_flyout" width="80" list_position="below">
<flyout_button bottom="-20" follows="right|top" halign="center" height="20" label="Profile" left="280" name="instant_message_flyout" width="80" list_position="below">
<flyout_button_item label="History" name="history_btn" value="1"/>
<flyout_button_item label="Offer Teleport" name="profile_tele_btn" value="2"/>
<!--flyout_button_item label="Request Teleport" name="profile_tele_btn" value="3"/-->
<flyout_button_item label="Pay" name="profile_tele_btn" value="4"/>
<flyout_button_item label="Invite To Group" name="profile_tele_btn" value="5"/>
<flyout_button_item label="Request Teleport" name="request_teleport_item" value="3"/>
<flyout_button_item label="Pay" name="pay_item" value="4"/>
<flyout_button_item label="Invite To Group" name="group_invite_item" value="5"/>
</flyout_button>
<check_box bottom="-20" follows="right|top" height="20" left_delta="90" name="rp_mode">RP Mode</check_box>
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="67" name="start_call_btn" width="60"/>
<string name="ding on" value="Ding on new messages (On)"/>
<string name="ding off" value="Ding on new messages (Off)"/>
<string name="rp mode on" value="RP Mode (On)"/>
<string name="rp mode off" value="RP Mode (Off)"/>
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="81" name="start_call_btn" width="60"/>
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" scale_image="true" label="End" name="end_call_btn" width="24"/>
<panel mouse_opaque="false" border="false" bottom="-20" follows="right|top" height="20" left_delta="16" name="speaker_controls" width="60">
<volume_slider bottom="0" follows="bottom" height="20" increment="0.05" initial_val="0.5" max_val="1.0" min_val="0.0" name="speaker_volume" width="48"/>

View File

@@ -48,10 +48,10 @@
<on_click function="List.OfferTeleport"/>
<on_enable function="List.EnableAnySelected"/>
</menu_item_call>
<!--menu_item_call label="Request Teleport" name="Request Teleport">
<menu_item_call label="Request Teleport" name="Request Teleport">
<on_click function="List.RequestTeleport"/>
<on_visible function="List.EnableSingleSelected"/>
</menu_item_call-->
</menu_item_call>
<menu_item_separator/>
<menu_item_call label="Mute/Unmute" name="Mute/Unmute">
<on_click function="List.Mute"/>

View File

@@ -25,6 +25,9 @@
name="Task Remove" width="128">
<on_click filter="" function="Inventory.DoToSelected" userdata="delete" />
</menu_item_call>
<menu_item_call label="Reset" name="Task Reset">
<on_click filter="" function="Inventory.DoToSelected" userdata="reset_script" />
</menu_item_call>
<menu_item_call label="Set Not Running" name="Task Set Not Running">
<on_click filter="" function="Inventory.DoToSelected" userdata="stop_script" />
</menu_item_call>
@@ -240,6 +243,7 @@
mouse_opaque="true" name="Replace Outfit" width="128">
<on_click filter="" function="Inventory.DoToSelected" userdata="replaceoutfit" />
</menu_item_call>
<menu_item_separator name="Replace Remove Separator"/>
<menu_item_call bottom_delta="-18" height="18" label="Remove From Outfit" left="0"
mouse_opaque="true" name="Remove From Outfit" width="128">
<on_click filter="" function="Inventory.DoToSelected" userdata="removefromoutfit" />
@@ -284,9 +288,9 @@
mouse_opaque="true" name="Offer Teleport..." width="128">
<on_click filter="" function="Inventory.DoToSelected" userdata="lure" />
</menu_item_call>
<!--menu_item_call label="Request Teleport..." name="Request Teleport...">
<menu_item_call label="Request Teleport..." name="Request Teleport...">
<on_click filter="" function="Inventory.DoToSelected" userdata="request_lure" />
</menu_item_call-->
</menu_item_call>
<menu_item_call bottom_delta="-18" height="18" label="Start Conference Chat" left="0"
mouse_opaque="true" name="Conference Chat" width="128">
<on_click filter="" function="Inventory.BeginIMSession" userdata="selected" />

View File

@@ -53,10 +53,10 @@
<on_click function="Radar.TeleportTo"/>
<on_enable function="List.EnableSingleSelected"/>
</menu_item_call>
<!--menu_item_call label="Request Teleport" name="Request Teleport">
<menu_item_call label="Request Teleport" name="Request Teleport">
<on_click function="List.RequestTeleport"/>
<on_visible function="List.EnableSingleSelected"/>
</menu_item_call-->
</menu_item_call>
<menu_item_call label="Track/Untrack" name="Track/Untrack">
<on_click function="Radar.Track"/>
<on_enable function="List.EnableSingleSelected"/>

View File

@@ -67,16 +67,11 @@
</menu_item_call>
<menu_item_separator bottom="-121" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator2" width="243" />
<menu_item_call bottom="-140" enabled="true" height="19" label="Save Preview As (TGA)..." left="0"
<menu_item_call bottom="-140" enabled="true" height="19" label="Save Preview As..." left="0"
mouse_opaque="true" name="Save Preview As..." width="243">
<on_click function="File.SavePreview" userdata="" />
<on_enable function="File.EnableSaveAs" />
</menu_item_call>
<menu_item_call bottom="-140" enabled="true" height="19" label="Save Preview As (PNG)..." left="0"
mouse_opaque="true" name="Save Preview AsPNG..." width="243">
<on_click function="File.SavePreviewPNG" userdata="" />
<on_enable function="File.EnableSaveAs" />
</menu_item_call>
<menu_item_separator bottom="-148" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator3" width="243" />
<menu_item_call bottom="-167" enabled="true" height="19" label="Take Snapshot" left="0"

View File

@@ -9,33 +9,6 @@
[PAYMENTINFO]
[AGEVERIFICATION]
</string>
<string name="AcctTypeResident">
Resident
</string>
<string name="AcctTypeTrial">
Trial
</string>
<string name="AcctTypeCharterMember">
Charter Member
</string>
<string name="AcctTypeEmployee">
Linden Lab Employee
</string>
<string name="PaymentInfoUsed">
Payment Info Used
</string>
<string name="PaymentInfoOnFile">
Payment Info On File
</string>
<string name="NoPaymentInfoOnFile">
No Payment Info On File
</string>
<string name="AgeVerified">
Age-verified
</string>
<string name="NotAgeVerified">
Not Age-verified
</string>
<button bottom="-24" follows="left|top" halign="right" height="16" label="Copy Key:" left="4" font="SansSerifSmall" tool_tip="Copy key to clipboard" name="copy_key" width="70"/>
<name_editor bevel_style="in" border_style="line"
border_thickness="1" bottom="-24" enabled="false" follows="left|top"

View File

@@ -112,7 +112,7 @@ The following wildcards are available to enhance your autoresponses: #n for user
<check_box control_name="AntiSpamScripts" height="16" label="Scripts" name="Scripts" bottom_delta="0" left_delta="120"/>
<check_box control_name="AntiSpamTeleports" height="16" label="Teleport Offers" name="Teleport Offers" bottom_delta="0" left_delta="120"/>
<check_box control_name="AntiSpamGroupNotices" height="16" label="Group Notices" name="Group Notices" bottom_delta="0" left_delta="120"/>
<!--check_box control_name="AntiSpamTeleportRequests" height="16" label="Teleport Requests" name="Teleport Requests" left="14" bottom_delta="-20"/-->
<check_box control_name="AntiSpamTeleportRequests" height="16" label="Teleport Requests" name="Teleport Requests" left="14" bottom_delta="-20"/>
<text name="Except those from:" left="21" bottom_delta="-10">Except those from:</text>
<check_box control_name="AntiSpamNotMine" height="16" label="My objects" name="My objects" left="25" bottom_delta="-23"/>
<check_box control_name="AntiSpamNotFriends" height="16" label="My friends" name="My friends" bottom_delta="0" left_delta="120"/>

View File

@@ -45,6 +45,7 @@
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="1 1 1 1" control_name="AscentEstateOwnerColor" follows="top" height="47" label="Estate" left_delta="54" name="estate_owner_color_swatch" width="44" tool_tip="Color of Estate Managers"/>
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="0.6 0.6 1 1" control_name="AscentLindenColor" follows="top" height="47" label="Lindens" left_delta="54" name="linden_color_swatch" width="44" tool_tip="Color of Lindens"/>
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="0.8 1 1 1" control_name="AscentMutedColor" follows="top" height="47" label="Muted" left_delta="54" name="muted_color_swatch" width="44" tool_tip="Color of Muted"/>
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="0 1 0 1" control_name="MapAvatar" follows="top" height="47" label="Others" left_delta="54" name="others_color_swatch" width="44" tool_tip="Color of everyone else on the minimap and world map"/>
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="0.375 1 1 1" control_name="MoyMiniMapCustomColor" follows="top" height="47" label="Custom (Minimap)" left_delta="54" name="custom_color_swatch" width="44" tool_tip="Color of users picked out on the minimap only"/>
<text bottom_delta="-9" follows="top" height="10" left="20" name="chat_color_text">Use colors for chat:</text>
<check_box bottom_delta="-7" control_name="ColorFriendChat" follows="top" height="20" label="" left_delta="150" name="color_friend_check" width="44" tool_tip="Color Friend Chat"/>

View File

@@ -3205,10 +3205,21 @@ The
<string name="Stomach">Stomach</string>
<string name="Left Pec">Left Pec</string>
<string name="Right Pec">Right Pec</string>
<string name="Neck">Neck</string>
<string name="Root">Root</string>
<string name="Invalid Attachment">Invalid Attachment Point</string>
<string name="Neck">Neck</string>
<string name="Root">Root</string>
<string name="Invalid Attachment">Invalid Attachment Point</string>
<!-- Account types, see LLAvatarPropertiesProcessor -->
<string name="AcctTypeResident">Resident</string>
<string name="AcctTypeTrial">Trial</string>
<string name="AcctTypeCharterMember">Charter Member</string>
<string name="AcctTypeEmployee">Linden Lab Employee</string>
<string name="PaymentInfoUsed">Payment Info Used</string>
<string name="PaymentInfoOnFile">Payment Info On File</string>
<string name="NoPaymentInfoOnFile">No Payment Info On File</string>
<string name="AgeVerified">Age-verified</string>
<string name="NotAgeVerified">Not Age-verified</string>
<!-- HUD Position -->
<string name="Center 2">Center 2</string>
<string name="Top Right">Top Right</string>

View File

@@ -34,15 +34,16 @@
Ofrecido un Item de Inventario
</string>
<flyout_button label="Perfil" name="instant_message_flyout">
<flyout_button_item label="Historial" name="history_btn"/>
<flyout_button_item label="Ofrecer Teleporte" name="profile_tele_btn"/>
<!--flyout_button_item label="Solicitar Teleporte" name="profile_tele_btn"/-->
<flyout_button_item label="Pagar" name="profile_tele_btn"/>
<flyout_button_item label="Invitar a Grupo" name="profile_tele_btn"/>
</flyout_button>
<check_box name="rp_mode">
Modo RP
</check_box>
<flyout_button_item label="Solicitar Teleporte" name="request_teleport_item"/>
<flyout_button_item label="Invitar al Grupo" name="group_invite_item"/>
</flyout_button>
<string name="ding on" value="Timbre en Nuevos Mensajes (Encendido)"/>
<string name="ding off" value="Timbre en Nuevos Mensajes (Apagado)"/>
<string name="rp mode on" value="Modo RP (Encendido)"/>
<string name="rp mode off" value="Modo RP (Apagado)"/>
<button name="tp_btn" label="TP"/>
<button name="pay_btn" label="Pagar"/>
<button name="history_btn" label="Historial" width="60" />
<button label="Llamar" name="start_call_btn"/>
<button label="Colgar" name="end_call_btn"/>
<panel name="speaker_controls">

View File

@@ -33,13 +33,14 @@
<flyout_button label="Perfil" name="instant_message_flyout">
<flyout_button_item label="Historial" name="history_btn"/>
<flyout_button_item label="Ofrecer Teleporte" name="profile_tele_btn"/>
<!--flyout_button_item label="Solicitar Teleporte" name="profile_tele_btn"/-->
<flyout_button_item label="Pagar" name="profile_tele_btn"/>
<flyout_button_item label="Invitar a Grupo" name="profile_tele_btn" value="5"/>
<flyout_button_item label="Solicitar Teleporte" name="request_teleport_item"/>
<flyout_button_item label="Pagar" name="pay_item"/>
<flyout_button_item label="Invitar a Grupo" name="group_invite_item"/>
</flyout_button>
<check_box left_delta="75" name="rp_mode">
Modo RP
</check_box>
<string name="ding on" value="Timbre en Nuevos Mensajes (Encendido)"/>
<string name="ding off" value="Timbre en Nuevos Mensajes (Apagado)"/>
<string name="rp mode on" value="Modo RP (Encendido)"/>
<string name="rp mode off" value="Modo RP (Apagado)"/>
<button label="Llamar" left_delta="67" name="start_call_btn" width="60"/>
<button label="Finalizar" name="end_call_btn" width="24"/>
<panel left_delta="16" name="speaker_controls" width="60">

View File

@@ -11,7 +11,7 @@
<menu_item_call label="Quitar Amigo" name="Remove Friend"/>
<menu_item_call label="Invitar a Grupo" name="Invite To Group"/>
<menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/>
<!--menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>-->
<menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>
<menu_item_separator/>
<menu_item_call label="Ignorar/No Ignorar" name="Mute/Unmute"/>
<menu_item_call label="Reportar Abuso" name="Report Abuse"/>

View File

@@ -71,6 +71,8 @@
<menu_item_separator name="Animation Separator" />
<menu_item_call name="Animation Play" label="Reproducir en el mundo"/>
<menu_item_call name="Animation Audition" label="Reproducir localmente" />
<menu_item_separator name="Send Instant Message Separator" />
<menu_item_call label="Perfil Web" name="Web Profile"/>
<menu_item_call name="Send Instant Message" label="Enviar MI"/>
<menu_item_call name="Offer Teleport..." label="Ofrecer Teleporte..."/>
<menu_item_call label="Solicitar Teleporte..." name="Request Teleport..."/>

View File

@@ -13,7 +13,7 @@
<menu_item_call label="Invitar a Grupo" name="Invite To Group"/>
<menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/>
<menu_item_call label="Teleportar a" name="Teleport To"/>
<!--menu_item_call label="Request Teleport" name="Request Teleport"/-->
<menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>
<menu_item_call label="Rastrear/No Rastrear" name="Track/Untrack"/>
<menu_item_call label="Copiar UUID" name="Copy Key"/>
</menu>

View File

@@ -13,8 +13,7 @@
<menu_item_call label="Minimizar todas las Ventanas" name="Minimize All Windows"/>
<menu_item_call label="Cerrar Ventana" name="Close Window"/>
<menu_item_call label="Cerrar todas las Ventanas" name="Close All Windows"/>
<menu_item_call label="Guardar Vista Previa Como (TGA)..." name="Save Preview As..."/>
<menu_item_call label="Guardar Vista Previa Como (PNG)..." name="Save Preview AsPNG..."/>
<menu_item_call label="Guardar Vista Previa Como..." name="Save Preview As..."/>
<menu_item_call label="Hacer una Foto" name="Take Snapshot"/>
<menu_item_call label="Guardar Foto en Disco" name="Snapshot to Disk"/>
<menu_item_call label="Salir" name="Quit"/>

View File

@@ -7,33 +7,6 @@
[PAYMENTINFO]
[AGEVERIFICATION]
</string>
<string name="AcctTypeResident">
Residente
</string>
<string name="AcctTypeTrial">
Prueba
</string>
<string name="AcctTypeCharterMember">
Miembro Fundador
</string>
<string name="AcctTypeEmployee">
Empleado de Linden Lab
</string>
<string name="PaymentInfoUsed">
Información de Pago utilizada
</string>
<string name="PaymentInfoOnFile">
Información de Pago en Archivo
</string>
<string name="NoPaymentInfoOnFile">
Sin Información de Pago
</string>
<string name="AgeVerified">
Edad Verificada
</string>
<string name="NotAgeVerified">
Edad No Verificada
</string>
<button label="Copiar Key:" tool_tip="Copyiar key al portapapeles" name="copy_key"/>
<name_editor name="avatar_key"/>
<button name="web_profile" label="Perfil Web"/>

View File

@@ -56,6 +56,7 @@
<color_swatch label="Estado" name="estate_owner_color_swatch" tool_tip="Color para Administrador de Regiones"/>
<color_swatch label="Lindens" name="linden_color_swatch" tool_tip="Color para empleados de Linden Lab"/>
<color_swatch label="Ignorados" name="muted_color_swatch" tool_tip="Color para usuarios ignorados o bloqueados"/>
<color_swatch label="Otros" name="others_color_swatch" tool_tip="Color para todos los demás usuarios en el mapa y el mini mapa"/>
<color_swatch label="Pers.(Minimapa)" name="custom_color_swatch" tool_tip="Color solamente para usuarios marcados en el minimapa"/>
<text name="chat_color_text" bottom_delta="-13" >
Usar colores para chat:

View File

@@ -8,10 +8,13 @@
<string value="Permitir múltiples instancias de [APP_NAME] usar el voice simultáneamente (req. reiniciar)" name="multivoice_label"/>
<radio_group name="ear_location">
<radio_item name="0">
Oir el chat desde la posición de la cámara.
Escuchar chat de voz desde la posición de la cámara.
</radio_item>
<radio_item name="1">
Oir el chat desde la posición del avatar.
Escuchar chat de voz desde la posición del avatar.
</radio_item>
<radio_item name="3">
Escuchar chat de voz desde cualquier posición.
</radio_item>
</radio_group>
<text name="push_to_talk_heading">

View File

@@ -3745,7 +3745,18 @@ Where tag = tag string to match. Removes bot's matching the tag.
<string name="Right Pec">Pectoral Derecho</string>
<string name="Neck">Cuello</string>
<string name="Root">Base</string>
<string name="Invalid Attachment">Punto de anexión inválido</string>
<string name="Invalid Attachment">Punto de anexión inválido</string>
<!-- Account types, see LLAvatarPropertiesProcessor -->
<string name="AcctTypeResident">Resident</string>
<string name="AcctTypeTrial">Trial</string>
<string name="AcctTypeCharterMember">Charter Member</string>
<string name="AcctTypeEmployee">Linden Lab Employee</string>
<string name="PaymentInfoUsed">Payment Info Used</string>
<string name="PaymentInfoOnFile">Payment Info On File</string>
<string name="NoPaymentInfoOnFile">No Payment Info On File</string>
<string name="AgeVerified">Age-verified</string>
<string name="NotAgeVerified">Not Age-verified</string>
<!-- HUD Position -->
<string name="Center 2">Centro 2</string>

View File

@@ -12,8 +12,7 @@
<menu_item_separator/>
<menu_item_call label="Définir les droits par défaut " name="perm prefs"/>
<menu_item_separator/>
<menu_item_call label="Enregistrer la texture sur le disque dur en TGA" name="Save Preview As..."/>
<menu_item_call label="Enregistrer la texture sur le disque dur en PNG" name="Save Preview AsPNG..."/>
<menu_item_call label="Enregistrer la texture sur le disque" name="Save Preview As..."/>
<menu_item_separator/>
<menu_item_call label="Minimiser toutes les fenêtres" name="Minimize All Windows"/>

View File

@@ -7,36 +7,6 @@
[PAYMENTINFO]
[AGEVERIFICATION]
</string>
<string name="AcctTypeResident">
Résident
</string>
<string name="AcctTypeTrial">
Essai
</string>
<string name="AcctTypeCharterMember">
Membre originaire
</string>
<string name="AcctTypeEmployee">
Employé(e) de Linden Lab
</string>
<string name="PaymentInfoUsed">
Infos de paiement utilisées
</string>
<string name="PaymentInfoOnFile">
Infos de paiement enregistrées
</string>
<string name="NoPaymentInfoOnFile">
Aucune info de paiement
</string>
<string name="AgeVerified">
Âge vérifié
</string>
<string name="NotAgeVerified">
Âge non vérifié
</string>
<text name="Name:">
Nom:
</text>
<text name="online_yes" width="151">
Actuellement connecté(e)
</text>

View File

@@ -2,36 +2,6 @@
<panel name="Panel Avatar" width="495">
<tab_container name="tab" width="484">
<panel label="2nd Life" name="2nd Life" width="483">
<string name="AcctTypeResident">
Residente
</string>
<string name="AcctTypeTrial">
Teste
</string>
<string name="AcctTypeCharterMember">
Estatuto do membro
</string>
<string name="AcctTypeEmployee">
Contratado da Linden Lab.
</string>
<string name="PaymentInfoUsed">
Infor. de pagamento utilizadas
</string>
<string name="PaymentInfoOnFile">
Infor. de pagamento no arquivo.
</string>
<string name="NoPaymentInfoOnFile">
Sem infor. de pagamento no arquivo
</string>
<string name="AgeVerified">
Idade Verificada
</string>
<string name="NotAgeVerified">
Idade não Verificada
</string>
<text name="Name:">
Nome:
</text>
<text name="online_yes" width="176">
Atualmente Online
</text>

View File

@@ -329,6 +329,9 @@ void AIFilePicker::open(std::string const& filename, ESaveFilter filter, std::st
case FFSAVE_PHYSICS:
mFilter = "physics";
break;
case FFSAVE_IMAGE:
mFilter = "image";
break;
}
}

View File

@@ -91,7 +91,8 @@ enum ESaveFilter
FFSAVE_LANDMARK,
FFSAVE_AO,
FFSAVE_BLACKLIST,
FFSAVE_PHYSICS
FFSAVE_PHYSICS,
FFSAVE_IMAGE,
};
/*

View File

@@ -134,6 +134,8 @@ static LLFilePicker::ESaveFilter str2savefilter(std::string const& filter)
return LLFilePicker::FFSAVE_BLACKLIST;
else if (filter == "physics")
return LLFilePicker::FFSAVE_PHYSICS;
else if (filter == "image")
return LLFilePicker::FFSAVE_IMAGE;
else
return LLFilePicker::FFSAVE_ALL;
}

View File

@@ -49,7 +49,7 @@ LLFilePicker LLFilePicker::sInstance;
#define AO_FILTER L"Animation Override (*.ao)\0*.ao\0"
#define BLACKLIST_FILTER L"Asset Blacklist (*.blacklist)\0*.blacklist\0"
// </edit>
#define ANIM_FILTER L"Animations (*.bvh; *.anim)\0*.bvh\0*.anim\0"
#define ANIM_FILTER L"Animations (*.bvh; *.anim)\0*.bvh;*.anim\0"
#define COLLADA_FILTER L"Scene (*.dae)\0*.dae\0"
#ifdef _CORY_TESTING
#define GEOMETRY_FILTER L"SL Geometry (*.slg)\0*.slg\0"
@@ -692,6 +692,18 @@ bool LLFilePickerBase::getSaveFile(ESaveFilter filter, std::string const& filena
L"Landmarks (*.phy)\0*.phy\0" \
L"\0";
break;
case FFSAVE_IMAGE:
mOFN.lpstrDefExt = NULL;
mOFN.lpstrFilter =
L"Image (*.bmp *.dxt *.jpg *.jpeg *.j2c *.mip *.png *.tga)\0*.bmp;*.dxt;*.jpg;*.jpeg;*.j2c;*.mip;*.png;*.tga\0" \
L"PNG Image (*.png)\0*.png\0" \
L"Targa Image (*.tga)\0*.tga\0" \
L"Bitmap Image (*.bmp)\0*.bmp\0" \
L"JPEG Image (*.jpg *.jpeg)\0*.jpg;*.jpeg\0" \
L"Compressed Image (*.j2c)\0*.j2c\0" \
L"DXT Image (*.dxt *.mip)\0*.dxt;*.mip\0" \
L"\0";
break;
// </edit>
default:
return FALSE;
@@ -1423,6 +1435,21 @@ static std::string add_imageload_filter_to_gtkchooser(GtkWindow *picker)
return filtername;
}
static std::string add_imagesave_filter_to_gtkchooser(GtkWindow *picker)
{
GtkFileFilter *gfilter = gtk_file_filter_new();
gtk_file_filter_add_mime_type(gfilter, "image/bmp");
gtk_file_filter_add_pattern(gfilter, "*.dxt");
gtk_file_filter_add_mime_type(gfilter, "image/jpeg");
gtk_file_filter_add_pattern(gfilter, "*.j2c");
gtk_file_filter_add_pattern(gfilter, "*.mip");
gtk_file_filter_add_mime_type(gfilter, "image/png");
gtk_file_filter_add_pattern(gfilter, "*.tga");
std::string filtername = LLTrans::getString("image_files") + "(*.bmp; *.dxt; *.jpg; *.jpeg; *.j2c; *.mip; *.png; *.tga)";
add_common_filters_to_gtkchooser(gfilter, picker, filtername);
return filtername;
}
static std::string add_script_filter_to_gtkchooser(GtkWindow *picker)
{
return add_simple_mime_filter_to_gtkchooser(picker, "text/plain",
@@ -1497,6 +1524,10 @@ bool LLFilePickerBase::getSaveFile(ESaveFilter filter, std::string const& filena
caption += add_script_filter_to_gtkchooser(picker);
suggest_ext = ".lsl";
break;
case FFSAVE_IMAGE:
caption += add_imagesave_filter_to_gtkchooser(picker);
suggest_ext = ".png";
break;
default:;
break;
}

View File

@@ -113,6 +113,7 @@ public:
FFSAVE_AO = 35,
FFSAVE_BLACKLIST = 36,
FFSAVE_PHYSICS = 37,
FFSAVE_IMAGE = 38,
// </edit>
};