/****************************************************************************** NintendoWare for CTR Maya Plugin File: NW4C_SetMaterialAttr.mel Description: set material attribute Date: 2010/02/12 Author: Takashi Endo Copyright (C)2009-2010 Nintendo Co., Ltd. / HAL Laboratory, Inc. All rights reserved. ******************************************************************************/ // UpdateWindow DoSearch // FaceCulling FragLighting VtxLighting NoCompress /****************************************************************************** get selected SG return SG size ******************************************************************************/ proc int GetSelectedSG(string $sgs[]) { $sgs = `ls -sl -typ shadingEngine`; if (size($sgs) == 0) { // get SG from selected material string $mats[] = `ls -sl -mat`; for ($mat in $mats) { if (!`attributeQuery -n $mat -ex "oc"`) { continue; } string $connectedSgs[] = `listConnections -s 0 -d 1 -type shadingEngine ($mat + ".oc")`; for ($sg in $connectedSgs) { if ($sg != "initialParticleSE" && $sg != "swatchShadingGroup") { $sgs[size($sgs)] = $sg; } } } } return size($sgs); } /****************************************************************************** Face Culling ******************************************************************************/ proc int ConvertFaceCulling_ToGUI(int $val) { // アトリビュート値から GUI のインデックスに変換する // Attr GUI // Front Face 0 ←→ 1 // Back Face 1 ←→ 0 // Always 2 ←→ 3 // Never 3 ←→ 2 int $faceExchangTable[4] = { 1, 0, 3, 2 }; return $faceExchangTable[$val]; } proc int ConvertFaceCulling_ToAttr(int $val) { // GUI のインデックスからアトリビュート値に変換する // GUI Attr // Back Face 0 ←→ 1 // Front Face 1 ←→ 0 // Never 2 ←→ 3 // Always 3 ←→ 2 int $faceExchangTable[4] = { 1, 0, 3, 2 }; return $faceExchangTable[$val]; } global proc int nw4cSetMaterialAttr_Get_FaceCulling(string $node) { return (`attributeQuery -n $node -ex "nw4cFaceCulling"`) ? `getAttr ($node + ".nw4cFaceCulling")` : 1; } global proc nw4cSetMaterialAttr_Add_FaceCulling(string $node) { if (!`attributeQuery -n $node -ex "nw4cFaceCulling"`) { addAttr -ln "nw4cFaceCulling" -at "enum" -en "Front Face=0:Back Face=1:Always=2:Never=3" -dv 1 -h 1 $node; } } global proc nw4cSetMaterialAttr_Set_FaceCulling(string $node, int $val) { nw4cSetMaterialAttr_Add_FaceCulling($node); setAttr ($node + ".nw4cFaceCulling") $val; } proc SetJob_FaceCulling(string $node) { if (!`attributeQuery -n $node -ex "nw4cFaceCulling"`) { return; } scriptJob -p nw4cSetMaterialAttr_FaceCulling -rp -ac ($node + ".nw4cFaceCulling") ("optionMenuGrp -e -sl (ConvertFaceCulling_ToGUI(`nw4cSetMaterialAttr_Get_FaceCulling " + $node + "` + 1)) nw4cSetMaterialAttr_FaceCulling"); } global proc nw4cSetMaterialAttr_FaceCullingCB(string $mainNode) { string $sgs[]; GetSelectedSG($sgs); int $val = `optionMenuGrp -q -sl nw4cSetMaterialAttr_FaceCulling` - 1; for ($node in $sgs) { nw4cSetMaterialAttr_Set_FaceCulling($node, ConvertFaceCulling_ToAttr($val)); } SetJob_FaceCulling($mainNode); } /****************************************************************************** fragment lighting ******************************************************************************/ global proc int nw4cSetMaterialAttr_Get_FragLighting(string $node) { return (`attributeQuery -n $node -ex "nw4cFragLighting"`) ? `getAttr ($node + ".nw4cFragLighting")` : 1; } global proc nw4cSetMaterialAttr_Add_FragLighting(string $node) { if (!`attributeQuery -n $node -ex "nw4cFragLighting"`) { addAttr -ln "nw4cFragLighting" -at "bool" -dv 1 -h 1 $node; } } global proc nw4cSetMaterialAttr_Set_FragLighting(string $node, int $val) { nw4cSetMaterialAttr_Add_FragLighting($node); setAttr ($node + ".nw4cFragLighting") $val; } proc SetJob_FragLighting(string $node) { if (!`attributeQuery -n $node -ex "nw4cFragLighting"`) { return; } scriptJob -p nw4cSetMaterialAttr_FragLighting -rp -ac ($node + ".nw4cFragLighting") ("checkBoxGrp -e -v1 `nw4cSetMaterialAttr_Get_FragLighting " + $node + "` nw4cSetMaterialAttr_FragLighting"); } global proc nw4cSetMaterialAttr_FragLightingCB(string $mainNode, int $val) { string $sgs[]; GetSelectedSG($sgs); for ($node in $sgs) { nw4cSetMaterialAttr_Set_FragLighting($node, $val); } SetJob_FragLighting($mainNode); } /****************************************************************************** vertex lighting ******************************************************************************/ global proc int nw4cSetMaterialAttr_Get_VtxLighting(string $node) { return (`attributeQuery -n $node -ex "nw4cVtxLighting"`) ? `getAttr ($node + ".nw4cVtxLighting")` : 0; } global proc nw4cSetMaterialAttr_Add_VtxLighting(string $node) { if (!`attributeQuery -n $node -ex "nw4cVtxLighting"`) { addAttr -ln "nw4cVtxLighting" -at "bool" -dv 0 -h 1 $node; } } global proc nw4cSetMaterialAttr_Set_VtxLighting(string $node, int $val) { nw4cSetMaterialAttr_Add_VtxLighting($node); setAttr ($node + ".nw4cVtxLighting") $val; } proc SetJob_VtxLighting(string $node) { if (!`attributeQuery -n $node -ex "nw4cVtxLighting"`) { return; } scriptJob -p nw4cSetMaterialAttr_VtxLighting -rp -ac ($node + ".nw4cVtxLighting") ("checkBoxGrp -e -v1 `nw4cSetMaterialAttr_Get_VtxLighting " + $node + "` nw4cSetMaterialAttr_VtxLighting"); } global proc nw4cSetMaterialAttr_VtxLightingCB(string $mainNode, int $val) { string $sgs[]; GetSelectedSG($sgs); for ($node in $sgs) { nw4cSetMaterialAttr_Set_VtxLighting($node, $val); } SetJob_VtxLighting($mainNode); } /****************************************************************************** Blend Mode ******************************************************************************/ global proc int nw4cSetMaterialAttr_Get_BlendMode(string $node) { return (`attributeQuery -n $node -ex "nw4cBlendMode"`) ? `getAttr ($node + ".nw4cBlendMode")` : 0; } global proc nw4cSetMaterialAttr_Add_BlendMode(string $node) { if (!`attributeQuery -n $node -ex "nw4cBlendMode"`) { addAttr -ln "nw4cBlendMode" -at "enum" -en "Auto=0:Opaque=1:Alpha Test=2:Translucent=3:Add=4:Sub=5:Multiply=6" -dv 0 -h 1 $node; } } global proc nw4cSetMaterialAttr_Set_BlendMode(string $node, int $val) { nw4cSetMaterialAttr_Add_BlendMode($node); setAttr ($node + ".nw4cBlendMode") $val; } proc SetJob_BlendMode(string $node) { if (!`attributeQuery -n $node -ex "nw4cBlendMode"`) { return; } scriptJob -p nw4cSetMaterialAttr_BlendMode -rp -ac ($node + ".nw4cBlendMode") ("optionMenuGrp -e -sl (`nw4cSetMaterialAttr_Get_BlendMode " + $node + "` + 1) nw4cSetMaterialAttr_BlendMode"); } global proc nw4cSetMaterialAttr_BlendModeCB(string $mainNode) { string $sgs[]; GetSelectedSG($sgs); int $val = `optionMenuGrp -q -sl nw4cSetMaterialAttr_BlendMode` - 1; for ($node in $sgs) { nw4cSetMaterialAttr_Set_BlendMode($node, $val); } SetJob_BlendMode($mainNode); } /****************************************************************************** no compress ******************************************************************************/ global proc int nw4cSetMaterialAttr_Get_NoCompress(string $node) { return (`attributeQuery -n $node -ex "nw4cNoCompressMat"`) ? `getAttr ($node + ".nw4cNoCompressMat")` : 0; } global proc nw4cSetMaterialAttr_Add_NoCompress(string $node) { if (!`attributeQuery -n $node -ex "nw4cNoCompressMat"`) { addAttr -ln "nw4cNoCompressMat" -at "bool" -dv 0 -h 1 $node; } } global proc nw4cSetMaterialAttr_Set_NoCompress(string $node, int $val) { nw4cSetMaterialAttr_Add_NoCompress($node); setAttr ($node + ".nw4cNoCompressMat") $val; } proc SetJob_NoCompress(string $node) { if (!`attributeQuery -n $node -ex "nw4cNoCompressMat"`) { return; } scriptJob -p nw4cSetMaterialAttr_NoCompress -rp -ac ($node + ".nw4cNoCompressMat") ("optionMenuGrp -e -sl (`nw4cSetMaterialAttr_Get_NoCompress " + $node + "` + 1) nw4cSetMaterialAttr_NoCompress"); } global proc nw4cSetMaterialAttr_NoCompressCB(string $mainNode) { string $sgs[]; GetSelectedSG($sgs); int $val = `optionMenuGrp -q -sl nw4cSetMaterialAttr_NoCompress` - 1; for ($node in $sgs) { nw4cSetMaterialAttr_Set_NoCompress($node, $val); } SetJob_NoCompress($mainNode); } /****************************************************************************** get SG name with material ******************************************************************************/ proc string GetSGNameWithMat(string $sg) { string $name = "( " + $sg + " )"; string $ins[] = `listConnections -s 1 -d 0 ($sg + ".ss")`; if (size($ins)) { $name = $ins[0] + " " + $name; } return $name; } /****************************************************************************** update window ******************************************************************************/ global proc nw4cSetMaterialAttr_UpdateWindow() { //----------------------------------------------------------------------------- // get selection string $sgs[]; int $enableFlag = (GetSelectedSG($sgs) > 0); //----------------------------------------------------------------------------- // set node name string $nodesName; if ($enableFlag) { $nodesName = GetSGNameWithMat($sgs[0]); int $nodeSize = size($sgs); for ($inode = 1; $inode < $nodeSize; ++$inode) { if ($inode == 3) { $nodesName += ", ... (" + $nodeSize + ")"; break; } $nodesName += ", " + GetSGNameWithMat($sgs[$inode]); } } else { $nodesName = "(None)"; } text -e -l $nodesName nw4cSetMaterialAttr_NodeName; //----------------------------------------------------------------------------- // set current attr & change command if ($enableFlag) { string $node = $sgs[0]; int $faceCulling = `nw4cSetMaterialAttr_Get_FaceCulling $node`; optionMenuGrp -e -sl (ConvertFaceCulling_ToGUI($faceCulling) + 1) -cc ("nw4cSetMaterialAttr_FaceCullingCB " + $node) nw4cSetMaterialAttr_FaceCulling; checkBoxGrp -e -v1 `nw4cSetMaterialAttr_Get_FragLighting $node` -cc ("nw4cSetMaterialAttr_FragLightingCB " + $node + " #1") nw4cSetMaterialAttr_FragLighting; checkBoxGrp -e -v1 `nw4cSetMaterialAttr_Get_VtxLighting $node` -cc ("nw4cSetMaterialAttr_VtxLightingCB " + $node + " #1") nw4cSetMaterialAttr_VtxLighting; optionMenuGrp -e -sl (`nw4cSetMaterialAttr_Get_BlendMode $node` + 1) -cc ("nw4cSetMaterialAttr_BlendModeCB " + $node) nw4cSetMaterialAttr_BlendMode; optionMenuGrp -e -sl (`nw4cSetMaterialAttr_Get_NoCompress $node` + 1) -cc ("nw4cSetMaterialAttr_NoCompressCB " + $node) nw4cSetMaterialAttr_NoCompress; // setAttr などで変更された場合にコントロールの値を更新するため SetJob_FaceCulling($node); SetJob_FragLighting($node); SetJob_VtxLighting($node); SetJob_NoCompress($node); } //----------------------------------------------------------------------------- // set enable state control -e -en $enableFlag nw4cSetMaterialAttr_FaceCulling; control -e -en $enableFlag nw4cSetMaterialAttr_FragLighting; control -e -en $enableFlag nw4cSetMaterialAttr_VtxLighting; control -e -en $enableFlag nw4cSetMaterialAttr_BlendMode; control -e -en $enableFlag nw4cSetMaterialAttr_NoCompress; } /****************************************************************************** search check CB ******************************************************************************/ global proc nw4cSetMaterialAttr_SearchCheckCB() { control -e -en (`checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchFaceCulling` || `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchFaceCulling` || `checkBoxGrp -q -v3 nw4cSetMaterialAttr_SearchFaceCulling` || `checkBoxGrp -q -v4 nw4cSetMaterialAttr_SearchFaceCulling` || `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchFragLighting` || `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchFragLighting` || `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchVtxLighting` || `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchVtxLighting` || `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchBlendMode1` || `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchBlendMode1` || `checkBoxGrp -q -v3 nw4cSetMaterialAttr_SearchBlendMode1` || `checkBoxGrp -q -v4 nw4cSetMaterialAttr_SearchBlendMode1` || `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchBlendMode2` || `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchBlendMode2` || `checkBoxGrp -q -v3 nw4cSetMaterialAttr_SearchBlendMode2` || `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchNoCompress` || `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchNoCompress`) nw4cSetMaterialAttr_SearchBtn; } /****************************************************************************** do search ******************************************************************************/ global proc nw4cSetMaterialAttr_DoSearch() { int $searchFaceCull1 = `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchFaceCulling` ? 0 : -1; // Front Face int $searchFaceCull2 = `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchFaceCulling` ? 1 : -1; // BackFace int $searchFaceCull3 = `checkBoxGrp -q -v3 nw4cSetMaterialAttr_SearchFaceCulling` ? 2 : -1; // Always int $searchFaceCull4 = `checkBoxGrp -q -v4 nw4cSetMaterialAttr_SearchFaceCulling` ? 3 : -1; // Never int $searchFragLit1 = `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchFragLighting` ? 0 : -1; // off int $searchFragLit2 = `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchFragLighting` ? 1 : -1; // on int $searchVtxLit1 = `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchVtxLighting` ? 0 : -1; // off int $searchVtxLit2 = `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchVtxLighting` ? 1 : -1; // on int $searchBlendMode1 = `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchBlendMode1` ? 0 : -1; // Auto int $searchBlendMode2 = `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchBlendMode1` ? 1 : -1; // Opaque int $searchBlendMode3 = `checkBoxGrp -q -v3 nw4cSetMaterialAttr_SearchBlendMode1` ? 2 : -1; // Alpha Test int $searchBlendMode4 = `checkBoxGrp -q -v4 nw4cSetMaterialAttr_SearchBlendMode1` ? 3 : -1; // Translucent int $searchBlendMode5 = `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchBlendMode2` ? 4 : -1; // Add int $searchBlendMode6 = `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchBlendMode2` ? 5 : -1; // Sub int $searchBlendMode7 = `checkBoxGrp -q -v3 nw4cSetMaterialAttr_SearchBlendMode2` ? 6 : -1; // Multiply int $searchNoCompress1 = `checkBoxGrp -q -v1 nw4cSetMaterialAttr_SearchNoCompress` ? 0 : -1; // compress int $searchNoCompress2 = `checkBoxGrp -q -v2 nw4cSetMaterialAttr_SearchNoCompress` ? 1 : -1; // no compress int $andFlag = (`radioButtonGrp -q -sl nw4cSetMaterialAttr_SearchLogic` == 1); int $nodeCount = 0; select -cl; string $sgs[] = `ls -typ shadingEngine`; for ($node in $sgs) { if ($node == "initialParticleSE" || $node == "swatchShadingGroup") { continue; } int $faceCull = ConvertFaceCulling_ToGUI(nw4cSetMaterialAttr_Get_FaceCulling($node)); int $faceCullMatch = $faceCull == $searchFaceCull1 || $faceCull == $searchFaceCull2 || $faceCull == $searchFaceCull3 || $faceCull == $searchFaceCull4 || ($andFlag && $searchFaceCull1 == -1 && $searchFaceCull2 == -1 && $searchFaceCull3 == -1 && $searchFaceCull4 == -1); int $fragLit = nw4cSetMaterialAttr_Get_FragLighting($node); int $fragLitMatch = $fragLit == $searchFragLit1 || $fragLit == $searchFragLit2 || ($andFlag && $searchFragLit1 == -1 && $searchFragLit2 == -1); int $vtxLit = nw4cSetMaterialAttr_Get_VtxLighting($node); int $vtxLitMatch = $vtxLit == $searchVtxLit1 || $vtxLit == $searchVtxLit2 || ($andFlag && $searchVtxLit1 == -1 && $searchVtxLit2 == -1); int $blendMode = nw4cSetMaterialAttr_Get_BlendMode($node); int $blendModeMatch = $blendMode == $searchBlendMode1 || $blendMode == $searchBlendMode2 || $blendMode == $searchBlendMode3 || $blendMode == $searchBlendMode4 || $blendMode == $searchBlendMode5 || $blendMode == $searchBlendMode6 || $blendMode == $searchBlendMode7 || ($andFlag && $searchBlendMode1 == -1 && $searchBlendMode2 == -1 && $searchBlendMode3 == -1 && $searchBlendMode4 == -1 && $searchBlendMode5 == -1 && $searchBlendMode6 == -1 && $searchBlendMode7 == -1); int $noCompress = nw4cSetMaterialAttr_Get_NoCompress($node); int $noCompressMatch = $noCompress == $searchNoCompress1 || $noCompress == $searchNoCompress2 || ($andFlag && $searchNoCompress1 == -1 && $searchNoCompress2 == -1); int $match = ($andFlag) ? ($faceCullMatch && $fragLitMatch && $vtxLitMatch && $blendModeMatch && $noCompressMatch): ($faceCullMatch || $fragLitMatch || $vtxLitMatch || $blendModeMatch || $noCompressMatch); if ($match) { select -add -ne $node; // shadingEngine string $ins[] = `listConnections -s 1 -d 0 ($node + ".ss")`; if (size($ins)) { select -add $ins[0]; // material } select -add $node; // shape or face ++$nodeCount; } } if ($nodeCount == 0) { print "Not found\n"; } else { string $msg = "Found: " + $nodeCount + " shadingEngine node"; if ($nodeCount >= 2) { $msg += "s"; } print ($msg + "\n"); } } /****************************************************************************** main ******************************************************************************/ global proc NW4C_SetMaterialAttr() { //----------------------------------------------------------------------------- // create window int $winW = 600; int $winH = 448; if (!`window -ex nw4cSetMaterialAttr_Win`) { window -t "NW4C Set Material Attribute" -wh $winW $winH -mxb 0 -mb 1 nw4cSetMaterialAttr_Win; menu -l "Help"; menuItem -l ("Help on " + `window -q -t nw4cSetMaterialAttr_Win` + "...") -c "NW4C_ShowHelp \"html/NW4C_SetMaterialAttr.html\" \"\""; columnLayout -adj 1 -cat "both" 4 -cal "center" -rs 4; //----------------------------------------------------------------------------- // node name frameLayout -l "Selected Material ( Shading Group )" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; columnLayout -adj 1 -cal "center" -rs 8; text -l "" nw4cSetMaterialAttr_NodeName; setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // set frameLayout -l "Set" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; columnLayout -adj 1 -rs 8; rowColumnLayout -nc 4 -cw 1 10 -cw 2 210 -cw 3 140 -cw 4 150; text -l ""; // dummy optionMenuGrp -l "Face Culling" -cw 1 70 -cal 1 "right" nw4cSetMaterialAttr_FaceCulling; menuItem -l "Back Face Culling"; menuItem -l "Front Face Culling"; menuItem -l "Never"; menuItem -l "Always Culling"; checkBoxGrp -ncb 1 -l "" -l1 "Fragment Lighting" -v1 1 -cw2 10 130 nw4cSetMaterialAttr_FragLighting; checkBoxGrp -ncb 1 -l "" -l1 "Vertex Lighting" -v1 0 -cw2 10 130 nw4cSetMaterialAttr_VtxLighting; setParent ..; // rowColumnLayout rowColumnLayout -nc 4 -cw 1 10 -cw 2 210 -cw 3 250 -cw 4 100; text -l ""; // dummy optionMenuGrp -l "Blend Mode" -cw 1 70 -rat 1 "both" 4 -cal 1 "right" nw4cSetMaterialAttr_BlendMode; menuItem -l "Auto"; menuItem -l "Opaque"; menuItem -l "Alpha Test"; menuItem -l "Translucent"; menuItem -l "Add"; menuItem -l "Sub"; menuItem -l "Multiply"; optionMenuGrp -l "Compress" -cw 1 70 -rat 1 "both" 4 -cal 1 "right" nw4cSetMaterialAttr_NoCompress; menuItem -l "Compress if possible"; menuItem -l "Don't compress"; text -l ""; // dummy setParent ..; // rowColumnLayout setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // search frameLayout -l "Search" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; columnLayout -adj 1 -rs 8; checkBoxGrp -l "Face Culling" -ncb 4 -cw5 110 120 120 120 120 -la4 "Back Face Culling" "Front Face Culling" "Never" "Always Culling" -cc "nw4cSetMaterialAttr_SearchCheckCB" nw4cSetMaterialAttr_SearchFaceCulling; checkBoxGrp -l "Fragment Lighting" -ncb 2 -cw3 110 120 120 -la2 "Off" "On" -cc "nw4cSetMaterialAttr_SearchCheckCB" nw4cSetMaterialAttr_SearchFragLighting; checkBoxGrp -l "Vertex Lighting" -ncb 2 -cw3 110 120 120 -la2 "Off" "On" -cc "nw4cSetMaterialAttr_SearchCheckCB" nw4cSetMaterialAttr_SearchVtxLighting; checkBoxGrp -l "Blend Mode" -ncb 4 -cw5 110 120 120 120 120 -la4 "Auto" "Opaque" "Alpha Test" "Translucent" -cc "nw4cSetMaterialAttr_SearchCheckCB" nw4cSetMaterialAttr_SearchBlendMode1; checkBoxGrp -l " " -ncb 3 -cw4 110 120 120 120 -la3 "Add" "Sub" "Multiply" -cc "nw4cSetMaterialAttr_SearchCheckCB" nw4cSetMaterialAttr_SearchBlendMode2; checkBoxGrp -l "Compress" -ncb 2 -cw3 110 120 120 -la2 "Compress" "No Compress" -cc "nw4cSetMaterialAttr_SearchCheckCB" nw4cSetMaterialAttr_SearchNoCompress; rowColumnLayout -nc 2 -cw 1 315 -cw 2 150; radioButtonGrp -l "" -nrb 2 -cw3 202 50 50 -rat 2 "both" 0 -rat 3 "both" 0 -la2 "and" "or" -sl 1 nw4cSetMaterialAttr_SearchLogic; button -l "Search" -c "nw4cSetMaterialAttr_DoSearch" nw4cSetMaterialAttr_SearchBtn; setParent ..; // rowColumnLayout setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // close button string $closeCmd = "deleteUI nw4cSetMaterialAttr_Win"; string $form = `formLayout -nd 100`; string $closeBtn = `button -h 26 -l "Close" -c $closeCmd`; formLayout -e -af $closeBtn "top" 0 -af $closeBtn "left" 0 -af $closeBtn "bottom" 0 -af $closeBtn "right" 0 $form; setParent ..; // formLayout setParent ..; // columnLayout setFocus $closeBtn; //----------------------------------------------------------------------------- // set selection change job scriptJob -p nw4cSetMaterialAttr_Win -e "SelectionChanged" "nw4cSetMaterialAttr_UpdateWindow"; } if (`window -q -w nw4cSetMaterialAttr_Win` < $winW) { window -e -w $winW nw4cSetMaterialAttr_Win; } if (`window -q -h nw4cSetMaterialAttr_Win` < $winH) { window -e -h $winH nw4cSetMaterialAttr_Win; } //window -e -wh $winW $winH nw4cSetMaterialAttr_Win; //----------------------------------------------------------------------------- // update window nw4cSetMaterialAttr_UpdateWindow; nw4cSetMaterialAttr_SearchCheckCB; //----------------------------------------------------------------------------- // show window showWindow nw4cSetMaterialAttr_Win; }