Merge remote-tracking branch 'lirusaito/master'

This commit is contained in:
Latif Khalifa
2013-04-25 07:27:13 +02:00
20 changed files with 384 additions and 180 deletions

View File

@@ -15151,6 +15151,17 @@ This should be as low as possible, but too low may break functionality</string>
<key>Value</key> <key>Value</key>
<integer>0</integer> <integer>0</integer>
</map> </map>
<key>UseTypingBubbles</key>
<map>
<key>Comment</key>
<string>Show typing indicator in avatar nametags</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>UseDebugMenus</key> <key>UseDebugMenus</key>
<map> <map>
<key>Comment</key> <key>Comment</key>

View File

@@ -329,6 +329,7 @@ void LLPrefsAscentChat::refreshValues()
mHideTypingNotification = gSavedSettings.getBOOL("AscentHideTypingNotification"); mHideTypingNotification = gSavedSettings.getBOOL("AscentHideTypingNotification");
mShowGroupNameInChatIM = gSavedSettings.getBOOL("OptionShowGroupNameInChatIM"); mShowGroupNameInChatIM = gSavedSettings.getBOOL("OptionShowGroupNameInChatIM");
mShowDisplayNameChanges = gSavedSettings.getBOOL("ShowDisplayNameChanges"); mShowDisplayNameChanges = gSavedSettings.getBOOL("ShowDisplayNameChanges");
mUseTypingBubbles = gSavedSettings.getBOOL("UseTypingBubbles");
mPlayTypingSound = gSavedSettings.getBOOL("PlayTypingSound"); mPlayTypingSound = gSavedSettings.getBOOL("PlayTypingSound");
mHideNotificationsInChat = gSavedSettings.getBOOL("HideNotificationsInChat"); mHideNotificationsInChat = gSavedSettings.getBOOL("HideNotificationsInChat");
mEnableMUPose = gSavedSettings.getBOOL("AscentAllowMUpose"); mEnableMUPose = gSavedSettings.getBOOL("AscentAllowMUpose");
@@ -545,6 +546,7 @@ void LLPrefsAscentChat::cancel()
gSavedSettings.setBOOL("AscentHideTypingNotification", mHideTypingNotification); gSavedSettings.setBOOL("AscentHideTypingNotification", mHideTypingNotification);
gSavedSettings.setBOOL("OptionShowGroupNameInChatIM", mShowGroupNameInChatIM); gSavedSettings.setBOOL("OptionShowGroupNameInChatIM", mShowGroupNameInChatIM);
gSavedSettings.setBOOL("ShowDisplayNameChanges", mShowDisplayNameChanges); gSavedSettings.setBOOL("ShowDisplayNameChanges", mShowDisplayNameChanges);
gSavedSettings.setBOOL("UseTypingBubbles", mUseTypingBubbles);
gSavedSettings.setBOOL("PlayTypingSound", mPlayTypingSound); gSavedSettings.setBOOL("PlayTypingSound", mPlayTypingSound);
gSavedSettings.setBOOL("HideNotificationsInChat", mHideNotificationsInChat); gSavedSettings.setBOOL("HideNotificationsInChat", mHideNotificationsInChat);
gSavedSettings.setBOOL("AscentAllowMUpose", mEnableMUPose); gSavedSettings.setBOOL("AscentAllowMUpose", mEnableMUPose);

View File

@@ -66,6 +66,7 @@ protected:
BOOL mHideTypingNotification; BOOL mHideTypingNotification;
BOOL mShowGroupNameInChatIM; BOOL mShowGroupNameInChatIM;
bool mShowDisplayNameChanges; bool mShowDisplayNameChanges;
bool mUseTypingBubbles;
BOOL mPlayTypingSound; BOOL mPlayTypingSound;
BOOL mHideNotificationsInChat; BOOL mHideNotificationsInChat;
BOOL mEnableMUPose; BOOL mEnableMUPose;

View File

@@ -4,14 +4,20 @@ Second Life - Linux Voice Support README
WHAT IS IT? WHAT IS IT?
-=-=-=-=-=- -=-=-=-=-=-
Linux Voice Support is a new feature in testing which allows users Linux Voice Support is a feature in testing which allows users of the Linux
of the Linux Second Life client to participate in voice-chat with other Second Life client to participate in voice-chat with other residents and
residents and groups inside Second Life, with an appropriate groups inside Second Life, with an appropriate headset/microphone.
headset/microphone.
Linux Voice Support is currently EXPERIMENTAL and is known to still Linux Voice Support is currently EXPERIMENTAL and is known to still
have some compatibility issues. have some compatibility issues.
SINGULARITY MULTI-VOICE
-=-=-=-=-=-=-=-=-=-=-=-
Singularity multi-voice is an experimental feature that allows you to run multiple
SLVoice daemons at the same time, in order to do this, the debug setting VoiceMultiInstance
must be TRUE, this allows multiple instances of the viewer to run concurrently and
each connect to voice.
REQUIREMENTS REQUIREMENTS
-=-=-=-=-=-= -=-=-=-=-=-=
@@ -29,6 +35,13 @@ systems:
* Fedora Core 6 with (unknown) audio chipset * Fedora Core 6 with (unknown) audio chipset
* Ubuntu 8.04 (Hardy) with (unknown) audio chipset * Ubuntu 8.04 (Hardy) with (unknown) audio chipset
TESTING YOUR SETTINGS
-=-=-=-=-=-=-=-=-=-=-
* The Second Life region 'Voice Echo Canyon' is a great place for testing
your hardware settings and quality - it will 'echo' your voice back to you
when you speak.
KNOWN PROBLEMS KNOWN PROBLEMS
-=-=-=-=-=-=-= -=-=-=-=-=-=-=
@@ -41,12 +54,12 @@ TROUBLESHOOTING
PROBLEM 1: I don't see a white dot over the head of my avatar or other PROBLEM 1: I don't see a white dot over the head of my avatar or other
Voice-using avatars. Voice-using avatars.
SOLUTION: SOLUTION:
a. Ensure that 'Enable voice chat' is enabled in the Voice Chat a. Ensure that 'Enable voice chat' is enabled in the 'Voice Chat' section of the
preferences window and that you are in a voice-enabled area (you Preferences window, and that you are in a voice-enabled area
will see a blue headphone icon in the SL menu-bar). (you will see a blue headphone icon in the SL menu-bar).
b. If the above does not help, exit Second Life and ensure that any b. If the above does not help, exit Second Life and ensure that any
remaining 'SLVoice' processes (as reported by 'ps', 'top' or similar) remaining 'SLVoice' processes (as reported by 'ps', 'top' or similar)
are killed. are killed before restarting.
PROBLEM 2: I have a white dot over my head but I never see (or hear!) anyone PROBLEM 2: I have a white dot over my head but I never see (or hear!) anyone
except myself listed in the Active Speakers dialog when I'm sure that other except myself listed in the Active Speakers dialog when I'm sure that other
@@ -65,12 +78,13 @@ c. Update to the latest version of ALSA manually. For a guide, see the
PROBLEM 3: I can hear other people, but they cannot hear me. PROBLEM 3: I can hear other people, but they cannot hear me.
SOLUTION: SOLUTION:
a. Ensure that you have the 'Talk' button activated while you are trying to a. Ensure that you have the 'Talk' button (at the bottom of the Second Life
speak. window)activated while you are trying to speak.
b. Ensure that your microphone jack is inserted into the correct socket of your b. Ensure that your microphone jack is inserted into the correct socket of your
sound card, where appropriate. sound card, where appropriate.
c. Use your system mixer-setting program or the 'alsamixer' program to ensure c. Use your system mixer-setting program (such as the PulseAudio 'volume
that microphone input is set as the active input source and is not muted. control' applet or the ALSA 'alsamixer' program) to ensure that microphone
input is set as the active input source and is not muted.
d. Verify that audio input works in other applications, i.e. Audacity d. Verify that audio input works in other applications, i.e. Audacity
PROBLEM 4: Other people just hear bursts of loud noise when I speak. PROBLEM 4: Other people just hear bursts of loud noise when I speak.

View File

@@ -15,7 +15,7 @@ Life itself - please see <http://www.secondlife.com/whatis/>.
5.3. Blank window after minimizing it 5.3. Blank window after minimizing it
5.4. Audio 5.4. Audio
5.5. 'Alt' key for camera controls doesn't work 5.5. 'Alt' key for camera controls doesn't work
5.6. In-world streaming movie/music playback 5.6. In-world streaming movie, music and Flash playback
6. Advanced Troubleshooting 6. Advanced Troubleshooting
6.1. Audio 6.1. Audio
6.2. OpenGL 6.2. OpenGL
@@ -75,10 +75,11 @@ Life Linux client is very similar to that for Windows, as detailed at:
3. INSTALLING & RUNNING 3. INSTALLING & RUNNING
-=-=-=-=-=-=-=-=-=-=-=- -=-=-=-=-=-=-=-=-=-=-=-
The Second Life Linux client entirely runs out of the directory you have The Singularity Linux client can entirely run from the directory you have
unpacked it into - no installation step is required. unpacked it into - no installation step is required. If you wish to
perform a separate installation step anyway, you may run './install.sh'
Run ./secondlife from the installation directory to start Second Life. Run ./singularity from the installation directory to start Singularity.
For in-world MOVIE and MUSIC PLAYBACK, you will need (32-bit) GStreamer 0.10 For in-world MOVIE and MUSIC PLAYBACK, you will need (32-bit) GStreamer 0.10
installed on your system. This is optional - it is not required for general installed on your system. This is optional - it is not required for general
@@ -168,12 +169,15 @@ SOLUTION:- Some window managers eat the Alt key for their own purposes; you
example, the 'Windows' key!) which will allow the Alt key to function example, the 'Windows' key!) which will allow the Alt key to function
properly with mouse actions in Second Life and other applications. properly with mouse actions in Second Life and other applications.
PROBLEM 6:- In-world movie and/or music playback doesn't work for me. PROBLEM 6:- In-world movie, music, or Flash playback doesn't work for me.
SOLUTION:- You need to have a working installation of GStreamer 0.10; this SOLUTION:- You need to have a working installation of GStreamer 0.10; this
is usually an optional package for most versions of Linux. If you have is usually an optional package for most versions of Linux. If you have
installed GStreamer 0.10 and you can play some music/movies but not others installed GStreamer 0.10 and you can play some music/movies but not others
then you need to install a wider selection of GStreamer plugins, either then you need to install a wider selection of GStreamer plugins, either
from your vendor or an appropriate third party. from your vendor (i.e. the 'Ugly' plugins) or an appropriate third party.
For Flash playback, you need to have Flash 10 installed for your normal
web browser (for example, Firefox). PulseAudio is required for Flash
volume control / muting to fully function inside Second Life.
6. ADVANCED TROUBLESHOOTING 6. ADVANCED TROUBLESHOOTING

View File

@@ -0,0 +1,106 @@
#!/bin/bash
# Install Singularity Viewer. This script can install the viewer both
# system-wide and for an individual user.
VT102_STYLE_NORMAL='\E[0m'
VT102_COLOR_RED='\E[31m'
SCRIPTSRC=`readlink -f "$0" || echo "$0"`
RUN_PATH=`dirname "${SCRIPTSRC}" || echo .`
tarball_path=${RUN_PATH}
function prompt()
{
local prompt=$1
local input
echo -n "$prompt"
while read input; do
case $input in
[Yy]* )
return 1
;;
[Nn]* )
return 0
;;
* )
echo "Please enter yes or no."
echo -n "$prompt"
esac
done
}
function die()
{
warn $1
exit 1
}
function warn()
{
echo -n -e $VT102_COLOR_RED
echo $1
echo -n -e $VT102_STYLE_NORMAL
}
function homedir_install()
{
warn "You are not running as a privileged user, so you will only be able"
warn "to install Singularity Viewer in your home directory. If you"
warn "would like to install Singularity Viewer system-wide, please run"
warn "this script as the root user, or with the 'sudo' command."
echo
prompt "Proceed with the installation? [Y/N]: "
if [[ $? == 0 ]]; then
exit 0
fi
install_to_prefix "$HOME/.singularity-install"
$HOME/.singularity-install/refresh_desktop_app_entry.sh
}
function root_install()
{
local default_prefix="/opt/singularity-install"
echo -n "Enter the desired installation directory [${default_prefix}]: ";
read
if [[ "$REPLY" = "" ]] ; then
local install_prefix=$default_prefix
else
local install_prefix=$REPLY
fi
install_to_prefix "$install_prefix"
mkdir -p /usr/local/share/applications
${install_prefix}/refresh_desktop_app_entry.sh
}
function install_to_prefix()
{
test -e "$1" && backup_previous_installation "$1"
mkdir -p "$1" || die "Failed to create installation directory!"
echo " - Installing to $1"
cp -a "${tarball_path}"/* "$1/" || die "Failed to complete the installation!"
}
function backup_previous_installation()
{
local backup_dir="$1".backup-$(date -I)
echo " - Backing up previous installation to $backup_dir"
mv "$1" "$backup_dir" || die "Failed to create backup of existing installation!"
}
if [ "$UID" == "0" ]; then
root_install
else
homedir_install
fi

View File

@@ -0,0 +1,36 @@
#!/bin/bash
SCRIPTSRC=`readlink -f "$0" || echo "$0"`
RUN_PATH=`dirname "${SCRIPTSRC}" || echo .`
install_prefix=${RUN_PATH}
function install_desktop_entry()
{
local installation_prefix="$1"
local desktop_entries_dir="$2"
local desktop_entry="\
[Desktop Entry]\n\
Name=Singularity\n\
Comment=Client for Online Virtual Worlds, such as Second Life\n\
Exec=${installation_prefix}/singularity\n\
Icon=${installation_prefix}/singularity_icon.png\n\
Terminal=false\n\
Type=Application\n\
Categories=Application;Network;\n\
StartupNotify=true\n\
X-Desktop-File-Install-Version=3.0"
echo " - Installing menu entries in ${desktop_entries_dir}"
mkdir -vp "${desktop_entries_dir}"
echo -e $desktop_entry > "${desktop_entries_dir}/singularity-viewer.desktop" || "Failed to install application menu!"
}
if [ "$UID" == "0" ]; then
# system-wide
install_desktop_entry "$install_prefix" /usr/local/share/applications
else
# user-specific
install_desktop_entry "$install_prefix" "$HOME/.local/share/applications"
fi

View File

@@ -4,10 +4,10 @@
## These options are for self-assisted troubleshooting during this beta ## These options are for self-assisted troubleshooting during this beta
## testing phase; you should not usually need to touch them. ## testing phase; you should not usually need to touch them.
## - Avoids using any OpenAL audio driver.
#export LL_BAD_OPENAL_DRIVER=x
## - Avoids using any FMOD Ex audio driver. ## - Avoids using any FMOD Ex audio driver.
#export LL_BAD_FMODEX_DRIVER=x #export LL_BAD_FMODEX_DRIVER=x
## - Avoids using any OpenAL audio driver.
#export LL_BAD_OPENAL_DRIVER=x
## - Avoids using any FMOD audio driver. ## - Avoids using any FMOD audio driver.
#export LL_BAD_FMOD_DRIVER=x #export LL_BAD_FMOD_DRIVER=x
@@ -20,7 +20,6 @@
## - Avoids using the FMOD or FMOD Ex ESD audio driver. ## - Avoids using the FMOD or FMOD Ex ESD audio driver.
#export LL_BAD_FMOD_ESD=x #export LL_BAD_FMOD_ESD=x
## - Avoids the optional OpenGL extensions which have proven most problematic ## - Avoids the optional OpenGL extensions which have proven most problematic
## on some hardware. Disabling this option may cause BETTER PERFORMANCE but ## on some hardware. Disabling this option may cause BETTER PERFORMANCE but
## may also cause CRASHES and hangs on some unstable combinations of drivers ## may also cause CRASHES and hangs on some unstable combinations of drivers
@@ -109,6 +108,10 @@ cd "${RUN_PATH}"
# Re-register the secondlife:// protocol handler every launch, for now. # Re-register the secondlife:// protocol handler every launch, for now.
./register_secondlifeprotocol.sh ./register_secondlifeprotocol.sh
# Re-register the application with the desktop system every launch, for now.
./refresh_desktop_app_entry.sh
## Before we mess with LD_LIBRARY_PATH, save the old one to restore for ## Before we mess with LD_LIBRARY_PATH, save the old one to restore for
## subprocesses that care. ## subprocesses that care.
export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
@@ -147,16 +150,11 @@ fi
export SL_CMD='$LL_WRAPPER bin/$VIEWER_BINARY' export SL_CMD='$LL_WRAPPER bin/$VIEWER_BINARY'
export SL_OPT="`cat gridargs.dat` $@" export SL_OPT="`cat gridargs.dat` $@"
# Run the program # Run the program.
eval ${SL_ENV} ${SL_CMD} ${SL_OPT} || LL_RUN_ERR=runerr eval ${SL_ENV} ${SL_CMD} ${SL_OPT} || LL_RUN_ERR=runerr
# Handle any resulting errors # Handle any resulting errors
if [ -n "$LL_RUN_ERR" ]; then if [ -n "$LL_RUN_ERR" = "runerr" ]; then
LL_RUN_ERR_MSG="" # generic error running the binary
if [ "$LL_RUN_ERR" = "runerr" ]; then echo '*** Bad shutdown. ***'
# generic error running the binary
echo '*** Bad shutdown. ***'
fi
fi fi

View File

@@ -3,10 +3,9 @@
* @brief Processes responses received for asset upload requests. * @brief Processes responses received for asset upload requests.
* *
* $LicenseInfo:firstyear=2007&license=viewergpl$ * $LicenseInfo:firstyear=2007&license=viewergpl$
* * Second Life Viewer Source Code
* Copyright (c) 2007-2009, Linden Research, Inc. * Copyright (c) 2007-2009, Linden Research, Inc.
* *
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab * The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0 * to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement * ("GPL"), unless you have obtained a separate licensing agreement
@@ -53,7 +52,6 @@
#include "llviewerobject.h" #include "llviewerobject.h"
#include "llviewercontrol.h" #include "llviewercontrol.h"
#include "llviewerobjectlist.h" #include "llviewerobjectlist.h"
#include "llviewermenufile.h"
#include "llviewertexlayer.h" #include "llviewertexlayer.h"
#include "llviewerwindow.h" #include "llviewerwindow.h"
#include "lltrans.h" #include "lltrans.h"
@@ -255,6 +253,7 @@ void LLAssetUploadResponder::result(const LLSD& content)
lldebugs << "LLAssetUploadResponder::result from capabilities" << llendl; lldebugs << "LLAssetUploadResponder::result from capabilities" << llendl;
std::string state = content["state"]; std::string state = content["state"];
if (state == "upload") if (state == "upload")
{ {
uploadUpload(content); uploadUpload(content);
@@ -343,6 +342,7 @@ void LLNewAgentInventoryResponder::error(U32 statusNum, const std::string& reaso
//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, LLUUID(), FALSE); //LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, LLUUID(), FALSE);
} }
//virtual //virtual
void LLNewAgentInventoryResponder::uploadFailure(const LLSD& content) void LLNewAgentInventoryResponder::uploadFailure(const LLSD& content)
{ {
@@ -351,6 +351,7 @@ void LLNewAgentInventoryResponder::uploadFailure(const LLSD& content)
(*mCallBack)(false, mUserData); (*mCallBack)(false, mUserData);
} }
LLAssetUploadResponder::uploadFailure(content); LLAssetUploadResponder::uploadFailure(content);
//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], FALSE); //LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], FALSE);
} }
@@ -397,10 +398,14 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
// continue uploading for bulk uploads // continue uploading for bulk uploads
if (!gUploadQueue.empty()) /* Singu Note: sUploadQueue was never getting populated, anywhere! Therefore, this entire block never was reached.
** I have condensed it to here in the hopes it may one day see use. Apparently, it came in with Siana's prep work
** for mesh upload (697dd7e9298282590f8cf858a58335f70302532b), but we never needed it.
static std::deque<std::string> sUploadQueue;
if (!sUploadQueue.empty())
{ {
std::string next_file = gUploadQueue.front(); std::string next_file = sUploadQueue.front();
gUploadQueue.pop_front(); sUploadQueue.pop_front();
if (next_file.empty()) return; if (next_file.empty()) return;
std::string name = gDirUtilp->getBaseFileName(next_file, true); std::string name = gDirUtilp->getBaseFileName(next_file, true);
@@ -448,6 +453,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
expected_upload_cost, expected_upload_cost,
userdata); userdata);
} }
*/
} }
LLSendTexLayerResponder::LLSendTexLayerResponder(const LLSD& post_data, LLSendTexLayerResponder::LLSendTexLayerResponder(const LLSD& post_data,
@@ -698,6 +704,7 @@ void LLUpdateTaskInventoryResponder::uploadComplete(const LLSD& content)
} }
} }
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
// LLNewAgentInventoryVariablePriceResponder::Impl // // LLNewAgentInventoryVariablePriceResponder::Impl //
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
@@ -1165,3 +1172,4 @@ void LLNewAgentInventoryVariablePriceResponder::showConfirmationDialog(
boost::intrusive_ptr<LLNewAgentInventoryVariablePriceResponder>(this))); boost::intrusive_ptr<LLNewAgentInventoryVariablePriceResponder>(this)));
} }
} }

View File

@@ -3,10 +3,9 @@
* @brief "File" menu in the main menu bar. * @brief "File" menu in the main menu bar.
* *
* $LicenseInfo:firstyear=2002&license=viewergpl$ * $LicenseInfo:firstyear=2002&license=viewergpl$
* * Second Life Viewer Source Code
* Copyright (c) 2002-2009, Linden Research, Inc. * Copyright (c) 2002-2009, Linden Research, Inc.
* *
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab * The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0 * to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement * ("GPL"), unless you have obtained a separate licensing agreement
@@ -63,11 +62,9 @@
#include "lltrans.h" #include "lltrans.h"
#include "llfloaterbuycurrency.h" #include "llfloaterbuycurrency.h"
// <edit> // <edit>
#include "llselectmgr.h" #include "floaterlocalassetbrowse.h"
#include "llassettype.h" #include "llassettype.h"
#include "llinventorytype.h" #include "llinventorytype.h"
#include "llbvhloader.h"
#include "lllocalinventory.h"
// </edit> // </edit>
// linden libraries // linden libraries
@@ -89,12 +86,9 @@
#include <boost/tokenizer.hpp> #include <boost/tokenizer.hpp>
#include "hippogridmanager.h" #include "hippogridmanager.h"
#include "importtracker.h"
using namespace LLOldEvents; using namespace LLOldEvents;
std::deque<std::string> gUploadQueue;
typedef LLMemberListener<LLView> view_listener_t; typedef LLMemberListener<LLView> view_listener_t;
@@ -502,6 +496,15 @@ class LLFileMinimizeAllWindows : public view_listener_t
return true; return true;
} }
}; };
class LLFileLocalAssetBrowser : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent>, const LLSD&)
{
FloaterLocalAssetBrowser::show(0);
return true;
}
};
// </edit> // </edit>
class LLFileSavePreview : public view_listener_t class LLFileSavePreview : public view_listener_t
@@ -600,20 +603,6 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
} }
}; };
class LLFileLogOut : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
std::string command(gDirUtilp->getExecutableDir() + gDirUtilp->getDirDelimiter() + gDirUtilp->getExecutableFilename());
gSavedSettings.setBOOL("ShowConsoleWindow", FALSE);
gViewerWindow->getWindow()->ShellEx(command);
gSavedSettings.setBOOL("ShowConsoleWindow", FALSE);
LLAppViewer::instance()->userQuit();
gSavedSettings.setBOOL("ShowConsoleWindow", FALSE);
return true;
}
};
class LLFileQuit : public view_listener_t class LLFileQuit : public view_listener_t
{ {
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@@ -696,7 +685,7 @@ void upload_new_resource(const std::string& src_filename, std::string name,
"No file extension for the file: '%s'\nPlease make sure the file has a correct file extension", "No file extension for the file: '%s'\nPlease make sure the file has a correct file extension",
short_name.c_str()); short_name.c_str());
args["FILE"] = short_name; args["FILE"] = short_name;
upload_error(error_message, "NofileExtension", filename, args); upload_error(error_message, "NoFileExtension", filename, args);
return; return;
} }
else if (codec == IMG_CODEC_J2C) else if (codec == IMG_CODEC_J2C)
@@ -992,16 +981,10 @@ void temp_upload_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
perms->setMaskEveryone(PERM_ALL); perms->setMaskEveryone(PERM_ALL);
perms->setMaskGroup(PERM_ALL); perms->setMaskGroup(PERM_ALL);
perms->setMaskNext(PERM_ALL); perms->setMaskNext(PERM_ALL);
LLUUID destination = gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE);
BOOL bUseSystemInventory = (gSavedSettings.getBOOL("AscentUseSystemFolder") && gSavedSettings.getBOOL("AscentSystemTemporary"));
if (bUseSystemInventory)
{
destination = gSystemFolderAssets;
}
LLViewerInventoryItem* item = new LLViewerInventoryItem( LLViewerInventoryItem* item = new LLViewerInventoryItem(
item_id, item_id,
destination, gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE),
*perms, *perms,
uuid, uuid,
(LLAssetType::EType)data->mAssetInfo.mType, (LLAssetType::EType)data->mAssetInfo.mType,
@@ -1011,16 +994,10 @@ void temp_upload_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
LLSaleInfo::DEFAULT, LLSaleInfo::DEFAULT,
0, 0,
time_corrected()); time_corrected());
if (bUseSystemInventory)
{ item->updateServer(TRUE);
LLLocalInventory::addItem(item); gInventory.updateItem(item);
} gInventory.notifyObservers();
else
{
item->updateServer(TRUE);
gInventory.updateItem(item);
gInventory.notifyObservers();
}
} }
else else
{ {
@@ -1129,40 +1106,44 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
data = NULL; data = NULL;
} }
static LLAssetID upload_new_resource_prep(const LLTransactionID& tid, static LLAssetID upload_new_resource_prep(
LLAssetType::EType asset_type, const LLTransactionID& tid,
LLInventoryType::EType& inventory_type, LLAssetType::EType asset_type,
std::string& name, LLInventoryType::EType& inventory_type,
const std::string& display_name, std::string& name,
std::string& description) const std::string& display_name,
std::string& description)
{ {
LLAssetID uuid = generate_asset_id_for_new_upload(tid); LLAssetID uuid = generate_asset_id_for_new_upload(tid);
increase_new_upload_stats(asset_type); increase_new_upload_stats(asset_type);
assign_defaults_and_show_upload_message(asset_type, assign_defaults_and_show_upload_message(
inventory_type, asset_type,
name, inventory_type,
display_name, name,
description); display_name,
description);
return uuid; return uuid;
} }
LLSD generate_new_resource_upload_capability_body(LLAssetType::EType asset_type, LLSD generate_new_resource_upload_capability_body(
const std::string& name, LLAssetType::EType asset_type,
const std::string& desc, const std::string& name,
LLFolderType::EType destination_folder_type, const std::string& desc,
LLInventoryType::EType inv_type, LLFolderType::EType destination_folder_type,
U32 next_owner_perms, LLInventoryType::EType inv_type,
U32 group_perms, U32 next_owner_perms,
U32 everyone_perms) U32 group_perms,
U32 everyone_perms)
{ {
LLSD body; LLSD body;
body["folder_id"] = gInventory.findCategoryUUIDForType(destination_folder_type == LLFolderType::FT_NONE ? body["folder_id"] = gInventory.findCategoryUUIDForType(
LLFolderType::assetTypeToFolderType(asset_type) : destination_folder_type == LLFolderType::FT_NONE ?
destination_folder_type); LLFolderType::assetTypeToFolderType(asset_type) :
destination_folder_type);
body["asset_type"] = LLAssetType::lookup(asset_type); body["asset_type"] = LLAssetType::lookup(asset_type);
body["inventory_type"] = LLInventoryType::lookup(inv_type); body["inventory_type"] = LLInventoryType::lookup(inv_type);
@@ -1175,28 +1156,36 @@ LLSD generate_new_resource_upload_capability_body(LLAssetType::EType asset_type,
return body; return body;
} }
bool upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_type, bool upload_new_resource(
std::string name, const LLTransactionID &tid,
std::string desc, S32 compression_info, LLAssetType::EType asset_type,
LLFolderType::EType destination_folder_type, std::string name,
LLInventoryType::EType inv_type, std::string desc,
U32 next_owner_perms, S32 compression_info,
U32 group_perms, LLFolderType::EType destination_folder_type,
U32 everyone_perms, LLInventoryType::EType inv_type,
const std::string& display_name, U32 next_owner_perms,
LLAssetStorage::LLStoreAssetCallback callback, U32 group_perms,
S32 expected_upload_cost, U32 everyone_perms,
void *userdata, const std::string& display_name,
void (*callback2)(bool, void*)) LLAssetStorage::LLStoreAssetCallback callback,
S32 expected_upload_cost,
void *userdata,
void (*callback2)(bool, void*))
{ {
if(gDisconnected) if(gDisconnected)
{ {
return false; return false;
} }
LLAssetID uuid =
LLAssetID uuid = upload_new_resource_prep(tid, asset_type, inv_type, upload_new_resource_prep(
name, display_name, desc); tid,
asset_type,
inv_type,
name,
display_name,
desc);
llinfos << "*** Uploading: " llinfos << "*** Uploading: "
<< "\nType: " << LLAssetType::lookup(asset_type) << "\nType: " << LLAssetType::lookup(asset_type)
<< "\nUUID: " << uuid << "\nUUID: " << uuid
@@ -1216,6 +1205,7 @@ bool upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
// </edit> // </edit>
{ {
llinfos << "New Agent Inventory via capability" << llendl; llinfos << "New Agent Inventory via capability" << llendl;
LLSD body; LLSD body;
body["folder_id"] = gInventory.findCategoryUUIDForType((destination_folder_type == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(asset_type) : destination_folder_type); body["folder_id"] = gInventory.findCategoryUUIDForType((destination_folder_type == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(asset_type) : destination_folder_type);
body["asset_type"] = LLAssetType::lookup(asset_type); body["asset_type"] = LLAssetType::lookup(asset_type);
@@ -1227,8 +1217,15 @@ bool upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
body["everyone_mask"] = LLSD::Integer(everyone_perms); body["everyone_mask"] = LLSD::Integer(everyone_perms);
body["expected_upload_cost"] = LLSD::Integer(expected_upload_cost); body["expected_upload_cost"] = LLSD::Integer(expected_upload_cost);
LLHTTPClient::post(url, body, LLHTTPClient::post(
new LLNewAgentInventoryResponder(body, uuid, asset_type, callback2, userdata)); url,
body,
new LLNewAgentInventoryResponder(
body,
uuid,
asset_type,
callback2,
userdata));
} }
else else
{ {
@@ -1274,12 +1271,14 @@ bool upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
{ {
asset_callback = callback; asset_callback = callback;
} }
gAssetStorage->storeAssetData(data->mAssetInfo.mTransactionID, data->mAssetInfo.mType, gAssetStorage->storeAssetData(
asset_callback, data->mAssetInfo.mTransactionID,
(void*)data, data->mAssetInfo.mType,
temporary, asset_callback,
TRUE, (void*)data,
temporary); temporary,
TRUE,
temporary);
} }
// Return true when a call to a callback function will follow. // Return true when a call to a callback function will follow.
@@ -1330,6 +1329,7 @@ void assign_defaults_and_show_upload_message(LLAssetType::EType asset_type,
} }
LLStringUtil::stripNonprintable(name); LLStringUtil::stripNonprintable(name);
LLStringUtil::stripNonprintable(description); LLStringUtil::stripNonprintable(description);
if (name.empty()) if (name.empty())
{ {
name = "(No Name)"; name = "(No Name)";
@@ -1345,6 +1345,7 @@ void assign_defaults_and_show_upload_message(LLAssetType::EType asset_type,
LLUploadDialog::modalUploadDialog(upload_message); LLUploadDialog::modalUploadDialog(upload_message);
} }
void init_menu_file() void init_menu_file()
{ {
(new LLFileUploadImage())->registerListener(gMenuHolder, "File.UploadImage"); (new LLFileUploadImage())->registerListener(gMenuHolder, "File.UploadImage");
@@ -1358,13 +1359,13 @@ void init_menu_file()
(new LLFileEnableCloseAllWindows())->registerListener(gMenuHolder, "File.EnableCloseAllWindows"); (new LLFileEnableCloseAllWindows())->registerListener(gMenuHolder, "File.EnableCloseAllWindows");
// <edit> // <edit>
(new LLFileMinimizeAllWindows())->registerListener(gMenuHolder, "File.MinimizeAllWindows"); (new LLFileMinimizeAllWindows())->registerListener(gMenuHolder, "File.MinimizeAllWindows");
(new LLFileLocalAssetBrowser())->registerListener(gMenuHolder, "File.LocalAssetBrowser");
// </edit> // </edit>
(new LLFileSavePreview())->registerListener(gMenuHolder, "File.SavePreview"); (new LLFileSavePreview())->registerListener(gMenuHolder, "File.SavePreview");
(new LLFileSavePreviewPNG())->registerListener(gMenuHolder, "File.SavePreviewPNG"); (new LLFileSavePreviewPNG())->registerListener(gMenuHolder, "File.SavePreviewPNG");
(new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot"); (new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot");
(new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk"); (new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk");
(new LLFileQuit())->registerListener(gMenuHolder, "File.Quit"); (new LLFileQuit())->registerListener(gMenuHolder, "File.Quit");
(new LLFileLogOut())->registerListener(gMenuHolder, "File.LogOut");
(new LLFileEnableUpload())->registerListener(gMenuHolder, "File.EnableUpload"); (new LLFileEnableUpload())->registerListener(gMenuHolder, "File.EnableUpload");
(new LLFileEnableUploadModel())->registerListener(gMenuHolder, "File.EnableUploadModel"); (new LLFileEnableUploadModel())->registerListener(gMenuHolder, "File.EnableUploadModel");

View File

@@ -48,8 +48,6 @@ class NewResourceItemCallback : public LLInventoryCallback
class LLTransactionID; class LLTransactionID;
extern std::deque<std::string> gUploadQueue;
void init_menu_file(); void init_menu_file();
void upload_new_resource(const std::string& src_filename, void upload_new_resource(const std::string& src_filename,

View File

@@ -2830,14 +2830,17 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
static const LLCachedControl<F32> NAME_SHOW_TIME("RenderNameShowTime",10); // seconds static const LLCachedControl<F32> NAME_SHOW_TIME("RenderNameShowTime",10); // seconds
static const LLCachedControl<F32> FADE_DURATION("RenderNameFadeDuration",1); // seconds static const LLCachedControl<F32> FADE_DURATION("RenderNameFadeDuration",1); // seconds
static const LLCachedControl<bool> use_chat_bubbles("UseChatBubbles",false); static const LLCachedControl<bool> use_chat_bubbles("UseChatBubbles",false);
static const LLCachedControl<bool> use_typing_bubbles("UseTypingBubbles");
static const LLCachedControl<bool> render_name_hide_self("RenderNameHideSelf",false); static const LLCachedControl<bool> render_name_hide_self("RenderNameHideSelf",false);
static const LLCachedControl<bool> allow_nameplate_override ("CCSAllowNameplateOverride", true); static const LLCachedControl<bool> allow_nameplate_override ("CCSAllowNameplateOverride", true);
// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) | Added: RLVa-0.2.0b // [RLVa:KB] - Checked: 2010-04-04 (RLVa-1.2.2a) | Added: RLVa-0.2.0b
bool fRlvShowNames = gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES); bool fRlvShowNames = gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES);
// [/RLVa:KB] // [/RLVa:KB]
BOOL visible_avatar = isVisible() || mNeedsAnimUpdate; BOOL visible_avatar = isVisible() || mNeedsAnimUpdate;
BOOL visible_chat = use_chat_bubbles && (mChats.size() || mTyping); BOOL visible_chat = use_chat_bubbles && (mChats.size() || mTyping);
bool visible_typing = use_typing_bubbles && mTyping;
BOOL render_name = visible_chat || BOOL render_name = visible_chat ||
visible_typing ||
(visible_avatar && (visible_avatar &&
// [RLVa:KB] - Checked: 2010-04-04 (RLVa-1.2.2a) | Added: RLVa-1.0.0h // [RLVa:KB] - Checked: 2010-04-04 (RLVa-1.2.2a) | Added: RLVa-1.0.0h
( (!fRlvShowNames) || (RlvSettings::getShowNameTags()) ) && ( (!fRlvShowNames) || (RlvSettings::getShowNameTags()) ) &&
@@ -2871,6 +2874,11 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
mVisibleChat = visible_chat; mVisibleChat = visible_chat;
new_name = TRUE; new_name = TRUE;
} }
if (visible_typing != mVisibleTyping)
{
mVisibleTyping = visible_typing;
new_name = true;
}
// [RLVa:KB] - Checked: 2010-04-04 (RLVa-1.2.2a) | Added: RLVa-0.2.0b // [RLVa:KB] - Checked: 2010-04-04 (RLVa-1.2.2a) | Added: RLVa-0.2.0b
if (fRlvShowNames) if (fRlvShowNames)
@@ -2895,7 +2903,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
if (mAppAngle > 5.f) if (mAppAngle > 5.f)
{ {
const F32 START_FADE_TIME = NAME_SHOW_TIME - FADE_DURATION; const F32 START_FADE_TIME = NAME_SHOW_TIME - FADE_DURATION;
if (!visible_chat && sRenderName == RENDER_NAME_FADE && time_visible > START_FADE_TIME) if (!visible_chat && !visible_typing && sRenderName == RENDER_NAME_FADE && time_visible > START_FADE_TIME)
{ {
alpha = 1.f - (time_visible - START_FADE_TIME) / FADE_DURATION; alpha = 1.f - (time_visible - START_FADE_TIME) / FADE_DURATION;
} }
@@ -3271,7 +3279,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
new_name = TRUE; new_name = TRUE;
} }
if (mVisibleChat) if (mVisibleChat || mVisibleTyping)
{ {
mNameText->setFont(LLFontGL::getFontSansSerif()); mNameText->setFont(LLFontGL::getFontSansSerif());
mNameText->setTextAlignment(LLHUDNameTag::ALIGN_TEXT_LEFT); mNameText->setTextAlignment(LLHUDNameTag::ALIGN_TEXT_LEFT);
@@ -3281,6 +3289,8 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
mNameText->clearString(); mNameText->clearString();
LLColor4 new_chat = gColors.getColor( "AvatarNameColor" ); LLColor4 new_chat = gColors.getColor( "AvatarNameColor" );
if (mVisibleChat)
{
LLColor4 normal_chat = lerp(new_chat, LLColor4(0.8f, 0.8f, 0.8f, 1.f), 0.7f); LLColor4 normal_chat = lerp(new_chat, LLColor4(0.8f, 0.8f, 0.8f, 1.f), 0.7f);
LLColor4 old_chat = lerp(normal_chat, LLColor4(0.6f, 0.6f, 0.6f, 1.f), 0.7f); LLColor4 old_chat = lerp(normal_chat, LLColor4(0.6f, 0.6f, 0.6f, 1.f), 0.7f);
if (mTyping && mChats.size() >= MAX_BUBBLE_CHAT_UTTERANCES) if (mTyping && mChats.size() >= MAX_BUBBLE_CHAT_UTTERANCES)
@@ -3320,6 +3330,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
mNameText->addLine(chat_iter->mText, old_chat, style); mNameText->addLine(chat_iter->mText, old_chat, style);
} }
} }
}
mNameText->setVisibleOffScreen(TRUE); mNameText->setVisibleOffScreen(TRUE);
if (mTyping) if (mTyping)
@@ -3351,7 +3362,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
void LLVOAvatar::addNameTagLine(const std::string& line, const LLColor4& color, S32 style, const LLFontGL* font) void LLVOAvatar::addNameTagLine(const std::string& line, const LLColor4& color, S32 style, const LLFontGL* font)
{ {
llassert(mNameText); llassert(mNameText);
if (mVisibleChat) if (mVisibleChat || mVisibleTyping)
{ {
mNameText->addLabel(line); mNameText->addLabel(line);
} }

View File

@@ -814,6 +814,7 @@ public:
void stopTyping() { mTyping = FALSE; mIdleTimer.reset();} void stopTyping() { mTyping = FALSE; mIdleTimer.reset();}
private: private:
BOOL mVisibleChat; BOOL mVisibleChat;
bool mVisibleTyping;
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// Lip synch morphs // Lip synch morphs

View File

@@ -37,6 +37,9 @@
<on_click function="Object.ImportUpload" /> <on_click function="Object.ImportUpload" />
<on_enable function="Object.EnableImport" /> <on_enable function="Object.EnableImport" />
</menu_item_call> </menu_item_call>
<menu_item_call label="Change Local Textures" mouse_opaque="true" name="Change Local Textures">
<on_click function="File.LocalAssetBrowser"/>
</menu_item_call>
<menu_item_separator enabled="true" label="-----------" mouse_opaque="true" name="separator" /> <menu_item_separator enabled="true" label="-----------" mouse_opaque="true" name="separator" />
<menu_item_call enabled="true" label="Set Default Permissions..." <menu_item_call enabled="true" label="Set Default Permissions..."
mouse_opaque="true" name="perm prefs" > mouse_opaque="true" name="perm prefs" >
@@ -44,6 +47,9 @@
</menu_item_call> </menu_item_call>
<menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0" <menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator" width="243" /> mouse_opaque="true" name="separator" width="243" />
<menu_item_call label="Minimize All Windows" mouse_opaque="true" name="Minimize All Windows">
<on_click function="File.MinimizeAllWindows"/>
</menu_item_call>
<menu_item_call bottom="-113" enabled="true" height="19" label="Close Window" left="0" <menu_item_call bottom="-113" enabled="true" height="19" label="Close Window" left="0"
mouse_opaque="true" name="Close Window" shortcut="control|W" width="243"> mouse_opaque="true" name="Close Window" shortcut="control|W" width="243">
<on_click function="File.CloseWindow" userdata="" /> <on_click function="File.CloseWindow" userdata="" />

View File

@@ -24,6 +24,7 @@
<check_box bottom_delta="-20" follows="left|top" control_name="OptionShowGroupNameInChatIM" initial_value="false" <check_box bottom_delta="-20" follows="left|top" control_name="OptionShowGroupNameInChatIM" initial_value="false"
label="Show group name in chat" tool_tip="The name of the group will also be displayed if the IM is from group chat." name="append_group_name_check"/> label="Show group name in chat" tool_tip="The name of the group will also be displayed if the IM is from group chat." name="append_group_name_check"/>
<check_box bottom_delta="-20" follows="left|top" control_name="ShowDisplayNameChanges" label="Show display name changes" tool_tip="When checked, a notification will come up in chat whenever someone's display name changes." name="display_name_change"/> <check_box bottom_delta="-20" follows="left|top" control_name="ShowDisplayNameChanges" label="Show display name changes" tool_tip="When checked, a notification will come up in chat whenever someone's display name changes." name="display_name_change"/>
<check_box bottom_delta="-20" follows="left|top" control_name="UseTypingBubbles" label="Use overhead typing indicator bubbles" name="use_typing_bubbles"/>
<text bottom="-150" left="10" follows="left|top" name="objects_link_text_box3">Show links on chatting object names in chat history for:</text> <text bottom="-150" left="10" follows="left|top" name="objects_link_text_box3">Show links on chatting object names in chat history for:</text>
<radio_group bottom_delta="-26" control_name="LinksForChattingObjects" tool_tip="Enables a link to show you the owner of the speaking object." <radio_group bottom_delta="-26" control_name="LinksForChattingObjects" tool_tip="Enables a link to show you the owner of the speaking object."
follows="top" height="20" left="20" name="objects_link" width="350"> follows="top" height="20" left="20" name="objects_link" width="350">

View File

@@ -8,6 +8,7 @@
<menu_item_call label="Import multiples ([UPLOADFEE] par fichier)" name="Bulk Upload"/> <menu_item_call label="Import multiples ([UPLOADFEE] par fichier)" name="Bulk Upload"/>
<menu_item_call label="Import XML" name="Import"/> <menu_item_call label="Import XML" name="Import"/>
<menu_item_call label="Import avec textures" name="Import2"/> <menu_item_call label="Import avec textures" name="Import2"/>
<menu_item_call label="Changer les textures locales" name="Change Local Textures"/>
<menu_item_separator/> <menu_item_separator/>
<menu_item_call label="Définir les droits par défaut " name="perm prefs"/> <menu_item_call label="Définir les droits par défaut " name="perm prefs"/>
<menu_item_separator/> <menu_item_separator/>
@@ -15,6 +16,7 @@
<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 dur en PNG" name="Save Preview AsPNG..."/>
<menu_item_separator/> <menu_item_separator/>
<menu_item_call label="Minimiser toutes les fenêtres" name="Minimize All Windows"/>
<menu_item_call label="Fermer la fenêtre" name="Close Window"/> <menu_item_call label="Fermer la fenêtre" name="Close Window"/>
<menu_item_call label="Fermer toutes les fenêtres" name="Close All Windows"/> <menu_item_call label="Fermer toutes les fenêtres" name="Close All Windows"/>
<menu_item_separator label="-----------" name="separator3"/> <menu_item_separator label="-----------" name="separator3"/>
@@ -240,4 +242,4 @@
</menu> </menu>
<menu_item_call label="A propos de Singularity" name="About Second Life..."/> <menu_item_call label="A propos de Singularity" name="About Second Life..."/>
</menu> </menu>
</menu_bar> </menu_bar>

View File

@@ -11,6 +11,7 @@
<check_box label="Permet d'utiliser &#x22;/me&#x22; aussi bien que &#x22;:&#x22;" name="allow_mu_pose_check"/> <check_box label="Permet d'utiliser &#x22;/me&#x22; aussi bien que &#x22;:&#x22;" name="allow_mu_pose_check"/>
<check_box label="Ajoute les fins des commentaires (RP mode)" tool_tip="Ajoute automatiquement &#x22;))&#x22; &#xE0; chaque message commen&#xE7;ant par &#x22;((&#x22;, et vice-versa." name="close_ooc_check"/> <check_box label="Ajoute les fins des commentaires (RP mode)" tool_tip="Ajoute automatiquement &#x22;))&#x22; &#xE0; chaque message commen&#xE7;ant par &#x22;((&#x22;, et vice-versa." name="close_ooc_check"/>
<check_box label="Montre les changements de display name" tool_tip="" name="display_name_change"/> <check_box label="Montre les changements de display name" tool_tip="" name="display_name_change"/>
<check_box label="Le texte ecris d&#xE9;file au dessus de l'avi" name="use_typing_bubbles"/>
<text name="objects_link_text_box3">Active un lien qui montre le nom du propri&#xE9;taire dans l'historique du chat pour :</text> <text name="objects_link_text_box3">Active un lien qui montre le nom du propri&#xE9;taire dans l'historique du chat pour :</text>
<radio_group tool_tip="Enables a link to show you the owner of the speaking object." name="objects_link"> <radio_group tool_tip="Enables a link to show you the owner of the speaking object." name="objects_link">
<radio_item name="no_object">Aucun objet</radio_item> <radio_item name="no_object">Aucun objet</radio_item>

View File

@@ -71,6 +71,7 @@
<check_box label="Prendre discr&#xE8;tement un photo, sur votre disque dur" tool_tip="Permet de prendre une photo en mode &#x22;espionnage&#x22;, sans bruit d&#x27;appareil, ni mouvement de cam&#xE9;ra, ni gesture. (Uniquement vers le disque dur)." name="quiet_snapshots_check"/> <check_box label="Prendre discr&#xE8;tement un photo, sur votre disque dur" tool_tip="Permet de prendre une photo en mode &#x22;espionnage&#x22;, sans bruit d&#x27;appareil, ni mouvement de cam&#xE9;ra, ni gesture. (Uniquement vers le disque dur)." name="quiet_snapshots_check"/>
<check_box label="En vous levant, annule les permissions que l&#x27;objet a sur votre avatar" tool_tip="Evite que l&#x27;objet garde le contr&#xF4;le de votre avatar, comme par exemple les animations." name="revoke_perms_on_stand_up_check"/> <check_box label="En vous levant, annule les permissions que l&#x27;objet a sur votre avatar" tool_tip="Evite que l&#x27;objet garde le contr&#xF4;le de votre avatar, comme par exemple les animations." name="revoke_perms_on_stand_up_check"/>
<check_box label="D&#xE9;sactive le &#x22;Click to sit&#x22; automatique" tool_tip="D&#xE9;sactive llSitTarget. Vous devrez s&#xE9;lectionner vous m&#xEA;me la fonction &#x22;sit&#x22; sur l&#x27;objet." name="disable_click_sit_check"/> <check_box label="D&#xE9;sactive le &#x22;Click to sit&#x22; automatique" tool_tip="D&#xE9;sactive llSitTarget. Vous devrez s&#xE9;lectionner vous m&#xEA;me la fonction &#x22;sit&#x22; sur l&#x27;objet." name="disable_click_sit_check"/>
<check_box left_delta="210" label="Sur les objets qui ne sont pas a vous" tool_tip="" name="disable_click_sit_own_check"/>
<check_box label="Affiche les changements de d&#xE9;comptes de scripts de la r&#xE9;gion." name="totalscriptjumps" tool_tip="D&#xE9;pendant du seuil que vous choisissez dans la fen&#xEA;tre &#xE0; droite."/> <check_box label="Affiche les changements de d&#xE9;comptes de scripts de la r&#xE9;gion." name="totalscriptjumps" tool_tip="D&#xE9;pendant du seuil que vous choisissez dans la fen&#xEA;tre &#xE0; droite."/>
<spinner left_delta="350" name="ScriptJumpCount" tool_tip="Threshold for the script jump message [Default: 100]"/> <spinner left_delta="350" name="ScriptJumpCount" tool_tip="Threshold for the script jump message [Default: 100]"/>
</panel> </panel>

View File

@@ -3,37 +3,31 @@
<text name="text_box">Bande passante max:</text> <text name="text_box">Bande passante max:</text>
<text name="text_box2">kbps (kilobits par seconde)</text> <text name="text_box2">kbps (kilobits par seconde)</text>
<text name="text_box3">Bande passante de la texture:</text> <text name="text_box3">Bande passante de la texture:</text>
<text name="text_box4">kbps (kilobits par seconde)</text> <slider left_delta="145" name="tex_bandwidth" width="145"/>
<slider left_delta="150" name="tex_bandwidth" width="140"/> <text left_delta="150" name="text_box4">kbps (kilobits par seconde)</text>
<text left_delta="146" name="text_box2">kbps (kilobits par seconde)</text>
<text name="use_http_for">Utiliser HTTP pour:</text> <text name="use_http_for">Utiliser HTTP pour:</text>
<check_box left_delta="100" label="Textures" name="http_textures"/>
<check_box label="Inventaire" name="http_inventory"/> <check_box label="Inventaire" name="http_inventory"/>
<text name="cache_size_label_l">Taille du cache:</text> <text name="cache_size_label_l">Taille du cache:</text>
<text name="text_box5">Mo</text> <text name="text_box5">Mo</text>
<button label="Vider la mémoire cache" label_selected="Vider le cache" name="clear_cache" width="150"/> <button label="Vider le cache" name="clear_cache" width="130"/>
<text name="cache_location_label">Emplacement du cache:</text> <text name="cache_location_label">Emplacement du cache:</text>
<button label="Modifier" label_selected="Modifier" name="set_cache"/> <button label="Modifier" label_selected="Modifier" name="set_cache"/>
<button label="Réinitialiser" label_selected="Réinitialiser" name="reset_cache"/> <button label="Réinitialiser" label_selected="Réinitialiser" name="reset_cache"/>
<check_box label="Port de connexion personnalisé" name="connection_port_enabled"/> <check_box label="Port de Connexion personnalisé" name="connection_port_enabled"/>
<spinner label="Numéro de port:" label_width="95" name="connection_port" width="170"/> <spinner label="Num. du Port:" name="connection_port"/>
<text name="socks5_auth_label">Proxy Http:</text>
<radio_group name="socks5_http_proxy_type"> <radio_group name="socks5_http_proxy_type">
<radio_item name="None">aucun</radio_item> <radio_item name="None">Aucun</radio_item>
<radio_item name="Socks">Socks</radio_item> <radio_item name="Socks">Socks</radio_item>
<radio_item name="Web">Web</radio_item> <radio_item name="Web">Web</radio_item>
</radio_group> </radio_group>
<check_box label="Activer SOCKS 5 Proxy" name="socks5_proxy_enabled"/> <check_box label="Activer SOCKS 5 Proxy" name="socks5_proxy_enabled"/>
<text name="socks5_host_label">H&#xF4;te Socks 5:</text> <text name="socks5_host_label">H&#xF4;te Socks 5 :</text>
<line_editor name="socks5_proxy_host" tool_tip=""/> <spinner label="Num. du Port:" name="socks5_proxy_port"/>
<spinner label="Numéro de port:" label_width="80" name="socks5_proxy_port"/>
<text name="socks5_auth_label2">Authentification:</text> <text name="socks5_auth_label2">Authentification:</text>
<radio_group name="socks5_auth"> <radio_group name="socks5_auth">
<radio_item name="None" tool_tip="">aucune</radio_item> <radio_item name="None">Aucune</radio_item>
<radio_item name="UserPass" tool_tip="">Nom/Mot de passe</radio_item> <radio_item name="UserPass">Nom/Mot de passe</radio_item>
</radio_group> </radio_group>
<text name="socks5_username_label">Nom:</text> <text name="socks5_username_label">Nom:</text>
<line_editor name="socks5_proxy_username"/>
<text name="socks5_password_label">Mot de Passe:</text> <text name="socks5_password_label">Mot de Passe:</text>
<line_editor name="socks5_proxy_password"/>
</panel> </panel>

View File

@@ -1,35 +1,36 @@
#!/usr/bin/python #!/usr/bin/env python
# @file viewer_manifest.py """\
# @author Ryan Williams @file viewer_manifest.py
# @brief Description of all installer viewer files, and methods for packaging @author Ryan Williams
# them into installers for all supported platforms. @brief Description of all installer viewer files, and methods for packaging
# them into installers for all supported platforms.
# $LicenseInfo:firstyear=2006&license=viewergpl$
# $LicenseInfo:firstyear=2006&license=viewergpl$
# Copyright (c) 2006-2009, Linden Research, Inc. Second Life Viewer Source Code
# Copyright (c) 2006-2009, Linden Research, Inc.
# Second Life Viewer Source Code
# The source code in this file ("Source Code") is provided by Linden Lab The source code in this file ("Source Code") is provided by Linden Lab
# to you under the terms of the GNU General Public License, version 2.0 to you under the terms of the GNU General Public License, version 2.0
# ("GPL"), unless you have obtained a separate licensing agreement ("GPL"), unless you have obtained a separate licensing agreement
# ("Other License"), formally executed by you and Linden Lab. Terms of ("Other License"), formally executed by you and Linden Lab. Terms of
# the GPL can be found in doc/GPL-license.txt in this distribution, or the GPL can be found in doc/GPL-license.txt in this distribution, or
# online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
#
# There are special exceptions to the terms and conditions of the GPL as There are special exceptions to the terms and conditions of the GPL as
# it is applied to this Source Code. View the full text of the exception it is applied to this Source Code. View the full text of the exception
# in the file doc/FLOSS-exception.txt in this software distribution, or in the file doc/FLOSS-exception.txt in this software distribution, or
# online at online at
# http://secondlifegrid.net/programs/open_source/licensing/flossexception http://secondlifegrid.net/programs/open_source/licensing/flossexception
#
# By copying, modifying or distributing this software, you acknowledge By copying, modifying or distributing this software, you acknowledge
# that you have read and understood your obligations described above, that you have read and understood your obligations described above,
# and agree to abide by those obligations. and agree to abide by those obligations.
#
# ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
# WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
# COMPLETENESS OR PERFORMANCE. COMPLETENESS OR PERFORMANCE.
# $/LicenseInfo$ $/LicenseInfo$
"""
import sys import sys
import os.path import os.path
import re import re
@@ -56,10 +57,13 @@ class ViewerManifest(LLManifest):
# include the entire shaders directory recursively # include the entire shaders directory recursively
self.path("shaders") self.path("shaders")
# ... and the entire windlight directory # ... and the entire windlight directory
self.path("windlight") self.path("windlight")
# ... and the hunspell dictionaries # ... and the hunspell dictionaries
self.path("dictionaries") self.path("dictionaries")
self.end_prefix("app_settings") self.end_prefix("app_settings")
if self.prefix(src="character"): if self.prefix(src="character"):
@@ -104,6 +108,7 @@ class ViewerManifest(LLManifest):
self.path("*/*/*.html") self.path("*/*/*.html")
self.path("*/*/*.gif") self.path("*/*/*.gif")
self.end_prefix("*/html") self.end_prefix("*/html")
self.end_prefix("skins") self.end_prefix("skins")
# Files in the newview/ directory # Files in the newview/ directory
@@ -359,6 +364,7 @@ class WindowsManifest(ViewerManifest):
result += 'File ' + pkg_file + '\n' result += 'File ' + pkg_file + '\n'
else: else:
result += 'Delete ' + wpath(os.path.join('$INSTDIR', rel_file)) + '\n' result += 'Delete ' + wpath(os.path.join('$INSTDIR', rel_file)) + '\n'
# at the end of a delete, just rmdir all the directories # at the end of a delete, just rmdir all the directories
if not install: if not install:
deleted_file_dirs = [os.path.dirname(pair[1].replace(self.get_dst_prefix()+os.path.sep,'')) for pair in self.file_list] deleted_file_dirs = [os.path.dirname(pair[1].replace(self.get_dst_prefix()+os.path.sep,'')) for pair in self.file_list]
@@ -695,6 +701,9 @@ class LinuxManifest(ViewerManifest):
self.path("wrapper.sh",self.wrapper_name()) self.path("wrapper.sh",self.wrapper_name())
self.path("handle_secondlifeprotocol.sh") self.path("handle_secondlifeprotocol.sh")
self.path("register_secondlifeprotocol.sh") self.path("register_secondlifeprotocol.sh")
self.path("refresh_desktop_app_entry.sh")
self.path("launch_url.sh")
self.path("install.sh")
self.end_prefix("linux_tools") self.end_prefix("linux_tools")
# Create an appropriate gridargs.dat for this package, denoting required grid. # Create an appropriate gridargs.dat for this package, denoting required grid.
@@ -707,7 +716,6 @@ class LinuxManifest(ViewerManifest):
self.path("secondlife-bin","bin/"+self.binary_name()) self.path("secondlife-bin","bin/"+self.binary_name())
self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin") self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin")
self.path("linux_tools/launch_url.sh","launch_url.sh")
self.path("../llplugin/slplugin/SLPlugin", "bin/SLPlugin") self.path("../llplugin/slplugin/SLPlugin", "bin/SLPlugin")
if self.prefix("res-sdl"): if self.prefix("res-sdl"):
self.path("*") self.path("*")