diff options
author | Aleric Inglewood | 2010-10-28 14:45:30 +0200 |
---|---|---|
committer | Aleric Inglewood | 2010-10-28 14:45:30 +0200 |
commit | c0547c39f26b3d35f587183fa432434f8a6d2608 (patch) | |
tree | ac564c4dfa24057a9b8b9586e8d9f430df514c69 /linden/indra/newview | |
parent | Only initialize WebCore resource(s) on linux. (diff) | |
parent | Merge branch 'weekly' of http://github.com/imprudence/imprudence into weekly (diff) | |
download | meta-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')
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 | ||
66 | void ImpPrefsFonts::apply() | 80 | void 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 | ||
84 | void ImpPrefsFonts::cancel() | 126 | void 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 | |||
127 | private: | 130 | private: |
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 | ||
1302 | void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels, | 1315 | void 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 | ||
2281 | bool 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 | |||
89 | protected: | 91 | protected: |
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 | |||
33 | const F32 MANIPULATOR_SIZE = 5.0; | ||
34 | const F32 MANIPULATOR_SELECT_SIZE = 20.0; | ||
35 | |||
36 | |||
37 | |||
38 | QToolAlign::QToolAlign() | ||
39 | : LLTool(std::string("Align")) | ||
40 | { | ||
41 | } | ||
42 | |||
43 | |||
44 | QToolAlign::~QToolAlign() | ||
45 | { | ||
46 | } | ||
47 | |||
48 | |||
49 | |||
50 | BOOL 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 | |||
66 | void 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 | |||
109 | void QToolAlign::handleSelect() | ||
110 | { | ||
111 | // no parts, please | ||
112 | |||
113 | llwarns << "in select" << llendl; | ||
114 | LLSelectMgr::getInstance()->promoteSelectionToRoot(); | ||
115 | } | ||
116 | |||
117 | |||
118 | void QToolAlign::handleDeselect() | ||
119 | { | ||
120 | } | ||
121 | |||
122 | |||
123 | BOOL 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 | |||
193 | BOOL 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 | |||
210 | void 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 | |||
231 | void 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 | |||
244 | void 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. | ||
261 | LLBBox 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 | |||
291 | void 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 | |||
318 | LLColor4 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 | |||
323 | void 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 | |||
374 | void 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 | ||
394 | BOOL 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 | ||
410 | class BBoxCompare | ||
411 | { | ||
412 | public: | ||
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 | |||
434 | void 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 | |||
18 | class LLViewerObject; | ||
19 | class LLPickInfo; | ||
20 | class LLToolSelectRect; | ||
21 | |||
22 | class QToolAlign | ||
23 | : public LLTool, public LLSingleton<QToolAlign> | ||
24 | { | ||
25 | public: | ||
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 | |||
37 | private: | ||
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 & 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 |
5 | Sounds. Sie müssen den Objektnamen exakt angeben. | 5 | Klä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. "Make New Outfit" 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. "Make New Outfit" 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. |
63 | Ziehen 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 |
66 | Objekte, die Sie gerade tragen. | 68 | Objekte, 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 > Anstößige Inhalte oder Handlungen in der Öffentlichkeit | 120 | Unanständigkeit > 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 > Anstößiger Avatarname | 124 | Unanständigkeit > 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 > Missbrauch der Sandbox-Ressourcen | 142 | Land > 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 > Unbefugte Nutzung > Objekte/Texturen | 145 | Land > Unbefugte Nutzung > 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"> |
908 | Cache will be cleared after you restart [VIEWER_NAME]. | 908 | Cache 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"> |
915 | Cache will be moved after you restart [VIEWER_NAME]. | 915 | Cache will be moved after you restart [VIEWER_NAME]. |
916 | 916 | ||
917 | Note: This will clear the cache. | 917 | Note: 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"> |
924 | Port settings take effect after you restart [VIEWER_NAME]. | 924 | Port 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"> |
931 | The new skin will appear after you restart [VIEWER_NAME]. | 931 | The new skin will appear after you restart [VIEWER_NAME]. |
932 | </notification> | 932 | </notification> |
933 | 933 | ||
@@ -7122,8 +7122,8 @@ Apply this region's settings? ("Ignore" 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"> |
7127 | The new font will appear after you restart [VIEWER_NAME]. | 7127 | The 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> |