aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--linden/indra/llwindow/llwindow.h1
-rw-r--r--linden/indra/llwindow/llwindowwin32.cpp12
-rw-r--r--linden/indra/llwindow/llwindowwin32.h1
-rw-r--r--linden/indra/newview/llfilepicker.cpp12
-rw-r--r--linden/indra/newview/llfilepicker.h3
-rw-r--r--linden/indra/newview/llfloatercustomize.cpp224
-rw-r--r--linden/indra/newview/llfloatercustomize.h4
-rw-r--r--linden/indra/newview/llfloaterwater.cpp85
-rw-r--r--linden/indra/newview/llfloaterwater.h3
-rw-r--r--linden/indra/newview/llfloaterwindlight.cpp11
-rw-r--r--linden/indra/newview/llfloaterwindlight.h2
-rw-r--r--linden/indra/newview/llfolderview.cpp57
-rw-r--r--linden/indra/newview/llfolderview.h11
-rw-r--r--linden/indra/newview/llimpanel.cpp41
-rw-r--r--linden/indra/newview/llimpanel.h1
-rw-r--r--linden/indra/newview/llinventoryactions.cpp20
-rw-r--r--linden/indra/newview/llinventoryview.cpp1
-rw-r--r--linden/indra/newview/llpreviewscript.cpp64
-rw-r--r--linden/indra/newview/llpreviewscript.h2
-rw-r--r--linden/indra/newview/llwearable.cpp69
-rw-r--r--linden/indra/newview/llwearable.h4
-rw-r--r--linden/indra/newview/llwindlightremotectrl.cpp36
-rw-r--r--linden/indra/newview/pipeline.cpp5
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/alerts.xml9
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_customize.xml28
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_instant_message_group.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_postcard.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_script_ed_panel.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_water.xml16
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote.xml12
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml30
-rw-r--r--linden/indra/newview/skins/silver/xui/en-us/floater_script_ed_panel.xml86
-rw-r--r--linden/indra/newview/skins/silver/xui/en-us/floater_script_queue.xml13
36 files changed, 733 insertions, 154 deletions
diff --git a/linden/indra/llwindow/llwindow.h b/linden/indra/llwindow/llwindow.h
index 0acbcb9..0004e92 100644
--- a/linden/indra/llwindow/llwindow.h
+++ b/linden/indra/llwindow/llwindow.h
@@ -202,6 +202,7 @@ public:
202 virtual void updateLanguageTextInputArea() {} 202 virtual void updateLanguageTextInputArea() {}
203 virtual void interruptLanguageTextInput() {} 203 virtual void interruptLanguageTextInput() {}
204 virtual void spawnWebBrowser(const std::string& escaped_url) {}; 204 virtual void spawnWebBrowser(const std::string& escaped_url) {};
205 virtual void ShellEx(const std::string& command) {};
205 206
206 static std::string getFontListSans(); 207 static std::string getFontListSans();
207 208
diff --git a/linden/indra/llwindow/llwindowwin32.cpp b/linden/indra/llwindow/llwindowwin32.cpp
index 2944511..a9c7758 100644
--- a/linden/indra/llwindow/llwindowwin32.cpp
+++ b/linden/indra/llwindow/llwindowwin32.cpp
@@ -2885,6 +2885,18 @@ S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 t
2885 return retval; 2885 return retval;
2886} 2886}
2887 2887
2888void LLWindowWin32::ShellEx(const std::string& command )
2889{
2890 LLWString url_wstring = utf8str_to_wstring( command );
2891 llutf16string url_utf16 = wstring_to_utf16str( url_wstring );
2892
2893 SHELLEXECUTEINFO sei = { sizeof( sei ) };
2894 sei.fMask = SEE_MASK_FLAG_DDEWAIT;
2895 sei.nShow = SW_SHOWNORMAL;
2896 sei.lpVerb = L"open";
2897 sei.lpFile = url_utf16.c_str();
2898 ShellExecuteEx( &sei );
2899}
2888 2900
2889void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url ) 2901void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
2890{ 2902{
diff --git a/linden/indra/llwindow/llwindowwin32.h b/linden/indra/llwindow/llwindowwin32.h
index 795fc79..bea55c6 100644
--- a/linden/indra/llwindow/llwindowwin32.h
+++ b/linden/indra/llwindow/llwindowwin32.h
@@ -110,6 +110,7 @@ public:
110 /*virtual*/ void updateLanguageTextInputArea(); 110 /*virtual*/ void updateLanguageTextInputArea();
111 /*virtual*/ void interruptLanguageTextInput(); 111 /*virtual*/ void interruptLanguageTextInput();
112 /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); 112 /*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
113 /*virtual*/ void ShellEx(const std::string& command);
113 114
114 static std::string getFontListSans(); 115 static std::string getFontListSans();
115 116
diff --git a/linden/indra/newview/llfilepicker.cpp b/linden/indra/newview/llfilepicker.cpp
index 954a274..ece30dd 100644
--- a/linden/indra/newview/llfilepicker.cpp
+++ b/linden/indra/newview/llfilepicker.cpp
@@ -327,6 +327,18 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
327 L"Targa, Bitmap Images (*.tga; *.bmp)\0*.tga;*.bmp\0" \ 327 L"Targa, Bitmap Images (*.tga; *.bmp)\0*.tga;*.bmp\0" \
328 L"\0"; 328 L"\0";
329 break; 329 break;
330 case FFSAVE_TEXT:
331 if (filename.empty())
332 {
333 wcsncpy( mFilesW,L"untitled.txt", FILENAME_BUFFER_SIZE); /*Flawfinder: ignore*/
334 }
335 mOFN.lpstrDefExt = L"txt";
336 mOFN.lpstrFilter =
337 L"Text files (*.txt)\0*.txt\0"
338 L"RTF Files (*.rtf)\0*.rtf\0"
339 L"LSL Files (*.lsl)\0*.lsl\0"
340 L"\0";
341 break;
330 case FFSAVE_WAV: 342 case FFSAVE_WAV:
331 if (filename.empty()) 343 if (filename.empty())
332 { 344 {
diff --git a/linden/indra/newview/llfilepicker.h b/linden/indra/newview/llfilepicker.h
index aea414a..f9f859f 100644
--- a/linden/indra/newview/llfilepicker.h
+++ b/linden/indra/newview/llfilepicker.h
@@ -90,6 +90,7 @@ public:
90 FFLOAD_XML = 6, 90 FFLOAD_XML = 6,
91 FFLOAD_SLOBJECT = 7, 91 FFLOAD_SLOBJECT = 7,
92 FFLOAD_RAW = 8, 92 FFLOAD_RAW = 8,
93 FFLOAD_TEXT = 9,
93 }; 94 };
94 95
95 enum ESaveFilter 96 enum ESaveFilter
@@ -109,6 +110,8 @@ public:
109 FFSAVE_J2C = 12, 110 FFSAVE_J2C = 12,
110 FFSAVE_PNG = 13, 111 FFSAVE_PNG = 13,
111 FFSAVE_JPEG = 14, 112 FFSAVE_JPEG = 14,
113 FFSAVE_HPA = 15,
114 FFSAVE_TEXT = 16,
112 }; 115 };
113 116
114 // open the dialog. This is a modal operation 117 // open the dialog. This is a modal operation
diff --git a/linden/indra/newview/llfloatercustomize.cpp b/linden/indra/newview/llfloatercustomize.cpp
index b9deb6c..4bcc823 100644
--- a/linden/indra/newview/llfloatercustomize.cpp
+++ b/linden/indra/newview/llfloatercustomize.cpp
@@ -245,6 +245,8 @@ public:
245 245
246 childSetAction("Save", onSave, this ); 246 childSetAction("Save", onSave, this );
247 childSetAction("Cancel", onCancel, this ); 247 childSetAction("Cancel", onCancel, this );
248 childSetAction("Check All", onCheckAll, this );
249 childSetAction("Uncheck All", onUncheckAll, this );
248 } 250 }
249 251
250 BOOL getRenameClothing() 252 BOOL getRenameClothing()
@@ -325,6 +327,26 @@ public:
325 LLMakeOutfitDialog* self = (LLMakeOutfitDialog*) userdata; 327 LLMakeOutfitDialog* self = (LLMakeOutfitDialog*) userdata;
326 self->close(); // destroys this object 328 self->close(); // destroys this object
327 } 329 }
330
331 static void onCheckAll( void* userdata )
332 {
333 LLMakeOutfitDialog* self = (LLMakeOutfitDialog*) userdata;
334 for( S32 i = 0; i < (S32)(self->mCheckBoxList.size()); i++)
335 {
336 std::string name = self->mCheckBoxList[i].first;
337 if(self->childIsEnabled(name))self->childSetValue(name,TRUE);
338 }
339 }
340
341 static void onUncheckAll( void* userdata )
342 {
343 LLMakeOutfitDialog* self = (LLMakeOutfitDialog*) userdata;
344 for( S32 i = 0; i < (S32)(self->mCheckBoxList.size()); i++)
345 {
346 std::string name = self->mCheckBoxList[i].first;
347 if(self->childIsEnabled(name))self->childSetValue(name,FALSE);
348 }
349 }
328}; 350};
329 351
330///////////////////////////////////////////////////////////////////// 352/////////////////////////////////////////////////////////////////////
@@ -536,10 +558,26 @@ void LLPanelEditWearable::setSubpart( ESubpart subpart )
536 item = (LLViewerInventoryItem*)gAgent.getWearableInventoryItem(mType); 558 item = (LLViewerInventoryItem*)gAgent.getWearableInventoryItem(mType);
537 U32 perm_mask = 0x0; 559 U32 perm_mask = 0x0;
538 BOOL is_complete = FALSE; 560 BOOL is_complete = FALSE;
561 bool can_export = false;
562 bool can_import = false;
539 if(item) 563 if(item)
540 { 564 {
541 perm_mask = item->getPermissions().getMaskOwner(); 565 perm_mask = item->getPermissions().getMaskOwner();
542 is_complete = item->isComplete(); 566 is_complete = item->isComplete();
567
568 if (subpart <= 18) // body parts only
569 {
570 can_import = true;
571
572 if (is_complete &&
573 gAgent.getID() == item->getPermissions().getOwner() &&
574 gAgent.getID() == item->getPermissions().getCreator() &&
575 (PERM_ITEM_UNRESTRICTED &
576 perm_mask) == PERM_ITEM_UNRESTRICTED)
577 {
578 can_export = true;
579 }
580 }
543 } 581 }
544 setUIPermissions(perm_mask, is_complete); 582 setUIPermissions(perm_mask, is_complete);
545 BOOL editable = ((perm_mask & PERM_MODIFY) && is_complete) ? TRUE : FALSE; 583 BOOL editable = ((perm_mask & PERM_MODIFY) && is_complete) ? TRUE : FALSE;
@@ -563,7 +601,8 @@ void LLPanelEditWearable::setSubpart( ESubpart subpart )
563 } 601 }
564 gFloaterCustomize->generateVisualParamHints(NULL, sorted_params); 602 gFloaterCustomize->generateVisualParamHints(NULL, sorted_params);
565 gFloaterCustomize->updateScrollingPanelUI(); 603 gFloaterCustomize->updateScrollingPanelUI();
566 604 gFloaterCustomize->childSetEnabled("Export", can_export);
605 gFloaterCustomize->childSetEnabled("Import", can_import);
567 606
568 // Update the camera 607 // Update the camera
569 gMorphView->setCameraTargetJoint( gAgent.getAvatarObject()->getJoint( part->mTargetJoint ) ); 608 gMorphView->setCameraTargetJoint( gAgent.getAvatarObject()->getJoint( part->mTargetJoint ) );
@@ -1287,7 +1326,18 @@ void LLScrollingPanelParam::onSliderMoved(LLUICtrl* ctrl, void* userdata)
1287 F32 new_weight = self->percentToWeight( (F32)slider->getValue().asReal() ); 1326 F32 new_weight = self->percentToWeight( (F32)slider->getValue().asReal() );
1288 if (current_weight != new_weight ) 1327 if (current_weight != new_weight )
1289 { 1328 {
1290 gAgent.getAvatarObject()->setVisualParamWeight( param, new_weight, TRUE); 1329 LLFloaterCustomize* floater_customize = gFloaterCustomize;
1330 if (!floater_customize) return;
1331
1332 //avatar height stuff -Patrick Sapinski (Wednesday, August 19, 2009)
1333 LLVOAvatar* avatar = gAgent.getAvatarObject();
1334 F32 avatar_size = (avatar->mBodySize.mV[VZ]) + (F32)0.17; //mBodySize is actually quite a bit off.
1335
1336 floater_customize->getChild<LLTextBox>("HeightText")->setValue(llformat("%.2f", avatar_size) + "m");
1337 floater_customize->getChild<LLTextBox>("HeightText2")->setValue(llformat("%.2f",llround(avatar_size / 0.3048)) + "'"
1338 + llformat("%.2f",llround(avatar_size * 39.37) % 12) + "\"");
1339
1340 gAgent.getAvatarObject()->setVisualParamWeight( param, new_weight, FALSE);
1291 gAgent.getAvatarObject()->updateVisualParams(); 1341 gAgent.getAvatarObject()->updateVisualParams();
1292 } 1342 }
1293} 1343}
@@ -1563,6 +1613,10 @@ BOOL LLFloaterCustomize::postBuild()
1563 childSetAction("Save All", LLFloaterCustomize::onBtnSaveAll, (void*)this); 1613 childSetAction("Save All", LLFloaterCustomize::onBtnSaveAll, (void*)this);
1564 childSetAction("Close", LLFloater::onClickClose, (void*)this); 1614 childSetAction("Close", LLFloater::onClickClose, (void*)this);
1565 1615
1616 // reX
1617 childSetAction("Import", LLFloaterCustomize::onBtnImport, (void*)this);
1618 childSetAction("Export", LLFloaterCustomize::onBtnExport, (void*)this);
1619
1566 // Wearable panels 1620 // Wearable panels
1567 initWearablePanels(); 1621 initWearablePanels();
1568 1622
@@ -1623,6 +1677,157 @@ void LLFloaterCustomize::setCurrentWearableType( EWearableType type )
1623 } 1677 }
1624} 1678}
1625 1679
1680
1681// reX: new function
1682void LLFloaterCustomize::onBtnImport( void* userdata )
1683{
1684 LLFilePicker& file_picker = LLFilePicker::instance();
1685 if( !file_picker.getOpenFile( LLFilePicker::FFLOAD_XML ) )
1686 {
1687 // User canceled import.
1688 return;
1689 }
1690
1691 const std::string filename = file_picker.getFirstFile();
1692
1693 FILE* fp = LLFile::fopen(filename, "rb");
1694
1695 //char text_buffer[2048]; /* Flawfinder: ignore */
1696 S32 c;
1697 S32 typ;
1698 S32 count;
1699 S32 param_id=0;
1700 F32 param_weight=0;
1701 S32 fields_read;
1702
1703 for( S32 i=0; i < WT_COUNT; i++ )
1704 {
1705 fields_read = fscanf( fp, "type %d\n", &typ);
1706 if( fields_read != 1 )
1707 {
1708 llwarns << "Bad asset type: early end of file" << llendl;
1709 return;
1710 }
1711
1712 fields_read = fscanf( fp, "parameters %d\n", &count);
1713 if( fields_read != 1 )
1714 {
1715 llwarns << "Bad parameters : early end of file" << llendl;
1716 return;
1717 }
1718 for(c=0;c<count;c++)
1719 {
1720 fields_read = fscanf( fp, "%d %f\n", &param_id, &param_weight );
1721 if( fields_read != 2 )
1722 {
1723 llwarns << "Bad parameters list: early end of file" << llendl;
1724 return;
1725 }
1726 gAgent.getAvatarObject()->setVisualParamWeight( param_id, param_weight, TRUE);
1727 gAgent.getAvatarObject()->updateVisualParams();
1728 }
1729 }
1730
1731
1732
1733 //for( S32 i=0; i < WT_COUNT; i++ )
1734 //{
1735 // fields_read = fscanf( fp, "type %d\n", &typ);
1736 // if( fields_read != 1 )
1737 // {
1738 // llwarns << "Bad asset type: early end of file" << llendl;
1739 // return;
1740 // }
1741 // fields_read = fscanf( fp, "textures %d\n", &count);
1742 // if( fields_read != 1 )
1743 // {
1744 // llwarns << "Bad textures: early end of file" << llendl;
1745 // return;
1746 // }
1747 //
1748 // for(c=0;c<count;c++)
1749 // {
1750 // fields_read = fscanf( fp, "%d %2047s\n",text_buffer);
1751 // if( fields_read != 2 )
1752 // {
1753 // llwarns << "Bad textures list: early end of file" << llendl;
1754 // return;
1755 // }
1756 // }
1757
1758
1759 fclose(fp);
1760 return;
1761}
1762
1763// reX: new function
1764void LLFloaterCustomize::onBtnExport( void* userdata )
1765{
1766 LLFilePicker& file_picker = LLFilePicker::instance();
1767 if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_XML ) )
1768 {
1769 // User canceled export.
1770 return;
1771 }
1772
1773 LLViewerInventoryItem* item;
1774 BOOL is_modifiable;
1775
1776 const std::string filename = file_picker.getFirstFile();
1777
1778 FILE* fp = LLFile::fopen(filename, "wb");
1779
1780 for( S32 i=0; i < WT_COUNT; i++ )
1781 {
1782 is_modifiable = FALSE;
1783 LLWearable* old_wearable = gAgent.getWearable((EWearableType)i);
1784 if( old_wearable )
1785 {
1786 item = (LLViewerInventoryItem*)gAgent.getWearableInventoryItem((EWearableType)i);
1787 if(item)
1788 {
1789 const LLPermissions& perm = item->getPermissions();
1790 is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID());
1791 }
1792 }
1793 if (is_modifiable)
1794 {
1795 old_wearable->FileExportParams(fp);
1796 }
1797 if (!is_modifiable)
1798 {
1799 fprintf( fp, "type %d\n",i);
1800 fprintf( fp, "parameters 0\n");
1801 }
1802 }
1803
1804 for( S32 i=0; i < WT_COUNT; i++ )
1805 {
1806 is_modifiable = FALSE;
1807 LLWearable* old_wearable = gAgent.getWearable((EWearableType)i);
1808 if( old_wearable )
1809 {
1810 item = (LLViewerInventoryItem*)gAgent.getWearableInventoryItem((EWearableType)i);
1811 if(item)
1812 {
1813 const LLPermissions& perm = item->getPermissions();
1814 is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID());
1815 }
1816 }
1817 if (is_modifiable)
1818 {
1819 old_wearable->FileExportTextures(fp);
1820 }
1821 if (!is_modifiable)
1822 {
1823 fprintf( fp, "type %d\n",i);
1824 fprintf( fp, "textures 0\n");
1825 }
1826 }
1827
1828 fclose(fp);
1829}
1830
1626// static 1831// static
1627void LLFloaterCustomize::onBtnSaveAll( void* userdata ) 1832void LLFloaterCustomize::onBtnSaveAll( void* userdata )
1628{ 1833{
@@ -2122,6 +2327,21 @@ void LLFloaterCustomize::draw()
2122 // arrives. Figure out some way to avoid this if possible. 2327 // arrives. Figure out some way to avoid this if possible.
2123 updateInventoryUI(); 2328 updateInventoryUI();
2124 2329
2330 LLFloaterCustomize* floater_customize = gFloaterCustomize;
2331 if (!floater_customize) return;
2332
2333 //KOWs avatar height stuff
2334 LLVOAvatar* avatar = gAgent.getAvatarObject();
2335 F32 avatar_size = (avatar->mBodySize.mV[VZ]) + (F32)0.17; //mBodySize is actually quite a bit off.
2336
2337 floater_customize->getChild<LLTextBox>("HeightText")->setValue(llformat("%.2f", avatar_size) + "m");
2338 //inches = avatar_size * 39.37
2339 //round(inches) + inches % 12
2340 std::string temp = llformat("%.0f",(F32)llfloor(avatar_size / 0.3048));
2341 std::string temp2 = llformat("%.0f",(F32)(llround(avatar_size * 39.37) % 12));
2342 floater_customize->getChild<LLTextBox>("HeightText2")->setValue(temp + "'"
2343 + temp2 + "\"");
2344
2125 LLScrollingPanelParam::sUpdateDelayFrames = 0; 2345 LLScrollingPanelParam::sUpdateDelayFrames = 0;
2126 2346
2127 childSetEnabled("Save All", isDirty() ); 2347 childSetEnabled("Save All", isDirty() );
diff --git a/linden/indra/newview/llfloatercustomize.h b/linden/indra/newview/llfloatercustomize.h
index 15fc8f1..ffa943a 100644
--- a/linden/indra/newview/llfloatercustomize.h
+++ b/linden/indra/newview/llfloatercustomize.h
@@ -107,6 +107,10 @@ public:
107 static EWearableType getCurrentWearableType() { return sCurrentWearableType; } 107 static EWearableType getCurrentWearableType() { return sCurrentWearableType; }
108 108
109 // Callbacks 109 // Callbacks
110 // reX: new function (thx dudes)
111 static void onBtnImport( void* userdata );
112 // reX: new function
113 static void onBtnExport( void* userdata );
110 static void onBtnSaveAll( void* userdata ); 114 static void onBtnSaveAll( void* userdata );
111 static void onBtnSnapshot( void* userdata ); 115 static void onBtnSnapshot( void* userdata );
112 static void onBtnMakeOutfit( void* userdata ); 116 static void onBtnMakeOutfit( void* userdata );
diff --git a/linden/indra/newview/llfloaterwater.cpp b/linden/indra/newview/llfloaterwater.cpp
index c42b12b..7e2f188 100644
--- a/linden/indra/newview/llfloaterwater.cpp
+++ b/linden/indra/newview/llfloaterwater.cpp
@@ -168,7 +168,11 @@ void LLFloaterWater::initCallbacks(void) {
168 168
169 LLTextureCtrl* textCtrl = getChild<LLTextureCtrl>("WaterNormalMap"); 169 LLTextureCtrl* textCtrl = getChild<LLTextureCtrl>("WaterNormalMap");
170 textCtrl->setDefaultImageAssetID(DEFAULT_WATER_NORMAL); 170 textCtrl->setDefaultImageAssetID(DEFAULT_WATER_NORMAL);
171 childSetCommitCallback("WaterNormalMap", onNormalMapPicked, NULL); 171 childSetCommitCallback("WaterNormalMap", onNormalMapPicked, NULL);
172
173 // next/prev buttons
174 childSetAction("next", onClickNext, this);
175 childSetAction("prev", onClickPrev, this);
172} 176}
173 177
174void LLFloaterWater::onClickHelp(void* data) 178void LLFloaterWater::onClickHelp(void* data)
@@ -237,6 +241,12 @@ void LLFloaterWater::syncMenu()
237 241
238 LLWaterParamSet & current_params = param_mgr->mCurParams; 242 LLWaterParamSet & current_params = param_mgr->mCurParams;
239 243
244 LLComboBox* comboBox = getChild<LLComboBox>("WaterPresetsCombo");
245 if (comboBox->getSelectedItemLabel() != current_params.mName)
246 {
247 comboBox->setSimple(current_params.mName);
248 }
249
240 // blue horizon 250 // blue horizon
241 param_mgr->mFogColor = current_params.getVector4(param_mgr->mFogColor.mName, err); 251 param_mgr->mFogColor = current_params.getVector4(param_mgr->mFogColor.mName, err);
242 252
@@ -306,14 +316,26 @@ LLFloaterWater* LLFloaterWater::instance()
306} 316}
307void LLFloaterWater::show() 317void LLFloaterWater::show()
308{ 318{
309 LLFloaterWater* water = instance(); 319 if (!sWaterMenu)
310 water->syncMenu(); 320 {
311 321 LLFloaterWater* water = instance();
312 // comment in if you want the menu to rebuild each time 322 water->syncMenu();
313 //LLUICtrlFactory::getInstance()->buildFloater(water, "floater_water.xml");
314 //water->initCallbacks();
315 323
316 water->open(); 324 // comment in if you want the menu to rebuild each time
325 //LLUICtrlFactory::getInstance()->buildFloater(water, "floater_water.xml");
326 //water->initCallbacks();
327 }
328 else
329 {
330 if (sWaterMenu->getVisible())
331 {
332 sWaterMenu->close();
333 }
334 else
335 {
336 sWaterMenu->open();
337 }
338 }
317} 339}
318 340
319bool LLFloaterWater::isOpen() 341bool LLFloaterWater::isOpen()
@@ -727,3 +749,50 @@ void LLFloaterWater::onChangePresetName(LLUICtrl* ctrl, void * userData)
727 sWaterMenu->syncMenu(); 749 sWaterMenu->syncMenu();
728} 750}
729 751
752void LLFloaterWater::onClickNext(void* user_data)
753{
754 LLWaterParamManager * param_mgr = LLWaterParamManager::instance();
755 LLWaterParamSet& currentParams = param_mgr->mCurParams;
756
757 // find place of current param
758 std::map<std::string, LLWaterParamSet>::iterator mIt =
759 param_mgr->mParamList.find(currentParams.mName);
760
761 // if at the end, loop
762 std::map<std::string, LLWaterParamSet>::iterator last = param_mgr->mParamList.end(); --last;
763 if(mIt == last)
764 {
765 mIt = param_mgr->mParamList.begin();
766 }
767 else
768 {
769 mIt++;
770 }
771 /*param_mgr->mAnimator.mIsRunning = false;
772 param_mgr->mAnimator.mUseLindenTime = false;*/
773 param_mgr->loadPreset(mIt->first, true);
774}
775
776void LLFloaterWater::onClickPrev(void* user_data)
777{
778 LLWaterParamManager * param_mgr = LLWaterParamManager::instance();
779 LLWaterParamSet & currentParams = param_mgr->mCurParams;
780
781 // find place of current param
782 std::map<std::string, LLWaterParamSet>::iterator mIt =
783 param_mgr->mParamList.find(currentParams.mName);
784
785 // if at the beginning, loop
786 if(mIt == param_mgr->mParamList.begin())
787 {
788 std::map<std::string, LLWaterParamSet>::iterator last = param_mgr->mParamList.end(); --last;
789 mIt = last;
790 }
791 else
792 {
793 mIt--;
794 }
795 /*param_mgr->mAnimator.mIsRunning = false;
796 param_mgr->mAnimator.mUseLindenTime = false;*/
797 param_mgr->loadPreset(mIt->first, true);
798}
diff --git a/linden/indra/newview/llfloaterwater.h b/linden/indra/newview/llfloaterwater.h
index 5c1fced..40704f2 100644
--- a/linden/indra/newview/llfloaterwater.h
+++ b/linden/indra/newview/llfloaterwater.h
@@ -127,6 +127,9 @@ private:
127 static LLFloaterWater* sWaterMenu; 127 static LLFloaterWater* sWaterMenu;
128 128
129 static std::set<std::string> sDefaultPresets; 129 static std::set<std::string> sDefaultPresets;
130
131 static void onClickNext(void* user_data);
132 static void onClickPrev(void* user_data);
130}; 133};
131 134
132 135
diff --git a/linden/indra/newview/llfloaterwindlight.cpp b/linden/indra/newview/llfloaterwindlight.cpp
index 71e81fa..80090a0 100644
--- a/linden/indra/newview/llfloaterwindlight.cpp
+++ b/linden/indra/newview/llfloaterwindlight.cpp
@@ -46,6 +46,7 @@
46#include "llcombobox.h" 46#include "llcombobox.h"
47#include "lllineeditor.h" 47#include "lllineeditor.h"
48#include "llfloaterdaycycle.h" 48#include "llfloaterdaycycle.h"
49#include "lltabcontainer.h"
49#include "llboost.h" 50#include "llboost.h"
50 51
51#include "v4math.h" 52#include "v4math.h"
@@ -1066,3 +1067,13 @@ void LLFloaterWindLight::onClickPrev(void* user_data)
1066 param_mgr->mAnimator.mUseLindenTime = false; 1067 param_mgr->mAnimator.mUseLindenTime = false;
1067 param_mgr->loadPreset(mIt->first, true); 1068 param_mgr->loadPreset(mIt->first, true);
1068} 1069}
1070
1071//static
1072void LLFloaterWindLight::selectTab(std::string tab_name)
1073{
1074 if (!tab_name.empty())
1075 {
1076 LLTabContainer* tabs = LLFloaterWindLight::instance()->getChild<LLTabContainer>("WindLight Tabs");
1077 tabs->selectTabByName(tab_name);
1078 }
1079}
diff --git a/linden/indra/newview/llfloaterwindlight.h b/linden/indra/newview/llfloaterwindlight.h
index 70e76c5..130a9a7 100644
--- a/linden/indra/newview/llfloaterwindlight.h
+++ b/linden/indra/newview/llfloaterwindlight.h
@@ -131,6 +131,8 @@ public:
131 /// turn off animated skies 131 /// turn off animated skies
132 static void deactivateAnimator(); 132 static void deactivateAnimator();
133 133
134 static void selectTab(std::string tab_name);
135
134private: 136private:
135 // one instance on the inside 137 // one instance on the inside
136 static LLFloaterWindLight* sWindLight; 138 static LLFloaterWindLight* sWindLight;
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp
index 5407f06..61d7df0 100644
--- a/linden/indra/newview/llfolderview.cpp
+++ b/linden/indra/newview/llfolderview.cpp
@@ -297,11 +297,22 @@ void LLFolderViewItem::refreshFromListener()
297 else 297 else
298 mLabelCreator = creator_name;*/ 298 mLabelCreator = creator_name;*/
299 299
300 //Label for desc search
301 std::string desc;
302 if(item)
303 {
304 if(!item->getDescription().empty())
305 {
306 desc = item->getDescription();
307 }
308 }
309 mLabelDesc = desc;
310
300 //Label for name search 311 //Label for name search
301 mLabel = mListener->getDisplayName(); 312 mLabel = mListener->getDisplayName();
302 313
303 //Build label for combined search - RK 314 //Build label for combined search - RK
304 mLabelAll = mLabel + " " + mLabelCreator; 315 mLabelAll = mLabel + " " + mLabelCreator + " " + mLabelDesc;
305 316
306 setIcon(mListener->getIcon()); 317 setIcon(mListener->getIcon());
307 time_t creation_date = mListener->getCreationDate(); 318 time_t creation_date = mListener->getCreationDate();
@@ -321,32 +332,53 @@ void LLFolderViewItem::refresh()
321 332
322 std::string searchable_label(mLabel); 333 std::string searchable_label(mLabel);
323 std::string searchable_label_creator(mLabelCreator); 334 std::string searchable_label_creator(mLabelCreator);
335 std::string searchable_label_desc(mLabelDesc);
324 std::string searchable_label_all(mLabelAll); 336 std::string searchable_label_all(mLabelAll);
325 337
326 //add the (no modify), (no transfer) etc stuff to each label. 338 //add the (no modify), (no transfer) etc stuff to each label.
327 searchable_label.append(mLabelSuffix); 339 searchable_label.append(mLabelSuffix);
328 searchable_label_creator.append(mLabelSuffix); 340 searchable_label_creator.append(mLabelSuffix);
341 searchable_label_desc.append(mLabelSuffix);
329 searchable_label_all.append(mLabelSuffix); 342 searchable_label_all.append(mLabelSuffix);
330 343
331 //all labels need to be uppercase. 344 //all labels need to be uppercase.
332 LLStringUtil::toUpper(searchable_label); 345 LLStringUtil::toUpper(searchable_label);
333 LLStringUtil::toUpper(searchable_label_creator); 346 LLStringUtil::toUpper(searchable_label_creator);
347 LLStringUtil::toUpper(searchable_label_desc);
334 LLStringUtil::toUpper(searchable_label_all); 348 LLStringUtil::toUpper(searchable_label_all);
335 349
336 if (mSearchableLabel.compare(searchable_label) || 350 if (mSearchableLabel.compare(searchable_label) ||
337 mSearchableLabelCreator.compare(searchable_label_creator)) 351 mSearchableLabelCreator.compare(searchable_label_creator) ||
352 mSearchableLabelDesc.compare(searchable_label_creator))
338 { 353 {
339 mSearchableLabel.assign(searchable_label); 354 mSearchableLabel.assign(searchable_label);
340 mSearchableLabelCreator.assign(searchable_label_creator); 355 mSearchableLabelCreator.assign(searchable_label_creator);
356 mSearchableLabelDesc.assign(searchable_label_desc);
341 mSearchableLabelAll.assign(searchable_label_all); 357 mSearchableLabelAll.assign(searchable_label_all);
342 358
343 dirtyFilter(); 359 dirtyFilter();
344 // some part of label has changed, so overall width has potentially changed 360 //some part of label has changed, so overall width has potentially changed
345 if (mParentFolder) 361 if (mParentFolder)
346 {
347 mParentFolder->requestArrange(); 362 mParentFolder->requestArrange();
348 }
349 } 363 }
364
365 /*if(mSearchableLabelCreator.compare(searchable_label_creator))
366 {
367 mSearchableLabelCreator.assign(searchable_label_creator);
368
369 dirtyFilter();
370 if(mParentFolder)
371 mParentFolder->requestArrange();
372 }
373
374 if(mSearchableLabelDesc.compare(searchable_label_desc))
375 {
376 mSearchableLabelDesc.assign(searchable_label_desc);
377
378 dirtyFilter();
379 if(mParentFolder)
380 mParentFolder->requestArrange();
381 }*/
350 382
351 S32 label_width = sFont->getWidth(mLabel); 383 S32 label_width = sFont->getWidth(mLabel);
352 if( mLabelSuffix.size() ) 384 if( mLabelSuffix.size() )
@@ -621,11 +653,12 @@ void LLFolderViewItem::rename(const std::string& new_name)
621 } 653 }
622} 654}
623 655
624const std::string& LLFolderViewItem::getSearchableLabel() const 656const std::string& LLFolderViewItem::getSearchableLabel(U32 search_type = 0) const
625{ 657{
626 U32 search_type = gSavedSettings.getU32("InventorySearchType"); 658 if(search_type == 3)
627 if(search_type == 4)
628 return mSearchableLabelAll; 659 return mSearchableLabelAll;
660 else if(search_type == 2)
661 return mSearchableLabelDesc;
629 else if(search_type == 1) 662 else if(search_type == 1)
630 return mSearchableLabelCreator; 663 return mSearchableLabelCreator;
631 else 664 else
@@ -4564,11 +4597,13 @@ BOOL LLInventoryFilter::check(LLFolderViewItem* item)
4564 } 4597 }
4565 LLFolderViewEventListener* listener = item->getListener(); 4598 LLFolderViewEventListener* listener = item->getListener();
4566 const LLUUID& item_id = listener->getUUID(); 4599 const LLUUID& item_id = listener->getUUID();
4567 mSubStringMatchOffset = mFilterSubString.size() ? item->getSearchableLabel().find(mFilterSubString) : std::string::npos; 4600
4601 U32 search_type = gSavedSettings.getU32("InventorySearchType");
4602 mSubStringMatchOffset = mFilterSubString.size() ? item->getSearchableLabel(search_type).find(mFilterSubString) : std::string::npos;
4568 BOOL passed = (listener->getNInventoryType() & mFilterOps.mFilterTypes || listener->getNInventoryType() == LLInventoryType::NIT_NONE) 4603 BOOL passed = (listener->getNInventoryType() & mFilterOps.mFilterTypes || listener->getNInventoryType() == LLInventoryType::NIT_NONE)
4569 && (mFilterSubString.size() == 0 || mSubStringMatchOffset != std::string::npos) 4604 && (mFilterSubString.size() == 0 || mSubStringMatchOffset != std::string::npos)
4570 && (mFilterWorn == false || gAgent.isWearingItem(item_id) || 4605 && (mFilterWorn == false || gAgent.isWearingItem(item_id) ||
4571 gAgent.getAvatarObject() && gAgent.getAvatarObject()->isWearingAttachment(item_id)) 4606 (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isWearingAttachment(item_id)))
4572 && ((listener->getPermissionMask() & mFilterOps.mPermissions) == mFilterOps.mPermissions) 4607 && ((listener->getPermissionMask() & mFilterOps.mPermissions) == mFilterOps.mPermissions)
4573 && (listener->getCreationDate() >= earliest && listener->getCreationDate() <= mFilterOps.mMaxDate); 4608 && (listener->getCreationDate() >= earliest && listener->getCreationDate() <= mFilterOps.mMaxDate);
4574 return passed; 4609 return passed;
diff --git a/linden/indra/newview/llfolderview.h b/linden/indra/newview/llfolderview.h
index 25b4362..82a1951 100644
--- a/linden/indra/newview/llfolderview.h
+++ b/linden/indra/newview/llfolderview.h
@@ -338,11 +338,16 @@ protected:
338 338
339 std::string mLabel; 339 std::string mLabel;
340 std::string mSearchableLabel; 340 std::string mSearchableLabel;
341 std::string mLabelAll; 341
342 std::string mSearchableLabelAll;
343 std::string mLabelCreator; 342 std::string mLabelCreator;
344 std::string mSearchableLabelCreator; 343 std::string mSearchableLabelCreator;
345 344
345 std::string mLabelDesc;
346 std::string mSearchableLabelDesc;
347
348 std::string mLabelAll;
349 std::string mSearchableLabelAll;
350
346 std::string mType; 351 std::string mType;
347 S32 mLabelWidth; 352 S32 mLabelWidth;
348 U32 mCreationDate; 353 U32 mCreationDate;
@@ -469,7 +474,7 @@ public:
469 // viewed. This method will ask the viewed object itself. 474 // viewed. This method will ask the viewed object itself.
470 const std::string& getName( void ) const; 475 const std::string& getName( void ) const;
471 476
472 const std::string& getSearchableLabel( void ) const; 477 const std::string& getSearchableLabel( U32 search_type ) const;
473 478
474 // This method returns the label displayed on the view. This 479 // This method returns the label displayed on the view. This
475 // method was primarily added to allow sorting on the folder 480 // method was primarily added to allow sorting on the folder
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp
index 014c050..25d0b63 100644
--- a/linden/indra/newview/llimpanel.cpp
+++ b/linden/indra/newview/llimpanel.cpp
@@ -73,6 +73,7 @@
73#include "llhttpclient.h" 73#include "llhttpclient.h"
74#include "llmutelist.h" 74#include "llmutelist.h"
75#include "llstylemap.h" 75#include "llstylemap.h"
76#include <sys/stat.h>
76 77
77// 78//
78// Constants 79// Constants
@@ -1255,6 +1256,10 @@ BOOL LLFloaterIMPanel::postBuild()
1255 requires<LLLineEditor>("chat_editor"); 1256 requires<LLLineEditor>("chat_editor");
1256 requires<LLTextEditor>("im_history"); 1257 requires<LLTextEditor>("im_history");
1257 1258
1259#if LL_LINUX || LL_DARWIN
1260 childSetVisible("history_btn", false);
1261#endif
1262
1258 if (checkRequirements()) 1263 if (checkRequirements())
1259 { 1264 {
1260 mInputEditor = getChild<LLLineEditor>("chat_editor"); 1265 mInputEditor = getChild<LLLineEditor>("chat_editor");
@@ -1269,6 +1274,7 @@ BOOL LLFloaterIMPanel::postBuild()
1269 1274
1270 childSetAction("profile_callee_btn", onClickProfile, this); 1275 childSetAction("profile_callee_btn", onClickProfile, this);
1271 childSetAction("group_info_btn", onClickGroupInfo, this); 1276 childSetAction("group_info_btn", onClickGroupInfo, this);
1277 childSetAction("history_btn", onClickHistory, this);
1272 1278
1273 childSetAction("start_call_btn", onClickStartCall, this); 1279 childSetAction("start_call_btn", onClickStartCall, this);
1274 childSetAction("end_call_btn", onClickEndCall, this); 1280 childSetAction("end_call_btn", onClickEndCall, this);
@@ -1800,6 +1806,41 @@ void LLFloaterIMPanel::onClickProfile( void* userdata )
1800} 1806}
1801 1807
1802// static 1808// static
1809void LLFloaterIMPanel::onClickHistory( void* userdata )
1810{
1811 LLFloaterIMPanel* self = (LLFloaterIMPanel*) userdata;
1812
1813 if (self->mOtherParticipantUUID.notNull())
1814 {
1815 struct stat fileInfo;
1816 int result;
1817
1818 std::string fullname = self->getTitle();;
1819 //gCacheName->getFullName(self->mOtherParticipantUUID, fullname);
1820 //if(fullname == "(Loading...)")
1821 std::string file_path = gDirUtilp->getPerAccountChatLogsDir() + "\\" + fullname + ".txt";
1822
1823 // check if file exists by trying to get its attributes
1824 result = stat(file_path.c_str(), &fileInfo);
1825 if(result == 0)
1826 {
1827 char command[256];
1828 sprintf(command, "\"%s\\%s.txt\"", gDirUtilp->getPerAccountChatLogsDir().c_str(),fullname.c_str());
1829 gViewerWindow->getWindow()->ShellEx(command);
1830
1831 llinfos << command << llendl;
1832 }
1833 else
1834 {
1835 LLStringUtil::format_map_t args;
1836 args["[NAME]"] = fullname;
1837 gViewerWindow->alertXml("IMLogNotFound", args);
1838 llinfos << file_path << llendl;
1839 }
1840 }
1841}
1842
1843// static
1803void LLFloaterIMPanel::onClickGroupInfo( void* userdata ) 1844void LLFloaterIMPanel::onClickGroupInfo( void* userdata )
1804{ 1845{
1805 // Bring up the Profile window 1846 // Bring up the Profile window
diff --git a/linden/indra/newview/llimpanel.h b/linden/indra/newview/llimpanel.h
index 0f9c0f3..0699b12 100644
--- a/linden/indra/newview/llimpanel.h
+++ b/linden/indra/newview/llimpanel.h
@@ -230,6 +230,7 @@ public:
230 static void onTabClick( void* userdata ); 230 static void onTabClick( void* userdata );
231 231
232 static void onClickProfile( void* userdata ); 232 static void onClickProfile( void* userdata );
233 static void onClickHistory( void* userdata );
233 static void onClickGroupInfo( void* userdata ); 234 static void onClickGroupInfo( void* userdata );
234 static void onClickOfferTeleport( void* userdata ); 235 static void onClickOfferTeleport( void* userdata );
235 static void onClickClose( void* userdata ); 236 static void onClickClose( void* userdata );
diff --git a/linden/indra/newview/llinventoryactions.cpp b/linden/indra/newview/llinventoryactions.cpp
index b598c83..25592c1 100644
--- a/linden/indra/newview/llinventoryactions.cpp
+++ b/linden/indra/newview/llinventoryactions.cpp
@@ -484,7 +484,8 @@ class SetSearchType : public inventory_listener_t
484 gSavedSettings.setU32("InventorySearchType", 0); 484 gSavedSettings.setU32("InventorySearchType", 0);
485 485
486 mPtr->getControl("Inventory.SearchByName")->setValue(TRUE); 486 mPtr->getControl("Inventory.SearchByName")->setValue(TRUE);
487 mPtr->getControl("Inventory.SearchByCreator")->setValue(FALSE); 487 mPtr->getControl("Inventory.SearchByCreator")->setValue(FALSE);
488 mPtr->getControl("Inventory.SearchByDesc")->setValue(FALSE);
488 mPtr->getControl("Inventory.SearchByAll")->setValue(FALSE); 489 mPtr->getControl("Inventory.SearchByAll")->setValue(FALSE);
489 } 490 }
490 else if(search_type == "creator") 491 else if(search_type == "creator")
@@ -493,16 +494,31 @@ class SetSearchType : public inventory_listener_t
493 494
494 mPtr->getControl("Inventory.SearchByName")->setValue(FALSE); 495 mPtr->getControl("Inventory.SearchByName")->setValue(FALSE);
495 mPtr->getControl("Inventory.SearchByCreator")->setValue(TRUE); 496 mPtr->getControl("Inventory.SearchByCreator")->setValue(TRUE);
497 mPtr->getControl("Inventory.SearchByDesc")->setValue(FALSE);
498 mPtr->getControl("Inventory.SearchByAll")->setValue(FALSE);
499 }
500 else if(search_type == "desc")
501 {
502 gSavedSettings.setU32("InventorySearchType", 2);
503
504 mPtr->getControl("Inventory.SearchByName")->setValue(FALSE);
505 mPtr->getControl("Inventory.SearchByCreator")->setValue(FALSE);
506 mPtr->getControl("Inventory.SearchByDesc")->setValue(TRUE);
496 mPtr->getControl("Inventory.SearchByAll")->setValue(FALSE); 507 mPtr->getControl("Inventory.SearchByAll")->setValue(FALSE);
497 } 508 }
498 else if(search_type == "all") 509 else if(search_type == "all")
499 { 510 {
500 gSavedSettings.setU32("InventorySearchType", 4); 511 gSavedSettings.setU32("InventorySearchType", 3);
501 512
502 mPtr->getControl("Inventory.SearchByName")->setValue(FALSE); 513 mPtr->getControl("Inventory.SearchByName")->setValue(FALSE);
503 mPtr->getControl("Inventory.SearchByCreator")->setValue(FALSE); 514 mPtr->getControl("Inventory.SearchByCreator")->setValue(FALSE);
515 mPtr->getControl("Inventory.SearchByDesc")->setValue(FALSE);
504 mPtr->getControl("Inventory.SearchByAll")->setValue(TRUE); 516 mPtr->getControl("Inventory.SearchByAll")->setValue(TRUE);
505 } 517 }
518
519 //Clear search when switching modes.
520 mPtr->getActivePanel()->setFilterSubString(LLStringUtil::null);
521 mPtr->getActivePanel()->setFilterTypes(LLInventoryType::NIT_ALL);
506 return true; 522 return true;
507 } 523 }
508}; 524};
diff --git a/linden/indra/newview/llinventoryview.cpp b/linden/indra/newview/llinventoryview.cpp
index 008d79d..b4a8b72 100644
--- a/linden/indra/newview/llinventoryview.cpp
+++ b/linden/indra/newview/llinventoryview.cpp
@@ -527,6 +527,7 @@ void LLInventoryView::init(LLInventoryModel* inventory)
527 527
528 addBoolControl("Inventory.SearchByName", search_by_name); 528 addBoolControl("Inventory.SearchByName", search_by_name);
529 addBoolControl("Inventory.SearchByCreator", !search_by_name); 529 addBoolControl("Inventory.SearchByCreator", !search_by_name);
530 addBoolControl("Inventory.SearchByDesc", !search_by_name);
530 531
531 addBoolControl("Inventory.SearchByAll", !search_by_name); 532 addBoolControl("Inventory.SearchByAll", !search_by_name);
532 533
diff --git a/linden/indra/newview/llpreviewscript.cpp b/linden/indra/newview/llpreviewscript.cpp
index 1e9def3..6273011 100644
--- a/linden/indra/newview/llpreviewscript.cpp
+++ b/linden/indra/newview/llpreviewscript.cpp
@@ -436,6 +436,14 @@ void LLScriptEdCore::initMenu()
436 menuItem->setMenuCallback(onBtnHelp, this); 436 menuItem->setMenuCallback(onBtnHelp, this);
437 menuItem->setEnabledCallback(NULL); 437 menuItem->setEnabledCallback(NULL);
438 438
439 menuItem = getChild<LLMenuItemCallGL>("Load from Disk");
440 menuItem->setMenuCallback(onBtnLoadFromDisc, this);
441 menuItem->setEnabledCallback(NULL);
442
443 menuItem = getChild<LLMenuItemCallGL>("Save to Disk");
444 menuItem->setMenuCallback(onBtnSaveToDisc, this);
445 menuItem->setEnabledCallback(NULL);
446
439 menuItem = getChild<LLMenuItemCallGL>("LSL Wiki Help..."); 447 menuItem = getChild<LLMenuItemCallGL>("LSL Wiki Help...");
440 menuItem->setMenuCallback(onBtnDynamicHelp, this); 448 menuItem->setMenuCallback(onBtnDynamicHelp, this);
441 menuItem->setEnabledCallback(NULL); 449 menuItem->setEnabledCallback(NULL);
@@ -547,6 +555,7 @@ void LLScriptEdCore::setHelpPage(const std::string& help_string)
547 if (!history_combo) return; 555 if (!history_combo) return;
548 556
549 LLUIString url_string = gSavedSettings.getString("LSLHelpURL"); 557 LLUIString url_string = gSavedSettings.getString("LSLHelpURL");
558 url_string.setArg("[APP_DIRECTORY]", gDirUtilp->getWorkingDir());
550 url_string.setArg("[LSL_STRING]", help_string); 559 url_string.setArg("[LSL_STRING]", help_string);
551 560
552 addHelpItemToHistory(help_string); 561 addHelpItemToHistory(help_string);
@@ -773,6 +782,7 @@ void LLScriptEdCore::onHelpComboCommit(LLUICtrl* ctrl, void* userdata)
773 782
774 LLWebBrowserCtrl* web_browser = live_help_floater->getChild<LLWebBrowserCtrl>("lsl_guide_html"); 783 LLWebBrowserCtrl* web_browser = live_help_floater->getChild<LLWebBrowserCtrl>("lsl_guide_html");
775 LLUIString url_string = gSavedSettings.getString("LSLHelpURL"); 784 LLUIString url_string = gSavedSettings.getString("LSLHelpURL");
785 url_string.setArg("[APP_DIRECTORY]", gDirUtilp->getWorkingDir());
776 url_string.setArg("[LSL_STRING]", help_string); 786 url_string.setArg("[LSL_STRING]", help_string);
777 web_browser->navigateTo(url_string); 787 web_browser->navigateTo(url_string);
778 } 788 }
@@ -823,6 +833,60 @@ void LLScriptEdCore::onBtnUndoChanges( void* userdata )
823 } 833 }
824} 834}
825 835
836void LLScriptEdCore::onBtnSaveToDisc( void* userdata )
837{
838
839 LLViewerStats::getInstance()->incStat( LLViewerStats::ST_LSL_SAVE_COUNT );
840
841 LLScriptEdCore* self = (LLScriptEdCore*) userdata;
842
843 if( self->mSaveCallback )
844 {
845 LLFilePicker& file_picker = LLFilePicker::instance();
846 if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_TEXT ) )
847 {
848 return;
849 }
850
851 std::string filename = file_picker.getFirstFile();
852 std::string scriptText=self->mEditor->getText();
853 std::ofstream fout(filename.c_str());
854 fout<<(scriptText);
855 fout.close();
856 self->mSaveCallback( self->mUserdata, FALSE );
857
858 }
859
860}
861void LLScriptEdCore::onBtnLoadFromDisc( void* data )
862{
863
864 LLScriptEdCore* self = (LLScriptEdCore*) data;
865
866 LLFilePicker& file_picker = LLFilePicker::instance();
867 if( !file_picker.getOpenFile( LLFilePicker::FFLOAD_TEXT ) )
868 {
869 return;
870 }
871
872 std::string filename = file_picker.getFirstFile();
873
874 std::ifstream fin(filename.c_str());
875
876 std::string line;
877 std::string linetotal;
878 self->mEditor->clear();
879 while (!fin.eof())
880 {
881 getline(fin,line);
882 line=line+"\n";
883 self->mEditor->insertText(line);
884
885 }
886 fin.close();
887
888}
889
826void LLScriptEdCore::onSearchMenu(void* userdata) 890void LLScriptEdCore::onSearchMenu(void* userdata)
827{ 891{
828 LLScriptEdCore* sec = (LLScriptEdCore*)userdata; 892 LLScriptEdCore* sec = (LLScriptEdCore*)userdata;
diff --git a/linden/indra/newview/llpreviewscript.h b/linden/indra/newview/llpreviewscript.h
index 7026482..97e721d 100644
--- a/linden/indra/newview/llpreviewscript.h
+++ b/linden/indra/newview/llpreviewscript.h
@@ -95,6 +95,8 @@ public:
95 static void doSave( void* userdata, BOOL close_after_save ); 95 static void doSave( void* userdata, BOOL close_after_save );
96 static void onBtnSave(void*); 96 static void onBtnSave(void*);
97 static void onBtnUndoChanges(void*); 97 static void onBtnUndoChanges(void*);
98 static void onBtnSaveToDisc(void*);
99 static void onBtnLoadFromDisc(void*);
98 static void onSearchMenu(void* userdata); 100 static void onSearchMenu(void* userdata);
99 101
100 static void onUndoMenu(void* userdata); 102 static void onUndoMenu(void* userdata);
diff --git a/linden/indra/newview/llwearable.cpp b/linden/indra/newview/llwearable.cpp
index 6bdc50f..884cda5 100644
--- a/linden/indra/newview/llwearable.cpp
+++ b/linden/indra/newview/llwearable.cpp
@@ -150,41 +150,87 @@ EWearableType LLWearable::typeNameToType( const std::string& type_name )
150 return WT_INVALID; 150 return WT_INVALID;
151} 151}
152 152
153 153const char* terse_F32_to_string( F32 f, char s[MAX_STRING] ) /* Flawfinder: ignore */
154std::string terse_F32_to_string( F32 f )
155{ 154{
156 std::string r = llformat( "%.2f", f ); 155 char* r = s;
156 S32 len = snprintf( s, MAX_STRING, "%.2f", f ); /* Flawfinder: ignore */
157 157
158 // "1.20" -> "1.2" 158 // "1.20" -> "1.2"
159 // "24.00" -> "24." 159 // "24.00" -> "24."
160 S32 len = r.length(); 160 while( '0' == r[len - 1] )
161 while( len > 0 && '0' == r[len - 1] )
162 { 161 {
163 r.erase(len-1, 1); 162 len--;
164 len--; 163 r[len] = '\0';
165 } 164 }
166 165
167 if( '.' == r[len - 1] ) 166 if( '.' == r[len - 1] )
168 { 167 {
169 // "24." -> "24" 168 // "24." -> "24"
170 r.erase(len-1, 1); 169 len--;
170 r[len] = '\0';
171 } 171 }
172 else 172 else
173 if( ('-' == r[0]) && ('0' == r[1]) ) 173 if( ('-' == r[0]) && ('0' == r[1]) )
174 { 174 {
175 // "-0.59" -> "-.59" 175 // "-0.59" -> "-.59"
176 r.erase(1, 1); 176 r++;
177 r[0] = '-';
177 } 178 }
178 else 179 else
179 if( '0' == r[0] ) 180 if( '0' == r[0] )
180 { 181 {
181 // "0.59" -> ".59" 182 // "0.59" -> ".59"
182 r.erase(0, 1); 183 r++;
183 } 184 }
184 185
185 return r; 186 return r;
186} 187}
187 188
189// reX: new function
190BOOL LLWearable::FileExportParams( FILE* file )
191{
192 // wearable type
193 S32 type = (S32)mType;
194 fprintf( file, "type %d\n", type );
195
196 // parameters
197 S32 num_parameters = mVisualParamMap.size();
198 fprintf( file, "parameters %d\n", num_parameters );
199
200 char s[ MAX_STRING ]; /* Flawfinder: ignore */
201 for (param_map_t::iterator iter = mVisualParamMap.begin();
202 iter != mVisualParamMap.end(); ++iter)
203 {
204 S32 param_id = iter->first;
205 F32 param_weight = iter->second;
206 fprintf( file, "%d %s\n", param_id, terse_F32_to_string( param_weight, s ) );
207 }
208
209 return TRUE;
210}
211
212// reX: new function
213BOOL LLWearable::FileExportTextures( FILE* file )
214{
215 // wearable type
216 S32 type = (S32)mType;
217 fprintf( file, "type %d\n", type );
218
219 // texture entries
220 S32 num_textures = mTEMap.size();
221 fprintf( file, "textures %d\n", num_textures );
222
223 for (te_map_t::iterator iter = mTEMap.begin();
224 iter != mTEMap.end(); ++iter)
225 {
226 S32 te = iter->first;
227 LLUUID& image_id = iter->second;
228 fprintf( file, "%d %s\n", te, image_id.asString().c_str() );
229 }
230
231 return TRUE;
232}
233
188BOOL LLWearable::exportFile( LLFILE* file ) 234BOOL LLWearable::exportFile( LLFILE* file )
189{ 235{
190 // header and version 236 // header and version
@@ -231,12 +277,13 @@ BOOL LLWearable::exportFile( LLFILE* file )
231 return FALSE; 277 return FALSE;
232 } 278 }
233 279
280 char s[ MAX_STRING ]; /* Flawfinder: ignore */
234 for (param_map_t::iterator iter = mVisualParamMap.begin(); 281 for (param_map_t::iterator iter = mVisualParamMap.begin();
235 iter != mVisualParamMap.end(); ++iter) 282 iter != mVisualParamMap.end(); ++iter)
236 { 283 {
237 S32 param_id = iter->first; 284 S32 param_id = iter->first;
238 F32 param_weight = iter->second; 285 F32 param_weight = iter->second;
239 if( fprintf( file, "%d %s\n", param_id, terse_F32_to_string( param_weight ).c_str() ) < 0 ) 286 if( fprintf( file, "%d %s\n", param_id, terse_F32_to_string( param_weight, s ) ) < 0 )
240 { 287 {
241 return FALSE; 288 return FALSE;
242 } 289 }
diff --git a/linden/indra/newview/llwearable.h b/linden/indra/newview/llwearable.h
index ea16d20..9986e85 100644
--- a/linden/indra/newview/llwearable.h
+++ b/linden/indra/newview/llwearable.h
@@ -60,6 +60,10 @@ public:
60 60
61 BOOL exportFile(LLFILE* file); 61 BOOL exportFile(LLFILE* file);
62 BOOL importFile(LLFILE* file); 62 BOOL importFile(LLFILE* file);
63 // reX: new function
64 BOOL FileExportParams(FILE* file);
65 // reX: new function
66 BOOL FileExportTextures(FILE* file);
63 67
64 EWearableType getType() const { return mType; } 68 EWearableType getType() const { return mType; }
65 void setType( EWearableType type ) { mType = type; } 69 void setType( EWearableType type ) { mType = type; }
diff --git a/linden/indra/newview/llwindlightremotectrl.cpp b/linden/indra/newview/llwindlightremotectrl.cpp
index ae9a90a..f805763 100644
--- a/linden/indra/newview/llwindlightremotectrl.cpp
+++ b/linden/indra/newview/llwindlightremotectrl.cpp
@@ -35,6 +35,7 @@
35#include "llbutton.h" 35#include "llbutton.h"
36#include "llcombobox.h" 36#include "llcombobox.h"
37#include "llfloaterenvsettings.h" 37#include "llfloaterenvsettings.h"
38#include "llfloaterwater.h"
38#include "llfloaterwindlight.h" 39#include "llfloaterwindlight.h"
39#include "lloverlaybar.h" 40#include "lloverlaybar.h"
40#include "lluictrlfactory.h" 41#include "lluictrlfactory.h"
@@ -154,6 +155,11 @@ void LLWindlightRemoteCtrl::refreshPresets()
154 155
155 // insert separator and add World menu options 156 // insert separator and add World menu options
156 mPresetsCombo->addSeparator(ADD_BOTTOM); 157 mPresetsCombo->addSeparator(ADD_BOTTOM);
158 mPresetsCombo->addSimpleElement(getString("atmosphere"), ADD_BOTTOM);
159 mPresetsCombo->addSimpleElement(getString("lighting"), ADD_BOTTOM);
160 mPresetsCombo->addSimpleElement(getString("clouds"), ADD_BOTTOM);
161 mPresetsCombo->addSimpleElement(getString("advanced_water"), ADD_BOTTOM);
162 mPresetsCombo->addSeparator(ADD_BOTTOM);
157 mPresetsCombo->addSimpleElement(getString("sunrise"), ADD_BOTTOM); 163 mPresetsCombo->addSimpleElement(getString("sunrise"), ADD_BOTTOM);
158 mPresetsCombo->addSimpleElement(getString("noon"), ADD_BOTTOM); 164 mPresetsCombo->addSimpleElement(getString("noon"), ADD_BOTTOM);
159 mPresetsCombo->addSimpleElement(getString("sunset"), ADD_BOTTOM); 165 mPresetsCombo->addSimpleElement(getString("sunset"), ADD_BOTTOM);
@@ -191,7 +197,35 @@ void LLWindlightRemoteCtrl::onCommitPreset(LLUICtrl* ctrl, void* data)
191 // check for World menu options; if none, apply preset 197 // check for World menu options; if none, apply preset
192 std::string selected = self->mPresetsCombo->getSelectedValue().asString(); 198 std::string selected = self->mPresetsCombo->getSelectedValue().asString();
193 199
194 if (selected == self->getString("sunrise")) 200 if (selected == self->getString("atmosphere"))
201 {
202 if (!LLFloaterWindLight::instance()->getVisible())
203 {
204 LLFloaterWindLight::show();
205 }
206 LLFloaterWindLight::instance()->selectTab("Atmosphere");
207 }
208 else if (selected == self->getString("lighting"))
209 {
210 if (!LLFloaterWindLight::instance()->getVisible())
211 {
212 LLFloaterWindLight::show();
213 }
214 LLFloaterWindLight::instance()->selectTab("Lighting");
215 }
216 else if (selected == self->getString("clouds"))
217 {
218 if (!LLFloaterWindLight::instance()->getVisible())
219 {
220 LLFloaterWindLight::show();
221 }
222 LLFloaterWindLight::instance()->selectTab("Clouds");
223 }
224 else if (selected == self->getString("advanced_water"))
225 {
226 LLFloaterWater::show();
227 }
228 else if (selected == self->getString("sunrise"))
195 { 229 {
196 // set the value, turn off animation 230 // set the value, turn off animation
197 LLWLParamManager::instance()->mAnimator.setDayTime(0.25); 231 LLWLParamManager::instance()->mAnimator.setDayTime(0.25);
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp
index 67af961..efb5ff6 100644
--- a/linden/indra/newview/pipeline.cpp
+++ b/linden/indra/newview/pipeline.cpp
@@ -3596,6 +3596,11 @@ void LLPipeline::enableLightsAvatar()
3596 3596
3597void LLPipeline::enableLightsAvatarEdit(const LLColor4& color) 3597void LLPipeline::enableLightsAvatarEdit(const LLColor4& color)
3598{ 3598{
3599 if (mLightingDetail < 1)
3600 {
3601 return;
3602 }
3603
3599 U32 mask = 0x2002; // Avatar backlight only, set ambient 3604 U32 mask = 0x2002; // Avatar backlight only, set ambient
3600 setupAvatarLights(TRUE); 3605 setupAvatarLights(TRUE);
3601 enableLights(mask); 3606 enableLights(mask);
diff --git a/linden/indra/newview/skins/default/xui/en-us/alerts.xml b/linden/indra/newview/skins/default/xui/en-us/alerts.xml
index edfe62c..24683f0 100644
--- a/linden/indra/newview/skins/default/xui/en-us/alerts.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/alerts.xml
@@ -5222,6 +5222,15 @@ WARNING: Don't restore if you aren't sure where the object will go!
5222 </option> 5222 </option>
5223 </alert> 5223 </alert>
5224 5224
5225 <alert modal="true" name="IMLogNotFound">
5226 <message name="message">
5227 IM history could not be found for [NAME].
5228 </message>
5229 <option name="OK">
5230 OK
5231 </option>
5232 </alert>
5233
5225 <!-- [RLVa:KB] --> 5234 <!-- [RLVa:KB] -->
5226 <alert modal="true" name="FirstRLVGiveToRLV"> 5235 <alert modal="true" name="FirstRLVGiveToRLV">
5227 <message name="message"> 5236 <message name="message">
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml b/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml
index e7a7a7b..527ec4e 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml
@@ -1057,14 +1057,34 @@ scratch and wear it.
1057 </tab_container> 1057 </tab_container>
1058 <scroll_container bottom="-476" follows="left|top|right|bottom" height="382" left="197" 1058 <scroll_container bottom="-476" follows="left|top|right|bottom" height="382" left="197"
1059 mouse_opaque="false" name="panel_container" opaque="false" width="292" /> 1059 mouse_opaque="false" name="panel_container" opaque="false" width="292" />
1060 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
1061 bottom="-400" drop_shadow_visible="true" follows="left|top"
1062 font="SansSerif" h_pad="0" halign="left" height="16"
1063 left="8" mouse_opaque="true" name="AvatarHeightText" v_pad="0" width="140">
1064 Avatar Height:
1065 </text>
1066 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
1067 bottom_delta="-18" drop_shadow_visible="true" follows="left|top"
1068 font="SansSerif" h_pad="0" halign="left" height="16"
1069 left="8" mouse_opaque="true" name="HeightText" v_pad="0" width="140">
1070 Avatar Height
1071 </text>
1072 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
1073 bottom_delta="-18" drop_shadow_visible="true" follows="left|top"
1074 font="SansSerif" h_pad="0" halign="left" height="16"
1075 left="8" mouse_opaque="true" name="HeightText2" v_pad="0" width="140">
1076 Avatar Height2
1077 </text>
1060 <button bottom="-536" follows="right|bottom" font="SansSerif" halign="center" 1078 <button bottom="-536" follows="right|bottom" font="SansSerif" halign="center"
1061 height="20" label="Close" label_selected="Close" mouse_opaque="true" 1079 height="20" label="Close" label_selected="Close" mouse_opaque="true"
1062 name="Close" right="-10" scale_image="true" width="100" /> 1080 name="Close" right="-10" scale_image="true" width="80" />
1063 <button bottom="-536" follows="right|bottom" font="SansSerif" halign="center" 1081 <button bottom="-536" follows="right|bottom" font="SansSerif" halign="center"
1064 height="20" label="Save All" label_selected="Save All" mouse_opaque="true" 1082 height="20" label="Save All" label_selected="Save All" mouse_opaque="true"
1065 name="Save All" right="-116" scale_image="true" width="100" /> 1083 name="Save All" right="-100" scale_image="true" width="80" />
1066 <button bottom="-536" follows="right|bottom" font="SansSerif" halign="center" 1084 <button bottom="-536" follows="right|bottom" font="SansSerif" halign="center"
1067 height="20" label="Make Outfit" label_selected="Make Outfit" 1085 height="20" label="Make Outfit" label_selected="Make Outfit"
1068 mouse_opaque="true" name="Make Outfit" right="-222" scale_image="true" 1086 mouse_opaque="true" name="Make Outfit" right="-190" scale_image="true"
1069 width="100" /> 1087 width="80" />
1088 <button bottom="-536" follows="right|bottom" font="SansSerif" halign="center" height="20" hidden="false" label="Export" label_selected="Export" right="-280" mouse_opaque="true" name="Export" scale_image="true" width="80" />
1089 <button bottom="-536" follows="right|bottom" font="SansSerif" halign="center" height="20" hidden="false" label="Import" label_selected="Import" right="-370" mouse_opaque="true" name="Import" scale_image="true" width="80" />
1070</floater> 1090</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml b/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml
index 9a60f57..b947fad 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml
@@ -46,6 +46,8 @@
46 image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" 46 image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left"
47 label="End Call" left_delta="0" name="end_call_btn" pad_right="10" 47 label="End Call" left_delta="0" name="end_call_btn" pad_right="10"
48 visible="false" width="100" /> 48 visible="false" width="100" />
49 <button bottom="-40" follows="left|top" halign="center" height="20" label="History" left_delta="105"
50 name="history_btn" visible="true" width="85" />
49 <text bottom_delta="0" left="-240" height="14" width="230" name="inventory_send" halign="right" 51 <text bottom_delta="0" left="-240" height="14" width="230" name="inventory_send" halign="right"
50 text_color="LabelTextColor" follows="right|top" drop_shadow_visible="true" 52 text_color="LabelTextColor" follows="right|top" drop_shadow_visible="true"
51 bg_visible="false" border_drop_shadow_visible="false" border_visible="false"> 53 bg_visible="false" border_drop_shadow_visible="false" border_visible="false">
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_instant_message_group.xml b/linden/indra/newview/skins/default/xui/en-us/floater_instant_message_group.xml
index 1156e9d..2e97d64 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_instant_message_group.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_instant_message_group.xml
@@ -54,6 +54,8 @@
54 image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" 54 image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left"
55 label="End Call" left_delta="0" name="end_call_btn" pad_right="12" 55 label="End Call" left_delta="0" name="end_call_btn" pad_right="12"
56 visible="false" width="92" /> 56 visible="false" width="92" />
57 <button bottom="-20" follows="left|top" halign="center" height="20" label="History" left_delta="97"
58 name="history_btn" visible="true" width="85" />
57 <button bottom_delta="0" follows="right|top" height="20" label="&lt; &lt;" 59 <button bottom_delta="0" follows="right|top" height="20" label="&lt; &lt;"
58 label_selected="&gt; &gt;" left="143" name="toggle_active_speakers_btn" 60 label_selected="&gt; &gt;" left="143" name="toggle_active_speakers_btn"
59 right="176" 61 right="176"
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml b/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml
index f0c97f2..103a11e 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml
@@ -206,7 +206,7 @@
206 </menu_item_check> 206 </menu_item_check>
207 </menu> 207 </menu>
208 <menu bottom_delta="64" drop_shadow="true" height="49" 208 <menu bottom_delta="64" drop_shadow="true" height="49"
209 label="Search" left="0" mouse_opaque="false" name="Sort" opaque="true" 209 label="Search" left="0" mouse_opaque="false" name="Search" opaque="true"
210 tear_off="true" width="118"> 210 tear_off="true" width="118">
211 <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByName" height="18" 211 <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByName" height="18"
212 label="By Name" left="0" mouse_opaque="true" name="By Name" width="118"> 212 label="By Name" left="0" mouse_opaque="true" name="By Name" width="118">
@@ -216,6 +216,10 @@
216 label="By Creator" left="0" mouse_opaque="true" name="By Creator" width="118"> 216 label="By Creator" left="0" mouse_opaque="true" name="By Creator" width="118">
217 <on_click filter="" function="Inventory.SetSearchBy" userdata="creator" /> 217 <on_click filter="" function="Inventory.SetSearchBy" userdata="creator" />
218 </menu_item_check> 218 </menu_item_check>
219 <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByDesc" height="18"
220 label="By Description" left="0" mouse_opaque="true" name="By Description" width="118">
221 <on_click filter="" function="Inventory.SetSearchBy" userdata="desc" />
222 </menu_item_check>
219 <menu_item_separator bottom_delta="-8" height="8" left="0" mouse_opaque="true" name="separator" 223 <menu_item_separator bottom_delta="-8" height="8" left="0" mouse_opaque="true" name="separator"
220 width="118" /> 224 width="118" />
221 <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByAll" height="18" 225 <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByAll" height="18"
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml b/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml
index 568f155..27a08c1 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml
@@ -225,6 +225,12 @@ now wearing into it.
225 width="489"> 225 width="489">
226 Items to include in outfit: 226 Items to include in outfit:
227 </text> 227 </text>
228 <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
229 label="Check All" left_delta="200" mouse_opaque="true"
230 name="Check All" scale_image="true" width="90" />
231 <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
232 label="Uncheck All" left_delta="100" mouse_opaque="true"
233 name="Uncheck All" scale_image="true" width="90" />
228 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 234 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
229 bottom="-196" drop_shadow_visible="true" enabled="true" follows="left|top" 235 bottom="-196" drop_shadow_visible="true" enabled="true" follows="left|top"
230 font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13" 236 font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13"
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_postcard.xml b/linden/indra/newview/skins/default/xui/en-us/floater_postcard.xml
index 631db0d..9cf7b5f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_postcard.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_postcard.xml
@@ -43,7 +43,7 @@
43 <button bottom_delta="0" follows="right|bottom" height="20" label="Send" 43 <button bottom_delta="0" follows="right|bottom" height="20" label="Send"
44 left_delta="-106" name="send_btn" width="100" /> 44 left_delta="-106" name="send_btn" width="100" />
45 <string name="default_subject"> 45 <string name="default_subject">
46 Postcard from Second Life. 46 Postcard from a virtual world.
47 </string> 47 </string>
48 <string name="default_message"> 48 <string name="default_message">
49 Check this out! 49 Check this out!
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_script_ed_panel.xml b/linden/indra/newview/skins/default/xui/en-us/floater_script_ed_panel.xml
index b83a6df..653c75b 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_script_ed_panel.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_script_ed_panel.xml
@@ -35,6 +35,12 @@
35 width="138" /> 35 width="138" />
36 <menu_item_call bottom_delta="-58" height="20" label="Revert All Changes" left="0" 36 <menu_item_call bottom_delta="-58" height="20" label="Revert All Changes" left="0"
37 mouse_opaque="true" name="Revert All Changes" width="138" /> 37 mouse_opaque="true" name="Revert All Changes" width="138" />
38 <menu_item_separator bottom_delta="-66" height="8" left="0" mouse_opaque="true" name="separator"
39 width="138" />
40 <menu_item_call bottom_delta="-76" height="20" label="Save to Disk" left="0"
41 mouse_opaque="true" name="Save to Disk" width="138" />
42 <menu_item_call bottom_delta="-96" height="20" label="Load from Disk" left="0"
43 mouse_opaque="true" name="Load from Disk" width="138" />
38 </menu> 44 </menu>
39 <menu bottom="665" drop_shadow="true" enabled="true" height="198" 45 <menu bottom="665" drop_shadow="true" enabled="true" height="198"
40 left="222" mouse_opaque="false" name="Edit" opaque="true" tear_off="false" 46 left="222" mouse_opaque="false" name="Edit" opaque="true" tear_off="false"
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_water.xml b/linden/indra/newview/skins/default/xui/en-us/floater_water.xml
index 9dcb96e..7038c93 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_water.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_water.xml
@@ -11,17 +11,23 @@
11 width="110"> 11 width="110">
12 Water Presets: 12 Water Presets:
13 </text> 13 </text>
14 <combo_box allow_text_entry="false" bottom="-50" follows="left|top" height="18" 14 <combo_box allow_text_entry="false" bottom="-52" follows="left|top" height="18"
15 left_delta="110" max_chars="20" mouse_opaque="true" 15 left_delta="120" max_chars="20" mouse_opaque="true"
16 name="WaterPresetsCombo" width="150" /> 16 name="WaterPresetsCombo" width="150" />
17 <button bottom="-53" enabled="true" font="SansSerif" halign="center" height="20"
18 label="" label_selected="" left_delta="-25" image_overlay="arrow_left.tga"
19 mouse_opaque="true" name="prev" scale_image="true" width="20" />
20 <button bottom="-53" enabled="true" font="SansSerif" halign="center" height="20"
21 label="" label_selected="" left_delta="180" image_overlay="arrow_right.tga"
22 mouse_opaque="true" name="next" scale_image="true" width="20" />
17 <button bottom="-53" enabled="true" font="SansSerif" halign="center" height="20" 23 <button bottom="-53" enabled="true" font="SansSerif" halign="center" height="20"
18 label="New" label_selected="New" left_delta="170" 24 label="New" label_selected="New" left_delta="40"
19 mouse_opaque="true" name="WaterNewPreset" scale_image="true" width="70" /> 25 mouse_opaque="true" name="WaterNewPreset" scale_image="true" width="70" />
20 <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20" 26 <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
21 label="Save" label_selected="Save" left_delta="80" 27 label="Save" label_selected="Save" left_delta="70"
22 mouse_opaque="true" name="WaterSavePreset" scale_image="true" width="70" /> 28 mouse_opaque="true" name="WaterSavePreset" scale_image="true" width="70" />
23 <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20" 29 <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
24 label="Delete" label_selected="Delete" left_delta="80" 30 label="Delete" label_selected="Delete" left_delta="70"
25 mouse_opaque="true" name="WaterDeletePreset" scale_image="true" width="70" /> 31 mouse_opaque="true" name="WaterDeletePreset" scale_image="true" width="70" />
26 <tab_container bottom="-240" follows="left|top" height="180" left="0" 32 <tab_container bottom="-240" follows="left|top" height="180" left="0"
27 mouse_opaque="false" name="Water Tabs" tab_position="top" width="700"> 33 mouse_opaque="false" name="Water Tabs" tab_position="top" width="700">
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote.xml b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote.xml
index ead9ad7..8be72fc 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote.xml
@@ -4,6 +4,18 @@
4 name="windlight_remote" use_bounding_rect="true" width="182"> 4 name="windlight_remote" use_bounding_rect="true" width="182">
5 <panel bottom="1" filename="panel_bg_tab.xml" name="panel_bg_tab" height="22" left="0" width="182" /> 5 <panel bottom="1" filename="panel_bg_tab.xml" name="panel_bg_tab" height="22" left="0" width="182" />
6 <panel bottom="3" filename="panel_windlight_controls.xml" name="panel_windlight_controls" height="20" left="0" width="182" /> 6 <panel bottom="3" filename="panel_windlight_controls.xml" name="panel_windlight_controls" height="20" left="0" width="182" />
7 <string name="atmosphere">
8 Atmosphere
9 </string>
10 <string name="lighting">
11 Lighting
12 </string>
13 <string name="clouds">
14 Clouds
15 </string>
16 <string name="advanced_water">
17 Advanced Water
18 </string>
7 <string name="sunrise"> 19 <string name="sunrise">
8 Sunrise 20 Sunrise
9 </string> 21 </string>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml
index e7182fa..4cb49a3 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml
@@ -1,13 +1,19 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel bg_visible="false" border="false" border_visible="false" bottom="0" 2<panel bg_visible="false" border="false" border_visible="false" bottom="0"
3 follows="right|bottom" height="47" left="0" mouse_opaque="true" 3 follows="right|bottom" height="67" left="0" mouse_opaque="true"
4 name="windlight_remote" use_bounding_rect="true" width="182"> 4 name="windlight_remote" use_bounding_rect="true" width="182">
5 <panel bottom="1" filename="panel_bg_tab.xml" name="panel_bg_tab" height="47" left="0" width="182" /> 5 <panel bottom="1" filename="panel_bg_tab.xml" name="panel_bg_tab" height="67" left="0" width="182" />
6 <slider bottom="-20" can_edit_text="false" control_name="RenderFarClip" 6 <slider bottom="-20" can_edit_text="false" control_name="RenderFarClip"
7 decimal_digits="0" enabled="true" height="18" 7 decimal_digits="0" enabled="true" height="18"
8 increment="8" initial_val="160" label="Draw Distance:" 8 increment="8" initial_val="160" label="Draw Distance:"
9 label_width="78" left="6" max_val="512" min_val="32" mouse_opaque="true" 9 label_width="78" left="6" max_val="512" min_val="32" mouse_opaque="true"
10 name="DrawDistance" show_text="true" width="170" /> 10 name="DrawDistance" show_text="true" width="170" />
11 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderMaxPartCount"
12 decimal_digits="0" enabled="true" follows="left|top" height="18"
13 increment="256" initial_val="4096"
14 label="Max. Particles:" label_width="78" left_delta="0"
15 max_val="8192" min_val="0" mouse_opaque="true" name="MaxParticleCount"
16 show_text="true" width="176" />
11 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 17 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
12 bottom="-14" drop_shadow_visible="true" enabled="true" follows="left|top" 18 bottom="-14" drop_shadow_visible="true" enabled="true" follows="left|top"
13 font="SansSerifSmall" h_pad="0" halign="left" height="12" 19 font="SansSerifSmall" h_pad="0" halign="left" height="12"
@@ -16,6 +22,18 @@
16 m 22 m
17 </text> 23 </text>
18 <panel bottom="13" filename="panel_windlight_controls.xml" left="0" width="182" /> 24 <panel bottom="13" filename="panel_windlight_controls.xml" left="0" width="182" />
25 <string name="atmosphere">
26 Atmosphere
27 </string>
28 <string name="lighting">
29 Lighting
30 </string>
31 <string name="clouds">
32 Clouds
33 </string>
34 <string name="advanced_water">
35 Advanced Water
36 </string>
19 <string name="sunrise"> 37 <string name="sunrise">
20 Sunrise 38 Sunrise
21 </string> 39 </string>
diff --git a/linden/indra/newview/skins/silver/xui/en-us/floater_script_ed_panel.xml b/linden/indra/newview/skins/silver/xui/en-us/floater_script_ed_panel.xml
deleted file mode 100644
index 12ae6dc..0000000
--- a/linden/indra/newview/skins/silver/xui/en-us/floater_script_ed_panel.xml
+++ /dev/null
@@ -1,86 +0,0 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel bottom="-550" enabled="true" follows="left|top|right|bottom" height="508"
3 left="0" mouse_opaque="true" name="script panel" width="500">
4 <text_editor type="string" length="1" bottom="-393"
5 embedded_items="false" enabled="true" follows="left|top|right|bottom"
6 font="Monospace" height="376" ignore_tab="false" left="4"
7 max_length="65536" mouse_opaque="true" name="Script Editor" width="492"
8 word_wrap="true" show_line_numbers="true">
9 Loading...
10 </text_editor>
11 <button bottom="-499" enabled="true" follows="right|bottom" font="SansSerif"
12 halign="center" height="20" label="Save" label_selected="Save" left="360"
13 mouse_opaque="true" name="Save_btn" width="128" />
14 <scroll_list background_visible="true" bottom="-457" column_padding="5" draw_border="true"
15 draw_heading="false" draw_stripes="true" enabled="true"
16 follows="left|right|bottom" height="60" left="4" mouse_opaque="true"
17 multi_select="false" name="lsl errors" width="492" />
18 <combo_box allow_text_entry="false" bottom="-499" enabled="true" follows="left|bottom"
19 height="20" label="Insert..." left="12" max_chars="20" mouse_opaque="true"
20 name="Insert..." width="128" />
21 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
22 bottom="-473" drop_shadow_visible="true" enabled="true"
23 follows="left|bottom" font="SansSerifSmall" h_pad="0" halign="left"
24 height="12" left="12" mouse_opaque="true" name="line_col" v_pad="0"
25 width="128" />
26 <menu_bar bottom="-15" drop_shadow="false" enabled="true" follows="left|top|right"
27 height="18" left="8" mouse_opaque="false" name="script_menu" opaque="false"
28 tear_off="false" width="476">
29 <menu bottom="0" drop_shadow="true" enabled="true" height="62"
30 left="0" mouse_opaque="false" name="File" opaque="true" tear_off="false"
31 width="138">
32 <menu_item_call bottom_delta="-30" height="20" label="Save" left="0" mouse_opaque="true"
33 name="Save" width="138" />
34 <menu_item_separator bottom_delta="-38" height="8" left="0" mouse_opaque="true" name="separator"
35 width="138" />
36 <menu_item_call bottom_delta="-58" height="20" label="Revert All Changes" left="0"
37 mouse_opaque="true" name="Revert All Changes" width="138" />
38 </menu>
39 <menu bottom="665" drop_shadow="true" enabled="true" height="198"
40 left="222" mouse_opaque="false" name="Edit" opaque="true" tear_off="false"
41 width="139">
42 <menu_item_call bottom_delta="-30" enabled="false" height="20" label="Undo" left="0"
43 mouse_opaque="true" name="Undo" width="139" />
44 <menu_item_call bottom_delta="-50" enabled="false" height="20" label="Redo" left="0"
45 mouse_opaque="true" name="Redo" width="139" />
46 <menu_item_separator bottom_delta="-58" enabled="true" height="8" label="-----------" left="0"
47 mouse_opaque="true" name="separator" width="139" />
48 <menu_item_call bottom_delta="-78" enabled="false" height="20" label="Cut" left="0"
49 mouse_opaque="true" name="Cut" width="139" />
50 <menu_item_call bottom_delta="-98" enabled="false" height="20" label="Copy" left="0"
51 mouse_opaque="true" name="Copy" width="139" />
52 <menu_item_call bottom_delta="-118" enabled="false" height="20" label="Paste" left="0"
53 mouse_opaque="true" name="Paste" width="139" />
54 <menu_item_separator bottom_delta="-126" enabled="true" height="8" label="-----------" left="0"
55 mouse_opaque="true" name="separator2" width="139" />
56 <menu_item_call bottom_delta="-146" enabled="true" height="20" label="Select All" left="0"
57 mouse_opaque="true" name="Select All" width="139" />
58 <menu_item_call bottom_delta="-166" enabled="false" height="20" label="Deselect" left="0"
59 mouse_opaque="true" name="Deselect" width="139" />
60 <menu_item_separator bottom_delta="-174" enabled="true" height="8" label="-----------" left="0"
61 mouse_opaque="true" name="separator3" width="139" />
62 <menu_item_call bottom_delta="-194" enabled="true" height="20" label="Search / Replace..."
63 left="0" mouse_opaque="true" name="Search / Replace..." width="139" />
64 </menu>
65 <menu bottom="-18" drop_shadow="true" enabled="true" height="34"
66 left="0" mouse_opaque="false" name="Help" opaque="true" tear_off="false"
67 width="112">
68 <menu_item_call bottom="-30" enabled="true" height="20" label="Help..." left="0"
69 mouse_opaque="true" name="Help..." width="112" />
70 <menu_item_call bottom="-30" enabled="true" height="20" label="LSL Wiki Help..." left="0"
71 mouse_opaque="true" name="LSL Wiki Help..." width="112" />
72 </menu>
73 </menu_bar>
74 <string name="loading">
75 Loading...
76 </string>
77 <string name="can_not_view">
78 You are not allowed to view this script.
79 </string>
80 <string name="public_objects_can_not_run">
81 Public Objects cannot run scripts
82 </string>
83 <string name="script_running">
84 Running
85 </string>
86</panel>
diff --git a/linden/indra/newview/skins/silver/xui/en-us/floater_script_queue.xml b/linden/indra/newview/skins/silver/xui/en-us/floater_script_queue.xml
deleted file mode 100644
index c44457c..0000000
--- a/linden/indra/newview/skins/silver/xui/en-us/floater_script_queue.xml
+++ /dev/null
@@ -1,13 +0,0 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater bottom="-763" can_close="true" can_drag_on_left="false" can_minimize="true"
3 can_resize="true" enabled="true" height="400" left="408" min_height="100"
4 min_width="100" mouse_opaque="true" name="queue" title="Reset Progress"
5 width="300">
6 <button bottom="-392" enabled="true" follows="right|bottom" font="SansSerif"
7 halign="center" height="24" label="Close" label_selected="Close" left="220"
8 mouse_opaque="true" name="close" width="64" />
9 <scroll_list background_visible="true" bottom="-364" column_padding="5" draw_border="true"
10 draw_heading="false" draw_stripes="true" enabled="true"
11 follows="left|top|right|bottom" height="344" left="4" mouse_opaque="true"
12 multi_select="false" name="queue output" width="292" />
13</floater>