diff options
23 files changed, 469 insertions, 26 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 133f93ec1a..fd52c56a87 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -201,6 +201,7 @@ set(viewer_SOURCE_FILES      llfloatermediasettings.cpp      llfloatermemleak.cpp      llfloatermodelpreview.cpp +    llfloatermodelwizard.cpp      llfloaternamedesc.cpp      llfloaternotificationsconsole.cpp      llfloateropenobject.cpp @@ -741,6 +742,7 @@ set(viewer_HEADER_FILES      llfloatermediasettings.h      llfloatermemleak.h      llfloatermodelpreview.h +    llfloatermodelwizard.h      llfloaternamedesc.h      llfloaternotificationsconsole.h      llfloateropenobject.h diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 1e0624f8c4..0cfebdb399 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -212,24 +212,18 @@ BOOL stop_gloderror()  	return FALSE;  } -class LLMeshFilePicker : public LLFilePickerThread -{ -public: -	LLFloaterModelPreview* mFMP; -	S32 mLOD; -	LLMeshFilePicker(LLFloaterModelPreview* fmp, S32 lod) +LLMeshFilePicker::LLMeshFilePicker(LLModelPreview* mp, S32 lod)  	: LLFilePickerThread(LLFilePicker::FFLOAD_COLLADA)  	{ -		mFMP = fmp; +		mMP = mp;  		mLOD = lod;  	} -	 -	virtual void notify(const std::string& filename) -	{ -		mFMP->mModelPreview->loadModel(mFile, mLOD); -	} -}; + +void LLMeshFilePicker::notify(const std::string& filename) +{ +	mMP->loadModel(mFile, mLOD); +}  //----------------------------------------------------------------------------- @@ -242,7 +236,6 @@ LLFloater(key)  	mLastMouseX = 0;  	mLastMouseY = 0;  	mGLName = 0; -	mLoading = FALSE;  }  //----------------------------------------------------------------------------- @@ -294,6 +287,7 @@ BOOL LLFloaterModelPreview::postBuild()  	mModelPreview = new LLModelPreview(512, 512, this);  	mModelPreview->setPreviewTarget(16.f); +	mModelPreview->setAspect((F32) mPreviewRect.getWidth()/mPreviewRect.getHeight());  	//set callbacks for left click on line editor rows  	for (U32 i = 0; i <= LLModel::LOD_HIGH; i++) @@ -348,9 +342,9 @@ LLFloaterModelPreview::~LLFloaterModelPreview()  void LLFloaterModelPreview::loadModel(S32 lod)  { -	mLoading = TRUE; +	 mModelPreview->mLoading = true; -	(new LLMeshFilePicker(this, lod))->getFile(); +	(new LLMeshFilePicker(mModelPreview, lod))->getFile();  }  void LLFloaterModelPreview::setLimit(S32 lod, S32 limit) @@ -493,7 +487,7 @@ void LLFloaterModelPreview::draw()  	mModelPreview->update(); -	if (!mLoading) +	if (!mModelPreview->mLoading)  	{  		childSetTextArg("status", "[STATUS]", getString("status_idle"));  	} @@ -1966,7 +1960,7 @@ LLColor4 LLModelLoader::getDaeColor(daeElement* element)  // LLModelPreview  //----------------------------------------------------------------------------- -LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloaterModelPreview* fmp)  +LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)   : LLViewerDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE), LLMutex(NULL)  {  	mNeedsUpdate = TRUE; @@ -1978,6 +1972,7 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloaterModelPreview* fmp  	mPreviewLOD = 0;  	mModelLoader = NULL;  	mDirty = false; +	mLoading = false;  	for (U32 i = 0; i < LLModel::NUM_LODS; i++)  	{ @@ -2216,7 +2211,7 @@ void LLModelPreview::loadModel(std::string filename, S32 lod)  			mFMP->closeFloater(false);  		} -		mFMP->mLoading = false; +		mLoading = false;  		return;  	} @@ -2339,7 +2334,7 @@ void LLModelPreview::loadModelCallback(S32 lod)  		resetPreviewTarget();  	} -	mFMP->mLoading = FALSE; +	mLoading = false;  	refresh();  } @@ -3369,9 +3364,7 @@ BOOL LLModelPreview::render()  	glClear(GL_DEPTH_BUFFER_BIT); -	F32 aspect = (F32) mFMP->mPreviewRect.getWidth()/mFMP->mPreviewRect.getHeight(); - -	LLViewerCamera::getInstance()->setAspect(aspect); +	LLViewerCamera::getInstance()->setAspect(mAspect);  	LLViewerCamera::getInstance()->setView(LLViewerCamera::getInstance()->getDefaultFOV() / mCameraZoom);  	LLVector3 offset = mCameraOffset; diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index 2e98b8eb18..b0317e3d2d 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -34,6 +34,7 @@  #include "llmeshrepository.h"  #include "llmodel.h"  #include "llthread.h" +#include "llviewermenufile.h"  class LLComboBox;  class LLJoint; @@ -202,7 +203,6 @@ protected:  	S32				mLastMouseY;  	LLRect			mPreviewRect;  	U32				mGLName; -	BOOL			mLoading;  	static S32		sUploadAmount;  	LLPointer<DecompRequest> mCurRequest; @@ -210,11 +210,23 @@ protected:  }; +class LLMeshFilePicker : public LLFilePickerThread +{ +public: +	LLMeshFilePicker(LLModelPreview* mp, S32 lod); +	virtual void notify(const std::string& filename); + +private: +	LLModelPreview* mMP; +	S32 mLOD; +}; + +  class LLModelPreview : public LLViewerDynamicTexture, public LLMutex  {   public: -	 LLModelPreview(S32 width, S32 height, LLFloaterModelPreview* fmp); +	 LLModelPreview(S32 width, S32 height, LLFloater* fmp);  	virtual ~LLModelPreview();  	void resetPreviewTarget(); @@ -244,15 +256,18 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex  	void clearIncompatible(S32 lod);  	void updateStatusMessages();  	bool containsRiggedAsset( void ); +	void setAspect(F32 aspect) { mAspect = aspect; }; +	//void setLoading(bool loading) { mLoading = loading; };  	static void	textureLoadedCallback( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata );   protected:  	friend class LLFloaterModelPreview; +	friend class LLFloaterModelWizard;  	friend class LLFloaterModelPreview::DecompRequest;  	friend class LLPhysicsDecomp; -	LLFloaterModelPreview* mFMP; +	LLFloater* mFMP;  	BOOL        mNeedsUpdate;  	bool		mDirty; @@ -268,6 +283,8 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex  	U32			mResourceCost;  	S32			mLimit[LLModel::NUM_LODS];  	std::string mLODFile[LLModel::NUM_LODS]; +	F32         mAspect; +	bool		mLoading;  	LLModelLoader* mModelLoader; diff --git a/indra/newview/llfloatermodelwizard.cpp b/indra/newview/llfloatermodelwizard.cpp new file mode 100644 index 0000000000..416501cc8b --- /dev/null +++ b/indra/newview/llfloatermodelwizard.cpp @@ -0,0 +1,112 @@ +/**  + * @file llfloatermodelwizard.cpp + * @author Leyla Farazha + * @brief Implementation of the LLFloaterModelWizard class. + * + * $LicenseInfo:firstyear=2002&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ + + +#include "llviewerprecompiledheaders.h" + +#include "lldrawable.h" +#include "llfloater.h" +#include "llfloatermodelwizard.h" +#include "llfloatermodelpreview.h" +#include "llfloaterreg.h" + + + +LLFloaterModelWizard::LLFloaterModelWizard(const LLSD& key) +	: LLFloater(key) +{ +} + +void LLFloaterModelWizard::loadModel() +{ +	 mModelPreview->mLoading = TRUE; +	 +	(new LLMeshFilePicker(mModelPreview, 3))->getFile(); +} + + +BOOL LLFloaterModelWizard::postBuild() +{ +	LLView* preview_panel = getChild<LLView>("preview_panel"); + +	childSetValue("import_scale", (F32) 0.67335826); + +	getChild<LLUICtrl>("browse")->setCommitCallback(boost::bind(&LLFloaterModelWizard::loadModel, this)); + +	mPreviewRect = preview_panel->getRect(); +	 +	mModelPreview = new LLModelPreview(512, 512, this); +	mModelPreview->setPreviewTarget(16.f); +	mModelPreview->setAspect((F32) mPreviewRect.getWidth()/mPreviewRect.getHeight()); + +	center(); + +	return TRUE; +} + +void LLFloaterModelWizard::draw() +{ +	LLFloater::draw(); +	LLRect r = getRect(); +	 +	mModelPreview->update(); + +	if (mModelPreview) +	{ +		gGL.color3f(1.f, 1.f, 1.f); +		 +		gGL.getTexUnit(0)->bind(mModelPreview); +		 + +		LLView* preview_panel = getChild<LLView>("preview_panel"); + +		LLRect rect = preview_panel->getRect(); +		if (rect != mPreviewRect) +		{ +			mModelPreview->refresh(); +			mPreviewRect = preview_panel->getRect(); +		} +		 +		LLRect item_rect; +		preview_panel->localRectToOtherView(preview_panel->getLocalRect(), &item_rect, this); +		 +		gGL.begin( LLRender::QUADS ); +		{ +			gGL.texCoord2f(0.f, 1.f); +			gGL.vertex2i(mPreviewRect.mLeft, item_rect.mTop); +			gGL.texCoord2f(0.f, 0.f); +			gGL.vertex2i(mPreviewRect.mLeft, item_rect.mBottom); +			gGL.texCoord2f(1.f, 0.f); +			gGL.vertex2i(mPreviewRect.mRight, item_rect.mBottom); +			gGL.texCoord2f(1.f, 1.f); +			gGL.vertex2i(mPreviewRect.mRight, item_rect.mTop); +		} +		gGL.end(); +		 +		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); +	} +} diff --git a/indra/newview/llfloatermodelwizard.h b/indra/newview/llfloatermodelwizard.h new file mode 100644 index 0000000000..c766697d47 --- /dev/null +++ b/indra/newview/llfloatermodelwizard.h @@ -0,0 +1,58 @@ +/**  + * @file llfloatermodelwizard.h + * + * $LicenseInfo:firstyear=2009&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ + +#ifndef LLFLOATERMODELWIZARD_H +#define LLFLOATERMODELWIZARD_H + +class LLModelPreview; + +class LLFloaterModelWizard : public LLFloater +{ +public: +	LLFloaterModelWizard(const LLSD& key); +	virtual ~LLFloaterModelWizard() {}; +	/*virtual*/	BOOL	postBuild(); +	void			draw(); +	void loadModel(); +	//void onSave(); +	//void onReset(); +	//void onCancel(); +	///*virtual*/ void onOpen(const LLSD& key); +	 +private: +	 +	LLModelPreview*	mModelPreview; +	LLRect			mPreviewRect; +}; +/* +namespace LLFloaterDisplayNameUtil +{ +	// Register with LLFloaterReg +	void registerFloater(); +} +*/ + + +#endif diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 9ee446bc71..849ac7c830 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -72,6 +72,7 @@  #include "llfloaterlandholdings.h"  #include "llfloatermap.h"  #include "llfloatermemleak.h" +#include "llfloatermodelwizard.h"  #include "llfloaternamedesc.h"  #include "llfloaternotificationsconsole.h"  #include "llfloateropenobject.h" @@ -251,6 +252,7 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("upload_image", "floater_image_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterImagePreview>, "upload");  	LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload");  	LLFloaterReg::add("upload_model", "floater_model_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterModelPreview>, "upload"); +	LLFloaterReg::add("upload_model_wizard", "floater_model_wizard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterModelWizard>, "upload");  	LLFloaterReg::add("voice_controls", "floater_voice_controls.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallFloater>);  	LLFloaterReg::add("voice_effect", "floater_voice_effect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVoiceEffect>); diff --git a/indra/newview/skins/default/textures/model_wizard/check_mark.png b/indra/newview/skins/default/textures/model_wizard/check_mark.png Binary files differnew file mode 100644 index 0000000000..2c05297f4f --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/check_mark.png diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_disabled.png b/indra/newview/skins/default/textures/model_wizard/left_button_disabled.png Binary files differnew file mode 100644 index 0000000000..c7c0eaa96b --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/left_button_disabled.png diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_off.png b/indra/newview/skins/default/textures/model_wizard/left_button_off.png Binary files differnew file mode 100644 index 0000000000..4a73c254fc --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/left_button_off.png diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_over.png b/indra/newview/skins/default/textures/model_wizard/left_button_over.png Binary files differnew file mode 100644 index 0000000000..6fb5c432de --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/left_button_over.png diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_press.png b/indra/newview/skins/default/textures/model_wizard/left_button_press.png Binary files differnew file mode 100644 index 0000000000..fa18517933 --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/left_button_press.png diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_disabled.png b/indra/newview/skins/default/textures/model_wizard/middle_button_disabled.png Binary files differnew file mode 100644 index 0000000000..bed1a701bd --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/middle_button_disabled.png diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_off.png b/indra/newview/skins/default/textures/model_wizard/middle_button_off.png Binary files differnew file mode 100644 index 0000000000..57ce9af574 --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/middle_button_off.png diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_over.png b/indra/newview/skins/default/textures/model_wizard/middle_button_over.png Binary files differnew file mode 100644 index 0000000000..2c43022f0e --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/middle_button_over.png diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_press.png b/indra/newview/skins/default/textures/model_wizard/middle_button_press.png Binary files differnew file mode 100644 index 0000000000..6b8c1baca4 --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/middle_button_press.png diff --git a/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png b/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png Binary files differnew file mode 100644 index 0000000000..d0b213cdc5 --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png diff --git a/indra/newview/skins/default/textures/model_wizard/progress_light.png b/indra/newview/skins/default/textures/model_wizard/progress_light.png Binary files differnew file mode 100644 index 0000000000..019344f812 --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/progress_light.png diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_disabled.png b/indra/newview/skins/default/textures/model_wizard/right_button_disabled.png Binary files differnew file mode 100644 index 0000000000..51505e80c5 --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/right_button_disabled.png diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_off.png b/indra/newview/skins/default/textures/model_wizard/right_button_off.png Binary files differnew file mode 100644 index 0000000000..9f93efbd93 --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/right_button_off.png diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_over.png b/indra/newview/skins/default/textures/model_wizard/right_button_over.png Binary files differnew file mode 100644 index 0000000000..3a4ec1a315 --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/right_button_over.png diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_press.png b/indra/newview/skins/default/textures/model_wizard/right_button_press.png Binary files differnew file mode 100644 index 0000000000..1f1b4c2ed5 --- /dev/null +++ b/indra/newview/skins/default/textures/model_wizard/right_button_press.png diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml new file mode 100644 index 0000000000..3f11f7d4dd --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml @@ -0,0 +1,247 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + layout="topleft" + name="Model Wizard" + help_topic="model_wizard" + bg_opaque_image_overlay="0.5 0.5 0.5 1" + height="450" + save_rect="true" + title="UPLOAD MODEL WIZARD"  + width="530"> +	<panel +		   height="600"> +		<button +	     top="30" +		 left="410" +		 height="32" +		 name="upload"  +		 enabled="false"  +		 label="5. Upload"  +		 border="false"  +		 image_unselected="model_wizard/middle_button_off.png" +		 image_selected="model_wizard/middle_button_press.png" +		image_hover_unselected="model_wizard/middle_button_over.png" +		image_disabled="model_wizard/middle_button_disabled.png" +		image_disabled_selected="model_wizard/middle_button_disabled.png" +		 width="110"/> +		<button +	     top="30" +		 left="310" +		 height="32" +		  tab_stop="false" +		 name="review" +		 label="4. Review" +		 enabled="false" +		 border="false" +		 image_unselected="model_wizard/middle_button_off.png" +		 image_selected="model_wizard/middle_button_press.png" +		image_hover_unselected="model_wizard/middle_button_over.png" +		image_disabled="model_wizard/middle_button_disabled.png" +		image_disabled_selected="model_wizard/middle_button_disabled.png" +		 width="110"/> +		<button +	     top="30" +		 left="210" +		 height="32" +		 name="physics" +		 label="3. Physics" +		 tab_stop="false" +		 enabled="false" +		 border="false" +		 image_unselected="model_wizard/middle_button_off.png" +		 image_selected="model_wizard/middle_button_press.png" +		image_hover_unselected="model_wizard/middle_button_over.png" +		image_disabled="model_wizard/middle_button_disabled.png" +		image_disabled_selected="model_wizard/middle_button_disabled.png" +		 width="110"/> +		<button +	     top="30" +		 left="115" +		 name="optimize" +		 label="2. Optimize" +		  tab_stop="false" +		 height="32" +		 border="false" +		 image_unselected="model_wizard/middle_button_off.png" +		 image_selected="model_wizard/middle_button_press.png" +		image_hover_unselected="model_wizard/middle_button_over.png" +		image_disabled="model_wizard/middle_button_disabled.png" +		image_disabled_selected="model_wizard/middle_button_disabled.png" +		 width="110"/> +		<button +	     top="30" +		 left="15" +		 name="choose_file" +		 enabled="false" +		 label="1. Choose File" +		 height="32" +		 image_unselected="model_wizard/left_button_off.png" +		 image_selected="model_wizard/left_button_press.png" +		image_hover_unselected="model_wizard/left_button_over.png" +		image_disabled="model_wizard/left_button_disabled.png" +		image_disabled_selected="model_wizard/left_button_disabled.png" +		 width="110"/> +		<panel +		 top_pad="20" +		 height="20" +		 width="500"  +		 bg_opaque_color="DkGray2" +		 background_visible="true" +		 background_opaque="true"  +		 left="20"> +		<text +		 width="200" +		 left="10"  +		 top="2"  +		 height="10" +		 font="SansSerifBig" +		 layout="topleft" +		 > +			  Upload Model +		</text></panel> +		<text +		 top_pad="14" +		 width="460" +		 height="20" +		 font="SansSerifSmall" +		 layout="topleft" +		 word_wrap="true" +		 left_delta="0"> +			This wizard will help you import mesh models to Second Life.  First specify a file containing the model you wish to import.  Second Life supports COLLADA (.dae) files. +		</text> + +		<panel +			top_delta="40" +			left="15" +		 height="240" +		 width="500" +		 bg_opaque_color="DkGray2" +		 background_visible="true" +		 background_opaque="true"> + +			<text +	 type="string" +	 length="1" +	 follows="left|top" +	 top="10"  +	 height="10" +	 layout="topleft" +	 left_delta="10" +	 name="Cache location" +	 width="300"> +				Filename: +			</text> +			<line_editor +			 control_name="CacheLocationTopFolder" +			 border_style="line" +			 border_thickness="1" +			 follows="left|top" +			 font="SansSerifSmall" +			 height="20" +			 layout="topleft" +	 left_delta="0" +			 max_length="4096" +			 name="cache_location" +			 top_pad="5" +			 width="220" /> +			<button +			 follows="left|top" +			 height="23" +			 label="Browse..." +			 label_selected="Browse..." +			 layout="topleft" +			 left_pad="10" +			 name="browse" +			 top_delta="-1" +			 width="75"> +			</button> +			<text +	top_delta="-15" +	width="200" +	height="15" +	font="SansSerifSmall" +	layout="topleft" +	left_pad="24"> +				Model Preview: +			</text> + +			<!-- Placeholder panel for 3D preview render --> +			 +			<panel +					left_delta="-2" +				   top_pad="0" +					name="preview_panel" +					bevel_style="none" +				   border_style="line" +					border="true" +				   height="150" +			  follows="all" +				   width="150"> +			</panel> + +			<text +			 top_pad="10" +			 width="130" +			 height="15" +			 left="340" +			 word_wrap="true" +		 > +				Dimensions (meters): +			</text> +			<text +			 top_pad="5" +			 width="10" +			 height="15" +			 left_delta="0" +		 > +				X: +			</text> +			<text +			 top_delta="0" +			 width="10" +			 height="15" +			 left_pad="25" +		 > +				Y: +			</text> +			<text +			 top_delta="0" +			 width="10" +			 height="15" +			 left_pad="25" +		 > +				Z: +			</text> +			<text +			 top="100" +			 width="320" +			 height="40" +			 left="10" +			 word_wrap="true" +		 > +				Note: +Advanced users familiar with 3d content creation tools may prefer to use the Advanced Mesh Import window. +			</text> +		</panel> +		<button +		 top="410" +		 right="-175"  +		 width="80" +		 height="20" +		 label="<< Back" /> +		<button +		 top="410" +		 right="-92" +		 width="80" +		 height="20" +		 label="Next >> " /> +		<button +		 top="410" +		 right="-15" +		 width="70" +		 height="20" +		 label="Cancel" /> +	</panel> +	<spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> +</floater> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index ac854e1736..38833d14df 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -972,6 +972,18 @@              <menu_item_call.on_visible              function="File.MeshEnabled"/>              </menu_item_call> +			<menu_item_call +           label="Model Wizard..." +           layout="topleft" +           name="Upload Model Wizard"> +				<menu_item_call.on_click +				 function="Floater.Show" +				 parameter="upload_model_wizard" /> +				<menu_item_call.on_enable +				 function="File.EnableUploadModel" /> +				<menu_item_call.on_visible +				function="File.MeshEnabled"/> +			</menu_item_call>              <menu_item_call               label="Bulk (L$[COST] per file)..."               layout="topleft"  | 
