// =========================================================================== // Copyright 2018 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software in either electronic or hard copy form. // =========================================================================== // Procedure Name: // uvTkBuildSelectionOptions // // Description: // Build selection options for UV toolkit // // Input Arguments: // $parentForm - Parent form // // Return Value: // Layout to be added into form // global proc string uvTkBuildSelectionOptions(string $parentForm) { global int $gUVTkTwinBtnWth; global int $gUVTkTwinBtnHgt; global float $gUVTkFrameHeadColor[]; string $layout = `columnLayout -p $parentForm -adjustableColumn true -columnAttach "both" 5`; setParent $layout; //Component selection mask buttons string $selCompLayout = `formLayout -p $layout`; string $uvTkCompBtnsImages[] = { "UVEditorVertex.png", "UVEditorEdge.png", "UVEditorFace.png", "UVEditorUV.png", "UVEditorShell.png"}; string $uvTkCompBtnsAnnots[] = { (uiRes("m_uvTkBuildSelectionOptions.kVertexComponentAnn")), (uiRes("m_uvTkBuildSelectionOptions.kEdgeComponentAnn")), (uiRes("m_uvTkBuildSelectionOptions.kFaceComponentAnn")), (uiRes("m_uvTkBuildSelectionOptions.kUVComponentAnn")), (uiRes("m_uvTkBuildSelectionOptions.kUVShellComponentAnn"))}; string $uvTkCompBtnsCmds[] = { "UVToolkitVertexModeCB", "UVToolkitEdgeModeCB", "UVToolkitFaceModeCB", "UVToolkitUVsModeCB", "UVToolkitUVShellModeCB"}; string $uvTkCompRMBCmds[] = { "UVToolkitDeselectVertexCB", "UVToolkitDeselectEdgeCB", "UVToolkitDeselectFaceCB", "UVToolkitDeselectUVsCB", "select -clear;"}; global string $gUvTkCompBtns[]; for ($i = 0; $i < size($uvTkCompBtnsCmds); $i++) { $gUvTkCompBtns[$i] = `iconTextButton -st "iconOnly" -i $uvTkCompBtnsImages[$i] -ann $uvTkCompBtnsAnnots[$i] -w 36 -h 36 -mw 2 -mh 2 -bgc 0.322 0.521 0.65 -ebg 0 -c $uvTkCompBtnsCmds[$i]`; popupMenu -button 3 -parent $gUvTkCompBtns[$i] -postMenuCommand($uvTkCompRMBCmds[$i]); } string $line = `formLayout -bgc 0.3 0.3 0.3 -height 36 -width 2`; setParent ..; formLayout -edit -attachForm $gUvTkCompBtns[0] "top" 5 -attachForm $gUvTkCompBtns[0] "left" 15 -attachForm $gUvTkCompBtns[1] "top" 5 -attachControl $gUvTkCompBtns[1] "left" 1 $gUvTkCompBtns[0] -attachForm $gUvTkCompBtns[2] "top" 5 -attachControl $gUvTkCompBtns[2] "left" 1 $gUvTkCompBtns[1] -attachForm $line "top" 5 -attachControl $line "left" 15 $gUvTkCompBtns[2] -attachForm $gUvTkCompBtns[3] "top" 5 -attachControl $gUvTkCompBtns[3] "left" 15 $line -attachForm $gUvTkCompBtns[4] "top" 5 -attachControl $gUvTkCompBtns[4] "left" 1 $gUvTkCompBtns[3] $selCompLayout; setParent ..; //Component selection counter text -h 30 -label " " -align "center" uvTkCompSelCounterText; scriptJob -p uvTkCompSelCounterText -e "SelectionChanged" "uvTkUpdateSelectionCompInfo"; scriptJob -p $gUvTkCompBtns[0] -e "SelectTypeChanged" "uvTkUpdateSelectionCompInfo"; scriptJob -p uvTkCompSelCounterText -e "SceneOpened" "uvTkUpdateSelectionCompInfo"; uvTkUpdateSelectionCompInfo; //Selection styles radioButtonGrp -numberOfRadioButtons 3 -label1 (uiRes("m_uvTkBuildSelectionOptions.kPickMarquee")) -annotation1 (uiRes("m_uvTkBuildSelectionOptions.kPickMarqueeAnnot")) -onCommand1 ("selectPref -paintSelect 0; texTweakMode 0;") -label2 (uiRes("m_uvTkBuildSelectionOptions.kDrag")) -annotation2 (uiRes("m_uvTkBuildSelectionOptions.kDragAnnot")) -onCommand2 ("selectPref -paintSelect 1; texTweakMode 0;") -label3 (uiRes("m_uvTkBuildSelectionOptions.kTweakMarquee")) -annotation3 (uiRes("m_uvTkBuildSelectionOptions.kTweakMarqueeAnn")) -onCommand3 ("selectPref -paintSelect 0; texTweakMode 1;") -enable3 false -vertical uvTkSelToolBtnGrp; scriptJob -p uvTkSelToolBtnGrp -e "SelectPreferenceChanged" "uvTkUpdateSelectionStyleInfo"; scriptJob -p uvTkSelToolBtnGrp -e "ToolChanged" "uvTkUpdateSelectionStyleInfo"; uvTkUpdateSelectionStyleInfo; //Divider formLayout -h 5; setParent ..; //Symmetry rowLayout -nc 4 -cw4 65 20 100 20 -adj 3; text -align left -l (uiRes("m_uvTkBuildSelectionOptions.kSymmetry")) -ann ((uiRes("m_uvTkBuildSelectionOptions.kSymAnn"))) uvTkSymLabel; string $uvTkSymmetryBtn = `iconTextButton -dcc "" -w 17 -h 25 -image ("popupMenuIcon.png") uvTkSymPopupButton`; textField -ed false -w 65 -h 25 -ebg 0 uvTkSymmetryTextField; string $symetryBtnMenu = `popupMenu -b 1 -p $uvTkSymmetryBtn`; menu -e -pmc("uvTkBuildSymmetryMenu " + $symetryBtnMenu) $symetryBtnMenu; string $symetryBtnMenu2 = `popupMenu -b 2 -p $uvTkSymmetryBtn`; menu -e -pmc "uvTkToggleSymmetryMenu" $symetryBtnMenu2; iconTextButton -st "iconOnly" -flat false -i ("polySymmetrizeUV.png") -ann (uiRes("m_uvTkBuildSelectionOptions.kSymmetrizeUVAnnot")) -w 25 -h 25 -mw 2 -mh 2 -c ("if(`getModifiers`%2) SymmetrizeUVOptions; else evalDeferred\"SymmetrizeUV\";") SymmetrizeBtn; setParent ..; scriptJob -p uvTkSymmetryTextField -e "symmetricModellingOptionsChanged" "uvTkUpdateSymmetryField"; uvTkUpdateSymmetryField; //Selection constraint rowLayout -nc 3 -cw3 120 20 100 -adj 3; text -align left -l (uiRes("m_uvTkBuildSelectionOptions.kSelectionConstraint")) -ann (uiRes("m_uvTkBuildSelectionOptions.kSelCon")) uvTkSelConstLabel; string $uvTkSelConstBtn = `iconTextButton -dcc "" -w 17 -h 25 -image ("popupMenuIcon.png") uvTkSelConstPopupButton`; textField -ed false -w 65 -h 25 -ebg 0 uvTkSelConstTextField; string $selConstMenu = `popupMenu -b 1 -p $uvTkSelConstBtn`; menu -e -pmc("buildTexSelConstMenu " + $selConstMenu) $selConstMenu; string $selConstMenu2 = `popupMenu -b 2 -p $uvTkSelConstBtn`; menu -e -pmc "texSelConstToggle" $selConstMenu2; setParent ..; texSelConstUpdate("uvTkSelConstTextField"); scriptJob -p uvTkSelConstTextField -e "selectionConstraintsChanged" "texSelConstUpdate \"uvTkSelConstTextField\""; //Transform constraint rowLayout -nc 3 -cw3 120 20 100 -adj 3; text -align left -l (uiRes("m_uvTkBuildSelectionOptions.kTransformConstraint")) -ann (uiRes("m_uvTkBuildSelectionOptions.kTranCon")) uvTkTranConstLabel; string $uvTkTranConstBtn = `iconTextButton -dcc "" -w 17 -h 25 -image ("popupMenuIcon.png") uvTkTranConstPopupButton`; textField -ed false -w 65 -h 25 -ebg 0 uvTkTranConstTextField; string $tranConstMenu = `popupMenu -b 1 -p $uvTkTranConstBtn`; menu -e -pmc("buildTexTranConstMenu " + $tranConstMenu) $tranConstMenu; string $tranConstMenu2 = `popupMenu -b 2 -p $uvTkTranConstBtn`; menu -e -pmc "texTranConstToggle" $tranConstMenu2; setParent ..; texTranConstUpdate("uvTkTranConstTextField"); scriptJob -p uvTkTranConstTextField -e "xformConstraintOptionsChanged" "texTranConstUpdate \"uvTkTranConstTextField\""; //Space formLayout -h 5; setParent ..; //Selection commands rowLayout -nc 3 -columnAttach 1 "left" 30 -columnAttach 2 "left" 10 -columnAttach 3 "left" 10; iconTextButton -st "textOnly" -flat false -w 50 -h 20 -mw 2 -mh 2 -l (uiRes("m_uvTkBuildSelectionOptions.kAll")) -c ("SelectAll") -ann (uiRes("m_uvTkBuildSelectionOptions.kAllAnnot")); iconTextButton -st "textOnly" -flat false -w 50 -h 20 -mw 2 -mh 2 -l (uiRes("m_uvTkBuildSelectionOptions.kClear")) -command ( "string $hiliteList[] = `ls -hilite`;if(`size($hiliteList)`!=0)select -cl;") -ann (uiRes("m_uvTkBuildSelectionOptions.kClearSelectionAnnot")); iconTextButton -st "textOnly" -flat false -w 50 -h 20 -mw 2 -mh 2 -l (uiRes("m_uvTkBuildSelectionOptions.kInverse")) -c ("InvertSelection") -ann (uiRes("m_uvTkBuildSelectionOptions.kInverseAnnot")); setParent ..; //Shrink and grow rowLayout -nc 4 -h 30 -columnAttach 1 "left" 50 -columnAttach 2 "left" 0 -columnAttach 3 "left" 10 -columnAttach 4 "left" 0; iconTextButton -st "iconOnly" -w 30 -h 20 -i ("shrinkUVSelectionAlongLoop.png") -c ("ShrinkLoopPolygonSelectionRegion") -rpt true -ann (uiRes("m_uvTkBuildSelectionOptions.kShrinkAlongLoopAnnot")); iconTextButton -st "iconOnly" -w 30 -h 20 -i ("shrinkUVSelection.png") -c ("ShrinkPolygonSelectionRegion") -rpt true -ann (uiRes("m_uvTkBuildSelectionOptions.kShrinkAnnot")); iconTextButton -st "iconOnly" -w 30 -h 20 -i ("growUVSelection.png") -c ("GrowPolygonSelectionRegion") -rpt true -ann (uiRes("m_uvTkBuildSelectionOptions.kGrowAnnot")); iconTextButton -st "iconOnly" -w 30 -h 20 -i ("growUVSelectionAlongLoop.png") -c ("GrowLoopPolygonSelectionRegion") -rpt true -ann (uiRes("m_uvTkBuildSelectionOptions.kGrowAlongLoopAnnot")); setParent ..; //Pinning frameLayout -bgc $gUVTkFrameHeadColor[0] $gUVTkFrameHeadColor[1] $gUVTkFrameHeadColor[2] -collapsable true -collapse true -label (uiRes("m_uvTkBuildSelectionOptions.kPinning")) uvTkPinFrame; { string $form = `formLayout`; string $buttons[] = {"PinSelectionBtn", "PinToolBtn", "InvertPinBtn", "UnpinBtn", "UnpinAllBtn"}; string $btnLbls[] = {(uiRes("m_uvTkBuildSelectionOptions.kPin")), (uiRes("m_uvTkBuildSelectionOptions.kPinTool")), (uiRes("m_uvTkBuildSelectionOptions.kInvertPinning")), (uiRes("m_uvTkBuildSelectionOptions.kUnpin")), (uiRes("m_uvTkBuildSelectionOptions.kUnpinAll"))}; string $btnCmds[] = {"PinSelection", "texSculptCacheContext -e -m Freeze -i1 \\\"UV_Freeze_ToolLarge.png\\\" texSculptCacheContextObj;setToolTo texSculptCacheContextObj;", "UVEditorInvertPin", "UnpinSelection", "UVEditorUnpinAll"}; int $btnRpts[] = {1, 0, 1, 1, 1}; string $btnAnns[] = {(uiRes("m_uvTkBuildSelectionOptions.kPinAnnot")), (uiRes("m_uvTkBuildSelectionOptions.kPinToolAnnot")), getRunTimeCommandAnnotation("UVEditorInvertPin"), getRunTimeCommandAnnotation("UnpinSelection"), getRunTimeCommandAnnotation("UVEditorUnpinAll")}; string $btnShfs[] = {"PinSelectionOptions", "texSculptCacheContext -e -m Freeze -i1 \"UV_Freeze_ToolLarge.png\" texSculptCacheContextObj;setToolTo texSculptCacheContextObj;toolPropertyWindow;", "", "", ""}; string $btnImgs[] = {"polyPinUV.png", "pinUVTool.png", "invertUVpinning.png", "unpinUV.png", "unpinAllUV.png"}; string $btns[]; for($i = 0; $i < size($btnLbls); $i++) { if($btnShfs[$i] != "") $btnCmds[$i] = "if(`getModifiers`%2){"+$btnShfs[$i]+";}else{evalDeferred\""+$btnCmds[$i]+"\";}"; $btns[size($btns)] = `iconTextButton -p $form -flat false -st "iconAndTextHorizontal" -w ($gUVTkTwinBtnWth-5) -h $gUVTkTwinBtnHgt -i $btnImgs[$i] -l $btnLbls[$i] -c $btnCmds[$i] -rpt $btnRpts[$i] -ann $btnAnns[$i] $buttons[$i]`; } formLayout -e -af $btns[0] top 5 -af $btns[0] left 5 -af $btns[1] top 5 -ac $btns[1] left 1 $btns[0] -ac $btns[2] top 1 $btns[0] -af $btns[2] left 5 -ac $btns[3] top 5 $btns[2] -af $btns[3] left 5 -af $btns[3] bottom 5 -ac $btns[4] top 5 $btns[2] -ac $btns[4] left 1 $btns[3] -af $btns[4] bottom 5 $form; setParent ..; } setParent ..; //Select by type frameLayout -bgc $gUVTkFrameHeadColor[0] $gUVTkFrameHeadColor[1] $gUVTkFrameHeadColor[2] -collapsable true -collapse true -label (uiRes("m_uvTkBuildSelectionOptions.kSelectByType")) uvTkSelByTypeFrame; { string $form = `formLayout`; string $btnLbls[] = {(uiRes("m_uvTkBuildSelectionOptions.kBackFacing")), // 0 (uiRes("m_uvTkBuildSelectionOptions.kFrontFacing")), // 1 (uiRes("m_uvTkBuildSelectionOptions.kOverlapping")), // 2 (uiRes("m_uvTkBuildSelectionOptions.kNonOverlapping")), // 3 (uiRes("m_uvTkBuildSelectionOptions.kTextureBorders")), // 4 (uiRes("m_uvTkBuildSelectionOptions.kUnmapped"))}; // 5 string $btnCmds[] = {"SelectUVBackFacingComponents", "SelectUVFrontFacingComponents", "SelectUVOverlappingComponents", "SelectUVNonOverlappingComponents", "SelectUVBorderComponents", "SelectUnmappedFaces"}; string $rmbStr = (uiRes("m_uvTkBuildSelectionOptions.kRMB")); string $btnAnns[] = {getRunTimeCommandAnnotation("SelectUVBackFacingComponents"), getRunTimeCommandAnnotation("SelectUVFrontFacingComponents"), getRunTimeCommandAnnotation("SelectUVOverlappingComponents") + "\n" + $rmbStr + " " + getRunTimeCommandAnnotation("SelectUVOverlappingComponentsPerObject"), getRunTimeCommandAnnotation("SelectUVNonOverlappingComponents") + "\n" + $rmbStr + " " + getRunTimeCommandAnnotation("SelectUVNonOverlappingComponentsPerObject"), getRunTimeCommandAnnotation("SelectUVBorderComponents"), (uiRes("m_uvTkBuildSelectionOptions.kUnmappedAnnot"))}; string $btnImgs[] = {"selectBackFacingUV.png", "selectFrontFacingUV.png", "selectOverlappingUV.png", "selectNonOverlappingUV.png", "selectTextureBorders.png", "selectUnmapedFace.png"}; string $btns[]; for($i = 0; $i < size($btnLbls); $i++) $btns[size($btns)] = `iconTextButton -p $form -flat false -st "iconAndTextHorizontal" -w ($gUVTkTwinBtnWth-5) -h $gUVTkTwinBtnHgt -i $btnImgs[$i] -l $btnLbls[$i] -c $btnCmds[$i] -rpt 1 -ann $btnAnns[$i]`; string $overlapRMB = `popupMenu -b 3 -p $btns[2]`; menu -e -pmc("SelectUVOverlappingComponentsPerObject") $overlapRMB; string $nonOverlapRMB = `popupMenu -b 3 -p $btns[3]`; menu -e -pmc("SelectUVNonOverlappingComponentsPerObject") $nonOverlapRMB; formLayout -e -af $btns[0] top 5 -af $btns[0] left 5 -af $btns[1] top 5 -ac $btns[1] left 1 $btns[0] -ac $btns[2] top 1 $btns[0] -af $btns[2] left 5 -ac $btns[3] top 1 $btns[1] -ac $btns[3] left 1 $btns[2] -ac $btns[4] top 1 $btns[2] -af $btns[4] left 5 -af $btns[4] bottom 5 -ac $btns[5] top 1 $btns[3] -ac $btns[5] left 1 $btns[4] -af $btns[5] bottom 5 $form; setParent ..; } setParent ..; //Soft selection frameLayout -bgc $gUVTkFrameHeadColor[0] $gUVTkFrameHeadColor[1] $gUVTkFrameHeadColor[2] -collapsable true -collapse true -label (uiRes("m_uvTkBuildSelectionOptions.kSoftSelection")) uvTkSoftSelFrame; { string $form = `formLayout -nd 4`; string $softSelLabel = `text -l (uiRes("m_uvTkBuildSelectionOptions.kSoftSelect"))`; checkBox -l "" -onCommand "softSelect -e -softSelectEnabled true;" -offCommand "softSelect -e -softSelectEnabled false;" uvTkSoftChk; optionMenu -cc ("softSelect -e -softSelectFalloff (`optionMenu -q -sl uvTkSoftDistTypeMenu` - 1)") uvTkSoftDistTypeMenu; menuItem -label (uiRes("m_uvTkBuildSelectionOptions.kVolume")); menuItem -label (uiRes("m_uvTkBuildSelectionOptions.kSurface")); menuItem -label (uiRes("m_uvTkBuildSelectionOptions.kGlobal")); menuItem -label (uiRes("m_uvTkBuildSelectionOptions.kObject")); floatField -dc "softSelect -e -softSelectDistance #1" -cc "softSelect -e -softSelectDistance #1;" -step 0.01 -min 0 -max 100000 -pre 2 -v 1 -height 26 uvTkSoftSelFalloff; gradientControlNoAttr -h 90 -w 154 -changeCommand "softSelect -e -softSelectCurve \"#1\"" -ov "" uvTkSoftSelCurve; button -l (uiRes("m_uvTkBuildSelectionOptions.kResetCurve")) -c "softSelect -e -softSelectCurve \"1,0,2,0,1,2\"; gradientControlNoAttr -e -asString \"1,0,2,0,1,2\" uvTkSoftSelCurve" -rs false -h 18 uvTkSoftSelCurveResetBtn; formLayout -e -attachForm $softSelLabel "top" 6 -attachForm $softSelLabel "left" 14 -attachControl $softSelLabel "bottom" 4 uvTkSoftDistTypeMenu -attachNone $softSelLabel "right" -attachForm uvTkSoftChk "top" 6 -attachControl uvTkSoftChk "left" 6 $softSelLabel -attachControl uvTkSoftChk "bottom" 4 uvTkSoftDistTypeMenu -attachNone uvTkSoftChk "right" -attachNone uvTkSoftDistTypeMenu "top" -attachForm uvTkSoftDistTypeMenu "left" 14 -attachControl uvTkSoftDistTypeMenu "bottom" 6 uvTkSoftSelCurve -attachControl uvTkSoftDistTypeMenu "right" 4 uvTkSoftSelFalloff -attachNone uvTkSoftSelFalloff "top" -attachPosition uvTkSoftSelFalloff "left" 40 2 -attachControl uvTkSoftSelFalloff "bottom" 4 uvTkSoftSelCurve -attachForm uvTkSoftSelFalloff "right" 12 -attachNone uvTkSoftSelCurve "top" -attachForm uvTkSoftSelCurve "left" 6 -attachControl uvTkSoftSelCurve "bottom" 4 uvTkSoftSelCurveResetBtn -attachForm uvTkSoftSelCurve "right" 6 -attachNone uvTkSoftSelCurveResetBtn "top" -attachForm uvTkSoftSelCurveResetBtn "left" 10 -attachForm uvTkSoftSelCurveResetBtn "bottom" 5 -attachForm uvTkSoftSelCurveResetBtn "right" 10 $form; setParent ..; } setParent ..; //Space formLayout -h 5; setParent ..; scriptJob -p uvTkSelConstTextField -e "softSelectOptionsChanged" "uvTkUpdateSoftSelInfo"; uvTkUpdateSoftSelInfo; return $layout; } global proc uvTkUpdateSelectionCompInfo() { //TODO check if panel visiable //if(!`text -q -ex uvTkCompSelCounterText`) //return; string $countDisplay = " "; int $selCount = size(`ls -sl`); // Object selection count int $inComponentSelMode = `selectMode -q -component`; // Component selection count int $preserveCompSel = `selectPref -q -selectTypeChangeAffectsActive`; int $inMultiCompSelection = `selectType -q -meshComponents`; int $inVertexSelection = 0; int $inEdgeSelection = 0; int $inFaceSelection = 0; int $inUVSelection = 0; int $inUVShellSelection = 0; if($inComponentSelMode) { // Check current component mode selection type $inVertexSelection = `selectType -q -vertex`; $inEdgeSelection = `selectType -q -edge`; $inFaceSelection = `selectType -q -facet`; $inUVSelection = `selectType -q -polymeshUV`; $inUVShellSelection = `selectType -q -meshUVShell`; } else { // Check current object component mode selection type $inVertexSelection = `selectType -q -ocm -vertex`; $inEdgeSelection = `selectType -q -ocm -edge`; $inFaceSelection = `selectType -q -ocm -facet`; $inUVSelection = `selectType -q -ocm -polymeshUV`; $inUVShellSelection = `selectType -q -ocm -meshUVShell`; } global string $gUvTkCompBtns[]; if(`iconTextButton -q -ex $gUvTkCompBtns[0]`) iconTextButton -e -ebg $inVertexSelection $gUvTkCompBtns[0]; if(`iconTextButton -q -ex $gUvTkCompBtns[1]`) iconTextButton -e -ebg $inEdgeSelection $gUvTkCompBtns[1]; if(`iconTextButton -q -ex $gUvTkCompBtns[2]`) iconTextButton -e -ebg $inFaceSelection $gUvTkCompBtns[2]; if(`iconTextButton -q -ex $gUvTkCompBtns[3]`) iconTextButton -e -ebg $inUVSelection $gUvTkCompBtns[3]; if(`iconTextButton -q -ex $gUvTkCompBtns[4]`) iconTextButton -e -ebg $inUVShellSelection $gUvTkCompBtns[4]; if ($selCount == 0) { // Nothing is selected OR text -e -label $countDisplay uvTkCompSelCounterText; return; } if (!$inComponentSelMode && size(`ls -hl`) == 0) { // In object mode but nothing is hilited (i.e. no components could possibly be selected) $selCount = size(`ls -sl -transforms -shapes`); // Just count dag objects if ($selCount == 1) { $countDisplay = `format -stringArg $selCount (uiRes("m_uvTkBuildSelectionOptions.kObjectSelected"))`; } else { $countDisplay = `format -stringArg $selCount (uiRes("m_uvTkBuildSelectionOptions.kObjectsSelected"))`; } text -e -label $countDisplay uvTkCompSelCounterText; return; } int $numSelItems = 0; if (!$preserveCompSel || ($inComponentSelMode && $inMultiCompSelection)) { int $numSelVerts = size(`filterExpand -ex true -sm 31`); int $numSelEdges = size(`filterExpand -ex true -sm 32`); int $numSelFaces = size(`filterExpand -ex true -sm 34`); // Check if more than one type is currently selected if (($numSelVerts > 0 && $numSelEdges > 0) || ($numSelVerts > 0 && $numSelFaces > 0) || ($numSelEdges > 0 && $numSelFaces > 0)) { text -e -label (uiRes("m_uvTkBuildSelectionOptions.kMultiCompSelected")) uvTkCompSelCounterText; return; } else { // only one type is currently selected // Setup to display type-specific count, as implemented below if($numSelVerts > 0) { $inVertexSelection = 1; $numSelItems = $numSelVerts; } else if($numSelEdges > 0) { $inEdgeSelection = 1; $numSelItems = $numSelEdges; } else if($numSelFaces > 0) { $inFaceSelection = 1; $numSelItems = $numSelFaces; } } } // Display selection count according to the current component selection type if($inVertexSelection) { if($numSelItems == 0) { $numSelItems = size(`filterExpand -ex true -sm 31`); } if($numSelItems > 0) { if($numSelItems == 1) { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kVertexSelected"))`; } else { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kVerticesSelected"))`; } } } else if($inEdgeSelection) { if($numSelItems == 0) { $numSelItems = size(`filterExpand -ex true -sm 32`); } if($numSelItems > 0) { if($numSelItems == 1) { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kEdgeSelected"))`; } else { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kEdgesSelected"))`; } } } else if($inFaceSelection) { if($numSelItems == 0) { $numSelItems = size(`filterExpand -ex true -sm 34`); } if($numSelItems > 0) { if($numSelItems == 1) { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kFaceSelected"))`; } else { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kFacesSelected"))`; } } } else if ($inUVSelection) { if($numSelItems == 0) { $numSelItems = size(`filterExpand -ex true -sm 35`); } if($numSelItems > 0) { if($numSelItems == 1) { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kUVSelected"))`; } else { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kUVsSelected"))`; } } } else if ($inUVShellSelection) { $numSelItems = size(`polyEvaluate -activeUVShells`); if($numSelItems == 1) { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kUVShellSelected"))`; } else { $countDisplay = `format -stringArg $numSelItems (uiRes("m_uvTkBuildSelectionOptions.kUVShellsSelected"))`; } } text -e -label $countDisplay uvTkCompSelCounterText; } global proc uvTkUpdateSelectionStyleInfo() { if(!`radioButtonGrp -q -ex uvTkSelToolBtnGrp`) return; string $currContext = `currentCtx`; int $tweakModeEnabled = 0; if ($currContext == "moveSuperContext" || $currContext == "RotateSuperContext" || $currContext == "scaleSuperContext") $tweakModeEnabled = 1; radioButtonGrp -e -enable3 $tweakModeEnabled uvTkSelToolBtnGrp; if($tweakModeEnabled && `texMoveContext -q -tweakMode texMoveContext`) radioButtonGrp -e -select 3 uvTkSelToolBtnGrp; else if(`selectPref -q -paintSelect`) radioButtonGrp -e -select 2 uvTkSelToolBtnGrp; else radioButtonGrp -e -select 1 uvTkSelToolBtnGrp; } global proc uvTkBuildSymmetryMenu(string $theMenu) { menu -e -dai $theMenu; menuItem -p $theMenu -label (uiRes("m_uvTkBuildSelectionOptions.kOff")) -c "uvTkToggleSymmetrySet \"off\""; menuItem -p $theMenu -label (uiRes("m_uvTkBuildSelectionOptions.kObjectX")) -c "uvTkToggleSymmetrySet \"objectX\""; menuItem -p $theMenu -label (uiRes("m_uvTkBuildSelectionOptions.kObjectY")) -c "uvTkToggleSymmetrySet \"objectY\""; menuItem -p $theMenu -label (uiRes("m_uvTkBuildSelectionOptions.kObjectZ")) -c "uvTkToggleSymmetrySet \"objectZ\""; menuItem -p $theMenu -label (uiRes("m_uvTkBuildSelectionOptions.kWorldX")) -c "uvTkToggleSymmetrySet \"worldX\""; menuItem -p $theMenu -label (uiRes("m_uvTkBuildSelectionOptions.kWorldY")) -c "uvTkToggleSymmetrySet \"worldY\""; menuItem -p $theMenu -label (uiRes("m_uvTkBuildSelectionOptions.kWorldZ")) -c "uvTkToggleSymmetrySet \"worldZ\""; menuItem -p $theMenu -label (uiRes("m_uvTkBuildSelectionOptions.kTopoSym")) -c "uvTkToggleSymmetrySet \"topo\""; } global proc uvTkToggleSymmetrySet(string $type) { if($type == "off") symmetricModelling -e -topoSymmetry 0 -symmetry 0; else if($type == "objectX") symmetricModelling -e -about object -axis x -symmetry 1; else if($type == "objectY") symmetricModelling -e -about object -axis y -symmetry 1; else if($type == "objectZ") symmetricModelling -e -about object -axis z -symmetry 1; else if($type == "worldX") symmetricModelling -e -about world -axis x -symmetry 1; else if($type == "worldY") symmetricModelling -e -about world -axis y -symmetry 1; else if($type == "worldZ") symmetricModelling -e -about world -axis z -symmetry 1; else if($type == "topo") symmetricModelling -e -topoSymmetry 1 -symmetry 1; if($type != "off") { global string $gPrevSymmetrySetType; $gPrevSymmetrySetType = $type; } } global proc uvTkToggleSymmetryMenu() { global string $gPrevSymmetrySetType; int $enabled = `symmetricModelling -q -symmetry`; uvTkToggleSymmetrySet($enabled ? "off" : $gPrevSymmetrySetType); } global proc uvTkUpdateSymmetryField() { if (`textField -q -ex uvTkSymmetryTextField`) { global float $gUVTkDefaultFieldColor[]; global float $gUVTkActiveFieldColor[]; textField -e -backgroundColor $gUVTkActiveFieldColor[0] $gUVTkActiveFieldColor[1] $gUVTkActiveFieldColor[2] uvTkSymmetryTextField; int $symmetryOn = `symmetricModelling -q -symmetry`; string $about = `symmetricModelling -q -about`; string $axis = `symmetricModelling -q -axis`; if(!$symmetryOn) { textField -edit -tx (uiRes("m_uvTkBuildSelectionOptions.kOff")) uvTkSymmetryTextField; textField -e -backgroundColor $gUVTkDefaultFieldColor[0] $gUVTkDefaultFieldColor[1] $gUVTkDefaultFieldColor[2] uvTkSymmetryTextField; } else if ($symmetryOn && $about == "object" && $axis == "x") textField -edit -tx (uiRes("m_uvTkBuildSelectionOptions.kObjectX")) uvTkSymmetryTextField; else if ($symmetryOn && $about == "object" && $axis == "y") textField -edit -tx (uiRes("m_uvTkBuildSelectionOptions.kObjectY")) uvTkSymmetryTextField; else if ($symmetryOn && $about == "object" && $axis == "z") textField -edit -tx (uiRes("m_uvTkBuildSelectionOptions.kObjectZ")) uvTkSymmetryTextField; else if ($symmetryOn && $about == "world" && $axis == "x") textField -edit -tx (uiRes("m_uvTkBuildSelectionOptions.kWorldX")) uvTkSymmetryTextField; else if ($symmetryOn && $about == "world" && $axis == "y") textField -edit -tx (uiRes("m_uvTkBuildSelectionOptions.kWorldY")) uvTkSymmetryTextField; else if ($symmetryOn && $about == "world" && $axis == "z") textField -edit -tx (uiRes("m_uvTkBuildSelectionOptions.kWorldZ")) uvTkSymmetryTextField; else if ($symmetryOn && $about == "topo") textField -edit -tx `symmetricModelling -q -topoSymmetry` uvTkSymmetryTextField; } } global proc uvTkUpdateSoftSelInfo() { int $softSelectOn = `softSelect -q -softSelectEnabled`; //Update soft select check box if(`checkBox -q -ex uvTkSoftChk`) checkBox -e -value $softSelectOn uvTkSoftChk; //Update falloff mode if(`optionMenu -q -e uvTkSoftDistTypeMenu`) optionMenu -e -en $softSelectOn -select (`softSelect -q -softSelectFalloff` + 1) uvTkSoftDistTypeMenu; //Update falloff radius if(`floatField -q -e uvTkSoftSelFalloff`) floatField -e -en $softSelectOn -v `softSelect -q -softSelectDistance` uvTkSoftSelFalloff; //Update falloff curve if(`gradientControlNoAttr -q -ex uvTkSoftSelCurve`) gradientControlNoAttr -e -en $softSelectOn -asString `softSelect -q -softSelectCurve` uvTkSoftSelCurve; //Update if(`button -q -ex uvTkSoftSelCurveResetBtn`) button -e -en $softSelectOn uvTkSoftSelCurveResetBtn; } global proc uvTkResetSelectionOptions() { selectPref -paintSelect 0; texTweakMode 0; uvTkToggleSymmetrySet "off"; texSelConstSet "off"; texTranConstSet "none"; ResetSoftSelectOptions; softSelect -e -softSelectEnabled false; }