diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llaccountingcostmanager.cpp | 17 | ||||
-rw-r--r-- | indra/newview/llaccountingcostmanager.h | 4 | ||||
-rw-r--r-- | indra/newview/llfloaterobjectweights.cpp | 124 | ||||
-rw-r--r-- | indra/newview/llfloaterobjectweights.h | 36 | ||||
-rw-r--r-- | indra/newview/llfloatertools.cpp | 113 | ||||
-rw-r--r-- | indra/newview/llfloatertools.h | 4 | ||||
-rwxr-xr-x | indra/newview/skins/default/xui/en/floater_model_preview.xml | 312 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_object_weights.xml | 4 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_tools.xml | 10 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 2 |
10 files changed, 342 insertions, 284 deletions
diff --git a/indra/newview/llaccountingcostmanager.cpp b/indra/newview/llaccountingcostmanager.cpp index 0669bdfffa..8767955fcb 100644 --- a/indra/newview/llaccountingcostmanager.cpp +++ b/indra/newview/llaccountingcostmanager.cpp @@ -41,8 +41,13 @@ public: : mObjectIDs( objectIDs ), mObserverHandle( observer_handle ) { + LLAccountingCostObserver* observer = mObserverHandle.get(); + if (observer) + { + mTransactionID = observer->getTransactionID(); + } } - + void clearPendingRequests ( void ) { for ( LLSD::array_iterator iter = mObjectIDs.beginArray(); iter != mObjectIDs.endArray(); ++iter ) @@ -57,7 +62,7 @@ public: clearPendingRequests(); LLAccountingCostObserver* observer = mObserverHandle.get(); - if (observer) + if (observer && observer->getTransactionID() == mTransactionID) { observer->setErrorStatus(statusNum, reason); } @@ -76,9 +81,6 @@ public: F32 networkCost = 0.0f; F32 simulationCost = 0.0f; - //LLTransactionID transactionID; - - //transactionID = content["selected"][i]["local_id"].asUUID(); physicsCost = content["selected"]["physics"].asReal(); networkCost = content["selected"]["streaming"].asReal(); simulationCost = content["selected"]["simulation"].asReal(); @@ -86,7 +88,7 @@ public: SelectionCost selectionCost( /*transactionID,*/ physicsCost, networkCost, simulationCost ); LLAccountingCostObserver* observer = mObserverHandle.get(); - if (observer) + if (observer && observer->getTransactionID() == mTransactionID) { observer->onWeightsUpdate(selectionCost); } @@ -99,6 +101,9 @@ private: //List of posted objects LLSD mObjectIDs; + // Current request ID + LLUUID mTransactionID; + // Cost update observer handle LLHandle<LLAccountingCostObserver> mObserverHandle; }; diff --git a/indra/newview/llaccountingcostmanager.h b/indra/newview/llaccountingcostmanager.h index cccdc2e2d9..0bca1f54ef 100644 --- a/indra/newview/llaccountingcostmanager.h +++ b/indra/newview/llaccountingcostmanager.h @@ -40,9 +40,13 @@ public: virtual void onWeightsUpdate(const SelectionCost& selection_cost) = 0; virtual void setErrorStatus(U32 status, const std::string& reason) = 0; const LLHandle<LLAccountingCostObserver>& getObserverHandle() const { return mObserverHandle; } + const LLUUID& getTransactionID() { return mTransactionID; } protected: + virtual void generateTransactionID() = 0; + LLRootHandle<LLAccountingCostObserver> mObserverHandle; + LLUUID mTransactionID; }; //=============================================================================== class LLAccountingCostManager : public LLSingleton<LLAccountingCostManager> diff --git a/indra/newview/llfloaterobjectweights.cpp b/indra/newview/llfloaterobjectweights.cpp index 7ad34431fb..0862cd2897 100644 --- a/indra/newview/llfloaterobjectweights.cpp +++ b/indra/newview/llfloaterobjectweights.cpp @@ -33,68 +33,36 @@ #include "lltextbox.h" #include "llagent.h" -#include "llselectmgr.h" #include "llviewerparcelmgr.h" #include "llviewerregion.h" -/** - * struct LLCrossParcelFunctor - * - * A functor that checks whether a bounding box for all - * selected objects crosses a region or parcel bounds. - */ -struct LLCrossParcelFunctor : public LLSelectedObjectFunctor +// virtual +bool LLCrossParcelFunctor::apply(LLViewerObject* obj) { - /*virtual*/ bool apply(LLViewerObject* obj) - { - // Add the root object box. - mBoundingBox.addBBoxAgent(LLBBox(obj->getPositionRegion(), obj->getRotationRegion(), obj->getScale() * -0.5f, obj->getScale() * 0.5f).getAxisAligned()); + // Add the root object box. + mBoundingBox.addBBoxAgent(LLBBox(obj->getPositionRegion(), obj->getRotationRegion(), obj->getScale() * -0.5f, obj->getScale() * 0.5f).getAxisAligned()); - // Extend the bounding box across all the children. - LLViewerObject::const_child_list_t children = obj->getChildren(); - for (LLViewerObject::const_child_list_t::const_iterator iter = children.begin(); - iter != children.end(); iter++) - { - LLViewerObject* child = *iter; - mBoundingBox.addBBoxAgent(LLBBox(child->getPositionRegion(), child->getRotationRegion(), child->getScale() * -0.5f, child->getScale() * 0.5f).getAxisAligned()); - } - - bool result = false; - - LLViewerRegion* region = obj->getRegion(); - if (region) - { - std::vector<LLBBox> boxes; - boxes.push_back(mBoundingBox); - result = region->objectsCrossParcel(boxes); - } - - return result; + // Extend the bounding box across all the children. + LLViewerObject::const_child_list_t children = obj->getChildren(); + for (LLViewerObject::const_child_list_t::const_iterator iter = children.begin(); + iter != children.end(); iter++) + { + LLViewerObject* child = *iter; + mBoundingBox.addBBoxAgent(LLBBox(child->getPositionRegion(), child->getRotationRegion(), child->getScale() * -0.5f, child->getScale() * 0.5f).getAxisAligned()); } -private: - LLBBox mBoundingBox; -}; + bool result = false; -/** - * Class LLLandImpactsObserver - * - * An observer class to monitor parcel selection and update - * the land impacts data from a parcel containing the selected object. - */ -class LLLandImpactsObserver : public LLParcelObserver -{ -public: - virtual void changed() + LLViewerRegion* region = obj->getRegion(); + if (region) { - LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::getTypedInstance<LLFloaterObjectWeights>("object_weights"); - if(object_weights_floater) - { - object_weights_floater->updateLandImpacts(); - } + std::vector<LLBBox> boxes; + boxes.push_back(mBoundingBox); + result = region->objectsCrossParcel(boxes); } -}; + return result; +} LLFloaterObjectWeights::LLFloaterObjectWeights(const LLSD& key) : LLFloater(key), @@ -107,22 +75,12 @@ LLFloaterObjectWeights::LLFloaterObjectWeights(const LLSD& key) mSelectedOnLand(NULL), mRezzedOnLand(NULL), mRemainingCapacity(NULL), - mTotalCapacity(NULL), - mLandImpactsObserver(NULL) + mTotalCapacity(NULL) { - mLandImpactsObserver = new LLLandImpactsObserver(); - LLViewerParcelMgr::getInstance()->addObserver(mLandImpactsObserver); } LLFloaterObjectWeights::~LLFloaterObjectWeights() { - mObjectSelection = NULL; - mParcelSelection = NULL; - - mSelectMgrConnection.disconnect(); - - LLViewerParcelMgr::getInstance()->removeObserver(mLandImpactsObserver); - delete mLandImpactsObserver; } // virtual @@ -147,21 +105,8 @@ BOOL LLFloaterObjectWeights::postBuild() // virtual void LLFloaterObjectWeights::onOpen(const LLSD& key) { - mSelectMgrConnection = LLSelectMgr::instance().mUpdateSignal.connect(boost::bind(&LLFloaterObjectWeights::refresh, this)); - - mObjectSelection = LLSelectMgr::getInstance()->getEditSelection(); - mParcelSelection = LLViewerParcelMgr::getInstance()->getFloatingParcelSelection(); - refresh(); -} - -// virtual -void LLFloaterObjectWeights::onClose(bool app_quitting) -{ - mSelectMgrConnection.disconnect(); - - mObjectSelection = NULL; - mParcelSelection = NULL; + updateLandImpacts(LLViewerParcelMgr::getInstance()->getFloatingParcelSelection()->getParcel()); } // virtual @@ -190,9 +135,8 @@ void LLFloaterObjectWeights::setErrorStatus(U32 status, const std::string& reaso toggleWeightsLoadingIndicators(false); } -void LLFloaterObjectWeights::updateLandImpacts() +void LLFloaterObjectWeights::updateLandImpacts(const LLParcel* parcel) { - LLParcel *parcel = mParcelSelection->getParcel(); if (!parcel || LLSelectMgr::getInstance()->getSelection()->isEmpty()) { updateIfNothingSelected(); @@ -241,21 +185,6 @@ void LLFloaterObjectWeights::refresh() toggleLandImpactsLoadingIndicators(false); } - else - { - LLViewerObject* selected_object = mObjectSelection->getFirstObject(); - if (selected_object) - { - // Select a parcel at the currently selected object's position. - LLViewerParcelMgr::getInstance()->selectParcelAt(selected_object->getPositionGlobal()); - - toggleLandImpactsLoadingIndicators(true); - } - else - { - llwarns << "Failed to get selected object" << llendl; - } - } LLViewerRegion* region = gAgent.getRegion(); if (region && region->capabilitiesReceived()) @@ -269,6 +198,9 @@ void LLFloaterObjectWeights::refresh() std::string url = region->getCapability("ResourceCostSelected"); if (!url.empty()) { + // Update the transaction id before the new fetch request + generateTransactionID(); + LLAccountingCostManager::getInstance()->fetchCosts(Roots, url, getObserverHandle()); toggleWeightsLoadingIndicators(true); } @@ -280,6 +212,12 @@ void LLFloaterObjectWeights::refresh() } } +// virtual +void LLFloaterObjectWeights::generateTransactionID() +{ + mTransactionID.generate(); +} + void LLFloaterObjectWeights::toggleWeightsLoadingIndicators(bool visible) { childSetVisible("download_loading_indicator", visible); diff --git a/indra/newview/llfloaterobjectweights.h b/indra/newview/llfloaterobjectweights.h index 50d028909e..9a244573be 100644 --- a/indra/newview/llfloaterobjectweights.h +++ b/indra/newview/llfloaterobjectweights.h @@ -30,35 +30,46 @@ #include "llfloater.h" #include "llaccountingcostmanager.h" +#include "llselectmgr.h" -class LLLandImpactsObserver; -class LLObjectSelection; -class LLParcelSelection; +class LLParcel; class LLTextBox; +/** + * struct LLCrossParcelFunctor + * + * A functor that checks whether a bounding box for all + * selected objects crosses a region or parcel bounds. + */ +struct LLCrossParcelFunctor : public LLSelectedObjectFunctor +{ + /*virtual*/ bool apply(LLViewerObject* obj); + +private: + LLBBox mBoundingBox; +}; + + class LLFloaterObjectWeights : public LLFloater, LLAccountingCostObserver { public: LOG_CLASS(LLFloaterObjectWeights); - typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle; - typedef LLSafeHandle<LLParcelSelection> LLParcelSelectionHandle; - LLFloaterObjectWeights(const LLSD& key); ~LLFloaterObjectWeights(); /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); - /*virtual*/ void onClose(bool app_quitting); /*virtual*/ void onWeightsUpdate(const SelectionCost& selection_cost); /*virtual*/ void setErrorStatus(U32 status, const std::string& reason); - void updateLandImpacts(); + void updateLandImpacts(const LLParcel* parcel); + void refresh(); private: - void refresh(); + /*virtual*/ void generateTransactionID(); void toggleWeightsLoadingIndicators(bool visible); void toggleLandImpactsLoadingIndicators(bool visible); @@ -77,13 +88,6 @@ private: LLTextBox *mRezzedOnLand; LLTextBox *mRemainingCapacity; LLTextBox *mTotalCapacity; - - LLLandImpactsObserver *mLandImpactsObserver; - - LLObjectSelectionHandle mObjectSelection; - LLParcelSelectionHandle mParcelSelection; - - boost::signals2::connection mSelectMgrConnection; }; #endif //LL_LLFLOATEROBJECTWEIGHTS_H diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 48aeeafcfd..1008b4a6e4 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -41,6 +41,7 @@ #include "llfloaterbuildoptions.h" #include "llfloatermediasettings.h" #include "llfloateropenobject.h" +#include "llfloaterobjectweights.h" #include "llfloaterreg.h" #include "llfocusmgr.h" #include "llmediaentry.h" @@ -54,6 +55,7 @@ #include "llpanelobject.h" #include "llpanelvolume.h" #include "llpanelpermissions.h" +#include "llparcel.h" #include "llradiogroup.h" #include "llresmgr.h" #include "llselectmgr.h" @@ -117,6 +119,24 @@ void commit_radio_group_edit(LLUICtrl* ctrl); void commit_radio_group_land(LLUICtrl* ctrl); void commit_slider_zoom(LLUICtrl *ctrl); +/** + * Class LLLandImpactsObserver + * + * An observer class to monitor parcel selection and update + * the land impacts data from a parcel containing the selected object. + */ +class LLLandImpactsObserver : public LLParcelObserver +{ +public: + virtual void changed() + { + LLFloaterTools* tools_floater = LLFloaterReg::getTypedInstance<LLFloaterTools>("build"); + if(tools_floater) + { + tools_floater->updateLandImpacts(); + } + } +}; //static void* LLFloaterTools::createPanelPermissions(void* data) @@ -344,6 +364,9 @@ LLFloaterTools::LLFloaterTools(const LLSD& key) mCostTextBorder(NULL), mTabLand(NULL), + + mLandImpactsObserver(NULL), + mDirty(TRUE), mNeedMediaTitle(TRUE) { @@ -375,12 +398,17 @@ LLFloaterTools::LLFloaterTools(const LLSD& key) mCommitCallbackRegistrar.add("BuildTool.LinkObjects", boost::bind(&LLSelectMgr::linkObjects, LLSelectMgr::getInstance())); mCommitCallbackRegistrar.add("BuildTool.UnlinkObjects", boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance())); + mLandImpactsObserver = new LLLandImpactsObserver(); + LLViewerParcelMgr::getInstance()->addObserver(mLandImpactsObserver); } LLFloaterTools::~LLFloaterTools() { // children automatically deleted gFloaterTools = NULL; + + LLViewerParcelMgr::getInstance()->removeObserver(mLandImpactsObserver); + delete mLandImpactsObserver; } void LLFloaterTools::setStatusText(const std::string& text) @@ -449,45 +477,44 @@ void LLFloaterTools::refresh() else #endif { - F32 link_phys_cost = LLSelectMgr::getInstance()->getSelection()->getSelectedLinksetPhysicsCost(); F32 link_cost = LLSelectMgr::getInstance()->getSelection()->getSelectedLinksetCost(); - S32 prim_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); S32 link_count = LLSelectMgr::getInstance()->getSelection()->getRootObjectCount(); - LLStringUtil::format_map_t selection_args; - selection_args["OBJ_COUNT"] = llformat("%.1d", link_count); - selection_args["PRIM_COUNT"] = llformat("%.1d", prim_count); - - std::ostringstream selection_info; - - bool show_mesh_cost = gMeshRepo.meshRezEnabled(); - - if (show_mesh_cost) + LLCrossParcelFunctor func; + if (LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func, true)) { - LLStringUtil::format_map_t prim_equiv_args; - prim_equiv_args["SEL_WEIGHT"] = llformat("%.1d", (S32)link_cost); - selection_args["PE_STRING"] = getString("status_selectprimequiv", prim_equiv_args); + // Selection crosses parcel bounds. + // We don't display remaining land capacity in this case. + const LLStringExplicit empty_str(""); + childSetTextArg("remaining_capacity", "[CAPACITY_STRING]", empty_str); } else { - selection_args["PE_STRING"] = ""; + LLViewerObject* selected_object = mObjectSelection->getFirstObject(); + if (selected_object) + { + // Select a parcel at the currently selected object's position. + LLViewerParcelMgr::getInstance()->selectParcelAt(selected_object->getPositionGlobal()); + } + else + { + llwarns << "Failed to get selected object" << llendl; + } } - selection_info << getString("status_selectcount", selection_args); - - - selection_info << ","; + LLStringUtil::format_map_t selection_args; + selection_args["OBJ_COUNT"] = llformat("%.1d", link_count); + selection_args["LAND_IMPACT"] = llformat("%.1d", (S32)link_cost); - S32 render_cost = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectRenderCost(); + std::ostringstream selection_info; - childSetTextArg("selection_weight", "[PHYS_WEIGHT]", llformat("%.1f", link_phys_cost)); - childSetTextArg("selection_weight", "[DISP_WEIGHT]", llformat("%.1d", render_cost)); + selection_info << getString("status_selectcount", selection_args); getChild<LLTextBox>("selection_count")->setText(selection_info.str()); bool have_selection = !LLSelectMgr::getInstance()->getSelection()->isEmpty(); childSetVisible("selection_count", have_selection); - childSetVisible("selection_weight", have_selection); + childSetVisible("remaining_capacity", have_selection); childSetVisible("selection_empty", !have_selection); } @@ -500,6 +527,13 @@ void LLFloaterTools::refresh() refreshMedia(); mPanelContents->refresh(); mPanelLandInfo->refresh(); + + // Refresh the advanced weights floater + LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::getTypedInstance<LLFloaterObjectWeights>("object_weights"); + if(object_weights_floater && object_weights_floater->getVisible()) + { + object_weights_floater->refresh(); + } } void LLFloaterTools::draw() @@ -758,7 +792,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask) bool have_selection = !LLSelectMgr::getInstance()->getSelection()->isEmpty(); getChildView("selection_count")->setVisible(!land_visible && have_selection); - getChildView("selection_weight")->setVisible(!land_visible && have_selection); + getChildView("remaining_capacity")->setVisible(!land_visible && have_selection); getChildView("selection_empty")->setVisible(!land_visible && !have_selection); mTab->setVisible(!land_visible); @@ -1086,6 +1120,37 @@ bool LLFloaterTools::selectedMediaEditable() return selected_Media_editable; } +void LLFloaterTools::updateLandImpacts() +{ + LLParcel *parcel = mParcelSelection->getParcel(); + if (!parcel) + { + return; + } + + S32 rezzed_prims = parcel->getSimWidePrimCount(); + S32 total_capacity = parcel->getSimWideMaxPrimCapacity(); + + std::string remaining_capacity_str = ""; + + bool show_mesh_cost = gMeshRepo.meshRezEnabled(); + if (show_mesh_cost) + { + LLStringUtil::format_map_t remaining_capacity_args; + remaining_capacity_args["LAND_CAPACITY"] = llformat("%d", total_capacity - rezzed_prims); + remaining_capacity_str = getString("status_remaining_capacity", remaining_capacity_args); + } + + childSetTextArg("remaining_capacity", "[CAPACITY_STRING]", remaining_capacity_str); + + // Update land impacts info in the weights floater + LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::getTypedInstance<LLFloaterObjectWeights>("object_weights"); + if(object_weights_floater) + { + object_weights_floater->updateLandImpacts(parcel); + } +} + void LLFloaterTools::getMediaState() { LLObjectSelectionHandle selected_objects =LLSelectMgr::getInstance()->getSelection(); diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index 8c4cb721d3..63ed9dc82b 100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -47,6 +47,7 @@ class LLMediaCtrl; class LLTool; class LLParcelSelection; class LLObjectSelection; +class LLLandImpactsObserver; typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle; @@ -103,6 +104,7 @@ public: void updateMediaTitle(); void navigateToTitleMedia( const std::string url ); bool selectedMediaEditable(); + void updateLandImpacts(); private: void refresh(); @@ -180,6 +182,8 @@ public: LLTabContainer* mTabLand; + LLLandImpactsObserver* mLandImpactsObserver; + LLParcelSelectionHandle mParcelSelection; LLObjectSelectionHandle mObjectSelection; diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 522ffa7232..4f50802bac 100755 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -28,137 +28,8 @@ <string name="tbd">TBD</string> - <text left="15" bottom="25" follows="top|left" height="15" name="name_label"> - Name: - </text> - <line_editor bottom_delta="20" follows="top|left|right" height="19" max_length_bytes="64" - name="description_form" prevalidate_callback="ascii" width="290" /> - - <text bottom_delta="20" left="15" follows="left|top" height="15" name="model_category_label" text_color="White"> - What does this model represent? - </text> - <combo_box top_pad="1" follows="left|top" height="23" - name="model_category_combo" width="200"> - <combo_box.drop_down_button - label_color="White"/> - <combo_item name="Choose one" label="Choose One..." value="MUT_Unspecified"/> - <combo_item name="Avatar shape" label="Avatar shape" value="MUT_AvatarShape"/> - <combo_item name="Avatar attachment" label="Avatar attachment" value="MUT_AvatarAttachment"/> - <combo_item name="Building Component" label="Building Component" value="MUT_BuildingComponent"/> - <combo_item name="Moving object (vehicle, animal)" label="Moving object (vehicle, animal)" value="MUT_MovingObject"/> - <combo_item name="Large, non moving etc" label="Large, non moving etc" value="MUT_LargeStationary"/> - <combo_item name="Smaller, non-moving etc" label="Smaller, non-moving etc" value="MUT_SmallStationary"/> - <combo_item name="Not really any of these" label="Not really any of these" value="MUT_Other"/> - </combo_box> - - <text bottom_delta="20" left="15" follows="left|top" height="15" name="lod_label"> - Preview: - </text> - <combo_box bottom_delta="20" follows="left|top" height="18" - name="preview_lod_combo" width="240" tool_tip="LOD to view in preview render"> - <combo_item name="high"> - Level of Detail: High - </combo_item> - <combo_item name="medium"> - Level of Detail: Medium - </combo_item> - <combo_item name="low"> - Level of Detail: Low - </combo_item> - <combo_item name="lowest"> - Level of Detail: Lowest - </combo_item> - </combo_box> - - <menu_button follows="top|left" - image_hover_unselected="Toolbar_Left_Over" - image_overlay="OptionsMenu_Off" - image_selected="Toolbar_Left_Selected" - image_unselected="Toolbar_Left_Off" - layout="topleft" - left_pad="5" - name="options_gear_btn" - width="31" - height="25"/> - <!-- Placeholder panel for 3D preview render --> - <panel - name="preview_panel" - left="15" - bevel_style="none" - border_style="line" - border="true" - width="290" - height="290" - follows="all"/> - - <text - font="SansSerif" - bottom_delta="15" - left_delta="0" - name="warning_title" - text_color="Yellow" - visible="false"> - WARNING: - </text> - <text - text_color="White" - height="40" - width="290" - top_delta="15" - left_delta="0" - name="warning_message" - parse_urls="true" - wrap="true" - visible="false"> - You will not be able to complete the final upload of this model to the Second Life servers. [[VURL] Find out how] to get enabled for mesh model uploads.</text> - <text text_color="Yellow" left="10" bottom_delta="0" width="290" height="15" follows="bottom|left|right" name="status">[STATUS]</text> - <text - height="26" - top_pad="5" - left_delta="0" - name="weights_text_left" - width="80" - word_wrap="true" - > -Download: -Physics: - </text> - <text - height="26" - top_delta="0" - left_pad="0" - name="weights_left" - width="70" - word_wrap="true" - > -[ST] -[PH] - </text> - <text - height="26" - top_delta="0" - left_pad="0" - name="weights_text_right" - width="80" - word_wrap="true" - > -Server: -Prim equivs: - </text> - <text - height="26" - top_delta="0" - left_pad="0" - name="weights_right" - width="70" - word_wrap="true" - > -[SIM] -[EQ] - </text> - <!-- <text height="65" @@ -191,10 +62,18 @@ L$ [MODEL] </text> --> +<panel + follows="all" + height="515" + layout="topleft" + left="3" + name="left_panel" + top="0" + width="305"> <tab_container - follows="right|top|bottom" + follows="all" top="15" - left="310" + left="0" height="470" width="300" name="import_tab" @@ -554,14 +433,171 @@ L$ [MODEL] > Upload fee: L$ [FEE] </text> + </panel> + +<panel + follows="all" + height="515" + layout="topleft" + left_pad="1" + name="right_panel" + top="0" + width="310"> + + <text left="15" bottom="25" follows="top|left" height="15" name="name_label"> + Name: + </text> + <line_editor bottom_delta="20" follows="top|left|right" height="19" max_length_bytes="64" + name="description_form" prevalidate_callback="ascii" width="290" /> + + <text bottom_delta="20" left="15" follows="left|top" height="15" name="model_category_label" text_color="White"> + What does this model represent? + </text> + <combo_box top_pad="1" follows="left|top" height="23" + name="model_category_combo" width="200"> + <combo_box.drop_down_button + label_color="White"/> + <combo_item name="Choose one" label="Choose One..." value="MUT_Unspecified"/> + <combo_item name="Avatar shape" label="Avatar shape" value="MUT_AvatarShape"/> + <combo_item name="Avatar attachment" label="Avatar attachment" value="MUT_AvatarAttachment"/> + <combo_item name="Building Component" label="Building Component" value="MUT_BuildingComponent"/> + <combo_item name="Moving object (vehicle, animal)" label="Moving object (vehicle, animal)" value="MUT_MovingObject"/> + <combo_item name="Large, non moving etc" label="Large, non moving etc" value="MUT_LargeStationary"/> + <combo_item name="Smaller, non-moving etc" label="Smaller, non-moving etc" value="MUT_SmallStationary"/> + <combo_item name="Not really any of these" label="Not really any of these" value="MUT_Other"/> + </combo_box> + + <text bottom_delta="20" left="15" follows="left|top" height="15" name="lod_label"> + Preview: + </text> + <combo_box bottom_delta="20" follows="left|top" height="18" + name="preview_lod_combo" width="240" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + Level of Detail: High + </combo_item> + <combo_item name="medium"> + Level of Detail: Medium + </combo_item> + <combo_item name="low"> + Level of Detail: Low + </combo_item> + <combo_item name="lowest"> + Level of Detail: Lowest + </combo_item> + </combo_box> + + <menu_button follows="top|left" + image_hover_unselected="Toolbar_Left_Over" + image_overlay="OptionsMenu_Off" + image_selected="Toolbar_Left_Selected" + image_unselected="Toolbar_Left_Off" + layout="topleft" + left_pad="5" + name="options_gear_btn" + width="31" + height="25"/> + <!-- Placeholder panel for 3D preview render --> + <!--<panel + name="preview_panel" + left="15" + bevel_style="none" + border_style="line" + border="true" + width="290" + height="290" + follows="all"/>--> + + <text + font="SansSerif" + bottom_delta="305" + left="15" + name="warning_title" + text_color="Yellow" + visible="true"> + WARNING: + </text> + <text + text_color="White" + height="40" + width="290" + top_delta="15" + left_delta="0" + name="warning_message" + parse_urls="true" + wrap="true" + visible="true"> + You will not be able to complete the final upload of this model to the Second Life servers. [[VURL] Find out how] to get enabled for mesh model uploads.</text> + + <text + height="26" + top_pad="5" + left_delta="0" + name="weights_text_left" + width="80" + word_wrap="true" + > +Download: +Physics: + </text> + <text + height="26" + top_delta="0" + left_pad="0" + name="weights_left" + width="70" + word_wrap="true" + > +[ST] +[PH] + </text> + <text + height="26" + top_delta="0" + left_pad="0" + name="weights_text_right" + width="80" + word_wrap="true" + > +Server: +Prim equivs: + </text> + <text + height="26" + top_delta="0" + left_pad="0" + name="weights_right" + width="70" + word_wrap="true" + > +[SIM] +[EQ] + </text> +</panel> + +<panel + follows="bottom|left|right" + height="33" + layout="topleft" + left="0" + name="bottom_buttons_panel" + top_pad="1" + width="610"> + <button top="3" left="10" follows="bottom|left" height="20" label="Set to defaults" width="100" name="reset_btn" tool_tip="Set to defaults"/> + <button top="3" left="310" follows="bottom|right" height="20" label="Calculate weights & fee" width="150" name="calculate_btn" tool_tip="Calculate weights & fee"/> + <button top="3" left_delta="0" follows="bottom|right" height="20" label="Upload" width="80" name="ok_btn" tool_tip="Upload to simulator" visible="false"/> + <button top="3" right="-10" follows="right|bottom" height="20" width="80" label="Cancel" name="cancel_btn"/> +</panel> - <button bottom="540" left="10" follows="bottom|left" height="20" label="Set to defaults" - width="100" name="reset_btn" tool_tip="Set to defaults"/> - <button left="310" follows="bottom|right" height="20" label="Calculate weights & fee" - width="150" name="calculate_btn" tool_tip="Calculate weights & fee" top_delta="0"/> - <button bottom="540" left="310" follows="bottom|right" height="20" label="Upload" - width="80" name="ok_btn" tool_tip="Upload to simulator" visible="false"/> - <button right="-10" follows="right|bottom" height="20" width="80" label="Cancel" name="cancel_btn" top_delta="0"/> +<panel + name="preview_panel" + left="320" + top="131" + bevel_style="none" + border_style="line" + border="true" + width="290" + height="290" + follows="all"/> <!-- <button bottom_delta="0" left="10" width="120" name="auto fill" label="Generate LOD" tool_tip="Automatically generate levels of detail"/> diff --git a/indra/newview/skins/default/xui/en/floater_object_weights.xml b/indra/newview/skins/default/xui/en/floater_object_weights.xml index a73db3af32..eb283a1043 100644 --- a/indra/newview/skins/default/xui/en/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/en/floater_object_weights.xml @@ -3,7 +3,7 @@ can_close="true" can_tear_off="false" height="315" - help_topic="objects_weight_floater" + help_topic="object_weights" layout="topleft" name="object_weights" save_rect="true" @@ -337,6 +337,6 @@ left="10" name="help_SLURL" top_pad="10" - value="[secondlife:///www.secondlife.com What is all this?...]" + value="[secondlife:///app/help/object_weights What is all this?...]" width="180" /> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 03d6c84266..9b02f7d273 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -48,11 +48,11 @@ </floater.string> <floater.string name="status_selectcount"> - [OBJ_COUNT] objects ( [PRIM_COUNT] prims[PE_STRING] ) selected + [OBJ_COUNT] objects selected, land impact [LAND_IMPACT] </floater.string> <floater.string - name="status_selectprimequiv"> - , [SEL_WEIGHT] prim equivs + name="status_remaining_capacity"> + Remaining capacity [LAND_CAPACITY]. </floater.string> <button follows="left|top" @@ -738,11 +738,11 @@ font="SansSerifSmall" layout="topleft" left="10" - name="selection_weight" + name="remaining_capacity" top_pad="0" visible="false" width="280"> - Physics weight [PHYS_WEIGHT], Render Cost [DISP_WEIGHT]. [secondlife:///app/openfloater/object_weights More info] + [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info] </text> <!-- <text --> <!-- text_color="LtGray_50" --> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index f80028ec0c..d7dcc05179 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3633,5 +3633,7 @@ Try enclosing path to the editor with double quotes. <string name="Surface">Surface</string> <string name="Solid">Solid</string> <string name="Wrap">Wrap</string> + <string name="Preview">Preview</string> + <string name="Normal">Normal</string> </strings> |