From ad6959619f154bbe984d33aa7e6c60333cbb4438 Mon Sep 17 00:00:00 2001
From: Tonya Souther <tonya.souther@gmail.com>
Date: Thu, 15 Nov 2012 18:25:34 -0600
Subject: Initial texture panel rework: moved controls, new labels, eliminated
 flip checkboxes and apply button, added selection dropdowns.

---
 indra/newview/llpanelface.cpp                      | 110 +++--
 indra/newview/llpanelface.h                        |   4 +-
 .../newview/skins/default/xui/en/floater_tools.xml | 538 +--------------------
 .../skins/default/xui/en/panel_tools_texture.xml   | 483 ++++++++++++++++++
 4 files changed, 576 insertions(+), 559 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/en/panel_tools_texture.xml

diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 202be9671b..e74c8509ce 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -71,14 +71,14 @@
 
 BOOL	LLPanelFace::postBuild()
 {
+	childSetCommitCallback("combobox matmedia",&LLPanelFace::onCommitMaterialsMedia,this);
+	childSetCommitCallback("combobox mattype",&LLPanelFace::onCommitMaterialType,this);
 	childSetCommitCallback("combobox shininess",&LLPanelFace::onCommitShiny,this);
 	childSetCommitCallback("combobox bumpiness",&LLPanelFace::onCommitBump,this);
 	childSetCommitCallback("TexScaleU",&LLPanelFace::onCommitTextureInfo, this);
-	childSetCommitCallback("checkbox flip s",&LLPanelFace::onCommitTextureInfo, this);
 	childSetCommitCallback("TexScaleV",&LLPanelFace::onCommitTextureInfo, this);
-	childSetCommitCallback("checkbox flip t",&LLPanelFace::onCommitTextureInfo, this);
 	childSetCommitCallback("TexRot",&LLPanelFace::onCommitTextureInfo, this);
-	childSetAction("button apply",&LLPanelFace::onClickApply,this);
+	childSetCommitCallback("rptctrl",&LLPanelFace::onCommitRepeatsPerMeter, this);
 	childSetCommitCallback("checkbox planar align",&LLPanelFace::onCommitPlanarAlign, this);
 	childSetCommitCallback("TexOffsetU",LLPanelFace::onCommitTextureInfo, this);
 	childSetCommitCallback("TexOffsetV",LLPanelFace::onCommitTextureInfo, this);
@@ -98,6 +98,7 @@ BOOL	LLPanelFace::postBuild()
 	LLSpinCtrl*     mCtrlGlow;
 
 	setMouseOpaque(FALSE);
+
 	mTextureCtrl = getChild<LLTextureCtrl>("texture control");
 	if(mTextureCtrl)
 	{
@@ -269,22 +270,20 @@ struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor
 		LLSpinCtrl*	ctrlTexOffsetS = mPanel->getChild<LLSpinCtrl>("TexOffsetU");
 		LLSpinCtrl*	ctrlTexOffsetT = mPanel->getChild<LLSpinCtrl>("TexOffsetV");
 		LLSpinCtrl*	ctrlTexRotation = mPanel->getChild<LLSpinCtrl>("TexRot");
-		LLCheckBoxCtrl*	checkFlipScaleS = mPanel->getChild<LLCheckBoxCtrl>("checkbox flip s");
-		LLCheckBoxCtrl*	checkFlipScaleT = mPanel->getChild<LLCheckBoxCtrl>("checkbox flip t");
 		LLComboBox*		comboTexGen = mPanel->getChild<LLComboBox>("combobox texgen");
 		llassert(comboTexGen);
 		llassert(object);
 
 		if (ctrlTexScaleS)
 		{
-			valid = !ctrlTexScaleS->getTentative() || !checkFlipScaleS->getTentative();
+			valid = !ctrlTexScaleS->getTentative(); // || !checkFlipScaleS->getTentative();
 			if (valid)
 			{
 				value = ctrlTexScaleS->get();
-				if( checkFlipScaleS->get() )
-				{
-					value = -value;
-				}
+				//if( checkFlipScaleS->get() )
+				//{
+				//	value = -value;
+				//}
 				if (comboTexGen &&
 				    comboTexGen->getCurrentIndex() == 1)
 				{
@@ -296,14 +295,14 @@ struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor
 
 		if (ctrlTexScaleT)
 		{
-			valid = !ctrlTexScaleT->getTentative() || !checkFlipScaleT->getTentative();
+			valid = !ctrlTexScaleT->getTentative(); // || !checkFlipScaleT->getTentative();
 			if (valid)
 			{
 				value = ctrlTexScaleT->get();
-				if( checkFlipScaleT->get() )
-				{
-					value = -value;
-				}
+				//if( checkFlipScaleT->get() )
+				//{
+				//	value = -value;
+				//}
 				if (comboTexGen &&
 				    comboTexGen->getCurrentIndex() == 1)
 				{
@@ -495,6 +494,31 @@ void LLPanelFace::getState()
 		// only turn on auto-adjust button if there is a media renderer and the media is loaded
 		getChildView("textbox autofix")->setEnabled(editable);
 		getChildView("button align")->setEnabled(editable);
+
+		LLCtrlSelectionInterface* combobox_matmedia =
+		      childGetSelectionInterface("combobox matmedia");
+		if (combobox_matmedia)
+		{
+			combobox_matmedia->selectNthItem(0);
+		}
+		else
+		{
+			llwarns << "failed childGetSelectionInterface for 'combobox matmedia'" << llendl;
+		}
+		getChildView("combobox matmedia")->setEnabled(editable);
+
+		LLCtrlSelectionInterface* combobox_mattype =
+		      childGetSelectionInterface("combobox mattype");
+		if (combobox_mattype)
+		{
+			combobox_mattype->selectNthItem(0);
+		}
+		else
+		{
+			llwarns << "failed childGetSelectionInterface for 'combobox mattype'" << llendl;
+		}
+		getChildView("combobox mattype")->setEnabled(editable);
+		onCommitMaterialsMedia(NULL, this);
 		
 		//if ( LLMediaEngine::getInstance()->getMediaRenderer () )
 		//	if ( LLMediaEngine::getInstance()->getMediaRenderer ()->isLoaded () )
@@ -504,7 +528,6 @@ void LLPanelFace::getState()
 		//		
 		//		//mBtnAutoFix->setEnabled ( editable );
 		//	}
-		getChildView("button apply")->setEnabled(editable);
 
 		bool identical;
 		LLTextureCtrl*	texture_ctrl = getChild<LLTextureCtrl>("texture control");
@@ -630,12 +653,9 @@ void LLPanelFace::getState()
 			} func;
 			identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, scale_s );
 			identical = align_planar ? identical_planar_aligned : identical;
-			getChild<LLUICtrl>("TexScaleU")->setValue(editable ? llabs(scale_s) : 0);
+			getChild<LLUICtrl>("TexScaleU")->setValue(editable ? scale_s : 0);
 			getChild<LLUICtrl>("TexScaleU")->setTentative(LLSD((BOOL)(!identical)));
 			getChildView("TexScaleU")->setEnabled(editable);
-			getChild<LLUICtrl>("checkbox flip s")->setValue(LLSD((BOOL)(scale_s < 0 ? TRUE : FALSE )));
-			getChild<LLUICtrl>("checkbox flip s")->setTentative(LLSD((BOOL)((!identical) ? TRUE : FALSE )));
-			getChildView("checkbox flip s")->setEnabled(editable);
 		}
 
 		{
@@ -650,12 +670,9 @@ void LLPanelFace::getState()
 			identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, scale_t );
 			identical = align_planar ? identical_planar_aligned : identical;
 
-			getChild<LLUICtrl>("TexScaleV")->setValue(llabs(editable ? llabs(scale_t) : 0));
+			getChild<LLUICtrl>("TexScaleV")->setValue(editable ? scale_t : 0);
 			getChild<LLUICtrl>("TexScaleV")->setTentative(LLSD((BOOL)(!identical)));
 			getChildView("TexScaleV")->setEnabled(editable);
-			getChild<LLUICtrl>("checkbox flip t")->setValue(LLSD((BOOL)(scale_t< 0 ? TRUE : FALSE )));
-			getChild<LLUICtrl>("checkbox flip t")->setTentative(LLSD((BOOL)((!identical) ? TRUE : FALSE )));
-			getChildView("checkbox flip t")->setEnabled(editable);
 		}
 
 		// Texture offset
@@ -710,6 +727,9 @@ void LLPanelFace::getState()
 		}
 
 		// Color swatch
+		{
+			getChildView("color label")->setEnabled(editable);
+		}
 		LLColorSwatchCtrl*	mColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch");
 		LLColor4 color = LLColor4::white;
 		if(mColorSwatch)
@@ -895,7 +915,6 @@ void LLPanelFace::getState()
 			{
 				BOOL enabled = editable && (!mComboTexGen || mComboTexGen->getCurrentIndex() != 1);
 				getChildView("rptctrl")->setEnabled(enabled);
-				getChildView("button apply")->setEnabled(enabled);
 			}
 		}
 
@@ -939,7 +958,6 @@ void LLPanelFace::getState()
 		getChildView("textbox autofix")->setEnabled(FALSE);
 
 		getChildView("button align")->setEnabled(FALSE);
-		getChildView("button apply")->setEnabled(FALSE);
 		//getChildView("has media")->setEnabled(FALSE);
 		//getChildView("media info set")->setEnabled(FALSE);
 		
@@ -994,6 +1012,44 @@ void LLPanelFace::onSelectColor(const LLSD& data)
 	sendColor();
 }
 
+// static
+void LLPanelFace::onCommitMaterialsMedia(LLUICtrl* ctrl, void* userdata)
+{
+	LLPanelFace* self = (LLPanelFace*) userdata;
+	LLComboBox* mComboMaterialsMedia = self->getChild<LLComboBox>("combobox matmedia");
+	if (!mComboMaterialsMedia)
+	{
+		return;
+	}
+	U32 materials_media = mComboMaterialsMedia->getCurrentIndex();
+	LLComboBox* mComboMaterialType = self->getChild<LLComboBox>("combobox mattype");
+	if (!mComboMaterialType)
+	{
+		return;
+	}
+	U32 material_type = mComboMaterialType->getCurrentIndex();
+	bool show_media = (materials_media == 1);
+	bool show_texture = (!show_media) && (material_type == 0);
+	bool show_bumpiness = (!show_media) && (material_type == 1);
+	bool show_shininess = (!show_media) && (material_type == 2);
+	self->getChildView("combobox mattype")->setVisible(!show_media);
+	self->getChildView("media_info")->setVisible(show_media);
+	self->getChildView("add_media")->setVisible(show_media);
+	self->getChildView("delete_media")->setVisible(show_media);
+	self->getChildView("button align")->setVisible(show_media);
+	self->getChildView("texture control")->setVisible(show_texture);
+	self->getChildView("combobox shininess")->setVisible(show_shininess);
+	self->getChildView("label shininess")->setVisible(show_shininess);
+	self->getChildView("combobox bumpiness")->setVisible(show_bumpiness);
+	self->getChildView("label bumpiness")->setVisible(show_bumpiness);
+}
+
+// static
+void LLPanelFace::onCommitMaterialType(LLUICtrl* ctrl, void* userdata)
+{
+	onCommitMaterialsMedia(ctrl, userdata);
+}
+
 // static
 void LLPanelFace::onCommitBump(LLUICtrl* ctrl, void* userdata)
 {
@@ -1074,7 +1130,7 @@ void LLPanelFace::onCommitTextureInfo( LLUICtrl* ctrl, void* userdata )
 
 // Commit the number of repeats per meter
 // static
-void LLPanelFace::onClickApply(void* userdata)
+void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)
 {
 	LLPanelFace* self = (LLPanelFace*) userdata;
 	
diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
index 3b5a9b1398..acac2c1bf5 100644
--- a/indra/newview/llpanelface.h
+++ b/indra/newview/llpanelface.h
@@ -80,6 +80,8 @@ protected:
 	void 	onSelectColor(const LLSD& data);
 	
 	static 	void onCommitTextureInfo( 		LLUICtrl* ctrl, void* userdata);
+	static void		onCommitMaterialsMedia(		LLUICtrl* ctrl, void* userdata);
+	static void		onCommitMaterialType(		LLUICtrl* ctrl, void* userdata);
 	static void		onCommitBump(			LLUICtrl* ctrl, void* userdata);
 	static void		onCommitTexGen(			LLUICtrl* ctrl, void* userdata);
 	static void		onCommitShiny(			LLUICtrl* ctrl, void* userdata);
@@ -87,7 +89,7 @@ protected:
 	static void     onCommitGlow(           LLUICtrl* ctrl, void *userdata);
 	static void		onCommitPlanarAlign(	LLUICtrl* ctrl, void* userdata);
 	
-	static void		onClickApply(void*);
+	static void		onCommitRepeatsPerMeter(	LLUICtrl* ctrl, void* userinfo);
 	static void		onClickAutoFix(void*);
 	static F32      valueGlow(LLViewerObject* object, S32 face);
 
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 5204efbf65..3b501e1ece 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2,7 +2,7 @@
 <floater
  positioning="cascading"
  legacy_header_height="18"
- height="590"
+ height="615"
  layout="topleft"
  bg_opaque_image="Window_NoTitle_Foreground"
  bg_alpha_image="Window_NoTitle_Background"
@@ -830,7 +830,7 @@
     width="282"/>
     <tab_container
      follows="left|top"
-     height="410"
+     height="435"
      halign="center"
      left="0"
      name="Object Info Tabs"
@@ -1353,7 +1353,7 @@ even though the user gets a free copy.
       <panel
          border="false"
          follows="all"
-         height="567"
+         height="592"
          label="Object"
          layout="topleft"
          left_delta="0"
@@ -2110,7 +2110,7 @@ even though the user gets a free copy.
         <panel
          border="false"
          follows="all"
-         height="367"
+         height="392"
          label="Features"
          layout="topleft"
          left_delta="0"
@@ -2491,534 +2491,10 @@ even though the user gets a free copy.
              width="132" />
         </panel>
          <panel
-         border="false"
-         follows="all"
-         height="367"
          label="Texture"
-         layout="topleft"
-         left_delta="0"
-         mouse_opaque="false"
          help_topic="toolbox_texture_tab"
          name="Texture"
-         top_delta="0"
-         width="295">
-            <panel.string
-             name="string repeats per meter">
-                Repeats Per Meter
-            </panel.string>
-            <panel.string
-             name="string repeats per face">
-                Repeats Per Face
-            </panel.string>
-            <texture_picker
-             can_apply_immediately="true"
-             default_image_name="Default"
-             fallback_image="locked_image.j2c"
-             follows="left|top"
-             height="80"
-             label="Texture"
-             layout="topleft"
-             left="10"
-             name="texture control"
-             tool_tip="Click to choose a picture"
-             top="8"
-             width="64" />
-            <color_swatch
-             can_apply_immediately="true"
-             follows="left|top"
-             height="80"
-             label="Color"
-             layout="topleft"
-             left_pad="15"
-             name="colorswatch"
-             tool_tip="Click to open color picker"
-             top_delta="0"
-             width="64" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="10"
-             layout="topleft"
-             left_pad="15"
-             name="color trans"
-             text_readonly_color="LabelDisabledColor"
-             top="6"
-             width="110">
-                Transparency %
-            </text>
-            <spinner
-             decimal_digits="0"
-             follows="left|top"
-             height="19"
-             increment="2"
-             initial_value="0"
-             layout="topleft"
-             left_delta="0"
-             max_val="100"
-             name="ColorTrans"
-             top_pad="4"
-             width="80" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="10"
-             layout="topleft"
-             left_delta="0"
-             name="glow label"
-             text_readonly_color="LabelDisabledColor"
-             top_pad="8"
-             width="80">
-                Glow
-            </text>
-            <spinner
-             decimal_digits="2"
-             follows="left|top"
-             height="19"
-             initial_value="0"
-             layout="topleft"
-             left_delta="0"
-             name="glow"
-             top_pad="4"
-             width="80" />
-            <check_box
-             height="19"
-             label="Full Bright"
-             layout="topleft"
-             left_delta="-5"
-             name="checkbox fullbright"
-             top_pad="4"
-             width="81" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="10"
-             layout="topleft"
-             left="10"
-             name="tex gen"
-             text_readonly_color="LabelDisabledColor"
-             top_pad="5"
-             width="90">
-                Mapping
-            </text>
-            <combo_box
-             height="23"
-             layout="topleft"
-             left_delta="0"
-             name="combobox texgen"
-             top_pad="4"
-             width="90">
-                <combo_box.item
-                 label="Default"
-                 name="Default"
-                 value="Default" />
-                <combo_box.item
-                 label="Planar"
-                 name="Planar"
-                 value="Planar" />
-            </combo_box>
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="10"
-             layout="topleft"
-             name="label shininess"
-             left_pad="4"
-             text_readonly_color="LabelDisabledColor"
-             top_pad="-37"
-             width="90">
-                Shininess
-            </text>
-            <combo_box
-             height="23"
-             layout="topleft"
-             left_delta="0"
-             name="combobox shininess"
-             top_pad="4"
-             width="90">
-                <combo_box.item
-                 label="None"
-                 name="None"
-                 value="None" />
-                <combo_box.item
-                 label="Low"
-                 name="Low"
-                 value="Low" />
-                <combo_box.item
-                 label="Medium"
-                 name="Medium"
-                 value="Medium" />
-                <combo_box.item
-                 label="High"
-                 name="High"
-                 value="High" />
-            </combo_box>
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="10"
-             layout="topleft"
-             left_pad="4"
-             name="label bumpiness"
-             text_readonly_color="LabelDisabledColor"
-             top_pad="-37"
-             width="90">
-                Bumpiness
-            </text>
-            <combo_box
-             height="23"
-             layout="topleft"
-             left_delta="0"
-             name="combobox bumpiness"
-             top_pad="4"
-             width="90">
-                <combo_box.item
-                 label="None"
-                 name="None"
-                 value="None" />
-                <combo_box.item
-                 label="Brightness"
-                 name="Brightness"
-                 value="Brightness" />
-                <combo_box.item
-                 label="Darkness"
-                 name="Darkness"
-                 value="Darkness" />
-                <combo_box.item
-                 label="woodgrain"
-                 name="woodgrain"
-                 value="woodgrain" />
-                <combo_box.item
-                 label="bark"
-                 name="bark"
-                 value="bark" />
-                <combo_box.item
-                 label="bricks"
-                 name="bricks"
-                 value="bricks" />
-                <combo_box.item
-                 label="checker"
-                 name="checker"
-                 value="checker" />
-                <combo_box.item
-                 label="concrete"
-                 name="concrete"
-                 value="concrete" />
-                <combo_box.item
-                 label="crustytile"
-                 name="crustytile"
-                 value="crustytile" />
-                <combo_box.item
-                 label="cutstone"
-                 name="cutstone"
-                 value="cutstone" />
-                <combo_box.item
-                 label="discs"
-                 name="discs"
-                 value="discs" />
-                <combo_box.item
-                 label="gravel"
-                 name="gravel"
-                 value="gravel" />
-                <combo_box.item
-                 label="petridish"
-                 name="petridish"
-                 value="petridish" />
-                <combo_box.item
-                 label="siding"
-                 name="siding"
-                 value="siding" />
-                <combo_box.item
-                 label="stonetile"
-                 name="stonetile"
-                 value="stonetile" />
-                <combo_box.item
-                 label="stucco"
-                 name="stucco"
-                 value="stucco" />
-                <combo_box.item
-                 label="suction"
-                 name="suction"
-                 value="suction" />
-                <combo_box.item
-                 label="weave"
-                 name="weave"
-                 value="weave" />
-            </combo_box>
-          <!--
-            <line_editor
-             bevel_style="in"
-             border_style="line"
-             border_thickness="1"
-             follows="left|top"
-             height="16"
-             layout="topleft"
-             left="10"
-             max_length_bytes="63"
-             name="Home Url"
-             select_on_focus="true"
-             top="134"
-             width="250" />
-            <check_box
-             height="16"
-             label="Media Face"
-             layout="topleft"
-             left_delta="0"
-             name="has media"
-             top_pad="6"
-             width="70" />
-            <button
-             follows="left|top"
-             font="SansSerifSmall"
-             height="20"
-             label="Set Media Info"
-             label_selected="Set Media Info"
-             layout="topleft"
-             left_pad="60"
-             name="media info set"
-             top_delta="-4"
-             width="120" />
--->
-            <check_box
-             follows="top|left"
-             height="16"
-             initial_value="false"
-             label="Align planar faces"
-             layout="topleft"
-             left="17"
-             name="checkbox planar align"
-             tool_tip="Align textures on all selected faces with the last selected face. Requires Planar texture mapping."
-             top_delta="26"
-             width="140" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="10"
-             layout="topleft"
-             left="10"
-             name="rpt"
-             text_readonly_color="LabelDisabledColor"
-             top_pad="2"
-             width="140">
-                Repeats / Face
-            </text>
-            <spinner
-             follows="left|top"
-             height="19"
-             initial_value="0"
-             label="Horizontal (U)"
-             label_width="125"
-             layout="topleft"
-             left="20"
-             max_val="100"
-             name="TexScaleU"
-             top_pad="5"
-             width="185" />
-            <check_box
-             height="19"
-             label="Flip"
-             layout="topleft"
-             left_pad="5"
-             name="checkbox flip s"
-             top_delta="0"
-             width="70" />
-            <spinner
-             follows="left|top"
-             height="19"
-             initial_value="0"
-             label="Vertical (V)"
-             label_width="125"
-             layout="topleft"
-             left="20"
-             max_val="100"
-             name="TexScaleV"
-             width="185" />
-            <check_box
-             height="19"
-             label="Flip"
-             layout="topleft"
-             left_pad="5"
-             name="checkbox flip t"
-             top_delta="0"
-             width="70" />
-            <spinner
-             decimal_digits="2"
-             follows="left|top"
-             height="19"
-             increment="1"
-             initial_value="0"
-			 label="RotationĖš"
-             layout="topleft"
-			 label_width="135"
-             left="10"
-             max_val="9999"
-             min_val="-9999"
-             name="TexRot"
-             width="195" />
-
-            <spinner
-             decimal_digits="1"
-             follows="left|top"
-             height="23"
-             initial_value="1"
-			 label="Repeats / Meter"
-             layout="topleft"
-			 label_width="135"
-             left="10"
-             max_val="10"
-             min_val="0.1"
-             name="rptctrl"
-             width="195" />
-            <button
-             follows="left|top"
-             height="23"
-             label="Apply"
-             label_selected="Apply"
-             layout="topleft"
-             left_pad="5"
-             name="button apply"
-             width="75" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="10"
-             layout="topleft"
-             left="10"
-             name="tex offset"
-             text_readonly_color="LabelDisabledColor"
-             width="200">
-                Texture Offset
-            </text>
-            <spinner
-             follows="left|top"
-             height="19"
-             initial_value="0"
-             label="Horizontal (U)"
-             label_width="125"
-             layout="topleft"
-             left="20"
-             min_val="-1"
-             name="TexOffsetU"
-             width="185" />
-            <spinner
-             follows="left|top"
-             height="19"
-             initial_value="0"
-             label="Vertical (V)"
-             label_width="125"
-             layout="topleft"
-             left_delta="0"
-             min_val="-1"
-             name="TexOffsetV"
-             top_pad="1"
-             width="185" />
-        <panel
-         border="false"
-         follows="left|top"
-         layout="topleft"
-         mouse_opaque="false"
-         background_visible="true"
-         bg_alpha_color="DkGray"
-         name="Add_Media"
-         left="0"
-         height="47"
-         width="290">
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="18"
-             layout="topleft"
-             left="10"
-             top_pad="3"
-             name="media_tex"
-             width="190">
-              Media
-			</text>
-			<button
-			 follows="top|left"
-			 height="18"
-			 image_selected="AddItem_Press"
-			 image_unselected="AddItem_Off"
-			 image_disabled="AddItem_Disabled"
-			 layout="topleft"
-			 left_pad="0"
-			 name="add_media"
-			 tab_stop="false"
-			 top_delta="0"
-			 tool_tip="Add Media"
-			 width="18">
-				<button.commit_callback
-				function="BuildTool.AddMedia"/>
-			</button>
-			<button
-			 follows="top|left"
-			 height="18"
-			 image_selected="TrashItem_Press"
-			 image_unselected="TrashItem_Off"
-			 layout="topleft"
-			 left_pad="5"
-			 name="delete_media"
-			 tool_tip="Delete this media texture"
-			 top_delta="0"
-			 width="18">
-				<button.commit_callback
-				function="BuildTool.DeleteMedia"/>
-			</button>
-			<button
-			 follows="top|left"
-			 tool_tip="Edit this Media"
-			 height="12"
-             image_disabled="Icon_Gear_Background"
-             image_selected="Icon_Gear_Press"
-             image_unselected="Icon_Gear_Foreground"
-			 layout="topleft"
-			 left_pad="10"
-			 name="edit_media"
-			 top_delta="3"
-			 width="12">
-				<button.commit_callback
-				function="BuildTool.EditMedia"/>
-			</button>
-      <text
-			 follows="left|top|right"
-			 height="9"
-			 layout="topleft"
-			 left="10"
-                         use_ellipses="true"
-			 read_only="true"
-			 name="media_info"
-			 width="280" />
-      <web_browser
-        visible="false"
-        enabled="false"
-        border_visible="true"
-        bottom_delta="0"
-        follows="top|left"
-        left="0"
-        name="title_media"
-        width="4"
-        height="4"
-        start_url="about:blank"
-        decouple_texture_size="true" />
-     <button
-			 follows="right|top"
-			 height="22"
-			 label="Align"
-			 label_selected="Align Media"
-			 layout="topleft"
-			 right="-16"
-			 name="button align"
-			 top_delta="-4"
-			 tool_tip="Align media texture (must load first)"
-			 width="80" />
-		</panel>
+         filename="panel_tools_texture.xml">
 	   </panel>
        <panel
          border="false"
@@ -3054,7 +2530,7 @@ even though the user gets a free copy.
              border_visible="true"
              bevel_style="in"
              follows="left|top|right"
-             height="325"
+             height="350"
              layout="topleft"
              left="10"
              name="contents_inventory"
@@ -3064,7 +2540,7 @@ even though the user gets a free copy.
         </tab_container>
 	<panel
 	 follows="left|top"
-     height="384"
+     height="409"
      layout="topleft"
      left_delta="0"
      name="land info panel"
diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
new file mode 100644
index 0000000000..26b2d83351
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -0,0 +1,483 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+         border="false"
+         follows="all"
+         height="400"
+         label="Texture"
+         layout="topleft"
+         left="0"
+         mouse_opaque="false"
+         help_topic="toolbox_texture_tab"
+         name="Texture"
+         top="0"
+         width="295">
+            <panel.string
+             name="string repeats per meter">
+                Repeats Per Meter
+            </panel.string>
+            <panel.string
+             name="string repeats per face">
+                Repeats Per Face
+            </panel.string>
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="10"
+             layout="topleft"
+             left="10"
+             name="color label"
+             text_readonly_color="LabelDisabledColor"
+             top="6"
+             width="64">
+                Color
+            </text>
+            <!-- label is blank because control places it below the box -->
+            <color_swatch
+             can_apply_immediately="true"
+             follows="left|top"
+             height="45"
+             label=""
+             layout="topleft"
+             left="10"
+             name="colorswatch"
+             tool_tip="Click to open color picker"
+             top="20"
+             width="64" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="10"
+             layout="topleft"
+             left_pad="15"
+             name="color trans"
+             text_readonly_color="LabelDisabledColor"
+             top="6"
+             width="110">
+                Transparency %
+            </text>
+            <spinner
+             decimal_digits="0"
+             follows="left|top"
+             height="19"
+             increment="2"
+             initial_value="0"
+             layout="topleft"
+             left_delta="0"
+             max_val="100"
+             name="ColorTrans"
+             top_pad="4"
+             width="80" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="10"
+             layout="topleft"
+             left_pad="15"
+             name="glow label"
+             text_readonly_color="LabelDisabledColor"
+             top="6"
+             width="80">
+                Glow
+            </text>
+            <spinner
+             decimal_digits="2"
+             follows="left|top"
+             height="19"
+             initial_value="0"
+             layout="topleft"
+             left_delta="0"
+             name="glow"
+             top_pad="4"
+             width="80" />
+            <check_box
+             height="19"
+             label="Full Bright"
+             layout="topleft"
+             left="7"
+             name="checkbox fullbright"
+             top_pad="4"
+             width="81" />
+            <combo_box
+             height="23"
+             layout="topleft"
+             left="10"
+             name="combobox matmedia"
+             top_pad="5"
+             width="100">
+                <combo_box.item
+                 label="Materials"
+                 name="Materials"
+                 value="Materials" />
+                <combo_box.item
+                 label="Media"
+                 name="Media"
+                 value="Media" />
+            </combo_box>
+            <combo_box
+             height="23"
+             layout="topleft"
+             left_pad="10"
+             name="combobox mattype"
+             top_delta="0"
+             width="155">
+                <combo_box.item
+                 label="Texture (diffuse)"
+                 name="Texture (diffuse)"
+                 value="Texture (diffuse)" />
+                <combo_box.item
+                 label="Bumpiness (normal)"
+                 name="Bumpiness (normal)"
+                 value="Bumpiness (normal)" />
+                <combo_box.item
+                 label="Shininess (specular)"
+                 name="Shininess (specular)"
+                 value="Shininess (specular)" />
+            </combo_box>
+            <texture_picker
+             can_apply_immediately="true"
+             default_image_name="Default"
+             fallback_image="locked_image.j2c"
+             follows="left|top"
+             height="80"
+             label="Texture       "
+             layout="topleft"
+             left="10"
+             name="texture control"
+             tool_tip="Click to choose a picture"
+             top_pad="8"
+             width="64" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="10"
+             layout="topleft"
+             name="label shininess"
+             left_pad="10"
+             text_readonly_color="LabelDisabledColor"
+             top_delta="6"
+             width="90">
+                Shininess
+            </text>
+            <combo_box
+             height="23"
+             layout="topleft"
+             left_pad="10"
+             name="combobox shininess"
+             top_delta="-6"
+             width="90">
+                <combo_box.item
+                 label="None"
+                 name="None"
+                 value="None" />
+                <combo_box.item
+                 label="Low"
+                 name="Low"
+                 value="Low" />
+                <combo_box.item
+                 label="Medium"
+                 name="Medium"
+                 value="Medium" />
+                <combo_box.item
+                 label="High"
+                 name="High"
+                 value="High" />
+            </combo_box>
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="10"
+             layout="topleft"
+             left_delta="-100"
+             name="label bumpiness"
+             text_readonly_color="LabelDisabledColor"
+             top_delta="0"
+             width="90">
+                Bumpiness
+            </text>
+            <combo_box
+             height="23"
+             layout="topleft"
+             left_delta="0"
+             name="combobox bumpiness"
+             top_pad="4"
+             width="90">
+                <combo_box.item
+                 label="None"
+                 name="None"
+                 value="None" />
+                <combo_box.item
+                 label="Brightness"
+                 name="Brightness"
+                 value="Brightness" />
+                <combo_box.item
+                 label="Darkness"
+                 name="Darkness"
+                 value="Darkness" />
+                <combo_box.item
+                 label="woodgrain"
+                 name="woodgrain"
+                 value="woodgrain" />
+                <combo_box.item
+                 label="bark"
+                 name="bark"
+                 value="bark" />
+                <combo_box.item
+                 label="bricks"
+                 name="bricks"
+                 value="bricks" />
+                <combo_box.item
+                 label="checker"
+                 name="checker"
+                 value="checker" />
+                <combo_box.item
+                 label="concrete"
+                 name="concrete"
+                 value="concrete" />
+                <combo_box.item
+                 label="crustytile"
+                 name="crustytile"
+                 value="crustytile" />
+                <combo_box.item
+                 label="cutstone"
+                 name="cutstone"
+                 value="cutstone" />
+                <combo_box.item
+                 label="discs"
+                 name="discs"
+                 value="discs" />
+                <combo_box.item
+                 label="gravel"
+                 name="gravel"
+                 value="gravel" />
+                <combo_box.item
+                 label="petridish"
+                 name="petridish"
+                 value="petridish" />
+                <combo_box.item
+                 label="siding"
+                 name="siding"
+                 value="siding" />
+                <combo_box.item
+                 label="stonetile"
+                 name="stonetile"
+                 value="stonetile" />
+                <combo_box.item
+                 label="stucco"
+                 name="stucco"
+                 value="stucco" />
+                <combo_box.item
+                 label="suction"
+                 name="suction"
+                 value="suction" />
+                <combo_box.item
+                 label="weave"
+                 name="weave"
+                 value="weave" />
+            </combo_box>
+            <text
+			 follows="left|top|right"
+			 height="9"
+			 layout="topleft"
+			 left="10"
+			 top_delta="-8"
+             use_ellipses="true"
+			 read_only="true"
+			 name="media_info"
+			 width="280">
+			 URL of chosen media, if any, goes here
+			 </text>
+			<button
+			 follows="top|left"
+			 height="18"
+			 layout="topleft"
+			 left="10"
+			 name="add_media"
+			 top_pad="4"
+			 tool_tip="Add Media"
+			 label="Choose..."
+			 width="85">
+				<button.commit_callback
+				function="BuildTool.AddMedia"/>
+			</button>
+			<button
+			 follows="top|left"
+			 height="18"
+			 layout="topleft"
+			 left_pad="5"
+			 name="delete_media"
+			 tool_tip="Delete this media texture"
+			 top_delta="0"
+			 label="Remove"
+			 width="85">
+				<button.commit_callback
+				function="BuildTool.DeleteMedia"/>
+			</button>
+            <button
+			 follows="left|top"
+			 height="18"
+			 label="Align"
+			 label_selected="Align Media"
+			 layout="topleft"
+			 left_pad="5"
+			 name="button align"
+			 top_delta="0"
+			 tool_tip="Align media texture (must load first)"
+			 width="85" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="10"
+             layout="topleft"
+             left="10"
+             name="tex gen"
+             text_readonly_color="LabelDisabledColor"
+             top_pad="60"
+             width="140">
+                Mapping
+            </text>
+            <combo_box
+             height="23"
+             layout="topleft"
+             left_pad="0"
+             name="combobox texgen"
+             top_pad="-13"
+             width="125">
+                <combo_box.item
+                 label="Default"
+                 name="Default"
+                 value="Default" />
+                <combo_box.item
+                 label="Planar"
+                 name="Planar"
+                 value="Planar" />
+            </combo_box>
+            <spinner
+             follows="left|top"
+             height="19"
+             initial_value="0"
+             label="Horizontal scale"
+             label_width="205"
+             layout="topleft"
+             left="10"
+             min_val="-100"
+             max_val="100"
+             name="TexScaleU"
+             top_pad="5"
+             width="265" />
+            <!-- <check_box
+             height="19"
+             label="Flip"
+             layout="topleft"
+             left_pad="5"
+             name="checkbox flip s"
+             top_delta="0"
+             width="70" /> -->
+            <spinner
+             follows="left|top"
+             height="19"
+             initial_value="0"
+             label="Vertical scale"
+             label_width="205"
+             layout="topleft"
+             left="10"
+             min_val="-100"
+             max_val="100"
+             name="TexScaleV"
+             width="265" />
+            <!-- <check_box
+             height="19"
+             label="Flip"
+             layout="topleft"
+             left_pad="5"
+             name="checkbox flip t"
+             top_delta="0"
+             width="70" /> -->
+            <spinner
+             decimal_digits="1"
+             follows="left|top"
+             height="19"
+             initial_value=""
+			 label="Repeats per meter"
+             layout="topleft"
+			 label_width="205"
+             left="10"
+             max_val="10"
+             min_val="0.1"
+             name="rptctrl"
+             width="265" />
+            <!-- <button
+             follows="left|top"
+             height="19"
+             label="Apply"
+             label_selected="Apply"
+             layout="topleft"
+             left_pad="5"
+             name="button apply"
+             width="75" /> -->
+            <spinner
+             decimal_digits="2"
+             follows="left|top"
+             height="19"
+             increment="1"
+             initial_value="0"
+			 label="Rotation degrees"
+             layout="topleft"
+			 label_width="205"
+             left="10"
+             max_val="9999"
+             min_val="-9999"
+             name="TexRot"
+             width="265" />
+
+            <spinner
+             follows="left|top"
+             height="19"
+             initial_value="0"
+             label="Horizontal offset"
+             label_width="205"
+             layout="topleft"
+             left="10"
+             min_val="-1"
+             name="TexOffsetU"
+             width="265" />
+            <spinner
+             follows="left|top"
+             height="19"
+             initial_value="0"
+             label="Vertical offset"
+             label_width="205"
+             layout="topleft"
+             left="10"
+             min_val="-1"
+             name="TexOffsetV"
+             width="265" />
+            <check_box
+             follows="top|left"
+             height="16"
+             initial_value="false"
+             label="Align planar faces"
+             layout="topleft"
+             left="7"
+             name="checkbox planar align"
+             tool_tip="Align textures on all selected faces with the last selected face. Requires Planar texture mapping."
+             top_delta="26"
+             width="260" />
+            <web_browser
+             visible="false"
+             enabled="false"
+             border_visible="true"
+             bottom_delta="0"
+             follows="top|left"
+             left="0"
+             name="title_media"
+             width="4"
+             height="4"
+             start_url="about:blank"
+             decouple_texture_size="true" />
+	   </panel>
-- 
cgit v1.2.3