svn merge -r 81304:81392 svn+ssh://svn.lindenlab.com/svn/linden/branches/maint-ui-8-merge

QAR-343 - merge maint-ui-7 and maint-ui-8 to release
master
Josh Bell 2008-03-04 16:59:57 +00:00
parent 62d9c7f76c
commit a10f963900
49 changed files with 765 additions and 711 deletions

View File

@ -303,6 +303,8 @@ SpacedOut Frye
VWR-123
VWR-130
VWR-1823
Sporked Friis
VWR-4903
Stevex Janus
VWR-1182
Still Defiant

View File

@ -2708,3 +2708,4 @@ void init_prehash_data()
_PREHASH_RegionDenyAgeUnverified = gMessageStringTable.getString("RegionDenyAgeUnverified");
_PREHASH_AgeVerificationBlock = gMessageStringTable.getString("AgeVerificationBlock");
}

View File

@ -1038,7 +1038,7 @@ void clicked_help(void* data)
return;
}
LLUI::sHtmlHelp->show(self->getHelpURL(), "");
LLUI::sHtmlHelp->show(self->getHelpURL());
}
// static

View File

@ -96,6 +96,7 @@ LLKeyboard::LLKeyboard() : mCallbacks(NULL), mNumpadDistinct(ND_NUMLOCK_OFF)
addKeyName(KEY_SUBTRACT, "Subtract" );
addKeyName(KEY_MULTIPLY, "Multiply" );
addKeyName(KEY_DIVIDE, "Divide" );
addKeyName(KEY_PAD_DIVIDE, "PAD_DIVIDE" );
addKeyName(KEY_PAD_LEFT, "PAD_LEFT" );
addKeyName(KEY_PAD_RIGHT, "PAD_RIGHT" );
addKeyName(KEY_PAD_DOWN, "PAD_DOWN" );

View File

@ -83,7 +83,7 @@ LLKeyboardMacOSX::LLKeyboardMacOSX()
mTranslateKeyMap[0x29] = ';';
mTranslateKeyMap[0x2a] = '\\';
mTranslateKeyMap[0x2b] = ',';
mTranslateKeyMap[0x2c] = '/';
mTranslateKeyMap[0x2c] = KEY_DIVIDE;
mTranslateKeyMap[0x2d] = 'N';
mTranslateKeyMap[0x2e] = 'M';
mTranslateKeyMap[0x2f] = '.';
@ -100,7 +100,7 @@ LLKeyboardMacOSX::LLKeyboardMacOSX()
mTranslateKeyMap[0x41] = '.'; // keypad
mTranslateKeyMap[0x43] = '*'; // keypad
mTranslateKeyMap[0x45] = '+'; // keypad
mTranslateKeyMap[0x4b] = '/'; // keypad
mTranslateKeyMap[0x4b] = KEY_PAD_DIVIDE; // keypad
mTranslateKeyMap[0x4c] = KEY_RETURN; // keypad enter
mTranslateKeyMap[0x4e] = '-'; // keypad
mTranslateKeyMap[0x51] = '='; // keypad

View File

@ -103,7 +103,7 @@ LLKeyboardSDL::LLKeyboardSDL()
mTranslateKeyMap[SDLK_KP_PLUS] = KEY_ADD;
mTranslateKeyMap[SDLK_KP_MINUS] = KEY_SUBTRACT;
mTranslateKeyMap[SDLK_KP_MULTIPLY] = KEY_MULTIPLY;
mTranslateKeyMap[SDLK_KP_DIVIDE] = KEY_DIVIDE;
mTranslateKeyMap[SDLK_KP_DIVIDE] = KEY_PAD_DIVIDE;
mTranslateKeyMap[SDLK_F1] = KEY_F1;
mTranslateKeyMap[SDLK_F2] = KEY_F2;
mTranslateKeyMap[SDLK_F3] = KEY_F3;
@ -121,7 +121,7 @@ LLKeyboardSDL::LLKeyboardSDL()
mTranslateKeyMap[SDLK_MINUS] = '-';
mTranslateKeyMap[SDLK_PERIOD] = '.';
mTranslateKeyMap[SDLK_BACKQUOTE] = '`';
mTranslateKeyMap[SDLK_SLASH] = '/';
mTranslateKeyMap[SDLK_SLASH] = KEY_DIVIDE;
mTranslateKeyMap[SDLK_SEMICOLON] = ';';
mTranslateKeyMap[SDLK_LEFTBRACKET] = '[';
mTranslateKeyMap[SDLK_BACKSLASH] = '\\';

View File

@ -77,7 +77,7 @@ LLKeyboardWin32::LLKeyboardWin32()
mTranslateKeyMap[VK_OEM_COMMA] = ',';
mTranslateKeyMap[VK_OEM_MINUS] = '-';
mTranslateKeyMap[VK_OEM_PERIOD] = '.';
mTranslateKeyMap[VK_OEM_2] = '/';
mTranslateKeyMap[VK_OEM_2] = KEY_PAD_DIVIDE;
mTranslateKeyMap[VK_OEM_3] = '`';
mTranslateKeyMap[VK_OEM_4] = '[';
mTranslateKeyMap[VK_OEM_5] = '\\';
@ -137,7 +137,11 @@ LLKeyboardWin32::LLKeyboardWin32()
mTranslateNumpadMap[0x67] = KEY_PAD_HOME; // keypad 7
mTranslateNumpadMap[0x68] = KEY_PAD_UP; // keypad 8
mTranslateNumpadMap[0x69] = KEY_PAD_PGUP; // keypad 9
mTranslateNumpadMap[0x6A] = KEY_PAD_MULTIPLY; // keypad *
mTranslateNumpadMap[0x6B] = KEY_PAD_ADD; // keypad +
mTranslateNumpadMap[0x6D] = KEY_PAD_SUBTRACT; // keypad -
mTranslateNumpadMap[0x6E] = KEY_PAD_DEL; // keypad .
mTranslateNumpadMap[0x6F] = KEY_PAD_DIVIDE; // keypad /
for (iter = mTranslateNumpadMap.begin(); iter != mTranslateNumpadMap.end(); iter++)
{

View File

@ -40,6 +40,7 @@ FIRST_PERSON PAD_PGDN NONE push_down
FIRST_PERSON PAD_HOME NONE toggle_fly
FIRST_PERSON PAD_CENTER NONE stop_moving
FIRST_PERSON PAD_ENTER NONE start_chat
FIRST_PERSON PAD_DIVIDE NONE start_gesture
FIRST_PERSON A SHIFT slide_left
FIRST_PERSON D SHIFT slide_right
@ -51,6 +52,7 @@ FIRST_PERSON F SHIFT toggle_fly
FIRST_PERSON SPACE NONE stop_moving
FIRST_PERSON ENTER NONE start_chat
FIRST_PERSON DIVIDE NONE start_gesture
FIRST_PERSON LEFT SHIFT slide_left
FIRST_PERSON RIGHT SHIFT slide_right
@ -67,6 +69,7 @@ FIRST_PERSON PAD_PGUP SHIFT jump
FIRST_PERSON PAD_PGDN SHIFT push_down
FIRST_PERSON PAD_HOME SHIFT toggle_fly
FIRST_PERSON PAD_ENTER SHIFT start_chat
FIRST_PERSON PAD_DIVIDE SHIFT start_gesture
THIRD_PERSON A NONE turn_left
THIRD_PERSON D NONE turn_right
@ -86,6 +89,7 @@ THIRD_PERSON F SHIFT toggle_fly
THIRD_PERSON SPACE NONE stop_moving
THIRD_PERSON ENTER NONE start_chat
THIRD_PERSON DIVIDE NONE start_gesture
THIRD_PERSON LEFT NONE turn_left
THIRD_PERSON LEFT SHIFT slide_left
@ -120,6 +124,8 @@ THIRD_PERSON PAD_CENTER NONE stop_moving
THIRD_PERSON PAD_CENTER SHIFT stop_moving
THIRD_PERSON PAD_ENTER NONE start_chat
THIRD_PERSON PAD_ENTER SHIFT start_chat
THIRD_PERSON PAD_DIVIDE NONE start_gesture
THIRD_PERSON PAD_DIVIDE SHIFT start_gesture
# Camera controls in third person on Alt
THIRD_PERSON LEFT ALT spin_around_cw
@ -143,6 +149,7 @@ THIRD_PERSON PAD_DOWN ALT move_backward
THIRD_PERSON PAD_PGUP ALT spin_over
THIRD_PERSON PAD_PGDN ALT spin_under
THIRD_PERSON PAD_ENTER ALT start_chat
THIRD_PERSON PAD_DIVIDE ALT start_gesture
# mimic alt zoom behavior with keyboard only
THIRD_PERSON A CTL_ALT spin_around_cw
@ -166,6 +173,7 @@ THIRD_PERSON PAD_DOWN CTL_ALT spin_under
THIRD_PERSON PAD_PGUP CTL_ALT spin_over
THIRD_PERSON PAD_PGDN CTL_ALT spin_under
THIRD_PERSON PAD_ENTER CTL_ALT start_chat
THIRD_PERSON PAD_DIVIDE CTL_ALT start_gesture
# Therefore pan on Alt-Shift
THIRD_PERSON A CTL_ALT_SHIFT pan_left
@ -183,6 +191,7 @@ THIRD_PERSON PAD_RIGHT CTL_ALT_SHIFT pan_right
THIRD_PERSON PAD_UP CTL_ALT_SHIFT pan_up
THIRD_PERSON PAD_DOWN CTL_ALT_SHIFT pan_down
THIRD_PERSON PAD_ENTER CTL_ALT_SHIFT start_chat
THIRD_PERSON PAD_DIVIDE CTL_ALT_SHIFT start_gesture
# Basic editing camera control
EDIT A NONE spin_around_cw
@ -192,7 +201,9 @@ EDIT S NONE move_backward
EDIT E NONE spin_over
EDIT C NONE spin_under
EDIT ENTER NONE start_chat
EDIT DIVIDE NONE start_gesture
EDIT PAD_ENTER NONE start_chat
EDIT PAD_DIVIDE NONE start_gesture
EDIT LEFT NONE spin_around_cw
EDIT RIGHT NONE spin_around_ccw
@ -234,6 +245,7 @@ EDIT PAD_DOWN ALT push_backward
EDIT PAD_PGUP ALT jump
EDIT PAD_PGDN ALT push_down
EDIT PAD_ENTER ALT start_chat
EDIT PAD_DIVIDE ALT start_gesture
SITTING A ALT spin_around_cw
SITTING D ALT spin_around_ccw
@ -286,6 +298,7 @@ SITTING PAD_PGUP NONE spin_over_sitting
SITTING PAD_PGDN NONE spin_under_sitting
SITTING PAD_CENTER NONE stop_moving
SITTING PAD_ENTER NONE start_chat
SITTING PAD_DIVIDE NONE start_gesture
# these are for passing controls when sitting on vehicles
SITTING A SHIFT slide_left
@ -296,6 +309,7 @@ SITTING RIGHT SHIFT slide_right
SITTING PAD_LEFT SHIFT slide_left
SITTING PAD_RIGHT SHIFT slide_right
SITTING PAD_ENTER SHIFT start_chat
SITTING PAD_DIVIDE SHIFT start_gesture
# pan on Alt-Shift
SITTING A CTL_ALT_SHIFT pan_left
@ -313,8 +327,10 @@ SITTING PAD_RIGHT CTL_ALT_SHIFT pan_right
SITTING PAD_UP CTL_ALT_SHIFT pan_up
SITTING PAD_DOWN CTL_ALT_SHIFT pan_down
SITTING PAD_ENTER CTL_ALT_SHIFT start_chat
SITTING PAD_DIVIDE CTL_ALT_SHIFT start_gesture
SITTING ENTER NONE start_chat
SITTING DIVIDE NONE start_gesture
# Avatar editing camera controls
EDIT_AVATAR A NONE edit_avatar_spin_cw
@ -330,6 +346,7 @@ EDIT_AVATAR DOWN NONE edit_avatar_move_backward
EDIT_AVATAR PGUP NONE edit_avatar_spin_over
EDIT_AVATAR PGDN NONE edit_avatar_spin_under
EDIT_AVATAR ENTER NONE start_chat
EDIT_AVATAR DIVIDE NONE start_gesture
EDIT_AVATAR PAD_LEFT NONE edit_avatar_spin_cw
EDIT_AVATAR PAD_RIGHT NONE edit_avatar_spin_ccw
EDIT_AVATAR PAD_UP NONE edit_avatar_move_forward
@ -337,3 +354,4 @@ EDIT_AVATAR PAD_DOWN NONE edit_avatar_move_backward
EDIT_AVATAR PAD_PGUP NONE edit_avatar_spin_over
EDIT_AVATAR PAD_PGDN NONE edit_avatar_spin_under
EDIT_AVATAR PAD_ENTER NONE start_chat
EDIT_AVATAR PAD_DIVIDE NONE start_gesture

View File

@ -61,14 +61,6 @@ ShowInstDetails nevershow ; no details, no "show" button
SetOverwrite on ; stomp files by default
AutoCloseWindow true ; after all files install, close window
!ifdef UPDATE
LicenseText $(LicenseDescUpdate) $(LicenseDescNext)
!else
LicenseText $(LicenseDescSetup) $(LicenseDescNext)
!endif
LicenseData "releasenotes.txt"
InstallDir "$PROGRAMFILES\${INSTNAME}"
InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" ""
!ifdef UPDATE

View File

@ -1,57 +1,57 @@
; First is default
LoadLanguageFile "${NSISDIR}\Contrib\Language files\German.nlf"
; subtitle on license text caption (setup new version or update current one
LangString LicenseSubTitleUpdate ${LANG_GERMAN} " Update"
LangString LicenseSubTitleSetup ${LANG_GERMAN} " Setup"
; description on license page
LangString LicenseDescUpdate ${LANG_GERMAN} "Dieses Paket wird das bereits installierte Second Life mit Version ${VERSION_LONG}. ersetzen."
LangString LicenseDescSetup ${LANG_GERMAN} "Dieses Paket wird Second Life auf Ihrem Computer installieren."
LangString LicenseDescNext ${LANG_GERMAN} "Weiter"
; installation directory text
LangString DirectoryChooseTitle ${LANG_GERMAN} "Installations-Ordner"
LangString DirectoryChooseUpdate ${LANG_GERMAN} "Wählen Sie den Second Life Ordner für dieses Update:"
LangString DirectoryChooseSetup ${LANG_GERMAN} "Pfad in dem Second Life installieren werden soll:"
; CheckStartupParams message box
LangString CheckStartupParamsMB ${LANG_GERMAN} "Konnte Programm '$INSTPROG' nicht finden. Stilles Update fehlgeschlagen."
; installation success dialog
LangString InstSuccesssQuestion ${LANG_GERMAN} "Second Life starten?"
; remove old NSIS version
LangString RemoveOldNSISVersion ${LANG_GERMAN} "Überprüfe alte Version ..."
; check windows version
LangString CheckWindowsVersionDP ${LANG_GERMAN} "Überprüfung der Windows Version ..."
LangString CheckWindowsVersionMB ${LANG_GERMAN} 'Second Life unterstützt nur Windows XP, Windows 2000 und Mac OS X.$\n$\nDer Versuch es auf Windows $R0 zu installieren, könnte zu unvorhersehbaren Abstürzen und Datenverlust führen.$\n$\nTrotzdem installieren?'
; checkifadministrator function (install)
LangString CheckAdministratorInstDP ${LANG_GERMAN} "Überprüfung der Installations-Berechtigungen ..."
LangString CheckAdministratorInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life installieren zu können.'
; checkifadministrator function (uninstall)
LangString CheckAdministratorUnInstDP ${LANG_GERMAN} "Überprüfung der Entfernungs-Berechtigungen ..."
LangString CheckAdministratorUnInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life entfernen zu können..'
; checkifalreadycurrent
LangString CheckIfCurrentMB ${LANG_GERMAN} "Anscheinend ist Second Life ${VERSION_LONG} bereits installiert.$\n$\nWürden Sie es gerne erneut installieren?"
; closesecondlife function (install)
LangString CloseSecondLifeInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
LangString CloseSecondLifeInstMB ${LANG_GERMAN} "Second Life kann nicht installiert oder ersetzt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um die Installation abzubrechen."
; closesecondlife function (uninstall)
LangString CloseSecondLifeUnInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
LangString CloseSecondLifeUnInstMB ${LANG_GERMAN} "Second Life kann nicht entfernt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um abzubrechen."
; removecachefiles
LangString RemoveCacheFilesDP ${LANG_GERMAN} "Löschung aller Cache Dateien in Dokumente und Einstellungen."
; delete program files
LangString DeleteProgramFilesMB ${LANG_GERMAN} "Es existieren weiterhin Dateien in Ihrem SecondLife Programm Ordner.$\n$\nDies sind möglicherweise Dateien, die sie modifiziert oder bewegt haben:$\n$INSTDIR$\n$\nMöchten Sie diese ebenfalls löschen?"
; uninstall text
LangString UninstallTextMsg ${LANG_GERMAN} "Dies wird Second Life ${VERSION_LONG} von Ihrem System entfernen."
; First is default
LoadLanguageFile "${NSISDIR}\Contrib\Language files\German.nlf"
; subtitle on license text caption (setup new version or update current one
LangString LicenseSubTitleUpdate ${LANG_GERMAN} " Update"
LangString LicenseSubTitleSetup ${LANG_GERMAN} " Setup"
; description on license page
LangString LicenseDescUpdate ${LANG_GERMAN} "Dieses Paket wird das bereits installierte Second Life mit Version ${VERSION_LONG}. ersetzen."
LangString LicenseDescSetup ${LANG_GERMAN} "Dieses Paket wird Second Life auf Ihrem Computer installieren."
LangString LicenseDescNext ${LANG_GERMAN} "Weiter"
; installation directory text
LangString DirectoryChooseTitle ${LANG_GERMAN} "Installations-Ordner"
LangString DirectoryChooseUpdate ${LANG_GERMAN} "Wählen Sie den Second Life Ordner für dieses Update:"
LangString DirectoryChooseSetup ${LANG_GERMAN} "Pfad in dem Second Life installieren werden soll:"
; CheckStartupParams message box
LangString CheckStartupParamsMB ${LANG_GERMAN} "Konnte Programm '$INSTPROG' nicht finden. Stilles Update fehlgeschlagen."
; installation success dialog
LangString InstSuccesssQuestion ${LANG_GERMAN} "Second Life starten?"
; remove old NSIS version
LangString RemoveOldNSISVersion ${LANG_GERMAN} "Überprüfe alte Version ..."
; check windows version
LangString CheckWindowsVersionDP ${LANG_GERMAN} "Überprüfung der Windows Version ..."
LangString CheckWindowsVersionMB ${LANG_GERMAN} 'Second Life unterstützt nur Windows XP, Windows 2000 und Mac OS X.$\n$\nDer Versuch es auf Windows $R0 zu installieren, könnte zu unvorhersehbaren Abstürzen und Datenverlust führen.$\n$\nTrotzdem installieren?'
; checkifadministrator function (install)
LangString CheckAdministratorInstDP ${LANG_GERMAN} "Überprüfung der Installations-Berechtigungen ..."
LangString CheckAdministratorInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life installieren zu können.'
; checkifadministrator function (uninstall)
LangString CheckAdministratorUnInstDP ${LANG_GERMAN} "Überprüfung der Entfernungs-Berechtigungen ..."
LangString CheckAdministratorUnInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life entfernen zu können..'
; checkifalreadycurrent
LangString CheckIfCurrentMB ${LANG_GERMAN} "Anscheinend ist Second Life ${VERSION_LONG} bereits installiert.$\n$\nWürden Sie es gerne erneut installieren?"
; closesecondlife function (install)
LangString CloseSecondLifeInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
LangString CloseSecondLifeInstMB ${LANG_GERMAN} "Second Life kann nicht installiert oder ersetzt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um die Installation abzubrechen."
; closesecondlife function (uninstall)
LangString CloseSecondLifeUnInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
LangString CloseSecondLifeUnInstMB ${LANG_GERMAN} "Second Life kann nicht entfernt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um abzubrechen."
; removecachefiles
LangString RemoveCacheFilesDP ${LANG_GERMAN} "Löschung aller Cache Dateien in Dokumente und Einstellungen."
; delete program files
LangString DeleteProgramFilesMB ${LANG_GERMAN} "Es existieren weiterhin Dateien in Ihrem SecondLife Programm Ordner.$\n$\nDies sind möglicherweise Dateien, die sie modifiziert oder bewegt haben:$\n$INSTDIR$\n$\nMöchten Sie diese ebenfalls löschen?"
; uninstall text
LangString UninstallTextMsg ${LANG_GERMAN} "Dies wird Second Life ${VERSION_LONG} von Ihrem System entfernen."

View File

@ -1,57 +1,52 @@
; First is default
LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
; subtitle on license text caption
LangString LicenseSubTitleUpdate ${LANG_ENGLISH} " Update"
LangString LicenseSubTitleSetup ${LANG_ENGLISH} " Setup"
; description on license page
LangString LicenseDescUpdate ${LANG_ENGLISH} "This package will update Second Life to version ${VERSION_LONG}.(XXX)"
LangString LicenseDescSetup ${LANG_ENGLISH} "This package will install Second Life on your computer."
LangString LicenseDescNext ${LANG_ENGLISH} "Next"
; installation directory text
LangString DirectoryChooseTitle ${LANG_ENGLISH} "Installation Directory"
LangString DirectoryChooseUpdate ${LANG_ENGLISH} "Select the Second Life directory to update:"
LangString DirectoryChooseSetup ${LANG_ENGLISH} "Select the directory to install Second Life in:"
; CheckStartupParams message box
LangString CheckStartupParamsMB ${LANG_ENGLISH} "Could not find the program '$INSTPROG'. Silent update failed."
; installation success dialog
LangString InstSuccesssQuestion ${LANG_ENGLISH} "Start Second Life now?"
; remove old NSIS version
LangString RemoveOldNSISVersion ${LANG_ENGLISH} "Checking for old version..."
; check windows version
LangString CheckWindowsVersionDP ${LANG_ENGLISH} "Checking Windows version..."
LangString CheckWindowsVersionMB ${LANG_ENGLISH} 'Second Life only supports Windows XP, Windows 2000, and Mac OS X.$\n$\nAttempting to install on Windows $R0 can result in crashes and data loss.$\n$\nInstall anyway?'
; checkifadministrator function (install)
LangString CheckAdministratorInstDP ${LANG_ENGLISH} "Checking for permission to install..."
LangString CheckAdministratorInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to install Second Life.'
; checkifadministrator function (uninstall)
LangString CheckAdministratorUnInstDP ${LANG_ENGLISH} "Checking for permission to uninstall..."
LangString CheckAdministratorUnInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to uninstall Second Life.'
; checkifalreadycurrent
LangString CheckIfCurrentMB ${LANG_ENGLISH} "It appears that Second Life ${VERSION_LONG} is already installed.$\n$\nWould you like to install it again?"
; closesecondlife function (install)
LangString CloseSecondLifeInstDP ${LANG_ENGLISH} "Waiting for Second Life to shut down..."
LangString CloseSecondLifeInstMB ${LANG_ENGLISH} "Second Life can't be installed while it is already running.$\n$\nFinish what you're doing then select OK to close Second Life and continue.$\nSelect CANCEL to cancel installation."
; closesecondlife function (uninstall)
LangString CloseSecondLifeUnInstDP ${LANG_ENGLISH} "Waiting for Second Life to shut down..."
LangString CloseSecondLifeUnInstMB ${LANG_ENGLISH} "Second Life can't be uninstalled while it is already running.$\n$\nFinish what you're doing then select OK to close Second Life and continue.$\nSelect CANCEL to cancel."
; removecachefiles
LangString RemoveCacheFilesDP ${LANG_ENGLISH} "Deleting cache files in Documents and Settings folder"
; delete program files
LangString DeleteProgramFilesMB ${LANG_ENGLISH} "There are still files in your SecondLife program directory.$\n$\nThese are possibly files you created or moved to:$\n$INSTDIR$\n$\nDo you want to remove them?"
; uninstall text
LangString UninstallTextMsg ${LANG_ENGLISH} "This will uninstall Second Life ${VERSION_LONG} from your system."
; First is default
LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
; subtitle on license text caption
LangString LicenseSubTitleUpdate ${LANG_ENGLISH} " Update"
LangString LicenseSubTitleSetup ${LANG_ENGLISH} " Setup"
; installation directory text
LangString DirectoryChooseTitle ${LANG_ENGLISH} "Installation Directory"
LangString DirectoryChooseUpdate ${LANG_ENGLISH} "Select the Second Life directory to update to version ${VERSION_LONG}.(XXX):"
LangString DirectoryChooseSetup ${LANG_ENGLISH} "Select the directory to install Second Life in:"
; CheckStartupParams message box
LangString CheckStartupParamsMB ${LANG_ENGLISH} "Could not find the program '$INSTPROG'. Silent update failed."
; installation success dialog
LangString InstSuccesssQuestion ${LANG_ENGLISH} "Start Second Life now?"
; remove old NSIS version
LangString RemoveOldNSISVersion ${LANG_ENGLISH} "Checking for old version..."
; check windows version
LangString CheckWindowsVersionDP ${LANG_ENGLISH} "Checking Windows version..."
LangString CheckWindowsVersionMB ${LANG_ENGLISH} 'Second Life only supports Windows XP, Windows 2000, and Mac OS X.$\n$\nAttempting to install on Windows $R0 can result in crashes and data loss.$\n$\nInstall anyway?'
; checkifadministrator function (install)
LangString CheckAdministratorInstDP ${LANG_ENGLISH} "Checking for permission to install..."
LangString CheckAdministratorInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to install Second Life.'
; checkifadministrator function (uninstall)
LangString CheckAdministratorUnInstDP ${LANG_ENGLISH} "Checking for permission to uninstall..."
LangString CheckAdministratorUnInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to uninstall Second Life.'
; checkifalreadycurrent
LangString CheckIfCurrentMB ${LANG_ENGLISH} "It appears that Second Life ${VERSION_LONG} is already installed.$\n$\nWould you like to install it again?"
; closesecondlife function (install)
LangString CloseSecondLifeInstDP ${LANG_ENGLISH} "Waiting for Second Life to shut down..."
LangString CloseSecondLifeInstMB ${LANG_ENGLISH} "Second Life can't be installed while it is already running.$\n$\nFinish what you're doing then select OK to close Second Life and continue.$\nSelect CANCEL to cancel installation."
; closesecondlife function (uninstall)
LangString CloseSecondLifeUnInstDP ${LANG_ENGLISH} "Waiting for Second Life to shut down..."
LangString CloseSecondLifeUnInstMB ${LANG_ENGLISH} "Second Life can't be uninstalled while it is already running.$\n$\nFinish what you're doing then select OK to close Second Life and continue.$\nSelect CANCEL to cancel."
; removecachefiles
LangString RemoveCacheFilesDP ${LANG_ENGLISH} "Deleting cache files in Documents and Settings folder"
; delete program files
LangString DeleteProgramFilesMB ${LANG_ENGLISH} "There are still files in your SecondLife program directory.$\n$\nThese are possibly files you created or moved to:$\n$INSTDIR$\n$\nDo you want to remove them?"
; uninstall text
LangString UninstallTextMsg ${LANG_ENGLISH} "This will uninstall Second Life ${VERSION_LONG} from your system."

View File

@ -1,57 +1,57 @@
; First is default
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Japanese.nlf"
; subtitle on license text caption
LangString LicenseSubTitleUpdate ${LANG_JAPANESE} " アップデート"
LangString LicenseSubTitleSetup ${LANG_JAPANESE} " セットアップ"
; description on license page
LangString LicenseDescUpdate ${LANG_JAPANESE} "このパッケージはセカンドライフをバージョン${VERSION_LONG}.にアップデートします。"
LangString LicenseDescSetup ${LANG_JAPANESE} "このパッケージはあなたのコンピュータにセカンドライフをインストールします。"
LangString LicenseDescNext ${LANG_JAPANESE} "次"
; installation directory text
LangString DirectoryChooseTitle ${LANG_JAPANESE} "インストール・ディレクトリ"
LangString DirectoryChooseUpdate ${LANG_JAPANESE} "アップデートするセカンドライフのディレクトリを選択してください。:"
LangString DirectoryChooseSetup ${LANG_JAPANESE} "セカンドライフをインストールするディレクトリを選択してください。: "
; CheckStartupParams message box
LangString CheckStartupParamsMB ${LANG_JAPANESE} "プログラム名'$INSTPROG'が見つかりません。サイレント・アップデートに失敗しました。"
; installation success dialog
LangString InstSuccesssQuestion ${LANG_JAPANESE} "直ちにセカンドライフを開始しますか? "
; remove old NSIS version
LangString RemoveOldNSISVersion ${LANG_JAPANESE} "古いバージョン情報をチェック中です…"
; check windows version
LangString CheckWindowsVersionDP ${LANG_JAPANESE} "ウィンドウズのバージョン情報をチェック中です..."
LangString CheckWindowsVersionMB ${LANG_JAPANESE} "セカンドライフはWindows XP、Windows 2000、Mac OS Xのみをサポートしています。Windows $R0をインストールする事は、データの消失やクラッシュの原因になる可能性があります。インストールを続けますか"
; checkifadministrator function (install)
LangString CheckAdministratorInstDP ${LANG_JAPANESE} "インストールのための権限をチェック中です..."
LangString CheckAdministratorInstMB ${LANG_JAPANESE} "セカンドライフをインストールするには管理者権限が必要です。"
; checkifadministrator function (uninstall)
LangString CheckAdministratorUnInstDP ${LANG_JAPANESE} "アンインストールのための権限をチェック中です..."
LangString CheckAdministratorUnInstMB ${LANG_JAPANESE} "セカンドライフをアンインストールするには管理者権限が必要です。"
; checkifalreadycurrent
LangString CheckIfCurrentMB ${LANG_JAPANESE} "セカンドライフ${VERSION_LONG} はインストール済みです。再度インストールしますか? "
; closesecondlife function (install)
LangString CloseSecondLifeInstDP ${LANG_JAPANESE} "セカンドライフを終了中です..."
LangString CloseSecondLifeInstMB ${LANG_JAPANESE} "セカンドライフの起動中にインストールは出来ません。直ちにセカンドライフを終了してインストールを開始する場合はOKボタンを押してください。CANCELを押すと中止します。"
; closesecondlife function (uninstall)
LangString CloseSecondLifeUnInstDP ${LANG_JAPANESE} "セカンドライフを終了中です..."
LangString CloseSecondLifeUnInstMB ${LANG_JAPANESE} "セカンドライフの起動中にアンインストールは出来ません。直ちにセカンドライフを終了してアンインストールを開始する場合はOKボタンを押してください。CANCELを押すと中止します。"
; removecachefiles
LangString RemoveCacheFilesDP ${LANG_JAPANESE} " Documents and Settings フォルダのキャッシュファイルをデリート中です。"
; delete program files
LangString DeleteProgramFilesMB ${LANG_JAPANESE} "セカンドライフのディレクトリには、まだファイルが残されています。$\n$INSTDIR$\nにあなたが作成、または移動させたファイルがある可能性があります。全て削除しますか "
; uninstall text
LangString UninstallTextMsg ${LANG_JAPANESE} "セカンドライフ${VERSION_LONG}をアンインストールします。"
; First is default
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Japanese.nlf"
; subtitle on license text caption
LangString LicenseSubTitleUpdate ${LANG_JAPANESE} " アップデート"
LangString LicenseSubTitleSetup ${LANG_JAPANESE} " セットアップ"
; description on license page
LangString LicenseDescUpdate ${LANG_JAPANESE} "このパッケージはセカンドライフをバージョン${VERSION_LONG}.にアップデートします。"
LangString LicenseDescSetup ${LANG_JAPANESE} "このパッケージはあなたのコンピュータにセカンドライフをインストールします。"
LangString LicenseDescNext ${LANG_JAPANESE} "次"
; installation directory text
LangString DirectoryChooseTitle ${LANG_JAPANESE} "インストール・ディレクトリ"
LangString DirectoryChooseUpdate ${LANG_JAPANESE} "アップデートするセカンドライフのディレクトリを選択してください。:"
LangString DirectoryChooseSetup ${LANG_JAPANESE} "セカンドライフをインストールするディレクトリを選択してください。: "
; CheckStartupParams message box
LangString CheckStartupParamsMB ${LANG_JAPANESE} "プログラム名'$INSTPROG'が見つかりません。サイレント・アップデートに失敗しました。"
; installation success dialog
LangString InstSuccesssQuestion ${LANG_JAPANESE} "直ちにセカンドライフを開始しますか? "
; remove old NSIS version
LangString RemoveOldNSISVersion ${LANG_JAPANESE} "古いバージョン情報をチェック中です…"
; check windows version
LangString CheckWindowsVersionDP ${LANG_JAPANESE} "ウィンドウズのバージョン情報をチェック中です..."
LangString CheckWindowsVersionMB ${LANG_JAPANESE} "セカンドライフはWindows XP、Windows 2000、Mac OS Xのみをサポートしています。Windows $R0をインストールする事は、データの消失やクラッシュの原因になる可能性があります。インストールを続けますか"
; checkifadministrator function (install)
LangString CheckAdministratorInstDP ${LANG_JAPANESE} "インストールのための権限をチェック中です..."
LangString CheckAdministratorInstMB ${LANG_JAPANESE} "セカンドライフをインストールするには管理者権限が必要です。"
; checkifadministrator function (uninstall)
LangString CheckAdministratorUnInstDP ${LANG_JAPANESE} "アンインストールのための権限をチェック中です..."
LangString CheckAdministratorUnInstMB ${LANG_JAPANESE} "セカンドライフをアンインストールするには管理者権限が必要です。"
; checkifalreadycurrent
LangString CheckIfCurrentMB ${LANG_JAPANESE} "セカンドライフ${VERSION_LONG} はインストール済みです。再度インストールしますか? "
; closesecondlife function (install)
LangString CloseSecondLifeInstDP ${LANG_JAPANESE} "セカンドライフを終了中です..."
LangString CloseSecondLifeInstMB ${LANG_JAPANESE} "セカンドライフの起動中にインストールは出来ません。直ちにセカンドライフを終了してインストールを開始する場合はOKボタンを押してください。CANCELを押すと中止します。"
; closesecondlife function (uninstall)
LangString CloseSecondLifeUnInstDP ${LANG_JAPANESE} "セカンドライフを終了中です..."
LangString CloseSecondLifeUnInstMB ${LANG_JAPANESE} "セカンドライフの起動中にアンインストールは出来ません。直ちにセカンドライフを終了してアンインストールを開始する場合はOKボタンを押してください。CANCELを押すと中止します。"
; removecachefiles
LangString RemoveCacheFilesDP ${LANG_JAPANESE} " Documents and Settings フォルダのキャッシュファイルをデリート中です。"
; delete program files
LangString DeleteProgramFilesMB ${LANG_JAPANESE} "セカンドライフのディレクトリには、まだファイルが残されています。$\n$INSTDIR$\nにあなたが作成、または移動させたファイルがある可能性があります。全て削除しますか "
; uninstall text
LangString UninstallTextMsg ${LANG_JAPANESE} "セカンドライフ${VERSION_LONG}をアンインストールします。"

View File

@ -1,57 +1,57 @@
; First is default
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Korean.nlf"
; subtitle on license text caption
LangString LicenseSubTitleUpdate ${LANG_KOREAN} "업데이트"
LangString LicenseSubTitleSetup ${LANG_KOREAN} " 설치하기"
; description on license page
LangString LicenseDescUpdate ${LANG_KOREAN} "이 팩키지는 세컨드라이프를 버전${VERSION_LONG}.으로 업데이트 합니다. "
LangString LicenseDescSetup ${LANG_KOREAN} "이 팩키지는 세컨드라이프를 컴퓨터에 설치합니다."
LangString LicenseDescNext ${LANG_KOREAN} "다음"
; installation directory text
LangString DirectoryChooseTitle ${LANG_KOREAN} "설치 디렉토리"
LangString DirectoryChooseUpdate ${LANG_KOREAN} "세컨드라이프를 업데이트할 디렉토리를 선택하세요. "
LangString DirectoryChooseSetup ${LANG_KOREAN} "세컨드라이프를 설치할 디렉토리를 선택하세요:"
; CheckStartupParams message box
LangString CheckStartupParamsMB ${LANG_KOREAN} " $INSTPROG 프로그램을 찾지 못했습니다. 자동 업데이트에 실패했습니다."
; installation success dialog
LangString InstSuccesssQuestion ${LANG_KOREAN} "세컨드라이프를 시작하겠습니까?"
; remove old NSIS version
LangString RemoveOldNSISVersion ${LANG_KOREAN} "이전 버전을 찾고 있습니다… "
; check windows version
LangString CheckWindowsVersionDP ${LANG_KOREAN} "윈도우 버전을 확인하고 있습니다."
LangString CheckWindowsVersionMB ${LANG_KOREAN} "세컨드라이프는 윈도우 XP, 윈도우 2000, 그리고 맥 OS X를 지원합니다. 윈도우 $R0에 설치를 시도하면 오작동과 데이터 분실이 일어날 수 있습니다. 계속 설치하겠습니까? "
; checkifadministrator function (install)
LangString CheckAdministratorInstDP ${LANG_KOREAN} "설치 권한을 확인 중입니다... "
LangString CheckAdministratorInstMB ${LANG_KOREAN} "현재 ‘손님’계정을 사용 중입니다. 세컨드라이프를 설치하기 위해선 ‘운영자” 계정을 사용해야 합니다."
; checkifadministrator function (uninstall)
LangString CheckAdministratorUnInstDP ${LANG_KOREAN} "제거 권한을 확인 중입니다. "
LangString CheckAdministratorUnInstMB ${LANG_KOREAN} " 현재 ‘손님’계정을 사용 중입니다. 세컨드라이프를 제거하기 위해선 ‘운영자” 계정을 사용해야 합니다. "
; checkifalreadycurrent
LangString CheckIfCurrentMB ${LANG_KOREAN} "세컨드라이프 버전 ${VERSION_LONG}이 이미 설치되어 있습니다. 다시 설치하시겠습니까? "
; closesecondlife function (install)
LangString CloseSecondLifeInstDP ${LANG_KOREAN} "세컨드라이프를 종료할 때 까지 대기 중… "
LangString CloseSecondLifeInstMB ${LANG_KOREAN} "세컨드라이프가 이미 작동 중일 경우 설치를 계속 할 수 없습니다. 현재 작업을 멈추고 ‘확인’을 눌러 세컨드라이프를 종료한 다음 진행하기 바랍니다. 설치를 취소하려면 ‘취소’를 누르세요."
; closesecondlife function (uninstall)
LangString CloseSecondLifeUnInstDP ${LANG_KOREAN} "세컨드라이프를 종료할 때 까지 대기 중…”"
LangString CloseSecondLifeUnInstMB ${LANG_KOREAN} " 세컨드라이프가 이미 작동 중일 경우 제거를 계속 할 수 없습니다. 현재 작업을 멈추고 ‘확인’을 눌러 세컨드라이프를 종료한 다음 진행하기 바랍니다. 설치를 취하려면 ‘취소’를 누르세요. "
; removecachefiles
LangString RemoveCacheFilesDP ${LANG_KOREAN} " Documents and Settings 폴더 내의 캐시 파일들을 지웁니다."
; delete program files
LangString DeleteProgramFilesMB ${LANG_KOREAN} "세컨드라이프 프로그램 디렉토리에 아직 파일들이 남아 있습니다. 이 파일들은 사용자가 만든 것들이거나$\n$INSTDIR$\n$\n로 이동한 파일들일 수 있습니다. 이 파일들을 제거하겠습니까?"
; uninstall text
LangString UninstallTextMsg ${LANG_KOREAN} "세컨드라이프${VERSION_LONG}을 시스템에서 제거합니다."
; First is default
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Korean.nlf"
; subtitle on license text caption
LangString LicenseSubTitleUpdate ${LANG_KOREAN} "업데이트"
LangString LicenseSubTitleSetup ${LANG_KOREAN} " 설치하기"
; description on license page
LangString LicenseDescUpdate ${LANG_KOREAN} "이 팩키지는 세컨드라이프를 버전${VERSION_LONG}.으로 업데이트 합니다. "
LangString LicenseDescSetup ${LANG_KOREAN} "이 팩키지는 세컨드라이프를 컴퓨터에 설치합니다."
LangString LicenseDescNext ${LANG_KOREAN} "다음"
; installation directory text
LangString DirectoryChooseTitle ${LANG_KOREAN} "설치 디렉토리"
LangString DirectoryChooseUpdate ${LANG_KOREAN} "세컨드라이프를 업데이트할 디렉토리를 선택하세요. "
LangString DirectoryChooseSetup ${LANG_KOREAN} "세컨드라이프를 설치할 디렉토리를 선택하세요:"
; CheckStartupParams message box
LangString CheckStartupParamsMB ${LANG_KOREAN} " $INSTPROG 프로그램을 찾지 못했습니다. 자동 업데이트에 실패했습니다."
; installation success dialog
LangString InstSuccesssQuestion ${LANG_KOREAN} "세컨드라이프를 시작하겠습니까?"
; remove old NSIS version
LangString RemoveOldNSISVersion ${LANG_KOREAN} "이전 버전을 찾고 있습니다… "
; check windows version
LangString CheckWindowsVersionDP ${LANG_KOREAN} "윈도우 버전을 확인하고 있습니다."
LangString CheckWindowsVersionMB ${LANG_KOREAN} "세컨드라이프는 윈도우 XP, 윈도우 2000, 그리고 맥 OS X를 지원합니다. 윈도우 $R0에 설치를 시도하면 오작동과 데이터 분실이 일어날 수 있습니다. 계속 설치하겠습니까? "
; checkifadministrator function (install)
LangString CheckAdministratorInstDP ${LANG_KOREAN} "설치 권한을 확인 중입니다... "
LangString CheckAdministratorInstMB ${LANG_KOREAN} "현재 ‘손님’계정을 사용 중입니다. 세컨드라이프를 설치하기 위해선 ‘운영자” 계정을 사용해야 합니다."
; checkifadministrator function (uninstall)
LangString CheckAdministratorUnInstDP ${LANG_KOREAN} "제거 권한을 확인 중입니다. "
LangString CheckAdministratorUnInstMB ${LANG_KOREAN} " 현재 ‘손님’계정을 사용 중입니다. 세컨드라이프를 제거하기 위해선 ‘운영자” 계정을 사용해야 합니다. "
; checkifalreadycurrent
LangString CheckIfCurrentMB ${LANG_KOREAN} "세컨드라이프 버전 ${VERSION_LONG}이 이미 설치되어 있습니다. 다시 설치하시겠습니까? "
; closesecondlife function (install)
LangString CloseSecondLifeInstDP ${LANG_KOREAN} "세컨드라이프를 종료할 때 까지 대기 중… "
LangString CloseSecondLifeInstMB ${LANG_KOREAN} "세컨드라이프가 이미 작동 중일 경우 설치를 계속 할 수 없습니다. 현재 작업을 멈추고 ‘확인’을 눌러 세컨드라이프를 종료한 다음 진행하기 바랍니다. 설치를 취소하려면 ‘취소’를 누르세요."
; closesecondlife function (uninstall)
LangString CloseSecondLifeUnInstDP ${LANG_KOREAN} "세컨드라이프를 종료할 때 까지 대기 중…”"
LangString CloseSecondLifeUnInstMB ${LANG_KOREAN} " 세컨드라이프가 이미 작동 중일 경우 제거를 계속 할 수 없습니다. 현재 작업을 멈추고 ‘확인’을 눌러 세컨드라이프를 종료한 다음 진행하기 바랍니다. 설치를 취하려면 ‘취소’를 누르세요. "
; removecachefiles
LangString RemoveCacheFilesDP ${LANG_KOREAN} " Documents and Settings 폴더 내의 캐시 파일들을 지웁니다."
; delete program files
LangString DeleteProgramFilesMB ${LANG_KOREAN} "세컨드라이프 프로그램 디렉토리에 아직 파일들이 남아 있습니다. 이 파일들은 사용자가 만든 것들이거나$\n$INSTDIR$\n$\n로 이동한 파일들일 수 있습니다. 이 파일들을 제거하겠습니까?"
; uninstall text
LangString UninstallTextMsg ${LANG_KOREAN} "세컨드라이프${VERSION_LONG}을 시스템에서 제거합니다."

View File

@ -108,6 +108,7 @@
#include "lldebugview.h"
#include "llconsole.h"
#include "llcontainerview.h"
#include "llfloaterstats.h"
#include "llhoverview.h"
#include "llsdserialize.h"
@ -210,13 +211,6 @@ extern OSStatus DisplayReleaseNotes(void);
#endif // LL_DARWIN
#include "moviemaker.h"
extern BOOL gbCapturing;
#if !LL_SOLARIS
extern MovieMaker gMovieMaker;
#endif
extern BOOL gRandomizeFramerate;
extern BOOL gPeriodicSlowFrame;
@ -1425,12 +1419,6 @@ bool LLAppViewer::mainLoop()
LLFloaterSnapshot::update(); // take snapshots
#if !LL_SOLARIS
if (gbCapturing)
{
gMovieMaker.Snap();
}
#endif
#if LL_WINDOWS && LL_LCD_COMPILE
// update LCD Screen
gLcdScreen->UpdateDisplay();
@ -2440,7 +2428,7 @@ void LLAppViewer::cleanupSavedSettings()
if (gDebugView)
{
gSavedSettings.setBOOL("ShowDebugConsole", gDebugView->mDebugConsolep->getVisible());
gSavedSettings.setBOOL("ShowDebugStats", gDebugView->mStatViewp->getVisible());
gSavedSettings.setBOOL("ShowDebugStats", gDebugView->mFloaterStatsp->getVisible());
}
}

View File

@ -429,10 +429,8 @@ void LLChatBar::sendChat( EChatType type )
//-----------------------------------------------------------------------
// static
void LLChatBar::startChat(void* userdata)
void LLChatBar::startChat(const char* line)
{
const char* line = (const char*)userdata;
gChatBar->setVisible(TRUE);
gChatBar->setKeyboardFocus(TRUE);
gSavedSettings.setBOOL("ChatVisible", TRUE);

View File

@ -90,7 +90,7 @@ public:
static void onCommitGesture(LLUICtrl* ctrl, void* data);
static void startChat(void*);
static void startChat(const char* line);
static void stopChat();
protected:

View File

@ -332,6 +332,7 @@ void LLCurrencyUIManager::Impl::currencyKey(S32 value)
// get reset and the cursor will change...
mPanel.childHide("currency_est");
mPanel.childSetVisible("getting_data",TRUE);
}
mCurrencyChanged = true;
@ -392,6 +393,13 @@ void LLCurrencyUIManager::Impl::updateUI()
mPanel.childSetTextArg("currency_est", "[USD]", llformat("%#.2f", mSiteCurrencyEstimatedCost / 100.0));
mPanel.childSetVisible("currency_est", mSiteCurrencyEstimated && mUserCurrencyBuy > 0);
if (mPanel.childIsEnabled("buy_btn")
||mPanel.childIsVisible("currency_est")
|| mPanel.childIsVisible("error_web"))
{
mPanel.childSetVisible("getting_data",FALSE);
}
}

View File

@ -43,6 +43,7 @@
#include "imageids.h"
#include "llvelocitybar.h"
#include "llviewerwindow.h"
#include "llfloaterstats.h"
//
// Globals
@ -100,16 +101,16 @@ LLDebugView::LLDebugView(const std::string& name, const LLRect &rect)
// Debug statistics
//
r.set(rect.getWidth() - 250,
rect.getHeight(),
rect.getHeight() - 50,
rect.getWidth(),
rect.getHeight() - 400);
mStatViewp = new LLContainerView("statistics", r);
mStatViewp->setLabel("Statistics");
mStatViewp->setFollowsTop();
mStatViewp->setFollowsRight();
rect.getHeight() - 450);
mFloaterStatsp = new LLFloaterStats(r);
mFloaterStatsp->setFollowsTop();
mFloaterStatsp->setFollowsRight();
// Default to off
mStatViewp->setVisible(FALSE);
addChild(mStatViewp);
mFloaterStatsp->setVisible(FALSE);
addChild(mFloaterStatsp);
const S32 VELOCITY_LEFT = 10; // 370;
const S32 VELOCITY_WIDTH = 500;

View File

@ -46,7 +46,7 @@ class LLFastTimerView;
class LLMemoryView;
class LLConsole;
class LLTextureView;
class LLContainerView;
class LLFloaterStats;
class LLDebugView : public LLView
{
@ -61,7 +61,7 @@ public:
LLFastTimerView* mFastTimerView;
LLMemoryView* mMemoryView;
LLConsole* mDebugConsolep;
LLContainerView* mStatViewp;
LLFloaterStats* mFloaterStatsp;
};
extern LLDebugView* gDebugView;

View File

@ -229,6 +229,10 @@ void LLFloaterBuyCurrencyUI::updateUI()
}
childSetVisible("error_web", !mManager.errorURI().empty());
if (!mManager.errorURI().empty())
{
childHide("getting_data");
}
}
else
{
@ -308,6 +312,11 @@ void LLFloaterBuyCurrencyUI::updateUI()
}
childSetEnabled("buy_btn", mManager.canBuy());
if (!mManager.canBuy() && !childIsVisible("error_web"))
{
childShow("getting_data");
}
}
// static

View File

@ -434,12 +434,25 @@ void LLFloaterChat::loadHistory()
}
//static
void LLFloaterChat::chatFromLogFile(LLString line, void* userdata)
void LLFloaterChat::chatFromLogFile(LLLogChat::ELogLineType type , LLString line, void* userdata)
{
LLChat chat;
chat.mText = line;
addChatHistory(chat, FALSE);
switch (type)
{
case LLLogChat::LOG_EMPTY:
case LLLogChat::LOG_END:
// *TODO: nice message from XML file here
break;
case LLLogChat::LOG_LINE:
{
LLChat chat;
chat.mText = line;
addChatHistory(chat, FALSE);
}
break;
default:
// nothing
break;
}
}
//static

View File

@ -38,7 +38,7 @@
#define LL_LLFLOATERCHAT_H
#include "llfloater.h"
#include "lllogchat.h"
class LLButton;
class LLChat;
class LLComboBox;
@ -48,6 +48,7 @@ class LLMessageSystem;
class LLUUID;
class LLCheckBoxCtrl;
class LLPanelActiveSpeakers;
class LLLogChat;
class LLFloaterChat
: public LLFloater, public LLUISingleton<LLFloaterChat, LLFloaterChat>
@ -74,7 +75,7 @@ public:
static void onClickMute(void *data);
static void onClickToggleShowMute(LLUICtrl* caller, void *data);
static void onClickToggleActiveSpeakers(void* userdata);
static void chatFromLogFile(LLString line, void* userdata);
static void chatFromLogFile(LLLogChat::ELogLineType type,LLString line, void* userdata);
static void loadHistory();
static void* createSpeakersPanel(void* data);
static void* createChatPanel(void* data);

View File

@ -99,7 +99,7 @@ LLFloaterGesture::~LLFloaterGesture()
// Custom saving rectangle, since load must be done
// after postBuild.
gSavedSettings.setRect("FloaterGestureRect", getRect());
gSavedSettings.setRect("FloaterGestureRect2", getRect());
}
// virtual
@ -147,7 +147,7 @@ void LLFloaterGesture::show()
gUICtrlFactory->buildFloater(self, "floater_gesture.xml");
// Fix up rectangle
LLRect rect = gSavedSettings.getRect("FloaterGestureRect");
LLRect rect = gSavedSettings.getRect("FloaterGestureRect2");
self->reshape(rect.getWidth(), rect.getHeight());
self->setRect(rect);
@ -156,7 +156,12 @@ void LLFloaterGesture::show()
self->childSetFocus("gesture_list");
LLCtrlListInterface *list = self->childGetListInterface("gesture_list");
if (list) list->selectFirstItem();
if (list)
{
const BOOL ascending = TRUE;
list->sortByColumn("name", ascending);
list->selectFirstItem();
}
self->mSelectedID = LLUUID::null;

View File

@ -759,6 +759,9 @@ void LLFloaterTools::onOpen()
{
mParcelSelection = gParcelMgr->getFloatingParcelSelection();
mObjectSelection = gSelectMgr->getEditSelection();
gMenuBarView->setItemVisible("Tools", TRUE);
gMenuBarView->arrange();
}
// virtual
@ -788,6 +791,9 @@ void LLFloaterTools::onClose(bool app_quitting)
// we were already in basic toolset, using build tools
// so manually reset tool to default (pie menu tool)
gToolMgr->getCurrentToolset()->selectFirstTool();
gMenuBarView->setItemVisible("Tools", FALSE);
gMenuBarView->arrange();
}
void LLFloaterTools::showMore(BOOL show_more)

View File

@ -128,14 +128,14 @@ public:
virtual void changed(U32 mask);
};
void LLMapFriendObserver::changed(U32 mask)
{
// if there's a change we're interested in.
if((mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE | LLFriendObserver::POWERS)) != 0)
{
gFloaterWorldMap->friendsChanged();
}
}
//void LLMapFriendObserver::changed(U32 mask)
//{
// // if there's a change we're interested in.
// if((mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE | LLFriendObserver::POWERS)) != 0)
// {
// gFloaterWorldMap->friendsChanged();
// }
//}
//---------------------------------------------------------------------------
// Statics
@ -202,15 +202,15 @@ BOOL LLFloaterWorldMap::postBuild()
onCommitBackground((void*)this, false);
childSetCommitCallback("friend combo", onAvatarComboCommit, this);
//childSetCommitCallback("friend combo", onAvatarComboCommit, this);
LLComboBox *avatar_combo = LLUICtrlFactory::getComboBoxByName(this, "friend combo");
if (avatar_combo)
{
avatar_combo->selectFirstItem();
avatar_combo->setPrearrangeCallback( onAvatarComboPrearrange );
avatar_combo->setTextEntryCallback( onComboTextEntry );
}
//LLComboBox *avatar_combo = LLUICtrlFactory::getComboBoxByName(this, "friend combo");
//if (avatar_combo)
//{
// avatar_combo->selectFirstItem();
// avatar_combo->setPrearrangeCallback( onAvatarComboPrearrange );
// avatar_combo->setTextEntryCallback( onComboTextEntry );
//}
childSetAction("DoSearch", onLocationCommit, this);
@ -323,7 +323,7 @@ void LLFloaterWorldMap::show(void*, BOOL center_on_target)
gFloaterWorldMap->childSetFocus("location", TRUE);
gFocusMgr.triggerFocusFlash();
gFloaterWorldMap->buildAvatarIDList();
// gFloaterWorldMap->buildAvatarIDList();
gFloaterWorldMap->buildLandmarkIDLists();
// If nothing is being tracked, set flag so the user position will be found
@ -448,14 +448,14 @@ void LLFloaterWorldMap::draw()
updateLocation();
LLTracker::ETrackingStatus tracking_status = LLTracker::getTrackingStatus();
if (LLTracker::TRACKING_AVATAR == tracking_status)
{
childSetColor("avatar_icon", gTrackColor);
}
else
{
childSetColor("avatar_icon", gDisabledTrackColor);
}
//if (LLTracker::TRACKING_AVATAR == tracking_status)
//{
// childSetColor("avatar_icon", gTrackColor);
//}
//else
//{
// childSetColor("avatar_icon", gDisabledTrackColor);
//}
if (LLTracker::TRACKING_LANDMARK == tracking_status)
{
@ -518,38 +518,27 @@ void LLFloaterWorldMap::draw()
LLFloater::draw();
}
//-------------------------------------------------------------------------
// Internal utility functions
//-------------------------------------------------------------------------
//
////-------------------------------------------------------------------------
//// Internal utility functions
////-------------------------------------------------------------------------
//
//
void LLFloaterWorldMap::trackAvatar( const LLUUID& avatar_id, const LLString& name )
{
LLCtrlSelectionInterface *iface = childGetSelectionInterface("friend combo");
if (!iface) return;
buildAvatarIDList();
if(iface->setCurrentByID(avatar_id) || gAgent.isGodlike())
// *HACK: Adjust Z values automatically for liaisons & gods so
// they swoop down when they click on the map. Requested
// convenience.
if(gAgent.isGodlike())
{
// *HACK: Adjust Z values automatically for liaisons & gods so
// they swoop down when they click on the map. Requested
// convenience.
if(gAgent.isGodlike())
{
childSetValue("spin z", LLSD(200.f));
}
// Don't re-request info if we already have it or we won't have it in time to teleport
if (mTrackedStatus != LLTracker::TRACKING_AVATAR || name != mTrackedAvatarName)
{
mTrackedStatus = LLTracker::TRACKING_AVATAR;
mTrackedAvatarName = name;
LLTracker::trackAvatar(avatar_id, name);
}
childSetValue("spin z", LLSD(200.f));
}
else
// Don't re-request info if we already have it or we won't have it in time to teleport
if (mTrackedStatus != LLTracker::TRACKING_AVATAR || name != mTrackedAvatarName)
{
LLTracker::stopTracking(NULL);
mTrackedStatus = LLTracker::TRACKING_AVATAR;
mTrackedAvatarName = name;
LLTracker::trackAvatar(avatar_id, name);
}
setDefaultBtn("Teleport");
}
@ -802,68 +791,68 @@ void LLFloaterWorldMap::inventoryChanged()
}
}
void LLFloaterWorldMap::observeFriends()
{
if(!mFriendObserver)
{
mFriendObserver = new LLMapFriendObserver;
LLAvatarTracker::instance().addObserver(mFriendObserver);
friendsChanged();
}
}
//void LLFloaterWorldMap::observeFriends()
//{
// if(!mFriendObserver)
// {
// mFriendObserver = new LLMapFriendObserver;
// LLAvatarTracker::instance().addObserver(mFriendObserver);
// friendsChanged();
// }
//}
void LLFloaterWorldMap::friendsChanged()
{
LLAvatarTracker& t = LLAvatarTracker::instance();
const LLUUID& avatar_id = t.getAvatarID();
buildAvatarIDList();
if(avatar_id.notNull())
{
LLCtrlSelectionInterface *iface = childGetSelectionInterface("friend combo");
if(!iface || !iface->setCurrentByID(avatar_id) ||
!t.getBuddyInfo(avatar_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) || gAgent.isGodlike())
{
LLTracker::stopTracking(NULL);
}
}
}
// No longer really builds a list. Instead, just updates mAvatarCombo.
void LLFloaterWorldMap::buildAvatarIDList()
{
LLCtrlListInterface *list = childGetListInterface("friend combo");
if (!list)
{
return;
}
// Delete all but the "None" entry
S32 list_size = list->getItemCount();
if (list_size > 1)
{
list->selectItemRange(1, -1);
list->operateOnSelection(LLCtrlListInterface::OP_DELETE);
}
LLSD default_column;
default_column["name"] = "friend name";
default_column["label"] = "Friend Name";
default_column["width"] = 500;
list->addColumn(default_column);
// Get all of the calling cards for avatar that are currently online
LLCollectMappableBuddies collector;
LLAvatarTracker::instance().applyFunctor(collector);
for (LLCollectMappableBuddies::buddy_map_t::iterator it = collector.mMappable.begin();
it != collector.mMappable.end(); ++it)
{
list->addSimpleElement((*it).first, ADD_BOTTOM, (*it).second);
}
list->setCurrentByID( LLAvatarTracker::instance().getAvatarID() );
list->selectFirstItem();
}
//void LLFloaterWorldMap::friendsChanged()
//{
// LLAvatarTracker& t = LLAvatarTracker::instance();
// const LLUUID& avatar_id = t.getAvatarID();
// buildAvatarIDList();
// if(avatar_id.notNull())
// {
// LLCtrlSelectionInterface *iface = childGetSelectionInterface("friend combo");
// if(!iface || !iface->setCurrentByID(avatar_id) ||
// !t.getBuddyInfo(avatar_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) || gAgent.isGodlike())
// {
// LLTracker::stopTracking(NULL);
// }
// }
//}
//
//// No longer really builds a list. Instead, just updates mAvatarCombo.
//void LLFloaterWorldMap::buildAvatarIDList()
//{
// LLCtrlListInterface *list = childGetListInterface("friend combo");
// if (!list) return;
//
// // Delete all but the "None" entry
// S32 list_size = list->getItemCount();
// while (list_size > 1)
// {
// list->selectNthItem(1);
// list->operateOnSelection(LLCtrlListInterface::OP_DELETE);
// --list_size;
// }
//
// LLSD default_column;
// default_column["name"] = "friend name";
// default_column["label"] = "Friend Name";
// default_column["width"] = 500;
// list->addColumn(default_column);
//
// // Get all of the calling cards for avatar that are currently online
// LLCollectMappableBuddies collector;
// LLAvatarTracker::instance().applyFunctor(collector);
// LLCollectMappableBuddies::buddy_map_t::iterator it;
// LLCollectMappableBuddies::buddy_map_t::iterator end;
// it = collector.mMappable.begin();
// end = collector.mMappable.end();
// for( ; it != end; ++it)
// {
// list->addSimpleElement((*it).first, ADD_BOTTOM, (*it).second);
// }
//
// list->setCurrentByID( LLAvatarTracker::instance().getAvatarID() );
// list->selectFirstItem();
//}
void LLFloaterWorldMap::buildLandmarkIDLists()
@ -969,19 +958,19 @@ void LLFloaterWorldMap::clearLandmarkSelection(BOOL clear_ui)
}
}
void LLFloaterWorldMap::clearAvatarSelection(BOOL clear_ui)
{
if (clear_ui || !childHasKeyboardFocus("friend combo"))
{
mTrackedStatus = LLTracker::TRACKING_NOTHING;
LLCtrlListInterface *list = childGetListInterface("friend combo");
if (list)
{
list->selectByValue( "None" );
}
}
}
//
//void LLFloaterWorldMap::clearAvatarSelection(BOOL clear_ui)
//{
// if (clear_ui || !childHasKeyboardFocus("friend combo"))
// {
// mTrackedStatus = LLTracker::TRACKING_NOTHING;
// LLCtrlListInterface *list = childGetListInterface("friend combo");
// if (list)
// {
// list->selectByValue( "None" );
// }
// }
//}
// Adjust the maximally zoomed out limit of the zoom slider so you
@ -1147,61 +1136,61 @@ void LLFloaterWorldMap::onLandmarkComboCommit( LLUICtrl* ctrl, void* userdata )
// Reset to user postion if nothing is tracked
self->mSetToUserPosition = ( LLTracker::getTrackingStatus() == LLTracker::TRACKING_NOTHING );
}
// static
void LLFloaterWorldMap::onAvatarComboPrearrange( LLUICtrl* ctrl, void* userdata )
{
LLFloaterWorldMap* self = gFloaterWorldMap;
if( !self || self->mIsClosing )
{
return;
}
LLCtrlListInterface *list = self->childGetListInterface("friend combo");
if (!list) return;
LLUUID current_choice;
if( LLAvatarTracker::instance().haveTrackingInfo() )
{
current_choice = LLAvatarTracker::instance().getAvatarID();
}
self->buildAvatarIDList();
if( !list->setCurrentByID( current_choice ) || current_choice.isNull() )
{
LLTracker::stopTracking(NULL);
}
}
// static
void LLFloaterWorldMap::onAvatarComboCommit( LLUICtrl* ctrl, void* userdata )
{
LLFloaterWorldMap* self = gFloaterWorldMap;
if( !self || self->mIsClosing )
{
return;
}
LLCtrlListInterface *list = gFloaterWorldMap->childGetListInterface("friend combo");
if (!list) return;
const LLUUID& new_avatar_id = list->getCurrentID();
if (new_avatar_id.notNull())
{
LLString name;
LLComboBox* combo = LLUICtrlFactory::getComboBoxByName(gFloaterWorldMap, "friend combo");
if (combo) name = combo->getSimple();
self->trackAvatar(new_avatar_id, name);
onShowTargetBtn(self);
}
else
{ // Reset to user postion if nothing is tracked
self->mSetToUserPosition = ( LLTracker::getTrackingStatus() == LLTracker::TRACKING_NOTHING );
}
}
//
//// static
//void LLFloaterWorldMap::onAvatarComboPrearrange( LLUICtrl* ctrl, void* userdata )
//{
// LLFloaterWorldMap* self = gFloaterWorldMap;
// if( !self || self->mIsClosing )
// {
// return;
// }
//
// LLCtrlListInterface *list = self->childGetListInterface("friend combo");
// if (!list) return;
//
// LLUUID current_choice;
//
// if( LLAvatarTracker::instance().haveTrackingInfo() )
// {
// current_choice = LLAvatarTracker::instance().getAvatarID();
// }
//
// self->buildAvatarIDList();
//
// if( !list->setCurrentByID( current_choice ) || current_choice.isNull() )
// {
// LLTracker::stopTracking(NULL);
// }
//}
//
//
//// static
//void LLFloaterWorldMap::onAvatarComboCommit( LLUICtrl* ctrl, void* userdata )
//{
// LLFloaterWorldMap* self = gFloaterWorldMap;
// if( !self || self->mIsClosing )
// {
// return;
// }
//
// LLCtrlListInterface *list = gFloaterWorldMap->childGetListInterface("friend combo");
// if (!list) return;
//
// const LLUUID& new_avatar_id = list->getCurrentID();
// if (new_avatar_id.notNull())
// {
// LLString name;
// LLComboBox* combo = LLUICtrlFactory::getComboBoxByName(gFloaterWorldMap, "friend combo");
// if (combo) name = combo->getSimple();
// self->trackAvatar(new_avatar_id, name);
// onShowTargetBtn(self);
// }
// else
// { // Reset to user postion if nothing is tracked
// self->mSetToUserPosition = ( LLTracker::getTrackingStatus() == LLTracker::TRACKING_NOTHING );
// }
//}
//static
void LLFloaterWorldMap::onLocationFocusChanged( LLFocusableElement* focus, void* userdata )

View File

@ -80,9 +80,9 @@ public:
void observeInventory(LLInventoryModel* inventory);
void inventoryChanged();
// Calls for dealing with changes in friendship
void observeFriends();
void friendsChanged();
//// Calls for dealing with changes in friendship
//void observeFriends();
//void friendsChanged();
// tracking methods
void trackAvatar( const LLUUID& avatar_id, const LLString& name );
@ -98,7 +98,7 @@ public:
F32 getDistanceToDestination(const LLVector3d& pos_global, F32 z_attenuation = 0.5f) const;
void clearLocationSelection(BOOL clear_ui = FALSE);
void clearAvatarSelection(BOOL clear_ui = FALSE);
//void clearAvatarSelection(BOOL clear_ui = FALSE);
void clearLandmarkSelection(BOOL clear_ui = FALSE);
// Adjust the maximally zoomed out limit of the zoom slider so you can
@ -119,8 +119,8 @@ protected:
static void onLandmarkComboPrearrange( LLUICtrl* ctrl, void* data );
static void onLandmarkComboCommit( LLUICtrl* ctrl, void* data );
static void onAvatarComboPrearrange( LLUICtrl* ctrl, void* data );
static void onAvatarComboCommit( LLUICtrl* ctrl, void* data );
//static void onAvatarComboPrearrange( LLUICtrl* ctrl, void* data );
//static void onAvatarComboCommit( LLUICtrl* ctrl, void* data );
static void onCommitBackground(void* data, bool from_click);
@ -148,7 +148,7 @@ protected:
void teleportToLandmark();
void setLandmarkVisited();
void buildAvatarIDList();
//void buildAvatarIDList();
void flyToAvatar();
void teleportToAvatar();

View File

@ -2085,12 +2085,31 @@ void LLFloaterIMPanel::removeTypingIndicator(const LLIMInfo* im_info)
}
//static
void LLFloaterIMPanel::chatFromLogFile(LLString line, void* userdata)
void LLFloaterIMPanel::chatFromLogFile(LLLogChat::ELogLineType type, LLString line, void* userdata)
{
LLFloaterIMPanel* self = (LLFloaterIMPanel*)userdata;
LLUIString message = line;
switch (type)
{
case LLLogChat::LOG_EMPTY:
// add warning log enabled message
message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
break;
case LLLogChat::LOG_END:
// add log end message
message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
break;
case LLLogChat::LOG_LINE:
// just add normal lines from file
break;
default:
// nothing
break;
}
//self->addHistoryLine(line, LLColor4::grey, FALSE);
self->mHistoryEditor->appendColoredText(line, false, true, LLColor4::grey);
self->mHistoryEditor->appendColoredText(message, false, true, LLColor4::grey);
}
void LLFloaterIMPanel::showSessionStartError(

View File

@ -33,6 +33,7 @@
#define LL_IMPANEL_H
#include "llfloater.h"
#include "lllogchat.h"
#include "lluuid.h"
#include "lldarray.h"
#include "llinstantmessage.h"
@ -256,7 +257,7 @@ public:
// Handle other participant in the session typing.
void processIMTyping(const LLIMInfo* im_info, BOOL typing);
static void chatFromLogFile(LLString line, void* userdata);
static void chatFromLogFile(LLLogChat::ELogLineType type, LLString line, void* userdata);
//show error statuses to the user
void showSessionStartError(const std::string& error_string);

View File

@ -33,7 +33,8 @@
#include "lllogchat.h"
#include "llappviewer.h"
#include "llfloaterchat.h"
const S32 LOG_RECALL_SIZE = 2048;
//static
@ -88,7 +89,7 @@ void LLLogChat::saveHistory(LLString filename, LLString line)
}
}
void LLLogChat::loadHistory(LLString filename , void (*callback)(LLString,void*), void* userdata)
void LLLogChat::loadHistory(LLString filename , void (*callback)(ELogLineType,LLString,void*), void* userdata)
{
if(!filename.size())
{
@ -98,6 +99,9 @@ void LLLogChat::loadHistory(LLString filename , void (*callback)(LLString,void*)
FILE* fptr = LLFile::fopen(makeLogFileName(filename).c_str(), "r"); /*Flawfinder: ignore*/
if (!fptr)
{
//LLUIString message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
//callback(LOG_EMPTY,"IM_logging_string",userdata);
callback(LOG_EMPTY,"",userdata);
return; //No previous conversation with this name.
}
else
@ -124,14 +128,14 @@ void LLLogChat::loadHistory(LLString filename , void (*callback)(LLString,void*)
if (!firstline)
{
callback(buffer,userdata);
callback(LOG_LINE,buffer,userdata);
}
else
{
firstline = FALSE;
}
}
callback("-- End of Log ---",userdata);
callback(LOG_END,"",userdata);
fclose(fptr);
}

View File

@ -36,10 +36,18 @@
class LLLogChat
{
public:
// status values for callback function
enum ELogLineType {
LOG_EMPTY,
LOG_LINE,
LOG_END
};
static LLString timestamp(bool withdate = false);
static LLString makeLogFileName(LLString(filename));
static void saveHistory(LLString filename, LLString line);
static void loadHistory(LLString filename, void (*callback)(LLString,void*),void* userdata);
static void loadHistory(LLString filename,
void (*callback)(ELogLineType,LLString,void*),
void* userdata);
};
#endif

View File

@ -934,6 +934,27 @@ void LLPanelLogin::loadLoginPage()
}
oStr << login_page;
// Use the right delimeter depending on how LLURI parses the URL
LLURI login_page_uri = LLURI(login_page);
std::string first_query_delimiter = "&";
if (login_page_uri.queryMap().size() == 0)
{
first_query_delimiter = "?";
}
LLString language(gSavedSettings.getString("Language"));
if(language == "default")
{
language = gSavedSettings.getString("SystemLanguage");
}
oStr << first_query_delimiter<<"lang=" << language;
if (gSavedSettings.getBOOL("FirstLoginThisInstall"))
{
oStr << "&firstlogin=TRUE";
}
#if USE_VIEWER_AUTH
LLURLSimString::sInstance.parse();
@ -989,15 +1010,7 @@ void LLPanelLogin::loadLoginPage()
char* curl_channel = curl_escape(gChannelName.c_str(), 0);
char* curl_version = curl_escape(version.c_str(), 0);
// Use the right delimeter depending on how LLURI parses the URL
LLURI login_page_uri = LLURI(login_page);
std::string first_query_delimiter = "&";
if (login_page_uri.queryMap().size() == 0)
{
first_query_delimiter = "?";
}
oStr << first_query_delimiter << "firstname=" << firstname <<
oStr <<"firstname=" << firstname <<
"&lastname=" << lastname << "&location=" << location << "&region=" << curl_region <<
"&grid=" << gGridInfo[gGridChoice].mLabel << "&channel=" << curl_channel <<
"&version=" << curl_version;
@ -1006,13 +1019,6 @@ void LLPanelLogin::loadLoginPage()
curl_free(curl_channel);
curl_free(curl_version);
LLString language(gSavedSettings.getString("Language"));
if(language == "default")
{
language = gSavedSettings.getString("SystemLanguage");
}
oStr << "&lang=" << language;
if (!gCmdLinePassword.empty())
{

View File

@ -1055,10 +1055,9 @@ void LLPanelObject::getState( )
mLabelRevolutions->setVisible( revolutions_visible );
mSpinRevolutions ->setVisible( revolutions_visible );
bool sculpt_type_visible = FALSE; // currently not visible - for LSL setting only
mCtrlSculptTexture->setVisible(sculpt_texture_visible);
mLabelSculptType->setVisible(sculpt_texture_visible && sculpt_type_visible);
mCtrlSculptType->setVisible(sculpt_texture_visible && sculpt_type_visible);
mLabelSculptType->setVisible(sculpt_texture_visible);
mCtrlSculptType->setVisible(sculpt_texture_visible);
// sculpt texture

View File

@ -51,6 +51,7 @@
#include "llviewerimagelist.h"
#include "llviewerwindow.h"
#include "llappviewer.h"
#include "llweb.h"
LLProgressView* LLProgressView::sInstance = NULL;
@ -66,7 +67,8 @@ const S32 ANIMATION_FRAMES = 1; //13;
// XUI:translate
LLProgressView::LLProgressView(const std::string& name, const LLRect &rect)
: LLPanel(name, rect, FALSE)
: LLPanel(name, rect, FALSE),
mMouseDownInActiveArea( false )
{
mPercentDone = 0.f;
mDrawBackground = TRUE;
@ -89,6 +91,8 @@ LLProgressView::LLProgressView(const std::string& name, const LLRect &rect)
mFadeTimer.stop();
setVisible(FALSE);
mOutlineRect.set( 0, 0, 0, 0 );
sInstance = this;
}
@ -110,12 +114,57 @@ LLString LLProgressView::getWidgetTag() const
return LL_PROGRESS_VIEW_TAG;
}
BOOL LLProgressView::handleMouseDown(S32 x, S32 y, MASK mask)
{
if ( mOutlineRect.pointInRect( x, y ) )
{
mMouseDownInActiveArea = TRUE;
};
return TRUE;
}
BOOL LLProgressView::handleMouseUp(S32 x, S32 y, MASK mask)
{
if ( mOutlineRect.pointInRect( x, y ) )
{
if ( mMouseDownInActiveArea )
{
if ( ! mMessage.empty() )
{
std::string url_to_open( "" );
size_t start_pos = mMessage.find( "http://" );
if ( start_pos != std::string::npos )
{
size_t end_pos = mMessage.find_first_of( " \n\r\t", start_pos );
if ( end_pos != std::string::npos )
url_to_open = mMessage.substr( start_pos, end_pos - start_pos );
else
url_to_open = mMessage.substr( start_pos );
LLWeb::loadURLExternal( url_to_open );
};
};
};
};
return TRUE;
}
BOOL LLProgressView::handleHover(S32 x, S32 y, MASK mask)
{
if( childrenHandleHover( x, y, mask ) == NULL )
{
lldebugst(LLERR_USER_INPUT) << "hover handled by LLProgressView" << llendl;
gViewerWindow->setCursor(UI_CURSOR_WAIT);
if ( mOutlineRect.pointInRect( x, y ) )
{
gViewerWindow->setCursor(UI_CURSOR_ARROW);
}
else
{
gViewerWindow->setCursor(UI_CURSOR_WAIT);
}
}
return TRUE;
}
@ -231,6 +280,53 @@ void LLProgressView::draw()
LLString top_line = LLAppViewer::instance()->getSecondLifeTitle();
S32 bar_bottom = line_two_y - 30;
S32 bar_height = 18;
S32 bar_width = getRect().getWidth() * 2 / 3;
S32 bar_left = (getRect().getWidth() / 2) - (bar_width / 2);
// translucent outline box
S32 background_box_left = ( ( ( getRect().getWidth() / 2 ) - ( bar_width / 2 ) ) / 4 ) * 3;
S32 background_box_top = ( getRect().getHeight() / 2 ) + LINE_SPACING * 5;
S32 background_box_right = getRect().getWidth() - background_box_left;
S32 background_box_bottom = ( getRect().getHeight() / 2 ) - LINE_SPACING * 5;
S32 background_box_width = background_box_right - background_box_left + 1;
S32 background_box_height = background_box_top - background_box_bottom + 1;
gl_draw_scaled_image_with_border( background_box_left + 2,
background_box_bottom - 2,
16,
16,
background_box_width,
background_box_height,
shadow_imagep,
gColors.getColor( "ColorDropShadow" ) );
gl_draw_scaled_image_with_border( background_box_left,
background_box_bottom,
16,
16,
background_box_width,
background_box_height,
bar_imagep,
LLColor4( 0.0f, 0.0f, 0.0f, 0.5f ) );
gl_draw_scaled_image_with_border( background_box_left + 1,
background_box_bottom + 1,
16,
16,
background_box_width - 2,
background_box_height - 2,
bar_imagep,
LLColor4( 0.4f, 0.4f, 0.4f, 0.4f ) );
// we'll need this later for catching a click if it looks like it contains a link
if ( mMessage.find( "http://" ) != std::string::npos )
mOutlineRect.set( background_box_left, background_box_top, background_box_right, background_box_bottom );
else
mOutlineRect.set( 0, 0, 0, 0 );
// draw loading bar
font->renderUTF8(top_line, 0,
line_x, line_one_y,
LLColor4::white,
@ -242,11 +338,6 @@ void LLProgressView::draw()
LLFontGL::HCENTER, LLFontGL::BASELINE,
LLFontGL::DROP_SHADOW);
S32 bar_bottom = line_two_y - 30;
S32 bar_height = 18;
S32 bar_width = getRect().getWidth() * 2 / 3;
S32 bar_left = (getRect().getWidth() / 2) - (bar_width / 2);
gl_draw_scaled_image_with_border(
bar_left + 2,
bar_bottom - 2,

View File

@ -48,6 +48,9 @@ public:
virtual LLString getWidgetTag() const;
/*virtual*/ void draw();
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent);
/*virtual*/ void setVisible(BOOL visible);
@ -70,8 +73,10 @@ protected:
LLButton* mCancelBtn;
LLFrameTimer mFadeTimer;
LLFrameTimer mProgressTimer;
LLRect mOutlineRect;
bool mMouseDownInActiveArea;
static LLProgressView* sInstance;
};
#endif // LL_LLPROGRESSVIEW_H

View File

@ -84,6 +84,7 @@
#include "llcolorscheme.h"
#include "llconsole.h"
#include "llcontainerview.h"
#include "llfloaterstats.h"
#include "lldebugview.h"
#include "lldrawable.h"
#include "lleventnotifier.h"
@ -1629,7 +1630,7 @@ BOOL idle_startup()
LLError::logToFixedBuffer(gDebugView->mDebugConsolep);
// set initial visibility of debug console
gDebugView->mDebugConsolep->setVisible(gSavedSettings.getBOOL("ShowDebugConsole"));
gDebugView->mStatViewp->setVisible(gSavedSettings.getBOOL("ShowDebugStats"));
gDebugView->mFloaterStatsp->setVisible(gSavedSettings.getBOOL("ShowDebugStats"));
}
//
@ -2273,7 +2274,7 @@ BOOL idle_startup()
if(gFloaterWorldMap)
{
gFloaterWorldMap->observeInventory(&gInventory);
gFloaterWorldMap->observeFriends();
//gFloaterWorldMap->observeFriends();
}
gViewerWindow->showCursor();
@ -3036,7 +3037,7 @@ void init_stat_view()
LLRect rect;
LLStatBar *stat_barp;
rect = gDebugView->mStatViewp->getRect();
rect = gDebugView->mFloaterStatsp->getRect();
//
// Viewer advanced stats
@ -3047,7 +3048,7 @@ void init_stat_view()
// Viewer Basic
//
stat_viewp = new LLStatView("basic stat view", "Basic", "OpenDebugStatBasic", rect);
gDebugView->mStatViewp->addChildAtEnd(stat_viewp);
gDebugView->mFloaterStatsp->addStatView(stat_viewp);
stat_barp = stat_viewp->addStat("FPS", &(gViewerStats->mFPSStat));
stat_barp->setUnitLabel(" fps");
@ -3091,7 +3092,7 @@ void init_stat_view()
stat_viewp = new LLStatView("advanced stat view", "Advanced", "OpenDebugStatAdvanced", rect);
gDebugView->mStatViewp->addChildAtEnd(stat_viewp);
gDebugView->mFloaterStatsp->addStatView(stat_viewp);
LLStatView *render_statviewp;
@ -3249,7 +3250,7 @@ void init_stat_view()
// Simulator stats
LLStatView *sim_statviewp = new LLStatView("sim stat view", "Simulator", "OpenDebugStatSim", rect);
gDebugView->mStatViewp->addChildAtEnd(sim_statviewp);
gDebugView->mFloaterStatsp->addStatView(sim_statviewp);
stat_barp = sim_statviewp->addStat("Time Dilation", &(gViewerStats->mSimTimeDilation));
stat_barp->mPrecision = 2;
@ -3485,10 +3486,10 @@ void init_stat_view()
stat_barp->mDisplayBar = FALSE;
stat_barp->mDisplayMean = FALSE;
LLRect r = gDebugView->mStatViewp->getRect();
LLRect r = gDebugView->mFloaterStatsp->getRect();
// Reshape based on the parameters we set.
gDebugView->mStatViewp->reshape(r.getWidth(), r.getHeight());
gDebugView->mFloaterStatsp->reshape(r.getWidth(), r.getHeight());
}
void asset_callback_nothing(LLVFS*, const LLUUID&, LLAssetType::EType, void*, S32)

View File

@ -607,7 +607,7 @@ void LLTracker::stopTrackingAvatar(BOOL clear_ui)
}
purgeBeaconText();
gFloaterWorldMap->clearAvatarSelection(clear_ui);
//gFloaterWorldMap->clearAvatarSelection(clear_ui);
mTrackingStatus = TRACKING_NOTHING;
}

View File

@ -284,7 +284,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
LLImageGL::updateStats(gFrameTimeSeconds);
LLVOAvatar::sRenderName = gSavedSettings.getS32("RenderName");
LLVOAvatar::sRenderGroupTitles = gSavedSettings.getBOOL("RenderGroupTitleAll");
LLVOAvatar::sRenderGroupTitles = !gSavedSettings.getBOOL("RenderHideGroupTitleAll");
gPipeline.mBackfaceCull = TRUE;
gFrameCount++;
if (gFocusMgr.getAppHasFocus())

View File

@ -477,6 +477,24 @@ void start_chat( EKeystate s )
gChatBar->startChat(NULL);
}
void start_gesture( EKeystate s )
{
if (KEYSTATE_UP == s &&
!gChatBar->inputEditorHasFocus())
{
if (gChatBar->getCurrentChat().empty())
{
// No existing chat in chat editor, insert '/'
gChatBar->startChat("/");
}
else
{
// Don't overwrite existing text in chat editor
gChatBar->startChat(NULL);
}
}
}
void bind_keyboard_functions()
{
gViewerKeyboard.bindNamedFunction("jump", agent_jump);
@ -518,6 +536,7 @@ void bind_keyboard_functions()
gViewerKeyboard.bindNamedFunction("edit_avatar_move_backward", edit_avatar_move_backward);
gViewerKeyboard.bindNamedFunction("stop_moving", stop_moving);
gViewerKeyboard.bindNamedFunction("start_chat", start_chat);
gViewerKeyboard.bindNamedFunction("start_gesture", start_gesture);
}
LLViewerKeyboard::LLViewerKeyboard()

View File

@ -55,10 +55,9 @@ typedef enum e_keyboard_mode
} EKeyboardMode;
void agent_push_forward( EKeystate s );
void agent_turn_right( EKeystate s );
void bind_keyboard_functions();
class LLViewerKeyboard
{
public:

View File

@ -120,6 +120,7 @@
#include "llfloaterreporter.h"
#include "llfloaterscriptdebug.h"
#include "llfloaterenvsettings.h"
#include "llfloaterstats.h"
#include "llfloatertest.h"
#include "llfloatertools.h"
#include "llfloaterwater.h"
@ -706,6 +707,9 @@ void init_menus()
gMenuBarView->setRect(LLRect(0, top, 0, top - MENU_BAR_HEIGHT));
gMenuBarView->setBackgroundColor( color );
gMenuBarView->setItemVisible("Tools", FALSE);
gMenuBarView->arrange();
gMenuHolder->addChild(gMenuBarView);
// menu holder appears on top of menu bar so you can see the menu title
@ -2216,10 +2220,23 @@ class LLAvatarFreeze : public view_listener_t
if( avatar )
{
LLUUID* avatar_id = new LLUUID( avatar->getID() );
LLString fullname = avatar->getFullname();
gViewerWindow->alertXml("FreezeAvatar",
callback_freeze, (void*)avatar_id);
if (!fullname.empty())
{
LLString::format_map_t args;
args["[AVATAR_NAME]"] = fullname;
gViewerWindow->alertXml("FreezeAvatarFullname",
args,
callback_freeze,
(void*)avatar_id);
}
else
{
gViewerWindow->alertXml("FreezeAvatar",
callback_freeze,
(void*)avatar_id);
}
}
return true;
}
@ -2305,9 +2322,23 @@ class LLAvatarEject : public view_listener_t
if( avatar )
{
LLUUID* avatar_id = new LLUUID( avatar->getID() );
gViewerWindow->alertXml("EjectAvatar",
callback_eject, (void*)avatar_id);
LLString fullname = avatar->getFullname();
if (!fullname.empty())
{
LLString::format_map_t args;
args["[AVATAR_NAME]"] = fullname;
gViewerWindow->alertXml("EjectAvatarFullname",
args,
callback_eject,
(void*)avatar_id);
}
else
{
gViewerWindow->alertXml("EjectAvatar",
callback_eject,
(void*)avatar_id);
}
}
return true;
}
@ -3254,17 +3285,6 @@ void handle_show_newest_map(void*)
// Help menu functions
//-------------------------------------------------------------------
class LLHelpMOTD : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
LLString::format_map_t args;
args["[MOTD]"] = gAgent.mMOTD;
gViewerWindow->alertXml("MOTD", args, NULL, NULL);
return true;
}
};
//
// Major mode switching
//
@ -5312,7 +5332,7 @@ class LLShowFloater : public view_listener_t
}
else if (floater_name == "stat bar")
{
gDebugView->mStatViewp->setVisible(!gDebugView->mStatViewp->getVisible());
gDebugView->mFloaterStatsp->setVisible(!gDebugView->mFloaterStatsp->getVisible());
}
else if (floater_name == "my land")
{
@ -5428,7 +5448,7 @@ class LLFloaterVisible : public view_listener_t
}
else if (floater_name == "stat bar")
{
new_value = gDebugView->mStatViewp->getVisible();
new_value = gDebugView->mFloaterStatsp->getVisible();
}
else if (floater_name == "active speakers")
{
@ -7140,9 +7160,13 @@ void handle_load_from_xml(void*)
void handle_slurl_test(void*)
{
bool open_app_slurls = true;
bool open_links_externally = false;
LLFloaterHtml::getInstance()->show("http://secondlife.com/app/search/slurls.html", "SLURL Test", open_app_slurls, open_links_externally);
const bool open_links_externally = false;
const bool open_app_slurls = true;
LLFloaterHtml::getInstance()->show(
"http://secondlife.com/app/search/slurls.html",
"SLURL Test",
open_links_externally,
open_app_slurls);
}
void handle_rebake_textures(void*)
@ -7502,15 +7526,6 @@ class LLWorldChat : public view_listener_t
}
};
class LLWorldStartGesture : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
handle_slash_key(NULL);
return true;
}
};
class LLToolsSelectTool : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@ -7724,7 +7739,6 @@ void initialize_menus()
// World menu
addMenu(new LLWorldChat(), "World.Chat");
addMenu(new LLWorldStartGesture(), "World.StartGesture");
addMenu(new LLWorldAlwaysRun(), "World.AlwaysRun");
addMenu(new LLWorldFly(), "World.Fly");
addMenu(new LLWorldCreateLandmark(), "World.CreateLandmark");
@ -7777,7 +7791,6 @@ void initialize_menus()
addMenu(new LLToolsVisibleTakeObject(), "Tools.VisibleTakeObject");*/
// Help menu
addMenu(new LLHelpMOTD(), "Help.MOTD");
// most items use the ShowFloater method
// Self pie menu

View File

@ -414,15 +414,6 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
}
};
class LLFileSaveMovie : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
LLViewerWindow::saveMovieNumbered(NULL);
return true;
}
};
class LLFileSetWindowSize : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@ -1033,7 +1024,6 @@ void init_menu_file()
(new LLFileSaveTexture())->registerListener(gMenuHolder, "File.SaveTexture");
(new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot");
(new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk");
(new LLFileSaveMovie())->registerListener(gMenuHolder, "File.SaveMovie");
(new LLFileSetWindowSize())->registerListener(gMenuHolder, "File.SetWindowSize");
(new LLFileQuit())->registerListener(gMenuHolder, "File.Quit");

View File

@ -81,6 +81,7 @@
#include "llfloaterregioninfo.h"
#include "llfloaterlandholdings.h"
#include "llfloatermap.h"
#include "llurldispatcher.h"
#include "llfloatermute.h"
#include "llfloaterpostcard.h"
#include "llfloaterpreference.h"
@ -5180,8 +5181,11 @@ void process_script_teleport_request(LLMessageSystem* msg, void**)
msg->getVector3("Data", "SimPosition", pos);
msg->getVector3("Data", "LookAt", look_at);
gFloaterWorldMap->trackURL(sim_name, (U32)pos.mV[VX], (U32)pos.mV[VY], (U32)pos.mV[VZ]);
LLFloaterWorldMap::show(NULL, TRUE);
// gFloaterWorldMap->trackURL(sim_name, (U32)pos.mV[VX], (U32)pos.mV[VY], (U32)pos.mV[VZ]);
// LLFloaterWorldMap::show(NULL, TRUE);
LLURLDispatcher::dispatch(LLURLDispatcher::buildSLURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]), FALSE);
}
void process_covenant_reply(LLMessageSystem* msg, void**)

View File

@ -1724,15 +1724,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
void optionally_start_music(const LLString& music_url)
{
if (gSavedSettings.getWarning("FirstStreamingMusic"))
{
std::string* newstring = new std::string(music_url);
gViewerWindow->alertXml("ParcelCanPlayMusic",
callback_start_music,
(void*)newstring);
}
else if (gSavedSettings.getBOOL("AudioStreamingMusic"))
if (gSavedSettings.getBOOL("AudioStreamingMusic"))
{
// Make the user click the start button on the overlay bar. JC
// llinfos << "Starting parcel music " << music_url << llendl;
@ -1747,30 +1739,6 @@ void optionally_start_music(const LLString& music_url)
}
void callback_start_music(S32 option, void* data)
{
std::string* music_url = (std::string*)data;
if (0 == option)
{
gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
llinfos << "Starting first parcel music " << music_url << llendl;
if ( gOverlayBar && gOverlayBar->musicPlaying())
{
gAudiop->startInternetStream(music_url->c_str());
}
}
else
{
gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
}
gSavedSettings.setWarning("FirstStreamingMusic", FALSE);
delete music_url;
music_url = NULL;
}
// static
void LLViewerParcelMgr::processParcelAccessListReply(LLMessageSystem *msg, void **user)
{

View File

@ -962,8 +962,6 @@ BOOL LLViewerTextEditor::handleMouseUp(S32 x, S32 y, MASK mask)
BOOL LLViewerTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
BOOL handled = childrenHandleRightMouseDown(x, y, mask) != NULL;
// *TODO: Add right click menus for SLURLs

View File

@ -126,14 +126,13 @@ private:
LLPointer<class LLEmbeddedNotecardOpener> mInventoryCallback;
// *TODO: Add right click menus for SLURLs
//LLHandle<LLView> mPopupMenuHandle;
//LLViewHandle mPopupMenuHandle;
//
// Inner classes
//
class LLTextCmdInsertEmbeddedItem;
};
#endif // LL_VIEWERTEXTEDITOR_H

View File

@ -178,7 +178,6 @@
#include "llvovolume.h"
#include "llworld.h"
#include "llworldmapview.h"
#include "moviemaker.h"
#include "pipeline.h"
#include "llappviewer.h"
#include "llurlsimstring.h"
@ -242,11 +241,6 @@ BOOL gPickTransparent = TRUE;
BOOL gDebugFastUIRender = FALSE;
BOOL gbCapturing = FALSE;
#if !LL_SOLARIS
MovieMaker gMovieMaker;
#endif
// HUD display lines in lower right
BOOL gDisplayWindInfo = FALSE;
BOOL gDisplayCameraPos = FALSE;
@ -1850,7 +1844,7 @@ void LLViewerWindow::adjustRectanglesForFirstUse(const LLRect& window)
adjust_rect_top_left("FloaterFindRect2", window);
adjust_rect_top_left("FloaterGestureRect", window);
adjust_rect_top_left("FloaterGestureRect2", window);
adjust_rect_top_right("FloaterMapRect", window);
@ -4193,108 +4187,6 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageRaw *raw, const LLString& extensio
return success;
}
void LLViewerWindow::saveMovieNumbered(void*)
{
if (!gbCapturing)
{
// Get a directory if this is the first time.
if (strlen(sSnapshotDir) == 0) /* Flawfinder: ignore */
{
LLString proposed_name( sMovieBaseName );
#if LL_DARWIN
proposed_name.append( ".mov" );
#else
proposed_name.append( ".avi" );
#endif
// pick a directory in which to save
LLFilePicker &picker = LLFilePicker::instance();
if (!picker.getSaveFile(LLFilePicker::FFSAVE_AVI, proposed_name.c_str()))
{
// Clicked cancel
return;
}
// Copy the directory + file name
char directory[LL_MAX_PATH]; /* Flawfinder: ignore */
strncpy(directory, picker.getFirstFile(), LL_MAX_PATH -1); /* Flawfinder: ignore */
directory[LL_MAX_PATH -1] = '\0';
// Smash the file extension
S32 length = strlen(directory); /* Flawfinder: ignore */
S32 index = length;
// Back up over ".bmp"
index -= 4;
if (index >= 0 && directory[index] == '.')
{
directory[index] = '\0';
}
else
{
index = length;
}
// Find trailing backslash
while (index >= 0 && directory[index] != gDirUtilp->getDirDelimiter()[0])
{
index--;
}
// If we found one, truncate the string there
if (index >= 0)
{
if (index + 1 <= length)
{
strncpy(LLViewerWindow::sMovieBaseName, directory + index + 1, LL_MAX_PATH -1); /* Flawfinder: ignore */
LLViewerWindow::sMovieBaseName[LL_MAX_PATH -1] = '\0';
}
index++;
directory[index] = '\0';
strncpy(LLViewerWindow::sSnapshotDir, directory, LL_MAX_PATH -1); /* Flawfinder: ignore */
LLViewerWindow::sSnapshotDir[LL_MAX_PATH -1] = '\0';
}
}
// Look for an unused file name
LLString filepath;
S32 i = 1;
S32 err = 0;
do
{
char extension[100]; /* Flawfinder: ignore */
#if LL_DARWIN
snprintf( extension, sizeof(extension), "_%.3d.mov", i ); /* Flawfinder: ignore */
#else
snprintf( extension, sizeof(extension), "_%.3d.avi", i ); /* Flawfinder: ignore */
#endif
filepath.assign( sSnapshotDir );
filepath.append( sMovieBaseName );
filepath.append( extension );
struct stat stat_info;
err = gViewerWindow->mWindow->stat( filepath.c_str(), &stat_info );
i++;
}
while( -1 != err ); // search until the file is not found (i.e., stat() gives an error).
S32 x = gViewerWindow->getWindowWidth();
S32 y = gViewerWindow->getWindowHeight();
gbCapturing = TRUE;
#if !LL_SOLARIS
gMovieMaker.StartCapture((char *)filepath.c_str(), x, y);
#endif
}
else
{
#if !LL_SOLARIS
gMovieMaker.EndCapture();
#endif
gbCapturing = FALSE;
}
}
static S32 BORDERHEIGHT = 0;
static S32 BORDERWIDTH = 0;

View File

@ -208,9 +208,6 @@ public:
static void loadUserImage(void **cb_data, const LLUUID &uuid);
// Save snapshot like Snapshot 1, 2, 3, etc.
static void saveMovieNumbered(void*);
static void movieSize(S32 new_width, S32 new_height);
typedef enum e_snapshot_type

View File

@ -663,6 +663,7 @@ LLVOAvatar::LLVOAvatar(
mNameAway(FALSE),
mNameBusy(FALSE),
mNameMute(FALSE),
mRenderGroupTitles(sRenderGroupTitles),
mNameAppearance(FALSE),
mLastRegionHandle(0),
mRegionCrossingCount(0),
@ -2792,6 +2793,12 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
mVisibleChat = visible_chat;
new_name = TRUE;
}
if (sRenderGroupTitles != mRenderGroupTitles)
{
mRenderGroupTitles = sRenderGroupTitles;
new_name = TRUE;
}
// First Calculate Alpha
// If alpha > 0, create mNameText if necessary, otherwise delete it
@ -2868,7 +2875,7 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
LLNameValue *title = getNVPair("Title");
LLNameValue* firstname = getNVPair("FirstName");
LLNameValue* lastname = getNVPair("LastName");
if (mNameText.notNull() && firstname && lastname)
{
BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY) != mSignaledAnimations.end();

View File

@ -909,6 +909,8 @@ protected:
BOOL mNameMute;
BOOL mNameAppearance;
BOOL mVisibleChat;
BOOL mRenderGroupTitles;
LLString mDebugText;
U64 mLastRegionHandle;