/****************************************************************************** NintendoWare for CTR Maya Plugin File: NW4C_SetUserData.mel Description: set user data Date: 2010/10/14 Copyright (C)2009-2011 Nintendo/HAL Laboratory, Inc. All rights reserved. ******************************************************************************/ // UpdateWindowT OpenInputWindow // InputApplyCB DeleteBtnCB MoveUpBtnCB /****************************************************************************** user data size ******************************************************************************/ global proc int nw4cSetUserData_Get_UserDataSize(string $node) { return (`attributeQuery -n $node -ex "nw4cUserDataSize"`) ? `getAttr ($node + ".nw4cUserDataSize")` : 0; } global proc nw4cSetUserData_Add_UserDataSize(string $node) { if (!`attributeQuery -n $node -ex "nw4cUserDataSize"`) { addAttr -ln "nw4cUserDataSize" -at "short" -dv 0 -h 1 $node; } } global proc nw4cSetUserData_Set_UserDataSize(string $node, int $val) { nw4cSetUserData_Add_UserDataSize($node); setAttr ($node + ".nw4cUserDataSize") $val; } /****************************************************************************** user data value ******************************************************************************/ global proc string nw4cSetUserData_Get_UserDataValue(string $node, int $index) { if (!`attributeQuery -n $node -ex "nw4cUserData"` || $index >= nw4cSetUserData_Get_UserDataSize($node)) { return ""; } string $val = `getAttr ($node + ".nw4cUserData[" + $index + "]")`; return $val; } global proc nw4cSetUserData_Add_UserDataValue(string $node) { if (!`attributeQuery -n $node -ex "nw4cUserData"`) { addAttr -m -ln "nw4cUserData" -dt "string" -h 1 $node; } } global proc nw4cSetUserData_Set_UserDataValue(string $node, int $index, string $val) { nw4cSetUserData_Add_UserDataValue($node); setAttr -typ "string" ($node + ".nw4cUserData[" + $index + "]") $val; //trace ("set: " + $node + ".data[" + $index + "] = " + $val); } global proc int nw4cSetUserData_Get_AllUserDataValue(string $values[], string $node) { clear($values); int $size = nw4cSetUserData_Get_UserDataSize($node); for ($index = 0; $index < $size; ++$index) { $values[$index] = nw4cSetUserData_Get_UserDataValue($node, $index); } return $size; // return user data size } /****************************************************************************** is user data name is unique ******************************************************************************/ proc int IsUserDataNameIsUnique(string $dataValues[], string $checkName, int $editIndex) { int $dataSize = size($dataValues); int $index; for ($index = 0; $index < $dataSize; ++$index) { if ($index == $editIndex) { continue; } string $name = match("[^\"]*\"", $dataValues[$index]); if (size($name) >= 2) { if (substring($name, 1, size($name) - 1) == $checkName) { return false; } } } return true; } /****************************************************************************** decode user data value $words[0]: name $words[1]: type (0, 1, 2) $words[2]: size $words[3]: value ******************************************************************************/ proc DecodeUserDataValue(string $words[], string $userData) { string $name = match("[^\"]*\"", $userData); string $typeStr = "0"; string $sizeStr = "0"; string $valStr = ""; int $nameSize = size($name); if ($nameSize <= 1) { $name = "error"; } else { $name = substring($name, 1, $nameSize - 1); $userData = substring($userData, $nameSize + 1, size($userData)); if (size(match("^i", $userData)) > 0) { $typeStr = "1"; } else if (size(match("^f", $userData)) > 0) { $typeStr = "2"; } $userData = substring($userData, 3, size($userData)); $sizeStr = match("[0-9]+", $userData); $valStr = substring($userData, size($sizeStr) + 2, size($userData)); } $words[0] = $name; $words[1] = $typeStr; $words[2] = $sizeStr; $words[3] = $valStr; } /****************************************************************************** get list string from user data value ******************************************************************************/ proc string GetListStringFromUserDataValue(string $userData) { //----------------------------------------------------------------------------- // decode string $words[4]; DecodeUserDataValue($words, $userData); string $name = $words[0]; int $type = (int)$words[1]; string $sizeStr = $words[2]; string $valStr = $words[3]; //----------------------------------------------------------------------------- // format int $nameSize = size($name); if ($nameSize < 16) { $name += substring(" ", 1, 16 - $nameSize); } else if ($nameSize > 16) { $name = substring($name, 1, 16 - 3) + "..."; } if ($type == 0) { string $strs[]; tokenize($valStr, "&", $strs); $valStr = ""; for ($str in $strs) { $str = strip($str); //print ("[" + $str + "]\n"); if (size($str) == 0) { continue; } if (size($valStr) != 0) $valStr += " "; $valStr += $str; } } if (size($sizeStr) < 4) { $sizeStr = substring(" ", 1, 4 - size($sizeStr)) + $sizeStr; } if (size($valStr) > 24) { $valStr = substring($valStr, 1, 24 - 3) + "..."; } string $typeNames[3] = { "(String) ", "(Integer)", "(Float) " }; return ($name + " " + $typeNames[$type] + " [" + $sizeStr + "] \"" + $valStr + "\""); } /****************************************************************************** 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); } /****************************************************************************** is valid transform ******************************************************************************/ proc int IsValidTransform(string $node) { string $childs[] = `listRelatives -pa -s $node`; if (size(`ls -typ ambientLight -typ areaLight -typ volumeLight -typ environmentFog $childs`) > 0) { return false; } else { return true; } } /****************************************************************************** get selected transform & SG return node size ******************************************************************************/ proc int GetSelectedXformAndSG(string $nodes[]) { clear($nodes); //----------------------------------------------------------------------------- // transform string $xforms[] = `ls -sl -typ transform`; for ($node in $xforms) { if (IsValidTransform($node)) { $nodes[size($nodes)] =$node; } } //----------------------------------------------------------------------------- // SG string $sgs[]; if (GetSelectedSG($sgs) > 0) { for ($node in $sgs) { $nodes[size($nodes)] =$node; } } return size($nodes); } /****************************************************************************** enable main window ******************************************************************************/ global proc nw4cSetUserData_EnableMainWindow(int $enableFlag) { if (`window -ex nw4cSetUserData_Win`) { control -e -en $enableFlag nw4cSetUserData_MoveUpBtn; control -e -en $enableFlag nw4cSetUserData_MoveDownBtn; control -e -en $enableFlag nw4cSetUserData_AddBtn; control -e -en $enableFlag nw4cSetUserData_DeleteBtn; control -e -en $enableFlag nw4cSetUserData_EditBtn; control -e -en $enableFlag nw4cSetUserData_List; control -e -en $enableFlag nw4cSetUserData_CloseBtn; } } /****************************************************************************** input apply callback ******************************************************************************/ global proc nw4cSetUserData_InputApplyCB(string $node, int $curIndex, int $addFlag) { //----------------------------------------------------------------------------- // check node exist if (!`objExists $node`) { warning ("Node does not exist: " + $node); return; } //----------------------------------------------------------------------------- // get all data string $dataValues[]; int $dataSize = nw4cSetUserData_Get_AllUserDataValue($dataValues, $node); //----------------------------------------------------------------------------- // get control value string $name = `textField -q -tx nw4cSetUserData_DataName`; $name = strip($name); int $type = `radioButtonGrp -q -sl nw4cSetUserData_DataType` - 1; string $value = `scrollField -q -tx nw4cSetUserData_Value`; //----------------------------------------------------------------------------- // check name string $strVals[]; int $intNums[]; float $floatNums[]; if (size($name) == 0) { error "Name is empty"; } if (size(match("[^-_.0-9A-Za-z]", $name)) > 0) { error "Name is wrong (please use only [alphabetic/numeric character] [-] [_] [.])"; } int $editIndex = ($addFlag) ? -1 : $curIndex; if (!IsUserDataNameIsUnique($dataValues, $name, $editIndex)) { error "Name is already used"; } //----------------------------------------------------------------------------- // check value if ($type == 0) // string { if (size($value) == 0) { error "String is empty"; } string $lines[]; tokenize($value, "\n", $lines); for ($line in $lines) { $line = strip($line); //print ("[" + $line + "]\n"); if (size($line) == 0) { continue; } if (size(match("[<>&'\"]", $line)) > 0) { error "String is wrong (please don't use [<] [>] [&] ['] [double quote])"; } $strVals[size($strVals)] = $line; } if (size($strVals) == 0) { error "Please input strings"; } } else // int / float { if (size($value) == 0) { error "Number is empty"; } int $validFlag = 1; string $lines[]; tokenize($value, "\n", $lines); for ($line in $lines) { $line = strip($line); //print ("[" + $line + "]\n"); if (size($line) == 0) { continue; } string $words[]; if (tokenize($line, " ", $words) != 1 || // multi value per line size(match("[^eE][+-]", $line)) > 0) // +/- is not at top or after E { $validFlag = 0; break; } if ($type == 1) // int { if (size(match("[^+-0123456789]", $line)) > 0) { $validFlag = 0; break; } $intNums[size($intNums)] = (int)$line; } else // float { if (size(match("[^+-0123456789eE.]", $line)) > 0) { $validFlag = 0; break; } $floatNums[size($floatNums)] = (float)$line; } } if ($type == 1) { if (!$validFlag || size($intNums) == 0) { error "Please input integer number"; } } else { if (!$validFlag || size($floatNums) == 0) { error "Please input float number"; } } } //----------------------------------------------------------------------------- // create data string string $dataStr = $name + "\""; if ($type == 0) { int $strLen = 0; string $strData = ""; string $strVal; for ($strVal in $strVals) { if (size($strData) > 0) { $strData += "&"; } $strData += $strVal; $strLen += size($strVal); } $dataStr += "s " + $strLen + " " + $strData; } else if ($type == 1) { $dataStr += "i " + size($intNums); int $intVal; for ($intVal in $intNums) { $dataStr += " " + $intVal; } } else { $dataStr += "f " + size($floatNums); float $floatVal; for ($floatVal in $floatNums) { $dataStr += " " + $floatVal; } } //----------------------------------------------------------------------------- // add or edit if ($addFlag) { //----------------------------------------------------------------------------- // add if ($curIndex > $dataSize) { $curIndex = $dataSize; } if ($dataSize > 0) { // shift for ($idx = $dataSize; $idx > $curIndex; --$idx) { nw4cSetUserData_Set_UserDataValue($node, $idx, $dataValues[$idx - 1]); } } nw4cSetUserData_Set_UserDataValue($node, $curIndex, $dataStr); nw4cSetUserData_Set_UserDataSize($node, $dataSize + 1); } else { //----------------------------------------------------------------------------- // edit if ($dataSize == 0) { $curIndex = 0; nw4cSetUserData_Set_UserDataSize($node, 1); } else if ($curIndex >= $dataSize) { $curIndex = $dataSize - 1; } nw4cSetUserData_Set_UserDataValue($node, $curIndex, $dataStr); } } /****************************************************************************** open input window ******************************************************************************/ proc OpenInputWindow(string $node, int $curIndex, int $addFlag) { //----------------------------------------------------------------------------- // get current value string $name = ""; int $type = 0; string $values = ""; int $dataSize = nw4cSetUserData_Get_UserDataSize($node); if (!$addFlag) { string $userData = nw4cSetUserData_Get_UserDataValue($node, $curIndex); string $words[4]; DecodeUserDataValue($words, $userData); $name = $words[0]; $type = (int)$words[1]; string $valStr = $words[3]; if ($type == 0) { string $strs[]; tokenize($valStr, "&", $strs); for ($str in $strs) { $values += ("" + $str + "\r\n"); } } else { string $nums[]; tokenize($valStr, " ", $nums); for ($num in $nums) { $values += ("" + $num + "\r\n"); } } } //----------------------------------------------------------------------------- // set command string $applyCmd = ("nw4cSetUserData_InputApplyCB " + $node + " " + $curIndex + " " + $addFlag + ";"); int $closeSelIndex = ($addFlag && $curIndex >= $dataSize) ? -1 : $curIndex; int $closeShowIndex = ($addFlag && $curIndex >= $dataSize) ? $curIndex : -1; string $closeCmd = "deleteUI nw4cSetUserData_InputWin; " + "nw4cSetUserData_UpdateWindow " + $closeSelIndex + " " + $closeShowIndex + "; "; //----------------------------------------------------------------------------- // create window int $wd = 320; int $ht = 370; if (`window -ex nw4cSetUserData_InputWin`) { deleteUI nw4cSetUserData_InputWin; } window -t ("Input User Data --- " + $node) -wh $wd $ht -mxb 0 -tbm 0 nw4cSetUserData_InputWin; //columnLayout -adj 1 -cat "both" 8 -cal "center" -rs 8; string $form = `formLayout -nd 100`; //----------------------------------------------------------------------------- // attr string $nameLabel = `text -l "Name" -al "right"`; textField -tx $name -ec ($applyCmd + $closeCmd) nw4cSetUserData_DataName; radioButtonGrp -l "Type" -nrb 3 -cw4 60 70 70 70 -la3 "String" "Integer" "Float" -sl ($type + 1) nw4cSetUserData_DataType; text -l "String or Number : (One value per line)" -al "left" -fn "boldLabelFont" nw4cSetUserData_NumberLabel; scrollField -ww 0 -tx $values -ec "scrollField -e -it \"\\r\\n\" nw4cSetUserData_Value" nw4cSetUserData_Value; //----------------------------------------------------------------------------- // OK & Cancel button string $okBtn = `button -w 100 -h 26 -l "OK" -c ($applyCmd + $closeCmd)`; string $cancelBtn = `button -w 100 -h 26 -l "Cancel" -c ($closeCmd)`; formLayout -e -af $nameLabel "top" 8 -an $nameLabel "left" -an $nameLabel "bottom" -ac $nameLabel "right" 10 nw4cSetUserData_DataName -af nw4cSetUserData_DataName "top" 8 -af nw4cSetUserData_DataName "left" 68 -an nw4cSetUserData_DataName "bottom" -af nw4cSetUserData_DataName "right" 8 -ac nw4cSetUserData_DataType "top" 16 $nameLabel -af nw4cSetUserData_DataType "left" 8 -an nw4cSetUserData_DataType "bottom" -an nw4cSetUserData_DataType "right" -ac nw4cSetUserData_NumberLabel "top" 12 nw4cSetUserData_DataType -af nw4cSetUserData_NumberLabel "left" 8 -an nw4cSetUserData_NumberLabel "bottom" -af nw4cSetUserData_NumberLabel "right" 8 -ac nw4cSetUserData_Value "top" 0 nw4cSetUserData_NumberLabel -af nw4cSetUserData_Value "left" 8 -af nw4cSetUserData_Value "bottom" 48 -af nw4cSetUserData_Value "right" 8 -an $okBtn "top" -an $okBtn "left" -af $okBtn "bottom" 8 -ac $okBtn "right" 8 $cancelBtn -an $cancelBtn "top" -an $cancelBtn "left" -af $cancelBtn "bottom" 8 -af $cancelBtn "right" 16 $form; setParent ..; // formLayout //setParent ..; // columnLayout if ($addFlag) { setFocus nw4cSetUserData_DataName; } else { setFocus nw4cSetUserData_Value; } if (`window -q -w nw4cSetUserData_InputWin` < $wd) { window -e -w $wd nw4cSetUserData_InputWin; } if (`window -q -h nw4cSetUserData_InputWin` < $ht) { window -e -h $ht nw4cSetUserData_InputWin; } //window -e -wh $wd $ht nw4cSetUserData_InputWin; //----------------------------------------------------------------------------- // show window showWindow nw4cSetUserData_InputWin; //----------------------------------------------------------------------------- // disable main window nw4cSetUserData_EnableMainWindow(0); } /****************************************************************************** get selected item index return -1 if not selected ******************************************************************************/ proc int GetSelectedItemIndex() { int $selIndexes[] = `textScrollList -q -sii nw4cSetUserData_List`; if (size($selIndexes) == 0) { return -1; } else { return ($selIndexes[0] - 1); } } /****************************************************************************** select list callback ******************************************************************************/ global proc nw4cSetUserData_SelectListCB(string $node) { int $index = GetSelectedItemIndex(); int $dataSize = nw4cSetUserData_Get_UserDataSize($node); int $selOK = ($index >= 0 && $index < $dataSize); if ($index >= $dataSize) { textScrollList -e -da nw4cSetUserData_List; } control -e -en ($selOK && $index > 0) nw4cSetUserData_MoveUpBtn; control -e -en ($selOK && $index < $dataSize - 1) nw4cSetUserData_MoveDownBtn; control -e -en 1 nw4cSetUserData_AddBtn; // always enable control -e -en $selOK nw4cSetUserData_DeleteBtn; control -e -en $selOK nw4cSetUserData_EditBtn; } /****************************************************************************** move up button callback ******************************************************************************/ global proc nw4cSetUserData_MoveUpBtnCB(string $node) { int $index = GetSelectedItemIndex(); int $dataSize = nw4cSetUserData_Get_UserDataSize($node); if ($index > 0 && $index < $dataSize) { string $selVal = nw4cSetUserData_Get_UserDataValue($node, $index); string $upVal = nw4cSetUserData_Get_UserDataValue($node, $index - 1); nw4cSetUserData_Set_UserDataValue($node, $index, $upVal); nw4cSetUserData_Set_UserDataValue($node, $index - 1, $selVal); nw4cSetUserData_UpdateWindow($index - 1, -1); } } /****************************************************************************** move down button callback ******************************************************************************/ global proc nw4cSetUserData_MoveDownBtnCB(string $node) { int $index = GetSelectedItemIndex(); int $dataSize = nw4cSetUserData_Get_UserDataSize($node); if ($index >= 0 && $index < $dataSize - 1) { string $selVal = nw4cSetUserData_Get_UserDataValue($node, $index); string $downVal = nw4cSetUserData_Get_UserDataValue($node, $index + 1); nw4cSetUserData_Set_UserDataValue($node, $index, $downVal); nw4cSetUserData_Set_UserDataValue($node, $index + 1, $selVal); nw4cSetUserData_UpdateWindow($index + 1, -1); } } /****************************************************************************** add button callback ******************************************************************************/ global proc nw4cSetUserData_AddBtnCB(string $node) { int $index = GetSelectedItemIndex(); if ($index == -1) { $index = nw4cSetUserData_Get_UserDataSize($node); } OpenInputWindow($node, $index, 1); } /****************************************************************************** edit button callback ******************************************************************************/ global proc nw4cSetUserData_EditBtnCB(string $node) { int $index = GetSelectedItemIndex(); if ($index == -1 || $index >= nw4cSetUserData_Get_UserDataSize($node)) { return; } OpenInputWindow($node, $index, 0); } /****************************************************************************** delete button callback ******************************************************************************/ global proc nw4cSetUserData_DeleteBtnCB(string $node) { //----------------------------------------------------------------------------- // check node exist if (!`objExists $node`) { warning ("Node does not exist: " + $node); return; } //----------------------------------------------------------------------------- // get all item string $dataValues[]; int $dataSize = nw4cSetUserData_Get_AllUserDataValue($dataValues, $node); //----------------------------------------------------------------------------- // check selected item int $delIndex = GetSelectedItemIndex(); if ($delIndex == -1 || $delIndex >= $dataSize) { return; } //----------------------------------------------------------------------------- // delete int $idx; for ($idx = $delIndex; $idx < $dataSize - 1; ++$idx) { nw4cSetUserData_Set_UserDataValue($node, $idx, $dataValues[$idx + 1]); // shift } nw4cSetUserData_Set_UserDataValue($node, $dataSize - 1, ""); // set empty to deleted item --$dataSize; nw4cSetUserData_Set_UserDataSize($node, $dataSize); // decrement size //----------------------------------------------------------------------------- // update window int $selIndex = -1; if ($delIndex < $dataSize) { $selIndex = $delIndex; } else if ($dataSize > 0) { $selIndex = $dataSize - 1; } nw4cSetUserData_UpdateWindow($selIndex, -1); } /****************************************************************************** get SG name with material ******************************************************************************/ proc string GetSGNameWithMat(string $sg) { string $ins[] = `listConnections -s 1 -d 0 ($sg + ".ss")`; if (size($ins)) { $sg += " ( " + $ins[0] + " )"; } return $sg; } /****************************************************************************** update window (UpdateWindowT) ******************************************************************************/ global proc nw4cSetUserData_UpdateWindow(int $selIndex, int $showIndex) { //----------------------------------------------------------------------------- // get selection string $nodes[]; GetSelectedXformAndSG($nodes); int $enableFlag = (size($nodes) == 1); //----------------------------------------------------------------------------- // set node name string $nodeName; if ($enableFlag) { if (nodeType($nodes[0]) == "shadingEngine") { $nodeName = GetSGNameWithMat($nodes[0]); } else { $nodeName = $nodes[0]; } } else if (size($nodes) > 1) { $nodeName = "(Multi node is selected)"; } else { $nodeName = "(None)"; } text -e -l $nodeName nw4cSetUserData_NodeName; //----------------------------------------------------------------------------- // set current attr & change command textScrollList -e -ra nw4cSetUserData_List; if ($enableFlag) { string $node = $nodes[0]; button -e -c ("nw4cSetUserData_MoveUpBtnCB " + $node) nw4cSetUserData_MoveUpBtn; button -e -c ("nw4cSetUserData_MoveDownBtnCB " + $node) nw4cSetUserData_MoveDownBtn; button -e -c ("nw4cSetUserData_AddBtnCB " + $node) nw4cSetUserData_AddBtn; button -e -c ("nw4cSetUserData_DeleteBtnCB " + $node) nw4cSetUserData_DeleteBtn; button -e -c ("nw4cSetUserData_EditBtnCB " + $node) nw4cSetUserData_EditBtn; string $dataValues[]; int $dataSize = nw4cSetUserData_Get_AllUserDataValue($dataValues, $node); for ($index = 0; $index < $dataSize; ++$index) { string $listStr = GetListStringFromUserDataValue($dataValues[$index]); textScrollList -e -a $listStr nw4cSetUserData_List; } if ($selIndex != -1 && $selIndex < $dataSize) { textScrollList -e -sii ($selIndex + 1) nw4cSetUserData_List; } if ($showIndex != -1 && $showIndex < $dataSize) { textScrollList -e -shi ($showIndex + 1) nw4cSetUserData_List; } textScrollList -e -sc ("nw4cSetUserData_SelectListCB " + $node) -dcc ("nw4cSetUserData_EditBtnCB " + $node) nw4cSetUserData_List; nw4cSetUserData_SelectListCB($nodes[0]); } textScrollList -e -a "-----" nw4cSetUserData_List; // for add last //----------------------------------------------------------------------------- // set enable state if (`window -ex nw4cSetUserData_InputWin`) { nw4cSetUserData_EnableMainWindow(0); } else { if (!$enableFlag) { control -e -en $enableFlag nw4cSetUserData_MoveUpBtn; control -e -en $enableFlag nw4cSetUserData_MoveDownBtn; control -e -en $enableFlag nw4cSetUserData_AddBtn; control -e -en $enableFlag nw4cSetUserData_DeleteBtn; control -e -en $enableFlag nw4cSetUserData_EditBtn; } control -e -en $enableFlag nw4cSetUserData_List; control -e -en 1 nw4cSetUserData_CloseBtn; } } /****************************************************************************** main ******************************************************************************/ global proc NW4C_SetUserData() { //----------------------------------------------------------------------------- // create window int $wd = 505; int $ht = 420; if (!`window -ex nw4cSetUserData_Win`) { window -t "NW4C Set User Data" -wh $wd $ht -mxb 0 -mb 1 nw4cSetUserData_Win; menu -l "Help"; menuItem -l ("Help on " + `window -q -t nw4cSetUserData_Win` + "...") -c "NW4C_ShowHelp \"html/NW4C_SetUserData.html\" \"user_data\""; string $form1 = `formLayout -nd 100`; //----------------------------------------------------------------------------- // node name string $nameFrame = `frameLayout -l "Selected Transform Node or Shading Group" -cll 0 -cl 0 -bv 1 -bs "etchedIn"`; columnLayout -adj 1 -cal "center" -rs 8; text -l "" nw4cSetUserData_NodeName; setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // list string $listFrame = `frameLayout -l "" -cll 0 -cl 0 -bv 1 -bs "etchedIn"`; string $form2 = `formLayout -nd 100`; // buttons string $listBtnRow = `rowColumnLayout -nc 5 -cw 1 80 -cw 2 80 -cw 3 80 -cw 4 80 -cw 5 80 -cs 1 1 -cs 2 8 -cs 3 22 -cs 4 8 -cs 5 22`; button -l "Move Up" -h 24 nw4cSetUserData_MoveUpBtn; button -l "Move Down" -h 24 nw4cSetUserData_MoveDownBtn; button -l "Add..." -h 24 nw4cSetUserData_AddBtn; button -l "Delete" -h 24 nw4cSetUserData_DeleteBtn; button -l "Edit..." -h 24 nw4cSetUserData_EditBtn; setParent ..; // rowColumnLayout // list string $listText = `text -l "Name Type Size Value" -al "left" -fn "smallFixedWidthFont"`; textScrollList -nr 15 -ams 0 -fn "smallFixedWidthFont" nw4cSetUserData_List; setParent ..; // formLayout formLayout -e -af $listBtnRow "top" 8 -af $listBtnRow "left" 8 -an $listBtnRow "bottom" -af $listBtnRow "right" 8 -ac $listText "top" 8 $listBtnRow -af $listText "left" 8 -an $listText "bottom" -af $listText "right" 8 -ac nw4cSetUserData_List "top" 0 $listText -af nw4cSetUserData_List "left" 8 -af nw4cSetUserData_List "bottom" 8 -af nw4cSetUserData_List "right" 8 $form2; setParent ..; // frameLayout //----------------------------------------------------------------------------- // close button string $closeCmd = "deleteUI nw4cSetUserData_Win; "; button -h 26 -l "Close" -c $closeCmd nw4cSetUserData_CloseBtn; formLayout -e -af $nameFrame "top" 4 -af $nameFrame "left" 4 -an $nameFrame "bottom" -af $nameFrame "right" 4 -ac $listFrame "top" 4 $nameFrame -af $listFrame "left" 4 -ac $listFrame "bottom" 4 nw4cSetUserData_CloseBtn -af $listFrame "right" 4 -an nw4cSetUserData_CloseBtn "top" -af nw4cSetUserData_CloseBtn "left" 4 -af nw4cSetUserData_CloseBtn "bottom" 8 -af nw4cSetUserData_CloseBtn "right" 4 $form1; setParent ..; // formLayout setFocus nw4cSetUserData_CloseBtn; //----------------------------------------------------------------------------- // set selection change job scriptJob -p nw4cSetUserData_Win -e "SelectionChanged" "nw4cSetUserData_UpdateWindow -1 -1"; //----------------------------------------------------------------------------- // set undo / redo job scriptJob -p nw4cSetUserData_Win -e "Undo" "nw4cSetUserData_UpdateWindow -1 -1"; scriptJob -p nw4cSetUserData_Win -e "Redo" "nw4cSetUserData_UpdateWindow -1 -1"; } if (`window -q -w nw4cSetUserData_Win` < $wd) { window -e -w $wd nw4cSetUserData_Win; } if (`window -q -h nw4cSetUserData_Win` < $ht) { window -e -h $ht nw4cSetUserData_Win; } //window -e -wh $wd $ht nw4cSetUserData_Win; //----------------------------------------------------------------------------- // update window nw4cSetUserData_UpdateWindow(-1, -1); //----------------------------------------------------------------------------- // show window showWindow nw4cSetUserData_Win; if (`window -ex nw4cSetUserData_InputWin`) { showWindow nw4cSetUserData_InputWin; } }