diff options
-rw-r--r-- | indra/newview/llfloaterstinson.cpp | 329 | ||||
-rw-r--r-- | indra/newview/llfloaterstinson.h | 13 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_stinson.xml | 104 |
3 files changed, 374 insertions, 72 deletions
diff --git a/indra/newview/llfloaterstinson.cpp b/indra/newview/llfloaterstinson.cpp index 52a4c41d0d..707f5b468a 100644 --- a/indra/newview/llfloaterstinson.cpp +++ b/indra/newview/llfloaterstinson.cpp @@ -30,6 +30,7 @@ #include "llfloaterstinson.h" #include <string> +#include <vector> #include <boost/bind.hpp> #include <boost/function.hpp> @@ -72,31 +73,13 @@ #define MATERIALS_CAP_ALPHA_MASK_CUTOFF_FIELD "AlphaMaskCutoff" #define MATERIALS_CAP_DIFFUSE_ALPHA_IS_MASK_FIELD "DiffAlphaIsMask" -class MaterialsGetResponder : public LLHTTPClient::Responder +class MaterialsResponder : public LLHTTPClient::Responder { public: typedef boost::function<void (bool, const LLSD&)> CallbackFunction; - MaterialsGetResponder(const std::string& pCapabilityURL, CallbackFunction pCallback); - virtual ~MaterialsGetResponder(); - - virtual void result(const LLSD& pContent); - virtual void error(U32 pStatus, const std::string& pReason); - -protected: - -private: - std::string mCapabilityURL; - CallbackFunction mCallback; -}; - -class MaterialsPutResponder : public LLHTTPClient::Responder -{ -public: - typedef boost::function<void (bool, const LLSD&)> CallbackFunction; - - MaterialsPutResponder(const std::string& pCapabilityURL, CallbackFunction pCallback); - virtual ~MaterialsPutResponder(); + MaterialsResponder(const std::string& pMethod, const std::string& pCapabilityURL, CallbackFunction pCallback); + virtual ~MaterialsResponder(); virtual void result(const LLSD& pContent); virtual void error(U32 pStatus, const std::string& pReason); @@ -104,6 +87,7 @@ public: protected: private: + std::string mMethod; std::string mCapabilityURL; CallbackFunction mCallback; }; @@ -119,6 +103,7 @@ BOOL LLFloaterStinson::postBuild() mGetScrollList = findChild<LLScrollListCtrl>("get_scroll_list"); llassert(mGetScrollList != NULL); + mGetScrollList->setCommitCallback(boost::bind(&LLFloaterStinson::onGetResultsSelectionChange, this)); mPutButton = findChild<LLButton>("put_button"); llassert(mPutButton != NULL); @@ -127,6 +112,17 @@ BOOL LLFloaterStinson::postBuild() mPutScrollList = findChild<LLScrollListCtrl>("put_scroll_list"); llassert(mPutScrollList != NULL); + mGoodPostButton = findChild<LLButton>("good_post_button"); + llassert(mGoodPostButton != NULL); + mGoodPostButton->setCommitCallback(boost::bind(&LLFloaterStinson::onGoodPostClicked, this)); + + mBadPostButton = findChild<LLButton>("bad_post_button"); + llassert(mBadPostButton != NULL); + mBadPostButton->setCommitCallback(boost::bind(&LLFloaterStinson::onBadPostClicked, this)); + + mPostScrollList = findChild<LLScrollListCtrl>("post_scroll_list"); + llassert(mPostScrollList != NULL); + mWarningColor = LLUIColorTable::instance().getColor("MaterialWarningColor"); mErrorColor = LLUIColorTable::instance().getColor("MaterialErrorColor"); @@ -157,12 +153,16 @@ void LLFloaterStinson::onOpen(const LLSD& pKey) checkRegionMaterialStatus(); clearGetResults(); clearPutResults(); + clearPostResults(); + mGetScrollList->setCommitOnSelectionChange(TRUE); } void LLFloaterStinson::onClose(bool pIsAppQuitting) { + mGetScrollList->setCommitOnSelectionChange(FALSE); clearGetResults(); clearPutResults(); + clearPostResults(); if (mSelectionUpdateConnection.connected()) { @@ -186,7 +186,12 @@ LLFloaterStinson::LLFloaterStinson(const LLSD& pParams) : LLFloater(pParams), mStatusText(NULL), mGetButton(NULL), + mGetScrollList(NULL), mPutButton(NULL), + mPutScrollList(NULL), + mGoodPostButton(NULL), + mBadPostButton(NULL), + mPostScrollList(NULL), mState(kNoRegion), mWarningColor(), mErrorColor(), @@ -210,9 +215,27 @@ void LLFloaterStinson::onPutClicked() requestPutMaterials(); } +void LLFloaterStinson::onGoodPostClicked() +{ + requestPostMaterials(true); +} + +void LLFloaterStinson::onBadPostClicked() +{ + requestPostMaterials(false); +} + void LLFloaterStinson::onRegionCross() { checkRegionMaterialStatus(); + clearGetResults(); + clearPutResults(); + clearPostResults(); +} + +void LLFloaterStinson::onGetResultsSelectionChange() +{ + updateControls(); } void LLFloaterStinson::onInWorldSelectionChange() @@ -235,6 +258,11 @@ void LLFloaterStinson::onDeferredRequestPutMaterials(LLUUID regionId) requestPutMaterials(regionId); } +void LLFloaterStinson::onDeferredRequestPostMaterials(LLUUID regionId, bool pUseGoodData) +{ + requestPostMaterials(regionId, pUseGoodData); +} + void LLFloaterStinson::onGetResponse(bool pRequestStatus, const LLSD& pContent) { if (pRequestStatus) @@ -261,6 +289,19 @@ void LLFloaterStinson::onPutResponse(bool pRequestStatus, const LLSD& pContent) } } +void LLFloaterStinson::onPostResponse(bool pRequestStatus, const LLSD& pContent) +{ + if (pRequestStatus) + { + setState(kRequestCompleted); + parsePostResponse(pContent); + } + else + { + setState(kError); + } +} + void LLFloaterStinson::checkRegionMaterialStatus() { LLViewerRegion *region = gAgent.getRegion(); @@ -273,7 +314,7 @@ void LLFloaterStinson::checkRegionMaterialStatus() else if (!region->capabilitiesReceived()) { setState(kCapabilitiesLoading); - region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterStinson::onDeferredRequestGetMaterials, this, region->getRegionID())); + region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterStinson::onDeferredCheckRegionMaterialStatus, this, region->getRegionID())); } else { @@ -329,7 +370,7 @@ void LLFloaterStinson::requestGetMaterials() else { setState(kRequestStarted); - LLHTTPClient::ResponderPtr materialsResponder = new MaterialsGetResponder(capURL, boost::bind(&LLFloaterStinson::onGetResponse, this, _1, _2)); + LLHTTPClient::ResponderPtr materialsResponder = new MaterialsResponder("GET", capURL, boost::bind(&LLFloaterStinson::onGetResponse, this, _1, _2)); llinfos << "STINSON DEBUG: sending request GET to capability '" << MATERIALS_CAPABILITY_NAME << "' with url '" << capURL << "'" << llendl; LLHTTPClient::get(capURL, materialsResponder); @@ -443,7 +484,7 @@ void LLFloaterStinson::requestPutMaterials() LLSD putData = LLSD::emptyMap(); putData[MATERIALS_CAP_FULL_PER_FACE_FIELD] = facesData; - LLHTTPClient::ResponderPtr materialsResponder = new MaterialsPutResponder(capURL, boost::bind(&LLFloaterStinson::onPutResponse, this, _1, _2)); + LLHTTPClient::ResponderPtr materialsResponder = new MaterialsResponder("PUT", capURL, boost::bind(&LLFloaterStinson::onPutResponse, this, _1, _2)); llinfos << "STINSON DEBUG: sending request PUT to capability '" << MATERIALS_CAPABILITY_NAME << "' with url '" << capURL << "' and with data " << putData << llendl; LLHTTPClient::put(capURL, putData, materialsResponder); @@ -461,6 +502,84 @@ void LLFloaterStinson::requestPutMaterials(const LLUUID& regionId) } } +void LLFloaterStinson::requestPostMaterials(bool pUseGoodData) +{ + LLViewerRegion *region = gAgent.getRegion(); + + if (region == NULL) + { + llwarns << "Region is NULL" << llendl; + setState(kNoRegion); + } + else if (!region->capabilitiesReceived()) + { + setState(kCapabilitiesLoading); + region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterStinson::onDeferredRequestPostMaterials, this, region->getRegionID(), pUseGoodData)); + } + else + { + std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME); + + if (capURL.empty()) + { + llwarns << "Capability '" << MATERIALS_CAPABILITY_NAME << "' is not defined on the current region '" + << region->getName() << "'" << llendl; + setState(kNotEnabled); + } + else + { + setState(kRequestStarted); + LLSD postData = LLSD::emptyArray(); + + if (pUseGoodData) + { + std::vector<LLScrollListItem*> selectedItems = mGetScrollList->getAllSelected(); + for (std::vector<LLScrollListItem*>::const_iterator selectedItemIter = selectedItems.begin(); + selectedItemIter != selectedItems.end(); ++selectedItemIter) + { + const LLScrollListItem* selectedItem = *selectedItemIter; + postData.append(selectedItem->getValue()); + } + } + else + { + S32 crapArray[4]; + for (int i = 0; i < 4; ++i) + { + crapArray[i] = ll_rand(); + if (ll_frand() < 0.5) + { + crapArray[i] = -crapArray[i]; + } + } + + std::vector<unsigned char> crapMem; + crapMem.resize(16); + memcpy(&crapMem[0], &crapArray, 16 * sizeof(unsigned char)); + + LLSD::Binary crapBinary = crapMem; + LLSD crapData = crapBinary; + postData.append(crapData); + } + + LLHTTPClient::ResponderPtr materialsResponder = new MaterialsResponder("POST", capURL, boost::bind(&LLFloaterStinson::onPostResponse, this, _1, _2)); + llinfos << "STINSON DEBUG: sending request POST to capability '" << MATERIALS_CAPABILITY_NAME + << "' with url '" << capURL << "' and with data " << postData << llendl; + LLHTTPClient::post(capURL, postData, materialsResponder); + } + } +} + +void LLFloaterStinson::requestPostMaterials(const LLUUID& regionId, bool pUseGoodData) +{ + const LLViewerRegion *region = gAgent.getRegion(); + + if ((region != NULL) && (region->getRegionID() == regionId)) + { + requestPostMaterials(pUseGoodData); + } +} + void LLFloaterStinson::parseGetResponse(const LLSD& pContent) { printResponse("GET", pContent); @@ -477,7 +596,8 @@ void LLFloaterStinson::parseGetResponse(const LLSD& pContent) llassert(material.isMap()); llassert(material.has(MATERIALS_CAP_OBJECT_ID_FIELD)); llassert(material.get(MATERIALS_CAP_OBJECT_ID_FIELD).isBinary()); - std::string materialIDString = convertToPrintableMaterialID(material.get(MATERIALS_CAP_OBJECT_ID_FIELD)); + const LLSD &materialID = material.get(MATERIALS_CAP_OBJECT_ID_FIELD); + std::string materialIDString = convertToPrintableMaterialID(materialID); llassert(material.has(MATERIALS_CAP_MATERIAL_FIELD)); const LLSD &materialData = material.get(MATERIALS_CAP_MATERIAL_FIELD); @@ -549,6 +669,7 @@ void LLFloaterStinson::parseGetResponse(const LLSD& pContent) cellParams.column = "is_diffuse_alpha_mask"; cellParams.value = (isDiffuseAlphaMask ? "True" : "False"); rowParams.columns.add(cellParams); + rowParams.value = materialID; mGetScrollList->addRow(rowParams); } @@ -601,6 +722,101 @@ void LLFloaterStinson::parsePutResponse(const LLSD& pContent) } } +void LLFloaterStinson::parsePostResponse(const LLSD& pContent) +{ + printResponse("POST", pContent); + clearPostResults(); + + LLScrollListCell::Params cellParams; + LLScrollListItem::Params rowParams; + + llassert(pContent.isArray()); + for (LLSD::array_const_iterator materialIter = pContent.beginArray(); materialIter != pContent.endArray(); + ++materialIter) + { + const LLSD &material = *materialIter; + llassert(material.isMap()); + llassert(material.has(MATERIALS_CAP_OBJECT_ID_FIELD)); + llassert(material.get(MATERIALS_CAP_OBJECT_ID_FIELD).isBinary()); + const LLSD &materialID = material.get(MATERIALS_CAP_OBJECT_ID_FIELD); + std::string materialIDString = convertToPrintableMaterialID(materialID); + + llassert(material.has(MATERIALS_CAP_MATERIAL_FIELD)); + const LLSD &materialData = material.get(MATERIALS_CAP_MATERIAL_FIELD); + llassert(materialData.isMap()); + + llassert(materialData.has(MATERIALS_CAP_NORMAL_MAP_FIELD)); + llassert(materialData.get(MATERIALS_CAP_NORMAL_MAP_FIELD).isUUID()); + const LLUUID &normalMapID = materialData.get(MATERIALS_CAP_NORMAL_MAP_FIELD).asUUID(); + + llassert(materialData.has(MATERIALS_CAP_SPECULAR_MAP_FIELD)); + llassert(materialData.get(MATERIALS_CAP_SPECULAR_MAP_FIELD).isUUID()); + const LLUUID &specularMapID = materialData.get(MATERIALS_CAP_SPECULAR_MAP_FIELD).asUUID(); + + llassert(materialData.has(MATERIALS_CAP_SPECULAR_COLOR_FIELD)); + llassert(materialData.get(MATERIALS_CAP_SPECULAR_COLOR_FIELD).isArray()); + LLColor4U specularColor; + specularColor.setValue(materialData.get(MATERIALS_CAP_SPECULAR_COLOR_FIELD)); + + llassert(materialData.has(MATERIALS_CAP_SPECULAR_EXP_FIELD)); + llassert(materialData.get(MATERIALS_CAP_SPECULAR_EXP_FIELD).isInteger()); + S32 specularExp = materialData.get(MATERIALS_CAP_SPECULAR_EXP_FIELD).asInteger(); + + llassert(materialData.has(MATERIALS_CAP_ENV_INTENSITY_FIELD)); + llassert(materialData.get(MATERIALS_CAP_ENV_INTENSITY_FIELD).isInteger()); + S32 envIntensity = materialData.get(MATERIALS_CAP_ENV_INTENSITY_FIELD).asInteger(); + + llassert(materialData.has(MATERIALS_CAP_ALPHA_MASK_CUTOFF_FIELD)); + llassert(materialData.get(MATERIALS_CAP_ALPHA_MASK_CUTOFF_FIELD).isInteger()); + S32 alphaMaskCutoff = materialData.get(MATERIALS_CAP_ALPHA_MASK_CUTOFF_FIELD).asInteger(); + + llassert(materialData.has(MATERIALS_CAP_DIFFUSE_ALPHA_IS_MASK_FIELD)); + llassert(materialData.get(MATERIALS_CAP_DIFFUSE_ALPHA_IS_MASK_FIELD).isInteger()); + BOOL isDiffuseAlphaMask = static_cast<BOOL>(materialData.get(MATERIALS_CAP_DIFFUSE_ALPHA_IS_MASK_FIELD).asInteger()); + + + cellParams.font = LLFontGL::getFontMonospace(); + + cellParams.column = "id"; + cellParams.value = materialIDString; + rowParams.columns.add(cellParams); + + cellParams.column = "normal_map"; + cellParams.value = normalMapID.asString(); + rowParams.columns.add(cellParams); + + cellParams.column = "specular_map"; + cellParams.value = specularMapID.asString(); + rowParams.columns.add(cellParams); + + cellParams.font = LLFontGL::getFontSansSerif(); + + cellParams.column = "specular_color"; + cellParams.value = llformat("(%d, %d, %d, %d)", specularColor.mV[0], + specularColor.mV[1], specularColor.mV[2], specularColor.mV[3]); + rowParams.columns.add(cellParams); + + cellParams.column = "specular_exponent"; + cellParams.value = llformat("%d", specularExp); + rowParams.columns.add(cellParams); + + cellParams.column = "env_intensity"; + cellParams.value = llformat("%d", envIntensity); + rowParams.columns.add(cellParams); + + cellParams.column = "alpha_mask_cutoff"; + cellParams.value = llformat("%d", alphaMaskCutoff); + rowParams.columns.add(cellParams); + + cellParams.column = "is_diffuse_alpha_mask"; + cellParams.value = (isDiffuseAlphaMask ? "True" : "False"); + rowParams.columns.add(cellParams); + rowParams.value = materialID; + + mPostScrollList->addRow(rowParams); + } +} + void LLFloaterStinson::printResponse(const std::string& pRequestType, const LLSD& pContent) const { llinfos << "--------------------------------------------------------------------------" << llendl; @@ -625,6 +841,11 @@ void LLFloaterStinson::clearPutResults() mPutScrollList->deleteAllItems(); } +void LLFloaterStinson::clearPostResults() +{ + mPostScrollList->deleteAllItems(); +} + void LLFloaterStinson::updateStatusMessage() { std::string statusText; @@ -672,6 +893,9 @@ void LLFloaterStinson::updateControls() LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection(); bool isPutEnabled = (selectionHandle->valid_begin() != selectionHandle->valid_end()); + S32 numGetResultsSelected = mGetScrollList->getNumSelected(); + bool isGoodPostEnabled = (numGetResultsSelected > 0); + switch (getState()) { case kNoRegion : @@ -680,16 +904,22 @@ void LLFloaterStinson::updateControls() case kNotEnabled : mGetButton->setEnabled(FALSE); mPutButton->setEnabled(FALSE); + mGoodPostButton->setEnabled(FALSE); + mBadPostButton->setEnabled(FALSE); break; case kReady : case kRequestCompleted : case kError : mGetButton->setEnabled(TRUE); mPutButton->setEnabled(isPutEnabled); + mGoodPostButton->setEnabled(isGoodPostEnabled); + mBadPostButton->setEnabled(TRUE); break; default : mGetButton->setEnabled(TRUE); mPutButton->setEnabled(isPutEnabled); + mGoodPostButton->setEnabled(isGoodPostEnabled); + mBadPostButton->setEnabled(TRUE); llassert(0); break; } @@ -701,63 +931,42 @@ std::string LLFloaterStinson::convertToPrintableMaterialID(const LLSD& pBinaryHa const LLSD::Binary &materialIDValue = pBinaryHash.asBinary(); unsigned int valueSize = materialIDValue.size(); + llassert(valueSize == 16); std::string materialID(reinterpret_cast<const char *>(&materialIDValue[0]), valueSize); std::string materialIDString; - for (unsigned int i = 0; i < valueSize; ++i) + for (unsigned int i = 0U; i < (valueSize / 4); ++i) { - materialIDString += llformat("%02x", materialID.c_str()[i]); + if (i != 0U) + { + materialIDString += "-"; + } + const U32 *value = reinterpret_cast<const U32*>(&materialID.c_str()[i * 4]); + materialIDString += llformat("%08x", *value); } - return materialIDString; } -MaterialsGetResponder::MaterialsGetResponder(const std::string& pCapabilityURL, CallbackFunction pCallback) - : LLHTTPClient::Responder(), - mCapabilityURL(pCapabilityURL), - mCallback(pCallback) -{ -} - -MaterialsGetResponder::~MaterialsGetResponder() -{ -} - -void MaterialsGetResponder::result(const LLSD& pContent) -{ - mCallback(true, pContent); -} - -void MaterialsGetResponder::error(U32 pStatus, const std::string& pReason) -{ - llwarns << "--------------------------------------------------------------------------" << llendl; - llwarns << "GET Error[" << pStatus << "] cannot access cap '" << MATERIALS_CAPABILITY_NAME - << "' with url '" << mCapabilityURL << "' because " << pReason << llendl; - llwarns << "--------------------------------------------------------------------------" << llendl; - - LLSD emptyResult; - mCallback(false, emptyResult); -} - -MaterialsPutResponder::MaterialsPutResponder(const std::string& pCapabilityURL, CallbackFunction pCallback) +MaterialsResponder::MaterialsResponder(const std::string& pMethod, const std::string& pCapabilityURL, CallbackFunction pCallback) : LLHTTPClient::Responder(), + mMethod(pMethod), mCapabilityURL(pCapabilityURL), mCallback(pCallback) { } -MaterialsPutResponder::~MaterialsPutResponder() +MaterialsResponder::~MaterialsResponder() { } -void MaterialsPutResponder::result(const LLSD& pContent) +void MaterialsResponder::result(const LLSD& pContent) { mCallback(true, pContent); } -void MaterialsPutResponder::error(U32 pStatus, const std::string& pReason) +void MaterialsResponder::error(U32 pStatus, const std::string& pReason) { llwarns << "--------------------------------------------------------------------------" << llendl; - llwarns << "PUT Error[" << pStatus << "] cannot access cap '" << MATERIALS_CAPABILITY_NAME + llwarns << mMethod << " Error[" << pStatus << "] cannot access cap '" << MATERIALS_CAPABILITY_NAME << "' with url '" << mCapabilityURL << "' because " << pReason << llendl; llwarns << "--------------------------------------------------------------------------" << llendl; diff --git a/indra/newview/llfloaterstinson.h b/indra/newview/llfloaterstinson.h index 916f55c5ab..743705f46a 100644 --- a/indra/newview/llfloaterstinson.h +++ b/indra/newview/llfloaterstinson.h @@ -68,13 +68,18 @@ private: void onGetClicked(); void onPutClicked(); + void onGoodPostClicked(); + void onBadPostClicked(); void onRegionCross(); + void onGetResultsSelectionChange(); void onInWorldSelectionChange(); void onDeferredCheckRegionMaterialStatus(LLUUID regionId); void onDeferredRequestGetMaterials(LLUUID regionId); void onDeferredRequestPutMaterials(LLUUID regionId); + void onDeferredRequestPostMaterials(LLUUID regionId, bool pUseGoodData); void onGetResponse(bool pRequestStatus, const LLSD& pContent); void onPutResponse(bool pRequestStatus, const LLSD& pContent); + void onPostResponse(bool pRequestStatus, const LLSD& pContent); void checkRegionMaterialStatus(); void checkRegionMaterialStatus(const LLUUID& regionId); @@ -85,8 +90,12 @@ private: void requestPutMaterials(); void requestPutMaterials(const LLUUID& regionId); + void requestPostMaterials(bool pUseGoodData); + void requestPostMaterials(const LLUUID& regionId, bool pUseGoodData); + void parseGetResponse(const LLSD& pContent); void parsePutResponse(const LLSD& pContent); + void parsePostResponse(const LLSD& pContent); void printResponse(const std::string& pRequestType, const LLSD& pContent) const; void setState(EState pState); @@ -94,6 +103,7 @@ private: void clearGetResults(); void clearPutResults(); + void clearPostResults(); void updateStatusMessage(); void updateControls(); @@ -104,6 +114,9 @@ private: LLScrollListCtrl* mGetScrollList; LLButton* mPutButton; LLScrollListCtrl* mPutScrollList; + LLButton* mGoodPostButton; + LLButton* mBadPostButton; + LLScrollListCtrl* mPostScrollList; EState mState; LLColor4 mWarningColor; diff --git a/indra/newview/skins/default/xui/en/floater_stinson.xml b/indra/newview/skins/default/xui/en/floater_stinson.xml index fc44615602..7e23b270be 100644 --- a/indra/newview/skins/default/xui/en/floater_stinson.xml +++ b/indra/newview/skins/default/xui/en/floater_stinson.xml @@ -3,9 +3,9 @@ positioning="cascading" can_tear_off="false" can_resize="true" - height="425" - width="1194" - min_height="450" + height="575" + width="1254" + min_height="600" min_width="1100" layout="topleft" name="floater_stinson" @@ -66,7 +66,7 @@ name="horiz_separator" top_pad="0" left="12" - width="1170"/> + width="1230"/> <panel border="false" bevel_style="none" @@ -74,7 +74,7 @@ layout="topleft" height="167" top_pad="10" - width="1170"> + width="1230"> <button follows="left|top" height="22" @@ -93,7 +93,7 @@ tab_stop="false" multi_select="true" name="get_scroll_list" - width="1170"> + width="1230"> <scroll_list.columns label="Material ID" name="id" @@ -101,11 +101,11 @@ <scroll_list.columns label="Normal Map" name="normal_map" - width="230" /> + width="225" /> <scroll_list.columns label="Specular Map" name="specular_map" - width="230" /> + width="225" /> <scroll_list.columns label="Specular Color" name="specular_color" @@ -136,7 +136,7 @@ name="horiz_separator" top_pad="10" left="12" - width="1170"/> + width="1230"/> <panel border="false" bevel_style="none" @@ -145,7 +145,7 @@ left="12" top_pad="10" height="132" - width="700"> + width="400"> <button follows="left|top" height="22" @@ -164,7 +164,7 @@ tab_stop="false" multi_select="true" name="put_scroll_list" - width="700"> + width="400"> <scroll_list.columns label="Object ID" name="object_id" @@ -179,4 +179,84 @@ dynamic_width="true" /> </scroll_list> </panel> -</floater> + <view_border + bevel_style="none" + follows="left|right|top" + height="0" + layout="topleft" + name="horiz_separator" + top_pad="10" + left="12" + width="1230"/> + <panel + border="false" + bevel_style="none" + follows="left|top|right" + layout="topleft" + left="12" + top_pad="10" + height="132" + width="1230"> + <button + follows="left|top" + height="22" + label="Post Good Material ID" + layout="topleft" + name="good_post_button" + top_pad="0" + width="214"/> + <button + follows="left|top" + height="22" + label="Post Bad Material ID" + layout="topleft" + name="bad_post_button" + left_pad="20" + width="214"/> + <scroll_list + column_padding="0" + draw_heading="true" + follows="left|top|right" + height="100" + layout="topleft" + top_pad="10" + left="0" + tab_stop="false" + multi_select="true" + name="post_scroll_list" + width="1230"> + <scroll_list.columns + label="Material ID" + name="id" + dynamic_width="true" /> + <scroll_list.columns + label="Normal Map" + name="normal_map" + width="225" /> + <scroll_list.columns + label="Specular Map" + name="specular_map" + width="225" /> + <scroll_list.columns + label="Specular Color" + name="specular_color" + width="120" /> + <scroll_list.columns + label="Specular Exponent" + name="specular_exponent" + width="112" /> + <scroll_list.columns + label="Env Intensity" + name="env_intensity" + width="80" /> + <scroll_list.columns + label="Alpha Mask Cutoff" + name="alpha_mask_cutoff" + width="110" /> + <scroll_list.columns + label="Is Diffuse Alpha Mask" + name="is_diffuse_alpha_mask" + width="128" /> + </scroll_list> + </panel> + </floater> |