aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview
diff options
context:
space:
mode:
authorAleric Inglewood2010-10-28 14:45:30 +0200
committerAleric Inglewood2010-10-28 14:45:30 +0200
commitc0547c39f26b3d35f587183fa432434f8a6d2608 (patch)
treeac564c4dfa24057a9b8b9586e8d9f430df514c69 /linden/indra/newview
parentOnly initialize WebCore resource(s) on linux. (diff)
parentMerge branch 'weekly' of http://github.com/imprudence/imprudence into weekly (diff)
downloadmeta-impy-c0547c39f26b3d35f587183fa432434f8a6d2608.zip
meta-impy-c0547c39f26b3d35f587183fa432434f8a6d2608.tar.gz
meta-impy-c0547c39f26b3d35f587183fa432434f8a6d2608.tar.bz2
meta-impy-c0547c39f26b3d35f587183fa432434f8a6d2608.tar.xz
Merge branch 'weekly' into webkit_plugins
Diffstat (limited to 'linden/indra/newview')
-rw-r--r--linden/indra/newview/CMakeLists.txt2
-rw-r--r--linden/indra/newview/Info-Imprudence.plist2
-rw-r--r--linden/indra/newview/app_settings/settings.xml22
-rw-r--r--linden/indra/newview/app_settings/viewerversion.xml2
-rw-r--r--linden/indra/newview/impprefsfonts.cpp50
-rw-r--r--linden/indra/newview/llfloaterpreference.cpp12
-rw-r--r--linden/indra/newview/llfloatersnapshot.cpp1
-rw-r--r--linden/indra/newview/llfloatertools.cpp8
-rw-r--r--linden/indra/newview/llfloatertools.h1
-rw-r--r--linden/indra/newview/llprefsim.cpp32
-rw-r--r--linden/indra/newview/llstartup.cpp3
-rw-r--r--linden/indra/newview/llstartup.h3
-rw-r--r--linden/indra/newview/lltexturefetch.cpp159
-rw-r--r--linden/indra/newview/lltexturefetch.h2
-rw-r--r--linden/indra/newview/llvoavatar.cpp14
-rw-r--r--linden/indra/newview/qtoolalign.cpp585
-rw-r--r--linden/indra/newview/qtoolalign.h50
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_lagmeter.xml14
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_local_asset_browse.xml94
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_media_browser.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_mini_map.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_mute.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_mute_object.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_name_description.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_new_outfit_dialog.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_notifications_console.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_pay.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_pay_object.xml13
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_post_process.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_postcard.xml11
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_preferences.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_preview_notecard.xml34
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_preview_notecard_keep_discard.xml37
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_preview_sound.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_prim_import.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_report_abuse.xml5
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_report_bug.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_rlv_behaviour.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_tools.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/fonts.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/notifications.xml20
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml10
42 files changed, 1121 insertions, 141 deletions
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt
index 6596d39..fb67423 100644
--- a/linden/indra/newview/CMakeLists.txt
+++ b/linden/indra/newview/CMakeLists.txt
@@ -485,6 +485,7 @@ set(viewer_SOURCE_FILES
485 panelradarentry.cpp 485 panelradarentry.cpp
486 pipeline.cpp 486 pipeline.cpp
487 primbackup.cpp 487 primbackup.cpp
488 qtoolalign.cpp
488 rlvhandler.cpp 489 rlvhandler.cpp
489 rlvhelper.cpp 490 rlvhelper.cpp
490 rlvcommon.cpp 491 rlvcommon.cpp
@@ -940,6 +941,7 @@ set(viewer_HEADER_FILES
940 panelradarentry.h 941 panelradarentry.h
941 pipeline.h 942 pipeline.h
942 primbackup.h 943 primbackup.h
944 qtoolalign.h
943 randgauss.h 945 randgauss.h
944 rlvdefines.h 946 rlvdefines.h
945 rlvhandler.h 947 rlvhandler.h
diff --git a/linden/indra/newview/Info-Imprudence.plist b/linden/indra/newview/Info-Imprudence.plist
index 419cacd..3fe2000 100644
--- a/linden/indra/newview/Info-Imprudence.plist
+++ b/linden/indra/newview/Info-Imprudence.plist
@@ -32,7 +32,7 @@
32 </dict> 32 </dict>
33 </array> 33 </array>
34 <key>CFBundleVersion</key> 34 <key>CFBundleVersion</key>
35 <string>Experimental 2010.09.04</string> 35 <string>Experimental 2010.10.17</string>
36 <key>CSResourcesFileMapped</key> 36 <key>CSResourcesFileMapped</key>
37 <true/> 37 <true/>
38</dict> 38</dict>
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index fc5a7c8..11555fa 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -396,6 +396,28 @@
396 <key>Value</key> 396 <key>Value</key>
397 <string>DroidSans</string> 397 <string>DroidSans</string>
398 </map> 398 </map>
399 <key>FontSizeMultiplier</key>
400 <map>
401 <key>Comment</key>
402 <string>Multiply all font sizes by this amount. Requires viewer restart.</string>
403 <key>Persist</key>
404 <integer>1</integer>
405 <key>Type</key>
406 <string>F32</string>
407 <key>Value</key>
408 <string>1.0</string>
409 </map>
410 <key>FontSizeRounding</key>
411 <map>
412 <key>Comment</key>
413 <string>Round all font sizes to integer values, to potentially reduce font blurriness. The rounding occurs after FontSizeMultiplier is applied. Requires viewer restart.</string>
414 <key>Persist</key>
415 <integer>1</integer>
416 <key>Type</key>
417 <string>Boolean</string>
418 <key>Value</key>
419 <integer>0</integer>
420 </map>
399 <key>GoAction</key> 421 <key>GoAction</key>
400 <map> 422 <map>
401 <key>Comment</key> 423 <key>Comment</key>
diff --git a/linden/indra/newview/app_settings/viewerversion.xml b/linden/indra/newview/app_settings/viewerversion.xml
index f50b594..ab4b720 100644
--- a/linden/indra/newview/app_settings/viewerversion.xml
+++ b/linden/indra/newview/app_settings/viewerversion.xml
@@ -20,6 +20,6 @@ need to be changed manually - MC
20 <viewer version_patch="0" /> 20 <viewer version_patch="0" />
21 21
22 <!--string--> 22 <!--string-->
23 <viewer version_test="Experimental 2010.10.17" /> 23 <viewer version_test="Experimental 2010.10.23" />
24 24
25</viewer_version> 25</viewer_version>
diff --git a/linden/indra/newview/impprefsfonts.cpp b/linden/indra/newview/impprefsfonts.cpp
index 3ce71eb..a4dcd34 100644
--- a/linden/indra/newview/impprefsfonts.cpp
+++ b/linden/indra/newview/impprefsfonts.cpp
@@ -29,7 +29,9 @@
29#include "llviewerprecompiledheaders.h" 29#include "llviewerprecompiledheaders.h"
30#include "impprefsfonts.h" 30#include "impprefsfonts.h"
31 31
32#include "llcheckboxctrl.h"
32#include "llradiogroup.h" 33#include "llradiogroup.h"
34#include "llspinctrl.h"
33#include "lluictrlfactory.h" 35#include "lluictrlfactory.h"
34 36
35#include "llviewercontrol.h" 37#include "llviewercontrol.h"
@@ -61,24 +63,64 @@ void ImpPrefsFonts::refresh()
61 { 63 {
62 fonts->setValue( gSavedSettings.getString("FontChoice") ); 64 fonts->setValue( gSavedSettings.getString("FontChoice") );
63 } 65 }
66
67 LLSpinCtrl* font_mult = getChild<LLSpinCtrl>("font_mult");
68 if (font_mult)
69 {
70 font_mult->setValue( gSavedSettings.getF32("FontSizeMultiplier") );
71 }
72
73 LLCheckBoxCtrl* font_round = getChild<LLCheckBoxCtrl>("font_round");
74 if (font_round)
75 {
76 font_round->setValue( gSavedSettings.getBOOL("FontSizeRounding") );
77 }
64} 78}
65 79
66void ImpPrefsFonts::apply() 80void ImpPrefsFonts::apply()
67{ 81{
68 LLRadioGroup* fonts = getChild<LLRadioGroup>("fonts"); 82 bool changed = false;
69 83
84 LLRadioGroup* fonts = getChild<LLRadioGroup>("fonts");
70 if (fonts) 85 if (fonts)
71 { 86 {
72 std::string font_choice = fonts->getValue().asString(); 87 std::string font_choice = fonts->getValue().asString();
73
74 if (font_choice != gSavedSettings.getString("FontChoice") && 88 if (font_choice != gSavedSettings.getString("FontChoice") &&
75 !font_choice.empty()) 89 !font_choice.empty())
76 { 90 {
77 gSavedSettings.setString("FontChoice", font_choice); 91 gSavedSettings.setString("FontChoice", font_choice);
78 LLNotifications::instance().add("ChangeFont"); 92 changed = true;
79 refresh();
80 } 93 }
81 } 94 }
95
96 LLSpinCtrl* font_mult = getChild<LLSpinCtrl>("font_mult");
97 if (font_mult)
98 {
99 F32 mult = font_mult->getValue().asReal();
100 if (mult != gSavedSettings.getF32("FontSizeMultiplier"))
101 {
102 gSavedSettings.setF32("FontSizeMultiplier", mult);
103 changed = true;
104 }
105 }
106
107 LLCheckBoxCtrl* font_round = getChild<LLCheckBoxCtrl>("font_round");
108 if (font_round)
109 {
110 BOOL round = font_round->getValue().asBoolean();
111 if (round != gSavedSettings.getBOOL("FontSizeRounding"))
112 {
113 gSavedSettings.setBOOL("FontSizeRounding", round);
114 changed = true;
115 }
116 }
117
118 if (changed)
119 {
120 refresh();
121 LLNotifications::instance().add("ChangeFont");
122 }
123
82} 124}
83 125
84void ImpPrefsFonts::cancel() 126void ImpPrefsFonts::cancel()
diff --git a/linden/indra/newview/llfloaterpreference.cpp b/linden/indra/newview/llfloaterpreference.cpp
index a94f7cf..b740725 100644
--- a/linden/indra/newview/llfloaterpreference.cpp
+++ b/linden/indra/newview/llfloaterpreference.cpp
@@ -134,8 +134,8 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
134 mMsgPanel(NULL), 134 mMsgPanel(NULL),
135 mSkinsPanel(NULL), 135 mSkinsPanel(NULL),
136 mLCDPanel(NULL), 136 mLCDPanel(NULL),
137 mPrefsAdvanced(NULL), 137 mPrefsFonts(NULL),
138 mPrefsFonts(NULL) 138 mPrefsAdvanced(NULL)
139{ 139{
140 mGeneralPanel = new LLPanelGeneral(); 140 mGeneralPanel = new LLPanelGeneral();
141 mTabContainer->addTabPanel(mGeneralPanel, mGeneralPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 141 mTabContainer->addTabPanel(mGeneralPanel, mGeneralPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
@@ -195,14 +195,14 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
195 mTabContainer->addTabPanel(mSkinsPanel, mSkinsPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 195 mTabContainer->addTabPanel(mSkinsPanel, mSkinsPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
196 mSkinsPanel->setDefaultBtn(default_btn); 196 mSkinsPanel->setDefaultBtn(default_btn);
197 197
198 mPrefsAdvanced = new LLPrefsAdvanced();
199 mTabContainer->addTabPanel(mPrefsAdvanced, mPrefsAdvanced->getLabel(), FALSE, onTabChanged, mTabContainer);
200 mPrefsAdvanced->setDefaultBtn(default_btn);
201
202 mPrefsFonts = new ImpPrefsFonts(); 198 mPrefsFonts = new ImpPrefsFonts();
203 mTabContainer->addTabPanel(mPrefsFonts, mPrefsFonts->getLabel(), FALSE, onTabChanged, mTabContainer); 199 mTabContainer->addTabPanel(mPrefsFonts, mPrefsFonts->getLabel(), FALSE, onTabChanged, mTabContainer);
204 mPrefsFonts->setDefaultBtn(default_btn); 200 mPrefsFonts->setDefaultBtn(default_btn);
205 201
202 mPrefsAdvanced = new LLPrefsAdvanced();
203 mTabContainer->addTabPanel(mPrefsAdvanced, mPrefsAdvanced->getLabel(), FALSE, onTabChanged, mTabContainer);
204 mPrefsAdvanced->setDefaultBtn(default_btn);
205
206 if (!mTabContainer->selectTab(gSavedSettings.getS32("LastPrefTab"))) 206 if (!mTabContainer->selectTab(gSavedSettings.getS32("LastPrefTab")))
207 { 207 {
208 mTabContainer->selectFirstTab(); 208 mTabContainer->selectFirstTab();
diff --git a/linden/indra/newview/llfloatersnapshot.cpp b/linden/indra/newview/llfloatersnapshot.cpp
index c0e972d..a58120d 100644
--- a/linden/indra/newview/llfloatersnapshot.cpp
+++ b/linden/indra/newview/llfloatersnapshot.cpp
@@ -2128,7 +2128,6 @@ BOOL LLFloaterSnapshot::postBuild()
2128 //gSnapshotFloaterView->addChild(this); 2128 //gSnapshotFloaterView->addChild(this);
2129 2129
2130 impl.updateControls(this); 2130 impl.updateControls(this);
2131 impl.updateLayout(this);
2132 2131
2133 return TRUE; 2132 return TRUE;
2134} 2133}
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp
index fc72467..6744faf 100644
--- a/linden/indra/newview/llfloatertools.cpp
+++ b/linden/indra/newview/llfloatertools.cpp
@@ -84,7 +84,7 @@
84#include "llvograss.h" 84#include "llvograss.h"
85#include "llvotree.h" 85#include "llvotree.h"
86#include "lluictrlfactory.h" 86#include "lluictrlfactory.h"
87 87#include "qtoolalign.h"
88#include "hippoLimits.h" 88#include "hippoLimits.h"
89 89
90// Globals 90// Globals
@@ -273,6 +273,8 @@ BOOL LLFloaterTools::postBuild()
273 childSetCommitCallback("radio stretch",commit_select_tool,LLToolCompScale::getInstance()); 273 childSetCommitCallback("radio stretch",commit_select_tool,LLToolCompScale::getInstance());
274 mRadioSelectFace = getChild<LLCheckBoxCtrl>("radio select face"); 274 mRadioSelectFace = getChild<LLCheckBoxCtrl>("radio select face");
275 childSetCommitCallback("radio select face",commit_select_tool,LLToolFace::getInstance()); 275 childSetCommitCallback("radio select face",commit_select_tool,LLToolFace::getInstance());
276 mRadioAlign = getChild<LLCheckBoxCtrl>("radio align");
277 childSetCommitCallback("radio align",commit_select_tool,QToolAlign::getInstance());
276 mCheckSelectIndividual = getChild<LLCheckBoxCtrl>("checkbox edit linked parts"); 278 mCheckSelectIndividual = getChild<LLCheckBoxCtrl>("checkbox edit linked parts");
277 childSetValue("checkbox edit linked parts",(BOOL)gSavedSettings.getBOOL("EditLinkedParts")); 279 childSetValue("checkbox edit linked parts",(BOOL)gSavedSettings.getBOOL("EditLinkedParts"));
278 childSetCommitCallback("checkbox edit linked parts",commit_select_component,this); 280 childSetCommitCallback("checkbox edit linked parts",commit_select_component,this);
@@ -698,6 +700,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
698 tool == LLToolCompScale::getInstance() || 700 tool == LLToolCompScale::getInstance() ||
699 tool == LLToolFace::getInstance() || 701 tool == LLToolFace::getInstance() ||
700 tool == LLToolIndividual::getInstance() || 702 tool == LLToolIndividual::getInstance() ||
703 tool == QToolAlign::getInstance() ||
701 tool == LLToolPipette::getInstance(); 704 tool == LLToolPipette::getInstance();
702 705
703 mBtnEdit ->setToggleState( edit_visible ); 706 mBtnEdit ->setToggleState( edit_visible );
@@ -720,6 +723,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
720 mRadioPosition ->set( tool == LLToolCompTranslate::getInstance() ); 723 mRadioPosition ->set( tool == LLToolCompTranslate::getInstance() );
721 mRadioRotate ->set( tool == LLToolCompRotate::getInstance() ); 724 mRadioRotate ->set( tool == LLToolCompRotate::getInstance() );
722 mRadioStretch ->set( tool == LLToolCompScale::getInstance() ); 725 mRadioStretch ->set( tool == LLToolCompScale::getInstance() );
726 mRadioAlign->set( tool == QToolAlign::getInstance() );
723 727
724 if (mComboGridMode) 728 if (mComboGridMode)
725 { 729 {
@@ -927,7 +931,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
927 childSetVisible("Strength:", land_visible); 931 childSetVisible("Strength:", land_visible);
928 } 932 }
929 933
930 if (gSavedSettings.getBOOL("EditLinkedParts")) 934 if (gSavedSettings.getBOOL("EditLinkedParts") && LLSelectMgr::getInstance()->getEditSelection()->getObjectCount() == 1)
931 { 935 {
932 childSetVisible("link_num", !land_visible); 936 childSetVisible("link_num", !land_visible);
933 } 937 }
diff --git a/linden/indra/newview/llfloatertools.h b/linden/indra/newview/llfloatertools.h
index ad5be6c..bbf07ec 100644
--- a/linden/indra/newview/llfloatertools.h
+++ b/linden/indra/newview/llfloatertools.h
@@ -140,6 +140,7 @@ public:
140 LLCheckBoxCtrl *mRadioRotate; 140 LLCheckBoxCtrl *mRadioRotate;
141 LLCheckBoxCtrl *mRadioStretch; 141 LLCheckBoxCtrl *mRadioStretch;
142 LLCheckBoxCtrl *mRadioSelectFace; 142 LLCheckBoxCtrl *mRadioSelectFace;
143 LLCheckBoxCtrl *mRadioAlign;
143 144
144 LLCheckBoxCtrl *mCheckSelectIndividual; 145 LLCheckBoxCtrl *mCheckSelectIndividual;
145 146
diff --git a/linden/indra/newview/llprefsim.cpp b/linden/indra/newview/llprefsim.cpp
index 2c8ef4d..e915bd2 100644
--- a/linden/indra/newview/llprefsim.cpp
+++ b/linden/indra/newview/llprefsim.cpp
@@ -45,6 +45,7 @@
45#include "llviewercontrol.h" 45#include "llviewercontrol.h"
46#include "llviewernetwork.h" 46#include "llviewernetwork.h"
47#include "lluictrlfactory.h" 47#include "lluictrlfactory.h"
48#include "llstartup.h"
48 49
49#include "lldirpicker.h" 50#include "lldirpicker.h"
50 51
@@ -106,22 +107,23 @@ BOOL LLPrefsIMImpl::postBuild()
106 childSetLabelArg("send_im_to_email", "[EMAIL]", getString("log_in_to_change")); 107 childSetLabelArg("send_im_to_email", "[EMAIL]", getString("log_in_to_change"));
107 108
108 // Don't enable this until we get personal data 109 // Don't enable this until we get personal data
109 childDisable("include_im_in_chat_console"); 110 // Unless we're already logged in. Some non-SL grids won't send us the data we need -- MC
110 childDisable("include_im_in_chat_history"); 111 childSetEnabled("include_im_in_chat_console", LLStartUp::isLoggedIn());
111 childDisable("show_timestamps_check"); 112 childSetEnabled("include_im_in_chat_history", LLStartUp::isLoggedIn());
112 childDisable("friends_online_notify_checkbox"); 113 childSetEnabled("show_timestamps_check", LLStartUp::isLoggedIn());
114 childSetEnabled("friends_online_notify_checkbox", LLStartUp::isLoggedIn());
113 115
114 childDisable("online_visibility"); 116 childSetEnabled("online_visibility", LLStartUp::isLoggedIn());
115 childDisable("send_im_to_email"); 117 childSetEnabled("send_im_to_email", LLStartUp::isLoggedIn());
116 childDisable("log_instant_messages"); 118 childSetEnabled("log_instant_messages", LLStartUp::isLoggedIn());
117 childDisable("log_chat"); 119 childSetEnabled("log_chat", LLStartUp::isLoggedIn());
118 childDisable("log_show_history"); 120 childSetEnabled("log_show_history", LLStartUp::isLoggedIn());
119 childDisable("log_path_button"); 121 childSetEnabled("log_path_button", LLStartUp::isLoggedIn());
120 childDisable("busy_response"); 122 childSetEnabled("busy_response", LLStartUp::isLoggedIn());
121 childDisable("log_instant_messages_timestamp"); 123 childSetEnabled("log_instant_messages_timestamp", LLStartUp::isLoggedIn());
122 childDisable("log_chat_timestamp"); 124 childSetEnabled("log_chat_timestamp", LLStartUp::isLoggedIn());
123 childDisable("log_chat_IM"); 125 childSetEnabled("log_chat_IM", LLStartUp::isLoggedIn());
124 childDisable("log_date_timestamp"); 126 childSetEnabled("log_date_timestamp", LLStartUp::isLoggedIn());
125 127
126 childSetText("busy_response", getString("log_in_to_change")); 128 childSetText("busy_response", getString("log_in_to_change"));
127 129
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index 402afdb..49446c7 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -1081,10 +1081,11 @@ bool idle_startup()
1081 // color init must be after saved settings loaded 1081 // color init must be after saved settings loaded
1082 init_colors(); 1082 init_colors();
1083 1083
1084 if (gSavedSettings.getBOOL("VivoxLicenseAccepted")) 1084 if (gSavedSettings.getBOOL("VivoxLicenseAccepted") || gHippoGridManager->getConnectedGrid()->isSecondLife())
1085 { 1085 {
1086 // skipping over STATE_LOGIN_VOICE_LICENSE since we don't need it 1086 // skipping over STATE_LOGIN_VOICE_LICENSE since we don't need it
1087 // skipping over STATE_UPDATE_CHECK because that just waits for input 1087 // skipping over STATE_UPDATE_CHECK because that just waits for input
1088 // We don't do this on non-SL grids either
1088 LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); 1089 LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT );
1089 } 1090 }
1090 else 1091 else
diff --git a/linden/indra/newview/llstartup.h b/linden/indra/newview/llstartup.h
index 9a3c91c..08862e6 100644
--- a/linden/indra/newview/llstartup.h
+++ b/linden/indra/newview/llstartup.h
@@ -124,6 +124,9 @@ public:
124 static bool shouldAutoLogin() { return mShouldAutoLogin; }; 124 static bool shouldAutoLogin() { return mShouldAutoLogin; };
125 static void setShouldAutoLogin(bool value) { mShouldAutoLogin = value; }; 125 static void setShouldAutoLogin(bool value) { mShouldAutoLogin = value; };
126 126
127 // Returns true if startup has been successfully completed
128 static bool isLoggedIn() { return gStartupState == STATE_STARTED; }
129
127private: 130private:
128 static bool mStartedOnce; 131 static bool mStartedOnce;
129 static bool mShouldAutoLogin; 132 static bool mShouldAutoLogin;
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp
index b5ad435..f63deb8 100644
--- a/linden/indra/newview/lltexturefetch.cpp
+++ b/linden/indra/newview/lltexturefetch.cpp
@@ -157,7 +157,7 @@ public:
157 157
158 void callbackHttpGet(const LLChannelDescriptors& channels, 158 void callbackHttpGet(const LLChannelDescriptors& channels,
159 const LLIOPipe::buffer_ptr_t& buffer, 159 const LLIOPipe::buffer_ptr_t& buffer,
160 bool last_block, bool success); 160 bool partial, bool unsatisfiable, bool success);
161 void callbackCacheRead(bool success, LLImageFormatted* image, 161 void callbackCacheRead(bool success, LLImageFormatted* image,
162 S32 imagesize, BOOL islocal); 162 S32 imagesize, BOOL islocal);
163 void callbackCacheWrite(bool success); 163 void callbackCacheWrite(bool success);
@@ -317,13 +317,14 @@ public:
317 mFetcher->mTextureInfo.setRequestCompleteTimeAndLog(mID, timeNow); 317 mFetcher->mTextureInfo.setRequestCompleteTimeAndLog(mID, timeNow);
318 } 318 }
319 319
320 lldebugs << "HTTP COMPLETE: " << mID << llendl; 320 LL_DEBUGS("TextureFetch") << "HTTP COMPLETE: " << mID << " with status: " << status << LL_ENDL;
321 mFetcher->lockQueue(); 321 mFetcher->lockQueue();
322 LLTextureFetchWorker* worker = mFetcher->getWorker(mID); 322 LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
323 if (worker) 323 if (worker)
324 { 324 {
325 bool success = false; 325 bool success = false;
326 bool partial = false; 326 bool partial = false;
327 bool unsatisfiable = false;
327 if (200 <= status && status < 300) 328 if (200 <= status && status < 300)
328 { 329 {
329 success = true; 330 success = true;
@@ -332,18 +333,19 @@ public:
332 partial = true; 333 partial = true;
333 } 334 }
334 } 335 }
335 else 336 else if (status == HTTP_REQUESTED_RANGE_NOT_SATISFIABLE)
336 { 337 {
337 worker->setGetStatus(status, reason); 338 LL_DEBUGS("TextureFetch") << "Request was an unsatisfiable range: mRequestedSize=" << mRequestedSize << " mOffset=" << mOffset << " for: " << mID << LL_ENDL;
338// llwarns << status << ": " << reason << llendl; 339 unsatisfiable = true;
339 } 340 }
341
340 if (!success) 342 if (!success)
341 { 343 {
342 worker->setGetStatus(status, reason); 344 worker->setGetStatus(status, reason);
343// llwarns << "CURL GET FAILED, status:" << status << " reason:" << reason << llendl; 345// llwarns << "CURL GET FAILED, status:" << status << " reason:" << reason << llendl;
344 } 346 }
345 mFetcher->removeFromHTTPQueue(mID); 347 mFetcher->removeFromHTTPQueue(mID);
346 worker->callbackHttpGet(channels, buffer, partial, success); 348 worker->callbackHttpGet(channels, buffer, partial, unsatisfiable, success);
347 } 349 }
348 else 350 else
349 { 351 {
@@ -870,6 +872,16 @@ bool LLTextureFetchWorker::doWork(S32 param)
870 return false; 872 return false;
871 } 873 }
872 } 874 }
875
876 // *TODO: remove this hack when not needed anymore
877 S32 buggy_range_fudge = 0;
878 if (LLTextureFetch::hasBuggyHTTPRange())
879 {
880 buggy_range_fudge = 1;
881 resetFormattedData(); // discard any previous data we had
882 cur_size = 0 ;
883 }
884
873 mRequestedSize = mDesiredSize; 885 mRequestedSize = mDesiredSize;
874 mRequestedDiscard = mDesiredDiscard; 886 mRequestedDiscard = mDesiredDiscard;
875 mRequestedSize -= cur_size; 887 mRequestedSize -= cur_size;
@@ -883,10 +895,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
883 mLoaded = FALSE; 895 mLoaded = FALSE;
884 mGetStatus = 0; 896 mGetStatus = 0;
885 mGetReason.clear(); 897 mGetReason.clear();
886 lldebugs << "HTTP GET: " << mID << " Offset: " << offset 898 LL_DEBUGS("TextureFetch") << "HTTP GET: " << mID << " Offset: " << offset
887 << " Bytes: " << mRequestedSize 899 << " Bytes: " << mRequestedSize
900 << " Range: " << offset << "-" << offset+mRequestedSize-1+buggy_range_fudge
888 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << max_bandwidth 901 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << max_bandwidth
889 << llendl; 902 << LL_ENDL;
890 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); 903 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
891 mState = WAIT_HTTP_REQ; 904 mState = WAIT_HTTP_REQ;
892 905
@@ -894,7 +907,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
894 // Will call callbackHttpGet when curl request completes 907 // Will call callbackHttpGet when curl request completes
895 std::vector<std::string> headers; 908 std::vector<std::string> headers;
896 headers.push_back("Accept: image/x-j2c"); 909 headers.push_back("Accept: image/x-j2c");
897 res = mFetcher->mCurlGetRequest->getByteRange(mUrl, headers, offset, mRequestedSize, 910 res = mFetcher->mCurlGetRequest->getByteRange(mUrl, headers, offset, mRequestedSize + buggy_range_fudge,
898 new HTTPGetResponder(mFetcher, mID, LLTimer::getTotalTime(), mRequestedSize, offset)); 911 new HTTPGetResponder(mFetcher, mID, LLTimer::getTotalTime(), mRequestedSize, offset));
899 } 912 }
900 if (!res) 913 if (!res)
@@ -1301,7 +1314,9 @@ bool LLTextureFetchWorker::processSimulatorPackets()
1301 1314
1302void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels, 1315void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
1303 const LLIOPipe::buffer_ptr_t& buffer, 1316 const LLIOPipe::buffer_ptr_t& buffer,
1304 bool last_block, bool success) 1317 bool partial,
1318 bool unsatisfiable,
1319 bool success)
1305{ 1320{
1306 LLMutexLock lock(&mWorkMutex); 1321 LLMutexLock lock(&mWorkMutex);
1307 1322
@@ -1316,56 +1331,91 @@ void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
1316 llwarns << "Duplicate callback for " << mID.asString() << llendl; 1331 llwarns << "Duplicate callback for " << mID.asString() << llendl;
1317 return; // ignore duplicate callback 1332 return; // ignore duplicate callback
1318 } 1333 }
1334
1335 S32 data_size = 0;
1319 if (success) 1336 if (success)
1320 { 1337 {
1321 // get length of stream: 1338 // get length of stream:
1322 S32 data_size = buffer->countAfter(channels.in(), NULL); 1339 data_size = buffer->countAfter(channels.in(), NULL);
1323 1340
1324 gImageList.sTextureBits += data_size * 8; // Approximate - does not include header bits 1341 gImageList.sTextureBits += data_size * 8; // Approximate - does not include header bits
1325 1342
1326 //llinfos << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << llendl; 1343 LL_DEBUGS("TextureFetch") << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << " mRequestedSize: " << mRequestedSize << LL_ENDL;
1344
1327 if (data_size > 0) 1345 if (data_size > 0)
1328 { 1346 {
1329 // *TODO: set the formatted image data here directly to avoid the copy 1347 bool clean_data = false;
1330 mBuffer = new U8[data_size]; 1348 bool done = false;
1331 buffer->readAfter(channels.in(), NULL, mBuffer, data_size); 1349 if (!partial)
1332 mBufferSize += data_size;
1333 if (data_size < mRequestedSize &&
1334 (mRequestedDiscard == 0 || mRequestedSize >= MAX_IMAGE_DATA_SIZE) )
1335 { 1350 {
1336 // We requested whole image (by discard or by size,) so assume we got it 1351 // we got the whole image in one go
1337 mHaveAllData = TRUE; 1352 done = true;
1353 clean_data = true;
1354 }
1355 else if (data_size < mRequestedSize)
1356 {
1357 // we have the whole image
1358 done = true;
1359 }
1360 else if (data_size == mRequestedSize)
1361 {
1362 if (mRequestedDiscard <= 0)
1363 {
1364 done = true;
1365 }
1366 else
1367 {
1368 // this is the normal case where we get the data we requested,
1369 // but still need to request more data.
1370 }
1338 } 1371 }
1339 else if (data_size > mRequestedSize) 1372 else if (data_size > mRequestedSize)
1340 { 1373 {
1341 // *TODO: This shouldn't be happening any more 1374 // *TODO: This shouldn't be happening any more
1342 llwarns << "data_size = " << data_size << " > requested: " << mRequestedSize << llendl; 1375 llwarns << "data_size = " << data_size << " > requested: " << mRequestedSize << llendl;
1343 mHaveAllData = TRUE; 1376 done = true;
1377 clean_data = true;
1344 llassert_always(mDecodeHandle == 0); 1378 llassert_always(mDecodeHandle == 0);
1345 mFormattedImage = NULL; // discard any previous data we had
1346 mBufferSize = data_size;
1347 } 1379 }
1348 mRequestedSize = data_size; 1380
1349 } 1381 if (clean_data)
1350 else
1351 {
1352 // We requested data but received none (and no error),
1353 if (mFormattedImage.notNull() && mFormattedImage->getDataSize() > 0)
1354 { 1382 {
1355 // but have earlier data, so presumably we have it all. 1383 resetFormattedData(); // discard any previous data we had
1356 mRequestedSize = 0; 1384 llassert(mBufferSize == 0);
1357 mHaveAllData = TRUE;
1358 } 1385 }
1359 else 1386 if (done)
1360 { 1387 {
1361 mRequestedSize = -1; // treat this fetch as if it failed. 1388 mHaveAllData = TRUE;
1389 mRequestedDiscard = 0;
1362 } 1390 }
1391
1392 // *TODO: set the formatted image data here directly to avoid the copy
1393 mBuffer = new U8[data_size];
1394 buffer->readAfter(channels.in(), NULL, mBuffer, data_size);
1395 mBufferSize += data_size;
1396 mRequestedSize = data_size;
1363 } 1397 }
1364 } 1398 }
1365 else 1399 else
1366 { 1400 {
1367 mRequestedSize = -1; // error 1401 mRequestedSize = -1; // error
1368 } 1402 }
1403
1404 if ((success && (data_size == 0)) || unsatisfiable)
1405 {
1406 if (mFormattedImage.notNull() && mFormattedImage->getDataSize() > 0)
1407 {
1408 // we already have some data, so we'll assume we have it all
1409 mRequestedSize = 0;
1410 mRequestedDiscard = 0;
1411 mHaveAllData = TRUE;
1412 }
1413 else
1414 {
1415 mRequestedSize = -1; // treat this fetch as if it failed.
1416 }
1417 }
1418
1369 mLoaded = TRUE; 1419 mLoaded = TRUE;
1370 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); 1420 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
1371} 1421}
@@ -2220,3 +2270,44 @@ void LLTextureFetch::dump()
2220 } 2270 }
2221} 2271}
2222 2272
2273// This tries to detect if the sim has this bug:
2274// http://opensimulator.org/mantis/view.php?id=5081
2275//
2276// *TODO: This is a *HACK and may not work if the grid is heterogenous.
2277// Remove it once OpenSim versions in the wild are > 0.7.0.2!
2278#include "hippoGridManager.h"
2279#include <boost/regex.hpp>
2280//static
2281bool LLTextureFetch::hasBuggyHTTPRange()
2282{
2283 static std::string s_version;
2284 static bool buggy = false;
2285 if ((s_version != gLastVersionChannel) && !gLastVersionChannel.empty())
2286 {
2287 s_version = gLastVersionChannel;
2288 buggy = false;
2289 if (gHippoGridManager->getConnectedGrid()->getPlatform() == HippoGridInfo::PLATFORM_OPENSIM)
2290 {
2291 std::string ver_string;
2292 try
2293 {
2294 const boost::regex re(".*OpenSim.*?([0-9.]+).+");
2295 ver_string = regex_replace(s_version, re, "\\1", boost::match_default);
2296 }
2297 catch(std::runtime_error)
2298 {
2299 ver_string = "0.0";
2300 }
2301 LLStringUtil::replaceChar(ver_string, '.', '0');
2302 ver_string = "0." + ver_string;
2303 F64 version = atof(ver_string.c_str());
2304 // we look for "0.6.8" < version < "0.7.0.3"
2305 if ((version > 0.00608) && (version < 0.0070003))
2306 {
2307 buggy = true;
2308 llwarns << "Setting buggy http ranges mode for current sim, because we're on " << s_version << llendl;
2309 }
2310 }
2311 }
2312 return buggy;
2313}
diff --git a/linden/indra/newview/lltexturefetch.h b/linden/indra/newview/lltexturefetch.h
index 6c6bb52..5fa2d1c 100644
--- a/linden/indra/newview/lltexturefetch.h
+++ b/linden/indra/newview/lltexturefetch.h
@@ -86,6 +86,8 @@ public:
86 86
87 LLTextureInfo* getTextureInfo() { return &mTextureInfo; } 87 LLTextureInfo* getTextureInfo() { return &mTextureInfo; }
88 88
89 static bool hasBuggyHTTPRange(); // *TODO: remove this *HACK once buggy OpenSim versions are gone
90
89protected: 91protected:
90 void addToNetworkQueue(LLTextureFetchWorker* worker); 92 void addToNetworkQueue(LLTextureFetchWorker* worker);
91 void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel); 93 void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 76a2761..f039ade 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -5142,12 +5142,6 @@ void LLVOAvatar::updateTextures()
5142 if (texture_dict->mIsLocalTexture) 5142 if (texture_dict->mIsLocalTexture)
5143 { 5143 {
5144 addLocalTextureStats((ETextureIndex)index, imagep, texel_area_ratio, render_avatar, layer_baked[baked_index]); 5144 addLocalTextureStats((ETextureIndex)index, imagep, texel_area_ratio, render_avatar, layer_baked[baked_index]);
5145 // SNOW-8 : temporary snowglobe1.0 fix for baked textures
5146 if (render_avatar && !gGLManager.mIsDisabled )
5147 {
5148 // bind the texture so that its boost level won't be slammed
5149 gGL.getTexUnit(0)->bind(imagep);
5150 }
5151 } 5145 }
5152 else if (texture_dict->mIsBakedTexture) 5146 else if (texture_dict->mIsBakedTexture)
5153 { 5147 {
@@ -5184,8 +5178,14 @@ void LLVOAvatar::addLocalTextureStats( ETextureIndex idx, LLViewerImage* imagep,
5184 F32 desired_pixels; 5178 F32 desired_pixels;
5185 if( mIsSelf ) 5179 if( mIsSelf )
5186 { 5180 {
5187 desired_pixels = llmin(mPixelArea, (F32)TEX_IMAGE_AREA_SELF ); 5181 desired_pixels = llmax(mPixelArea, (F32)TEX_IMAGE_AREA_SELF );
5188 imagep->setBoostLevel(LLViewerImageBoostLevel::BOOST_AVATAR_SELF); 5182 imagep->setBoostLevel(LLViewerImageBoostLevel::BOOST_AVATAR_SELF);
5183 // SNOW-8 : temporary snowglobe1.0 fix for baked textures
5184 if (render_avatar && !gGLManager.mIsDisabled )
5185 {
5186 // bind the texture so that its boost level won't be slammed
5187 gGL.getTexUnit(0)->bind(imagep);
5188 }
5189 } 5189 }
5190 else 5190 else
5191 { 5191 {
diff --git a/linden/indra/newview/qtoolalign.cpp b/linden/indra/newview/qtoolalign.cpp
new file mode 100644
index 0000000..d7f7ad0
--- /dev/null
+++ b/linden/indra/newview/qtoolalign.cpp
@@ -0,0 +1,585 @@
1/**
2 * @file qtoolalign.cpp
3 * @brief A tool to align objects
4 * @author Karl Stiefvater (Qarl)
5 *
6 * Karl has given permission to use this code under the terms of
7 * the GNU GPL v2 plus FLOSS exception and/or the GNU LGPL v2.1.
8 *
9 * Backported for Viewer 1.X code base by Jacek Antonelli.
10 */
11
12#include "llviewerprecompiledheaders.h"
13
14// File includes
15#include "qtoolalign.h"
16
17// Library includes
18#include "llbbox.h"
19#include "v3math.h"
20
21// Viewer includes
22#include "llagent.h"
23#include "llbox.h"
24#include "llcylinder.h"
25#include "llfloatertools.h"
26#include "llselectmgr.h"
27#include "llviewercamera.h"
28#include "llviewercontrol.h"
29#include "llviewerobject.h"
30#include "llviewerwindow.h"
31
32
33const F32 MANIPULATOR_SIZE = 5.0;
34const F32 MANIPULATOR_SELECT_SIZE = 20.0;
35
36
37
38QToolAlign::QToolAlign()
39: LLTool(std::string("Align"))
40{
41}
42
43
44QToolAlign::~QToolAlign()
45{
46}
47
48
49
50BOOL QToolAlign::handleMouseDown(S32 x, S32 y, MASK mask)
51{
52 if (mHighlightedAxis != -1)
53 {
54 align();
55 }
56 else
57 {
58 gViewerWindow->pickAsync(x, y, mask, pickCallback);
59 }
60
61 return TRUE;
62}
63
64
65
66void QToolAlign::pickCallback(const LLPickInfo& pick_info)
67{
68 LLViewerObject* object = pick_info.getObject();
69
70 if (object)
71 {
72 if (object->isAvatar())
73 {
74 return;
75 }
76
77 if (pick_info.mKeyMask & MASK_SHIFT)
78 {
79 // If object not selected, select it
80 if ( !object->isSelected() )
81 {
82 LLSelectMgr::getInstance()->selectObjectAndFamily(object);
83 }
84 else
85 {
86 LLSelectMgr::getInstance()->deselectObjectAndFamily(object);
87 }
88 }
89 else
90 {
91 LLSelectMgr::getInstance()->deselectAll();
92 LLSelectMgr::getInstance()->selectObjectAndFamily(object);
93 }
94
95 }
96 else
97 {
98 if (!(pick_info.mKeyMask == MASK_SHIFT))
99 {
100 LLSelectMgr::getInstance()->deselectAll();
101 }
102 }
103
104 LLSelectMgr::getInstance()->promoteSelectionToRoot();
105}
106
107
108
109void QToolAlign::handleSelect()
110{
111 // no parts, please
112
113 llwarns << "in select" << llendl;
114 LLSelectMgr::getInstance()->promoteSelectionToRoot();
115}
116
117
118void QToolAlign::handleDeselect()
119{
120}
121
122
123BOOL QToolAlign::findSelectedManipulator(S32 x, S32 y)
124{
125 mHighlightedAxis = -1;
126 mHighlightedDirection = 0;
127
128 LLMatrix4 transform;
129 if (LLSelectMgr::getInstance()->getSelection()->getSelectType() == SELECT_TYPE_HUD)
130 {
131 LLVector4 translation(mBBox.getCenterAgent());
132 transform.initRotTrans(mBBox.getRotation(), translation);
133 LLMatrix4 cfr(OGL_TO_CFR_ROTATION);
134 transform *= cfr;
135 LLMatrix4 window_scale;
136 F32 zoom_level = 2.f * gAgent.mHUDCurZoom;
137 window_scale.initAll(LLVector3(zoom_level / LLViewerCamera::getInstance()->getAspect(), zoom_level, 0.f),
138 LLQuaternion::DEFAULT,
139 LLVector3::zero);
140 transform *= window_scale;
141 }
142 else
143 {
144 transform.initAll(LLVector3(1.f, 1.f, 1.f), mBBox.getRotation(), mBBox.getCenterAgent());
145
146 LLMatrix4 projection_matrix = LLViewerCamera::getInstance()->getProjection();
147 LLMatrix4 model_matrix = LLViewerCamera::getInstance()->getModelview();
148
149 transform *= model_matrix;
150 transform *= projection_matrix;
151 }
152
153
154 //LLRect world_view_rect = getWorldViewRectScaled();
155 F32 half_width = (F32)gViewerWindow->getWindowWidth() / 2.f;
156 F32 half_height = (F32)gViewerWindow->getWindowHeight() / 2.f;
157 LLVector2 manip2d;
158 LLVector2 mousePos((F32)x - half_width, (F32)y - half_height);
159 LLVector2 delta;
160
161 LLVector3 bbox_scale = mBBox.getMaxLocal() - mBBox.getMinLocal();
162
163 for (S32 axis = VX; axis <= VZ; axis++)
164 {
165 for (F32 direction = -1.0; direction <= 1.0; direction += 2.0)
166 {
167 LLVector3 axis_vector = LLVector3(0,0,0);
168 axis_vector.mV[axis] = direction * bbox_scale.mV[axis] / 2.0;
169
170 LLVector4 manipulator_center = LLVector4(axis_vector);
171
172 LLVector4 screen_center = manipulator_center * transform;
173 screen_center /= screen_center.mV[VW];
174
175 manip2d.setVec(screen_center.mV[VX] * half_width, screen_center.mV[VY] * half_height);
176
177 delta = manip2d - mousePos;
178
179 if (delta.magVecSquared() < MANIPULATOR_SELECT_SIZE * MANIPULATOR_SELECT_SIZE)
180 {
181 mHighlightedAxis = axis;
182 mHighlightedDirection = direction;
183 return TRUE;
184 }
185
186 }
187 }
188
189 return FALSE;
190}
191
192
193BOOL QToolAlign::handleHover(S32 x, S32 y, MASK mask)
194{
195 if (mask & MASK_SHIFT)
196 {
197 mForce = FALSE;
198 }
199 else
200 {
201 mForce = TRUE;
202 }
203
204 gViewerWindow->setCursor(UI_CURSOR_ARROW);
205 return findSelectedManipulator(x, y);
206}
207
208
209
210void setup_transforms_bbox(LLBBox bbox)
211{
212 // translate to center
213 LLVector3 center = bbox.getCenterAgent();
214 gGL.translatef(center.mV[VX], center.mV[VY], center.mV[VZ]);
215
216 // rotate
217 LLQuaternion rotation = bbox.getRotation();
218 F32 angle_radians, x, y, z;
219 rotation.getAngleAxis(&angle_radians, &x, &y, &z);
220 // gGL has no rotate method (despite having translate and scale) presumably because
221 // its authors smoke crack. so we hack.
222 gGL.flush();
223 glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
224
225 // scale
226 LLVector3 scale = bbox.getMaxLocal() - bbox.getMinLocal();
227 gGL.scalef(scale.mV[VX], scale.mV[VY], scale.mV[VZ]);
228}
229
230
231void render_bbox(LLBBox bbox)
232{
233 glMatrixMode(GL_MODELVIEW);
234 gGL.pushMatrix();
235
236 setup_transforms_bbox(bbox);
237
238 gGL.flush();
239 gBox.render();
240
241 gGL.popMatrix();
242}
243
244void render_cone_bbox(LLBBox bbox)
245{
246 glMatrixMode(GL_MODELVIEW);
247 gGL.pushMatrix();
248
249 setup_transforms_bbox(bbox);
250
251 gGL.flush();
252 gCone.render(CONE_LOD_HIGHEST);
253
254 gGL.popMatrix();
255}
256
257
258
259// the selection bbox isn't axis aligned, so we must construct one
260// should this be cached in the selection manager? yes.
261LLBBox get_selection_axis_aligned_bbox()
262{
263 LLBBox selection_bbox = LLSelectMgr::getInstance()->getBBoxOfSelection();
264 LLVector3 position = selection_bbox.getPositionAgent();
265
266 LLBBox axis_aligned_bbox = LLBBox(position, LLQuaternion(), LLVector3(), LLVector3());
267 axis_aligned_bbox.addPointLocal(LLVector3());
268
269 // cycle over the nodes in selection
270 for (LLObjectSelection::iterator selection_iter = LLSelectMgr::getInstance()->getSelection()->begin();
271 selection_iter != LLSelectMgr::getInstance()->getSelection()->end();
272 ++selection_iter)
273 {
274 LLSelectNode *select_node = *selection_iter;
275 if (select_node)
276 {
277 LLViewerObject* object = select_node->getObject();
278 if (object)
279 {
280 axis_aligned_bbox.addBBoxAgent(object->getBoundingBoxAgent());
281 }
282 }
283 }
284
285
286 return axis_aligned_bbox;
287}
288
289
290
291void QToolAlign::computeManipulatorSize()
292{
293 if (LLSelectMgr::getInstance()->getSelection()->getSelectType() == SELECT_TYPE_HUD)
294 {
295 mManipulatorSize = MANIPULATOR_SIZE / (LLViewerCamera::getInstance()->getViewHeightInPixels() *
296 gAgent.mHUDCurZoom);
297 }
298 else
299 {
300 F32 distance = dist_vec(gAgent.getCameraPositionAgent(), mBBox.getCenterAgent());
301
302 if (distance > 0.001f)
303 {
304 // range != zero
305 F32 fraction_of_fov = MANIPULATOR_SIZE /LLViewerCamera::getInstance()->getViewHeightInPixels();
306 F32 apparent_angle = fraction_of_fov * LLViewerCamera::getInstance()->getView(); // radians
307 mManipulatorSize = MANIPULATOR_SIZE * distance * tan(apparent_angle);
308 }
309 else
310 {
311 // range == zero
312 mManipulatorSize = MANIPULATOR_SIZE;
313 }
314 }
315}
316
317
318LLColor4 manipulator_color[3] = { LLColor4(0.7f, 0.0f, 0.0f, 0.5f),
319 LLColor4(0.0f, 0.7f, 0.0f, 0.5f),
320 LLColor4(0.0f, 0.0f, 0.7f, 0.5f) };
321
322
323void QToolAlign::renderManipulators()
324{
325 computeManipulatorSize();
326 LLVector3 bbox_center = mBBox.getCenterAgent();
327 LLVector3 bbox_scale = mBBox.getMaxLocal() - mBBox.getMinLocal();
328
329 for (S32 axis = VX; axis <= VZ; axis++)
330 for (F32 direction = -1.0; direction <= 1.0; direction += 2.0)
331 {
332 F32 size = mManipulatorSize;
333 LLColor4 color = manipulator_color[axis];
334
335 if ((axis == mHighlightedAxis) && (direction == mHighlightedDirection))
336 {
337 size *= 2.0;
338 color *= 1.5;
339 }
340
341 S32 arrows = 1;
342 if (mForce)
343 {
344 arrows = 2;
345 }
346
347 for (S32 i = 0; i < arrows; i++)
348 {
349 LLVector3 axis_vector = LLVector3(0,0,0);
350 axis_vector.mV[axis] = direction * (bbox_scale.mV[axis] / 2.0 + i * (size/3.0));
351
352 LLVector3 manipulator_center = bbox_center + axis_vector;
353
354 LLQuaternion manipulator_rotation;
355 manipulator_rotation.shortestArc(LLVector3(0,0,1), -1.0 * axis_vector);
356
357 LLBBox manipulator_bbox = LLBBox(manipulator_center, manipulator_rotation,
358 LLVector3(), LLVector3());
359
360 manipulator_bbox.addPointLocal(LLVector3(-1, -1, -0.75) * size * 0.5);
361 manipulator_bbox.addPointLocal(LLVector3(1, 1, 0.75) * size * 0.5);
362
363 gGL.color4fv(color.mV);
364 // sadly, gCone doesn't use gGL like gBox does (presumably because its author smokes crack) so we
365 // also set the raw GL color. hopefully this won't screw-up later rendering.
366 glColor4fv(color.mV);
367
368 render_cone_bbox(manipulator_bbox);
369 }
370 }
371}
372
373
374void QToolAlign::render()
375{
376 mBBox = get_selection_axis_aligned_bbox();
377
378 // Draw bounding box
379 LLGLSUIDefault gls_ui;
380 LLGLEnable gl_blend(GL_BLEND);
381 LLGLEnable gls_alpha_test(GL_ALPHA_TEST);
382 LLGLDepthTest gls_depth(GL_FALSE);
383 gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
384
385 // render box
386 LLColor4 default_normal_color( 0.7f, 0.7f, 0.7f, 0.1f );
387 gGL.color4fv( default_normal_color.mV );
388
389 render_bbox(mBBox);
390 renderManipulators();
391}
392
393// only works for our specialized (AABB, position centered) bboxes
394BOOL bbox_overlap(LLBBox bbox1, LLBBox bbox2)
395{
396 const F32 FUDGE = 0.001f; // because of stupid SL precision/rounding
397
398 LLVector3 delta = bbox1.getCenterAgent() - bbox2.getCenterAgent();
399
400 LLVector3 half_extent = (bbox1.getExtentLocal() + bbox2.getExtentLocal()) / 2.0;
401
402 return ((fabs(delta.mV[VX]) < half_extent.mV[VX] - FUDGE) &&
403 (fabs(delta.mV[VY]) < half_extent.mV[VY] - FUDGE) &&
404 (fabs(delta.mV[VZ]) < half_extent.mV[VZ] - FUDGE));
405}
406
407
408
409// used to sort bboxes before packing
410class BBoxCompare
411{
412public:
413 BBoxCompare(S32 axis, F32 direction, std::map<LLPointer<LLViewerObject>, LLBBox >& bboxes) :
414 mAxis(axis), mDirection(direction), mBBoxes(bboxes) {}
415
416 BOOL operator() (LLViewerObject* object1, LLViewerObject* object2)
417 {
418 LLVector3 corner1 = mBBoxes[object1].getCenterAgent() -
419 mDirection * mBBoxes[object1].getExtentLocal()/2.0;
420
421 LLVector3 corner2 = mBBoxes[object2].getCenterAgent() -
422 mDirection * mBBoxes[object2].getExtentLocal()/2.0;
423
424
425 return mDirection * corner1.mV[mAxis] < mDirection * corner2.mV[mAxis];
426 }
427
428 S32 mAxis;
429 F32 mDirection;
430 std::map<LLPointer<LLViewerObject>, LLBBox >& mBBoxes;
431};
432
433
434void QToolAlign::align()
435{
436 // no linkset parts, please
437 LLSelectMgr::getInstance()->promoteSelectionToRoot();
438
439 std::vector<LLPointer<LLViewerObject> > objects;
440 std::map<LLPointer<LLViewerObject>, LLBBox > original_bboxes;
441
442 // cycle over the nodes in selection and collect them into an array
443 for (LLObjectSelection::root_iterator selection_iter = LLSelectMgr::getInstance()->getSelection()->root_begin();
444 selection_iter != LLSelectMgr::getInstance()->getSelection()->root_end();
445 ++selection_iter)
446 {
447 LLSelectNode *select_node = *selection_iter;
448 if (select_node)
449 {
450 LLViewerObject* object = select_node->getObject();
451 if (object)
452 {
453 LLVector3 position = object->getPositionAgent();
454
455 LLBBox bbox = LLBBox(position, LLQuaternion(), LLVector3(), LLVector3());
456 bbox.addPointLocal(LLVector3());
457
458 // add the parent's bbox
459 bbox.addBBoxAgent(object->getBoundingBoxAgent());
460 LLViewerObject::const_child_list_t& children = object->getChildren();
461
462 for (LLViewerObject::const_child_list_t::const_iterator i = children.begin();
463 i != children.end(); i++)
464 {
465 // add the child's bbox
466 LLViewerObject* child = *i;
467 bbox.addBBoxAgent(child->getBoundingBoxAgent());
468 }
469
470 objects.push_back(object);
471 original_bboxes[object] = bbox;
472 }
473 }
474 }
475
476 S32 axis = mHighlightedAxis;
477 F32 direction = mHighlightedDirection;
478
479 // sort them into positional order for proper packing
480 BBoxCompare compare(axis, direction, original_bboxes);
481 sort(objects.begin(), objects.end(), compare);
482
483 // storage for their new position after alignment - start with original position first
484 std::map<LLPointer<LLViewerObject>, LLBBox > new_bboxes = original_bboxes;
485
486 // find new positions
487 for (S32 i = 0; i < (S32)objects.size(); i++)
488 {
489 LLBBox target_bbox = mBBox;
490 LLVector3 target_corner = target_bbox.getCenterAgent() -
491 direction * target_bbox.getExtentLocal() / 2.0;
492
493 LLViewerObject* object = objects[i];
494
495 LLBBox this_bbox = original_bboxes[object];
496 LLVector3 this_corner = this_bbox.getCenterAgent() -
497 direction * this_bbox.getExtentLocal() / 2.0;
498
499 // for packing, we cycle over several possible positions, taking the smallest that does not overlap
500 F32 smallest = direction * 9999999; // 999999 guarenteed not to be the smallest
501 for (S32 j = 0; j <= i; j++)
502 {
503 // how far must it move?
504 LLVector3 delta = target_corner - this_corner;
505
506 // new position moves only on one axis, please
507 LLVector3 delta_one_axis = LLVector3(0,0,0);
508 delta_one_axis.mV[axis] = delta.mV[axis];
509
510 LLVector3 new_position = this_bbox.getCenterAgent() + delta_one_axis;
511
512 // construct the new bbox
513 LLBBox new_bbox = LLBBox(new_position, LLQuaternion(), LLVector3(), LLVector3());
514 new_bbox.addPointLocal(this_bbox.getExtentLocal() / 2.0);
515 new_bbox.addPointLocal(-1.0 * this_bbox.getExtentLocal() / 2.0);
516
517 // check to see if it overlaps the previously placed objects
518 BOOL overlap = FALSE;
519
520 llwarns << "i=" << i << " j=" << j << llendl;
521
522 if (!mForce) // well, don't check if in force mode
523 {
524 for (S32 k = 0; k < i; k++)
525 {
526 LLViewerObject* other_object = objects[k];
527 LLBBox other_bbox = new_bboxes[other_object];
528
529 BOOL overlaps_this = bbox_overlap(other_bbox, new_bbox);
530
531 if (overlaps_this)
532 {
533 llwarns << "overlap" << new_bbox.getCenterAgent() << other_bbox.getCenterAgent() << llendl;
534 llwarns << "extent" << new_bbox.getExtentLocal() << other_bbox.getExtentLocal() << llendl;
535 }
536
537 overlap = (overlap || overlaps_this);
538 }
539 }
540
541 if (!overlap)
542 {
543 F32 this_value = (new_bbox.getCenterAgent() -
544 direction * new_bbox.getExtentLocal() / 2.0).mV[axis];
545
546 if (direction * this_value < direction * smallest)
547 {
548 smallest = this_value;
549 // store it
550 new_bboxes[object] = new_bbox;
551 }
552 }
553
554 // update target for next time through the loop
555 if (j < (S32)objects.size())
556 {
557 LLBBox next_bbox = new_bboxes[objects[j]];
558 target_corner = next_bbox.getCenterAgent() +
559 direction * next_bbox.getExtentLocal() / 2.0;
560 }
561 }
562 }
563
564
565 // now move them
566 for (S32 i = 0; i < (S32)objects.size(); i++)
567 {
568 LLViewerObject* object = objects[i];
569
570 LLBBox original_bbox = original_bboxes[object];
571 LLBBox new_bbox = new_bboxes[object];
572
573 LLVector3 delta = new_bbox.getCenterAgent() - original_bbox.getCenterAgent();
574
575 LLVector3 original_position = object->getPositionAgent();
576 LLVector3 new_position = original_position + delta;
577
578 object->setPosition(new_position);
579 }
580
581
582 LLSelectMgr::getInstance()->sendMultipleUpdate(UPD_POSITION);
583}
584
585
diff --git a/linden/indra/newview/qtoolalign.h b/linden/indra/newview/qtoolalign.h
new file mode 100644
index 0000000..b2c18b7
--- /dev/null
+++ b/linden/indra/newview/qtoolalign.h
@@ -0,0 +1,50 @@
1/**
2 * @file qtoolalign.h
3 * @brief A tool to align objects
4 * @author Karl Stiefvater (Qarl)
5 *
6 * Karl has given permission to use this code under the terms of
7 * the GNU GPL v2 plus FLOSS exception and/or the GNU LGPL v2.1.
8 *
9 * Backported for Viewer 1.X code base by Jacek Antonelli.
10 */
11
12#ifndef Q_QTOOLALIGN_H
13#define Q_QTOOLALIGN_H
14
15#include "lltool.h"
16#include "llbbox.h"
17
18class LLViewerObject;
19class LLPickInfo;
20class LLToolSelectRect;
21
22class QToolAlign
23: public LLTool, public LLSingleton<QToolAlign>
24{
25public:
26 QToolAlign();
27 virtual ~QToolAlign();
28
29 virtual void handleSelect();
30 virtual void handleDeselect();
31 virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
32 virtual BOOL handleHover(S32 x, S32 y, MASK mask);
33 virtual void render();
34
35 static void pickCallback(const LLPickInfo& pick_info);
36
37private:
38 void align();
39 void computeManipulatorSize();
40 void renderManipulators();
41 BOOL findSelectedManipulator(S32 x, S32 y);
42
43 LLBBox mBBox;
44 F32 mManipulatorSize;
45 S32 mHighlightedAxis;
46 F32 mHighlightedDirection;
47 BOOL mForce;
48};
49
50#endif // Q_QTOOLALIGN_H
diff --git a/linden/indra/newview/skins/default/xui/de/floater_lagmeter.xml b/linden/indra/newview/skins/default/xui/de/floater_lagmeter.xml
index 4dd9fd6..f49fcca 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_lagmeter.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_lagmeter.xml
@@ -1,6 +1,6 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="floater_lagmeter" title="Lag-Anzeige"> 2<floater name="floater_lagmeter" title="Lag-Anzeige">
3 <button name="client_lagmeter" tool_tip="Client-Lag-Status" /> 3 <button name="client_lagmeter" tool_tip="Lag-Status Client" />
4 <text name="client"> 4 <text name="client">
5 Client: 5 Client:
6 </text> 6 </text>
@@ -14,7 +14,7 @@
14 <text name="network_text"> 14 <text name="network_text">
15 Normal 15 Normal
16 </text> 16 </text>
17 <button name="server_lagmeter" tool_tip="Server-Lag-Status" /> 17 <button name="server_lagmeter" tool_tip="Lag-Status Server" />
18 <text name="server"> 18 <text name="server">
19 Server: 19 Server:
20 </text> 20 </text>
@@ -27,7 +27,7 @@
27 Lag-Anzeige 27 Lag-Anzeige
28 </text> 28 </text>
29 <text name="max_width_px"> 29 <text name="max_width_px">
30 350 30 360
31 </text> 31 </text>
32 <text name="min_title_msg"> 32 <text name="min_title_msg">
33 Lag 33 Lag
@@ -48,10 +48,10 @@
48 Normal, Fenster im Hintergrund 48 Normal, Fenster im Hintergrund
49 </text> 49 </text>
50 <text name="client_frame_time_critical_msg"> 50 <text name="client_frame_time_critical_msg">
51 Client-Frame-Rate unter [CLIENT_FRAME_RATE_CRITICAL] 51 Frame-Rate Client unter [CLIENT_FRAME_RATE_CRITICAL]
52 </text> 52 </text>
53 <text name="client_frame_time_warning_msg"> 53 <text name="client_frame_time_warning_msg">
54 Client-Frame-Rate zwischen [CLIENT_FRAME_RATE_CRITICAL] und [CLIENT_FRAME_RATE_WARNING] 54 Frame-Rate Client zwischen [CLIENT_FRAME_RATE_CRITICAL] und [CLIENT_FRAME_RATE_WARNING]
55 </text> 55 </text>
56 <text name="client_frame_time_normal_msg"> 56 <text name="client_frame_time_normal_msg">
57 Normal 57 Normal
@@ -117,10 +117,10 @@
117 20 117 20
118 </text> 118 </text>
119 <text name="server_frame_time_critical_msg"> 119 <text name="server_frame_time_critical_msg">
120 Simulator-Frame-Rate liegt unter [SERVER_FRAME_RATE_CRITICAL] 120 Frame-Rate Simulator liegt unter [SERVER_FRAME_RATE_CRITICAL]
121 </text> 121 </text>
122 <text name="server_frame_time_warning_msg"> 122 <text name="server_frame_time_warning_msg">
123 Simulator-Frame-Rate liegt zwischen [SERVER_FRAME_RATE_CRITICAL] und [SERVER_FRAME_RATE_WARNING] 123 Frame-Rate Simulator liegt zwischen [SERVER_FRAME_RATE_CRITICAL] und [SERVER_FRAME_RATE_WARNING]
124 </text> 124 </text>
125 <text name="server_frame_time_normal_msg"> 125 <text name="server_frame_time_normal_msg">
126 Normal 126 Normal
diff --git a/linden/indra/newview/skins/default/xui/de/floater_local_asset_browse.xml b/linden/indra/newview/skins/default/xui/de/floater_local_asset_browse.xml
new file mode 100644
index 0000000..45a19ba
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/de/floater_local_asset_browse.xml
@@ -0,0 +1,94 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<!-- Local Asset Browser: xui -->
3<!-- floater definition start -->
4
5<floater
6 name="local_bitmap_browser_floater"
7 title="Lokal Textur-Eigenschaften"
8 >
9
10 <button
11 name="add_btn"
12 label="Hinzufügen"
13 />
14 <button
15 name="del_btn"
16 label="Entfernen"
17 />
18 <button
19 name="upload_btn"
20 label="Bild hochladen ([UPLOADFEE])..."
21 />
22
23 <scroll_list
24 name="bitmap_list"
25 >
26 <column name="bitmap_name" label="Name" dynamicwidth="true" />
27 <column name="bitmap_uuid" label="UUID" width="240" />
28 </scroll_list>
29
30 <text name="path_caption_text"
31 >
32 Lokaler Pfad:
33 </text>
34
35 <text name="uuid_caption_text"
36 >
37 Lokale UUID:
38 </text>
39
40 <texture_picker
41 label="Textur"
42 name="texture_view"
43 />
44
45 <check_box
46 label="Aktualisierungscheck"
47 name="keep_updating_checkbox"
48 tool_tip="Periodische Checks ein- oder ausschalten, ob die Quelle auf der Festplatte aktualisiert wurde"
49 />
50
51 <combo_box
52 name="type_combobox"
53 >
54
55 <combo_item name="type_texture" value="type_texture">
56 Textur
57 </combo_item>
58
59 <combo_item name="type_sculptie" value="type_sculptie">
60 Sculptmap
61 </combo_item>
62
63 <combo_item name="type_layer" value="type_layer">
64 Kleidung
65 </combo_item>
66
67 </combo_box>
68
69 <text name="time_caption_text"
70 >
71 Zeit:
72 </text>
73
74 <text name="time_text"
75 >
76 (Hier Datum)
77 </text>
78
79 <text name="link_caption_text"
80 >
81 Link:
82 </text>
83
84 <text name="link_text"
85 >
86 (Linkstatus)
87 </text>
88
89 <text name="name_caption_text"
90 >
91 Name:
92 </text>
93
94</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_media_browser.xml b/linden/indra/newview/skins/default/xui/de/floater_media_browser.xml
index ee25321..3bc231a 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_media_browser.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_media_browser.xml
@@ -6,13 +6,17 @@
6 <button label="Weiter" name="forward" /> 6 <button label="Weiter" name="forward" />
7 <button label="Neu laden" name="reload" /> 7 <button label="Neu laden" name="reload" />
8 <button label="Los" name="go" /> 8 <button label="Los" name="go" />
9 <button label="Zuhause" name="home" />
9 </layout_panel> 10 </layout_panel>
10 <layout_panel name="parcel_owner_controls"> 11 <layout_panel name="parcel_owner_controls">
12 <web_browser name="browser" />
11 <button label="Aktuelle URL an Parzelle senden" name="assign" /> 13 <button label="Aktuelle URL an Parzelle senden" name="assign" />
12 </layout_panel> 14 </layout_panel>
13 <layout_panel name="external_controls"> 15 <layout_panel name="external_controls">
14 <button label="In meinem Browser öffnen" name="open_browser" /> 16 <button label="In meinem Browser öffnen" name="open_browser" />
15 <check_box label="Immer in meinem Browser öffnen" name="open_always" /> 17 <check_box label="Immer in meinem Browser öffnen" name="open_always" />
18 <button label="Als Zuhause setzen" name="set_home" />
19
16 <button label="Schließen" name="close" /> 20 <button label="Schließen" name="close" />
17 </layout_panel> 21 </layout_panel>
18 </layout_stack> 22 </layout_stack>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_mini_map.xml b/linden/indra/newview/skins/default/xui/de/floater_mini_map.xml
index d389258..232ec3e 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_mini_map.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_mini_map.xml
@@ -1,4 +1,8 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<floater name="minimap"> 2<floater name="minimap" short_title="Mini-Karte">
3 <panel label="Minikarte" name="mini_mapview" tool_tip="(Karte mit Doppelklick öffnen)"/> 3 <panel label="Minikarte" name="mini_mapview" tool_tip="(Karte mit Doppelklick öffnen)"/>
4 <!-- Note: panel contents are defined in panel_radar.xml -->
5 <panel name="RadarPanel" label="Radar" />
6 <button name="toggle_radar" label="" tool_tip="Radar anzeigen oder verstecken" />
7
4</floater> 8</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_mute.xml b/linden/indra/newview/skins/default/xui/de/floater_mute.xml
index 5dbb9fc..b39c97a 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_mute.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_mute.xml
@@ -1,6 +1,6 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="mute floater" title="Stummgeschaltete Einwohner und Objekte" short_title="Stummschalten-Liste"> 2<floater name="mute floater" title="Stummgeschaltete Einwohner &amp; Objekte" short_title="Stummschalten-Liste">
3 <scroll_list name="mutes" tool_tip="List of currently muted residents" /> 3 <scroll_list name="mutes" tool_tip="Liste derzeit stummgeschalteter Einwohner" />
4 <button label="Einwohner stummschalten..." label_selected="Einwohner stummschalten..." 4 <button label="Einwohner stummschalten..." label_selected="Einwohner stummschalten..."
5 name="Mute resident..." 5 name="Mute resident..."
6 tool_tip="Wählen Sie einen Einwohner, um ihn stumm zu schalten" /> 6 tool_tip="Wählen Sie einen Einwohner, um ihn stumm zu schalten" />
diff --git a/linden/indra/newview/skins/default/xui/de/floater_mute_object.xml b/linden/indra/newview/skins/default/xui/de/floater_mute_object.xml
index 60c6ff0..bf6059f 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_mute_object.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_mute_object.xml
@@ -2,7 +2,7 @@
2<floater name="mute by name" title="Objekt nach Name stummschalten"> 2<floater name="mute by name" title="Objekt nach Name stummschalten">
3 <text name="message"> 3 <text name="message">
4 Stummschalten nach Name betrifft nur Chat und IM, keine 4 Stummschalten nach Name betrifft nur Chat und IM, keine
5Sounds. Sie müssen den Objektnamen exakt angeben. 5Klänge. Sie müssen den Objektnamen exakt eingeben.
6 </text> 6 </text>
7 <line_editor name="object_name"> 7 <line_editor name="object_name">
8 Objektname 8 Objektname
diff --git a/linden/indra/newview/skins/default/xui/de/floater_name_description.xml b/linden/indra/newview/skins/default/xui/de/floater_name_description.xml
index f45b1e0..608c3eb 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_name_description.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_name_description.xml
@@ -7,5 +7,5 @@
7 Beschreibung: 7 Beschreibung:
8 </text> 8 </text>
9 <button label="Abbrechen" name="cancel_btn" width="80" /> 9 <button label="Abbrechen" name="cancel_btn" width="80" />
10 <button label="Hochladen ([AMOUNT] L$)" name="ok_btn" width="120" /> 10 <button label="Hochladen ([UPLOADFEE])" name="ok_btn" width="120" />
11</floater> 11</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_new_outfit_dialog.xml b/linden/indra/newview/skins/default/xui/de/floater_new_outfit_dialog.xml
index 73c6760..dbb96ef 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_new_outfit_dialog.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_new_outfit_dialog.xml
@@ -16,6 +16,9 @@
16 <check_box label="Unterhemd" name="checkbox_Undershirt" left="90"/> 16 <check_box label="Unterhemd" name="checkbox_Undershirt" left="90"/>
17 <check_box label="Unterhose" name="checkbox_Underpants" left="90"/> 17 <check_box label="Unterhose" name="checkbox_Underpants" left="90"/>
18 <check_box label="Rock" name="checkbox_Skirt" left="90"/> 18 <check_box label="Rock" name="checkbox_Skirt" left="90"/>
19 <check_box label="Tätowierung" name="checkbox_Tattoo" left="90"/>
20 <check_box label="Transparenz" name="checkbox_Alpha" left="90"/>
21
19 <check_box label="Brust" name="checkbox_Chest" left="190"/> 22 <check_box label="Brust" name="checkbox_Chest" left="190"/>
20 <check_box label="Schädel" name="checkbox_Skull" left="190"/> 23 <check_box label="Schädel" name="checkbox_Skull" left="190"/>
21 <check_box label="Linke Schulter" name="checkbox_Left Shoulder" left="190"/> 24 <check_box label="Linke Schulter" name="checkbox_Left Shoulder" left="190"/>
@@ -59,9 +62,8 @@
59 </text> 62 </text>
60 <text type="string" length="1" 63 <text type="string" length="1"
61 name="Outfits are folders that contain clothing and body parts. Drag an outfit folder onto your avatar to put it on. &quot;Make New Outfit&quot; makes a new folder and saves copies of the items you are now wearing into it."> 64 name="Outfits are folders that contain clothing and body parts. Drag an outfit folder onto your avatar to put it on. &quot;Make New Outfit&quot; makes a new folder and saves copies of the items you are now wearing into it.">
62 Outfits sind Ordner, die Kleider und Körperteile enthalten. 65 Outfits sind Ordner, die Kleidung und Körperteile enthalten. Ziehen Sie einen Outfit-Ordner auf Ihren Avatar, um ihn anzuziehen.
63Ziehen Sie einen Outfit-Ordner auf Ihren Avatar, um ihn anzuziehen. 66
64
65„Neues Outfit“ erstellt einen neuen Ordner und speichert darin Kopien der 67„Neues Outfit“ erstellt einen neuen Ordner und speichert darin Kopien der
66Objekte, die Sie gerade tragen. 68Objekte, die Sie gerade tragen.
67 </text> 69 </text>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_notifications_console.xml b/linden/indra/newview/skins/default/xui/de/floater_notifications_console.xml
index a1cd698..14318dd 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_notifications_console.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_notifications_console.xml
@@ -2,4 +2,7 @@
2<floater name="notifications_console" title="Konsole: Meldungen"> 2<floater name="notifications_console" title="Konsole: Meldungen">
3 <combo_box label="Meldungsart auswählen" name="notification_types" width="412" /> 3 <combo_box label="Meldungsart auswählen" name="notification_types" width="412" />
4 <button label="Hinzufügen" name="add_notification" left="417" width="78" /> 4 <button label="Hinzufügen" name="add_notification" left="417" width="78" />
5 <button name="reload_notifications" left="497" width="85" label="Alle Neuladen"/>
6 <layout_stack name="notification_channels">
7 </layout_stack>
5</floater> 8</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_pay.xml b/linden/indra/newview/skins/default/xui/de/floater_pay.xml
index dc38697..a98894d 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_pay.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_pay.xml
@@ -5,10 +5,10 @@
5 Schnellzahlung: 5 Schnellzahlung:
6 </text> 6 </text>
7 7
8 <button name="fastpay 1" label="1 L$" left="115" /> 8 <button name="fastpay 1" label="1 [CURRENCY]" left="115" />
9 <button name="fastpay 5" label="5 L$" /> 9 <button name="fastpay 5" label="5 [CURRENCY]" />
10 <button name="fastpay 10" label="10 L$" left="115" /> 10 <button name="fastpay 10" label="10 [CURRENCY]" left="115" />
11 <button name="fastpay 20" label="20 L$" /> 11 <button name="fastpay 20" label="20 [CURRENCY]" />
12 12
13 <text name="amount text"> 13 <text name="amount text">
14 Betrag: 14 Betrag:
diff --git a/linden/indra/newview/skins/default/xui/de/floater_pay_object.xml b/linden/indra/newview/skins/default/xui/de/floater_pay_object.xml
index 55ad735..07dee37 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_pay_object.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_pay_object.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="Give Money"> 2<floater name="Give Money" title="[PAY TYPE] [FIRST] [LAST>
3 3
4 <string name="pay group"> 4 <string name="pay group">
5 Gruppe bezahlen: 5 Gruppe bezahlen:
@@ -16,14 +16,17 @@
16 Schnellzahlung: 16 Schnellzahlung:
17 </text> 17 </text>
18 18
19 <button name="fastpay 1" label="1 L$" left="115" /> 19 <button name="fastpay 1" label="1 [CURRENCY]" left="115" />
20 <button name="fastpay 5" label="5 L$" /> 20 <button name="fastpay 5" label="5 [CURRENCY]" />
21 <button name="fastpay 10" label="10 L$" left="115" /> 21 <button name="fastpay 10" label="10 [CURRENCY]" left="115" />
22 <button name="fastpay 20" label="20 L$" /> 22 <button name="fastpay 20" label="20 [CURRENCY]" />
23 23
24 <text name="amount text"> 24 <text name="amount text">
25 Betrag: 25 Betrag:
26 </text> 26 </text>
27 <text name="currency text">
28 [CURRENCY]
29 </text>
27 30
28 <button name="pay btn" label="Zahlen" /> 31 <button name="pay btn" label="Zahlen" />
29 <button name="cancel btn" label="Abbrechen" /> 32 <button name="cancel btn" label="Abbrechen" />
diff --git a/linden/indra/newview/skins/default/xui/de/floater_post_process.xml b/linden/indra/newview/skins/default/xui/de/floater_post_process.xml
index e10806d..4baad69 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_post_process.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_post_process.xml
@@ -32,16 +32,16 @@
32 Rauschen-Stärke 32 Rauschen-Stärke
33 </text> 33 </text>
34 </panel> 34 </panel>
35 <panel label="Bloom" name="wmiBloomPanel"> 35 <panel label="Schleier" name="wmiBloomPanel">
36 <check_box label="Ein" name="wmiBloomToggle" /> 36 <check_box label="Ein" name="wmiBloomToggle" />
37 <text name="wmiBloomExtractText"> 37 <text name="wmiBloomExtractText">
38 Luminanz-Extraktion 38 Luminanz-Extraktion
39 </text> 39 </text>
40 <text name="wmiBloomSizeText"> 40 <text name="wmiBloomSizeText">
41 Bloom-Größe 41 Schleier-Größe
42 </text> 42 </text>
43 <text name="wmiBloomStrengthText"> 43 <text name="wmiBloomStrengthText">
44 Bloom-Stärke 44 Schleier-Stärke
45 </text> 45 </text>
46 </panel> 46 </panel>
47 <panel label="Extras" name="Extras"> 47 <panel label="Extras" name="Extras">
diff --git a/linden/indra/newview/skins/default/xui/de/floater_postcard.xml b/linden/indra/newview/skins/default/xui/de/floater_postcard.xml
index 639a8ff..90a3c3d 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_postcard.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_postcard.xml
@@ -22,18 +22,11 @@
22 <text_editor name="msg_form"> 22 <text_editor name="msg_form">
23 Nachricht hier eingeben. 23 Nachricht hier eingeben.
24 </text_editor> 24 </text_editor>
25 <check_box label="Im Web veröffentlichen" name="allow_publish_check" 25
26 tool_tip="Veröffentlicht diese Postkarte im Web." />
27 <check_box label="Ab-18-Inhalt" name="mature_check"
28 tool_tip="Diese Postkarte enthält nicht jugendfreie Inhalte." />
29 <button label="?" name="publish_help_btn" />
30 <text name="fine_print">
31 Wenn sich der Empfänger bei SL anmeldet, erhalten Sie einen Empfehlungsbonus.
32 </text>
33 <button label="Abbrechen" name="cancel_btn" /> 26 <button label="Abbrechen" name="cancel_btn" />
34 <button label="Senden" name="send_btn" /> 27 <button label="Senden" name="send_btn" />
35 <text name="default_subject"> 28 <text name="default_subject">
36 Postkarte aus Second Life. 29 Postkarte aus [GRID_NAME].
37 </text> 30 </text>
38 <text name="default_message"> 31 <text name="default_message">
39 Sehen Sie hier! 32 Sehen Sie hier!
diff --git a/linden/indra/newview/skins/default/xui/de/floater_preferences.xml b/linden/indra/newview/skins/default/xui/de/floater_preferences.xml
index 5f68282..ac18f28 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_preferences.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_preferences.xml
@@ -1,8 +1,7 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="Preferences" title="Einstellungen"> 2<floater name="Preferences" title="Voreinstellungen">
3 <button label="OK" label_selected="OK" name="OK" /> 3 <button label="OK" label_selected="OK" name="OK" />
4 <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> 4 <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" />
5 <button label="Übernehmen" label_selected="Übernehmen" name="Apply" /> 5 <button label="Übernehmen" label_selected="Übernehmen" name="Apply" />
6 <button label="Info" label_selected="Info" name="About..." />
7 <button label="Hilfe" label_selected="Hilfe" name="Help" /> 6 <button label="Hilfe" label_selected="Hilfe" name="Help" />
8</floater> 7</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_preview_notecard.xml b/linden/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
index 370f242..7925ed6 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
@@ -1,16 +1,40 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="preview notecard" title="Hinweis:"> 2<floater name="preview notecard" title="Hinweis:">
3 <button label="Speichern" label_selected="Speichern" name="Save" />
4 <text type="string" length="1" name="desc txt"> 3 <text type="string" length="1" name="desc txt">
5 Beschreibung: 4 Beschreibung:
6 </text> 5 </text>
6
7 <menu_bar name="motecard_menu">
8 <menu name="File">
9 <menu_item_call label="Speichern" name="Save Menu" shortcut="control|S" />
10 <menu_item_separator />
11 <menu_item_call label="Text Exportieren..." name="Export Text..." />
12 <menu_item_call label="Text Importieren..." name="Import Text..." />
13 </menu>
14 <menu name="Edit">
15 <menu_item_call label="Rückgängig" name="Undo" />
16 <menu_item_call label="Wiederherstellen" name="Redo" width="139" />
17 <menu_item_separator label="-----------" name="separator1" width="139" />
18 <menu_item_call label="Ausschneiden" name="Cut" />
19 <menu_item_call label="Kopieren" name="Copy" />
20 <menu_item_call label="Einfügen" name="Paste" />
21 <menu_item_separator label="-----------" name="separator2" width="139" />
22 <menu_item_call label="Alle auswählen" name="Select All" width="139" />
23 <menu_item_call label="Deselektieren" name="Deselect" width="139" />
24 <menu_item_separator label="-----------" name="separator3" width="139" />
25 <menu_item_call label="Suchen / Ersetzen..."
26 name="Search / Replace..." width="139" />
27 </menu>
28 </menu_bar>
29
7 <text_editor type="string" length="1" name="Notecard Editor"> 30 <text_editor type="string" length="1" name="Notecard Editor">
8 Wird geladen... 31 Wird geladen...
9 </text_editor> 32 </text_editor>
10 <text name="no_object"> 33 <button label="Sichern" label_selected="Sichern" name="Save" />
34 <string name="no_object">
11 Es wurde kein Objekt gefunden, das diese Notiz enthält. 35 Es wurde kein Objekt gefunden, das diese Notiz enthält.
12 </text> 36 </string>
13 <text name="not_allowed"> 37 <string name="not_allowed">
14 Sie können diese Notiz nicht anzeigen. 38 Sie können diese Notiz nicht anzeigen.
15 </text> 39 </string>
16</floater> 40</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_preview_notecard_keep_discard.xml b/linden/indra/newview/skins/default/xui/de/floater_preview_notecard_keep_discard.xml
index 1faf82b..7d068fe 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_preview_notecard_keep_discard.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_preview_notecard_keep_discard.xml
@@ -1,16 +1,39 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="preview_notecard"> 2<floater name="preview_notecard" title="Notiz:" >
3 <text_editor type="string" length="1" name="Notecard Editor">
4 Wird geladen...
5 </text_editor>
6 <text type="string" length="1" name="desc txt"> 3 <text type="string" length="1" name="desc txt">
7 Beschreibung: 4 Beschreibung:
8 </text> 5 </text>
6 <menu_bar name="motecard_menu">
7 <menu name="File">
8 <menu_item_call label="Sichern" name="Save Menu" />
9 <menu_item_separator />
10 <menu_item_call label="Text Exportieren..." name="Export Text..." />
11 <menu_item_call label="Text Importieren..." name="Import Text..." />
12 </menu>
13 <menu name="Edit">
14 <menu_item_call label="Rückgängig" name="Undo" width="139" />
15 <menu_item_call label="Wiederherstellen" name="Redo" width="139" />
16 <menu_item_separator label="-----------" name="separator1" width="139" />
17 <menu_item_call label="Ausschneiden" name="Cut" width="139" />
18 <menu_item_call label="Kopieren" name="Copy" width="139" />
19 <menu_item_call label="Einfügen" name="Paste" width="139" />
20 <menu_item_separator label="-----------" name="separator2" width="139" />
21 <menu_item_call label="Alle auswählen" name="Select All" width="139" />
22 <menu_item_call label="Deselektieren" name="Deselect" width="139" />
23 <menu_item_separator label="-----------" name="separator3" width="139" />
24 <menu_item_call label="Suchen / Ersetzen..."
25 name="Search / Replace..." width="139" />
26 </menu>
27 </menu_bar>
28 <text_editor type="string" length="1" name="Notecard Editor">
29 Wird geladen...
30 </text_editor>
9 <button label="Behalten" label_selected="Behalten" name="Keep" /> 31 <button label="Behalten" label_selected="Behalten" name="Keep" />
32 <button label="Sichern" label_selected="Sichern" name="Save" />
10 <button label="Verwerfen" label_selected="Verwerfen" name="Discard" /> 33 <button label="Verwerfen" label_selected="Verwerfen" name="Discard" />
11 <text name="no_object"> 34 <string name="no_object">
12 Es wurde kein Objekt gefunden, das diese Notiz enthält: 35 Es wurde kein Objekt gefunden, das diese Notiz enthält.
13 </text> 36 </string>
14 <string name="not_allowed"> 37 <string name="not_allowed">
15 Sie können diese Notiz nicht anzeigen. 38 Sie können diese Notiz nicht anzeigen.
16 </string> 39 </string>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_preview_sound.xml b/linden/indra/newview/skins/default/xui/de/floater_preview_sound.xml
index fd0a824..64e3e56 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_preview_sound.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_preview_sound.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="preview_sound"> 2<floater name="preview_sound" width="310">
3 <text type="string" length="1" name="desc txt"> 3 <text type="string" length="1" name="desc txt">
4 Beschreibung: 4 Beschreibung:
5 </text> 5 </text>
@@ -8,5 +8,5 @@
8 tool_tip="Gibt diesen Sound so wieder, dass andere ihn hören können." /> 8 tool_tip="Gibt diesen Sound so wieder, dass andere ihn hören können." />
9 <button label="Lokal wiedergeben" label_selected="Lokal wiedergeben" 9 <button label="Lokal wiedergeben" label_selected="Lokal wiedergeben"
10 name="Sound audition btn" 10 name="Sound audition btn"
11 tool_tip="Gibt diesen Sound so wieder, dass nur Sie ihn hören." /> 11 tool_tip="Gibt diesen Sound so wieder, dass nur Sie ihn hören." width="130" />
12</floater> 12</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_prim_import.xml b/linden/indra/newview/skins/default/xui/de/floater_prim_import.xml
new file mode 100644
index 0000000..0e5c6b1
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/de/floater_prim_import.xml
@@ -0,0 +1,4 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="Import" title="Fortschritt des Imports">
3 <text name="name_label"> Fortschritt </text>
4</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/linden/indra/newview/skins/default/xui/de/floater_report_abuse.xml
index 6a7246d..048066e 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_report_abuse.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_report_abuse.xml
@@ -119,6 +119,7 @@ dann auf das Objekt:
119 <combo_item name="Indecency__Broadly_offensive_content_or_conduct"> 119 <combo_item name="Indecency__Broadly_offensive_content_or_conduct">
120 Unanständigkeit &gt; Anstößige Inhalte oder Handlungen in der Öffentlichkeit 120 Unanständigkeit &gt; Anstößige Inhalte oder Handlungen in der Öffentlichkeit
121 </combo_item> 121 </combo_item>
122<!-- 58 = deprecated by AO -->
122 <combo_item name="Indecency__Inappropriate_avatar_name"> 123 <combo_item name="Indecency__Inappropriate_avatar_name">
123 Unanständigkeit &gt; Anstößiger Avatarname 124 Unanständigkeit &gt; Anstößiger Avatarname
124 </combo_item> 125 </combo_item>
@@ -138,7 +139,7 @@ dann auf das Objekt:
138 Intoleranz 139 Intoleranz
139 </combo_item> 140 </combo_item>
140 <combo_item name="Land__Abuse_of_sandbox_resources"> 141 <combo_item name="Land__Abuse_of_sandbox_resources">
141 Land &gt; Missbrauch der Sandbox-Ressourcen 142 Land &gt; Missbrauch von Sandbox-Ressourcen
142 </combo_item> 143 </combo_item>
143 <combo_item name="Land__Encroachment__Objects_textures"> 144 <combo_item name="Land__Encroachment__Objects_textures">
144 Land &gt; Unbefugte Nutzung &gt; Objekte/Texturen 145 Land &gt; Unbefugte Nutzung &gt; Objekte/Texturen
@@ -160,7 +161,7 @@ dann auf das Objekt:
160 Name des Beschuldigten: 161 Name des Beschuldigten:
161 </text> 162 </text>
162 <button label="Einwohner auswählen" label_selected="" name="select_abuser" tool_tip="Den Namen des Beschuldigten aus einer Liste wählen"/> 163 <button label="Einwohner auswählen" label_selected="" name="select_abuser" tool_tip="Den Namen des Beschuldigten aus einer Liste wählen"/>
163 <check_box label="Name des Täters ist nicht bekannt" name="omit_abuser_name" tool_tip="Wählen Sie diese Option, wenn Ihnen der Name des Täters unbekannt ist"/> 164 <check_box label="Name des Täters unbekannt" name="omit_abuser_name" tool_tip="Wählen Sie diese Option, wenn Ihnen der Name des Täters nicht bekannt ist"/>
164 <text name="abuser_name_title2"> 165 <text name="abuser_name_title2">
165 Ort des Missbrauchs: 166 Ort des Missbrauchs:
166 </text> 167 </text>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/de/floater_report_bug.xml
index 2c8734e..fdcde20 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_report_bug.xml
@@ -1,5 +1,7 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="bug_reporter" title="Fehler melden"> 2<floater name="bug_reporter" title="Fehler melden">
3 <texture_picker label="" name="screenshot"/>
4 <check_box bottom_delta="-20" label="Screenshot einschließen" name="screen_check"/>
3 <text name="reporter_title"> 5 <text name="reporter_title">
4 Melder: 6 Melder:
5 </text> 7 </text>
@@ -24,13 +26,11 @@ dann auf das Objekt:
24 <text name="owner_name_label"> 26 <text name="owner_name_label">
25 Eigentümer: 27 Eigentümer:
26 </text> 28 </text>
27 <check_box label="Screenshot einschließen" name="screen_check" />
28 <texture_picker label="Arbeitet..." name="screenshot" />
29 <text name="owner_name"> 29 <text name="owner_name">
30 Hendrerit Vulputate 30 Hendrerit Vulputate
31 </text> 31 </text>
32 <combo_box name="category_combo" 32 <combo_box name="category_combo"
33 tool_tip="Category -- select the category that best describes this report"> 33 tool_tip="Kategorie -- wählen Sie die Kategorie aus, die am besten auf diesen Bericht zutrifft">
34 <combo_item name="Selectcategory"> 34 <combo_item name="Selectcategory">
35 Kategorie auswählen 35 Kategorie auswählen
36 </combo_item> 36 </combo_item>
@@ -74,7 +74,7 @@ dann auf das Objekt:
74 Skript 74 Skript
75 </combo_item> 75 </combo_item>
76 <combo_item name="Sound"> 76 <combo_item name="Sound">
77 Sound 77 Klang
78 </combo_item> 78 </combo_item>
79 <combo_item name="Stipends"> 79 <combo_item name="Stipends">
80 Stipendium 80 Stipendium
diff --git a/linden/indra/newview/skins/default/xui/de/floater_rlv_behaviour.xml b/linden/indra/newview/skins/default/xui/de/floater_rlv_behaviour.xml
new file mode 100644
index 0000000..a08d9b2
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/de/floater_rlv_behaviour.xml
@@ -0,0 +1,8 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="rlvBehaviours"
3 title="Active RLV-Beschränkungen">
4 <scroll_list name="behaviour_list">
5 <column label="Beschränkung" name="behaviour" />
6 <column label="Objektname" name="name" />
7 </scroll_list>
8</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
index 3e0a5fa..d7a2013 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
@@ -79,6 +79,10 @@
79 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" 79 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
80 initial_value="false" label="Select faces to texture" left="4" mouse_opaque="true" 80 initial_value="false" label="Select faces to texture" left="4" mouse_opaque="true"
81 name="radio select face" radio_style="true" width="114" /> 81 name="radio select face" radio_style="true" width="114" />
82 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
83 initial_value="false" label="Align (Shift to Pack)" left="4" mouse_opaque="true"
84 name="radio align" radio_style="true" width="114"
85 tool_tip="Align aligns all selected prims' edges along an axis, Pack moves all selected prims' edges so they're touching" />
82 <check_box bottom_delta="-19" control_name="EditLinkedParts" follows="left|top" 86 <check_box bottom_delta="-19" control_name="EditLinkedParts" follows="left|top"
83 font="SansSerifSmall" height="16" initial_value="false" 87 font="SansSerifSmall" height="16" initial_value="false"
84 label="Edit linked parts" left="4" mouse_opaque="true" 88 label="Edit linked parts" left="4" mouse_opaque="true"
diff --git a/linden/indra/newview/skins/default/xui/en-us/fonts.xml b/linden/indra/newview/skins/default/xui/en-us/fonts.xml
index 5564079..7343ac2 100644
--- a/linden/indra/newview/skins/default/xui/en-us/fonts.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/fonts.xml
@@ -153,7 +153,7 @@
153 /> 153 />
154 <font_size name="Small" 154 <font_size name="Small"
155 comment="Size of small font (points, or 1/72 of an inch)" 155 comment="Size of small font (points, or 1/72 of an inch)"
156 size="8" 156 size="8.5"
157 /> 157 />
158</fonts> 158</fonts>
159 159
diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
index 47eea07..9c265d2 100644
--- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
@@ -902,32 +902,32 @@ Would you like to disable all popups which can be skipped?
902</notification> 902</notification>
903 903
904<notification 904<notification
905 icon="alertmodal.tga" 905 icon="notify.tga"
906 name="CacheWillClear" 906 name="CacheWillClear"
907 type="alertmodal"> 907 type="notify">
908Cache will be cleared after you restart [VIEWER_NAME]. 908Cache will be cleared after you restart [VIEWER_NAME].
909</notification> 909</notification>
910 910
911<notification 911<notification
912 icon="alertmodal.tga" 912 icon="notify.tga"
913 name="CacheWillBeMoved" 913 name="CacheWillBeMoved"
914 type="alertmodal"> 914 type="notify">
915Cache will be moved after you restart [VIEWER_NAME]. 915Cache will be moved after you restart [VIEWER_NAME].
916 916
917Note: This will clear the cache. 917Note: This will clear the cache.
918</notification> 918</notification>
919 919
920<notification 920<notification
921 icon="alertmodal.tga" 921 icon="notify.tga"
922 name="ChangeConnectionPort" 922 name="ChangeConnectionPort"
923 type="alertmodal"> 923 type="notify">
924Port settings take effect after you restart [VIEWER_NAME]. 924Port settings take effect after you restart [VIEWER_NAME].
925</notification> 925</notification>
926 926
927<notification 927<notification
928 icon="alertmodal.tga" 928 icon="notify.tga"
929 name="ChangeSkin" 929 name="ChangeSkin"
930 type="alertmodal"> 930 type="notify">
931The new skin will appear after you restart [VIEWER_NAME]. 931The new skin will appear after you restart [VIEWER_NAME].
932</notification> 932</notification>
933 933
@@ -7122,8 +7122,8 @@ Apply this region's settings? (&quot;Ignore&quot; will ignore all region setting
7122 7122
7123<notification 7123<notification
7124 name="ChangeFont" 7124 name="ChangeFont"
7125 icon="alertmodal.tga" 7125 icon="notify.tga"
7126 type="alertmodal"> 7126 type="notify">
7127The new font will appear after you restart [VIEWER_NAME]. 7127The new font will appear after you restart [VIEWER_NAME].
7128</notification> 7128</notification>
7129 7129
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml
index 5865bec..c64ce9f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml
@@ -46,4 +46,14 @@
46 Preview: The quick brown fox jumped over the lazy dog. :) 46 Preview: The quick brown fox jumped over the lazy dog. :)
47 </text> 47 </text>
48 48
49
50 <spinner name="font_mult" label="Font size multiplier:" label_width="130"
51 bottom="-280" left="20" height="16" width="180" follows="left|top"
52 decimal_digits="2" increment="0.01" max_val="3.0" min_val="0.1"
53 tool_tip="Multiply all font sizes by this amount." />
54
55 <check_box name="font_round" follows="left|top"
56 bottom="-300" left="20" height="16" width="300"
57 label="Force integer font sizes (may fix blurry fonts)" />
58
49</panel> 59</panel>