// =========================================================================== // 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. // =========================================================================== // // Script: iiWindowPanel.mel // // SYNOPSIS // Creates the mel components around the iiWindowEditor // global proc iiWindowUpdateEditor(string $editor, string $editorCmd, string $updateFunc, int $reason) { // prefix to get the names of the items in the menuBar string $prefix = "M" ; //Update the drawAxis Toggle button if ($reason == 3 || $reason ==0) { int $drawAxis = eval ($editorCmd +" -q -tgl "+ $editor) ; if ($drawAxis == 0) { menuItem -e -cb 0 ($editor+"iiWindowPanel_drawAxisToggle") ; menuItem -e -cb 0 ($prefix+$editor+"iiWindowPanel_drawAxisToggle") ; } else { menuItem -e -cb 1 ($editor+"iiWindowPanel_drawAxisToggle") ; menuItem -e -cb 1 ($prefix+$editor+"iiWindowPanel_drawAxisToggle") ; } } if ($reason == 2|| $reason ==0) { // update single/double buffer int $bufferMode = eval ($editorCmd + " -q -sbf " + $editor) ; if ($bufferMode == 0) { menuItem -e -cb 0 ($editor + "iiWindowPanel_bufferModeToggle") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_bufferModeToggle") ; } else { menuItem -e -cb 1 ($editor +"iiWindowPanel_bufferModeToggle") ; menuItem -e -cb 1 ($prefix+$editor +"iiWindowPanel_bufferModeToggle") ; } } // The toggle between Mask,luminance,red, green,blue, all masks if ($reason == 1 || $reason ==0 || $reason == 6) { // update the ARGB option int $redScale = eval($editorCmd +" -q -scaleRed "+ $editor) ; int $blueScale = eval($editorCmd +" -q -scaleBlue "+ $editor) ; int $greenScale = eval($editorCmd +" -q -scaleGreen "+ $editor) ; string $displayStyle = eval($editorCmd +" -q -dst " + $editor) ; if ($displayStyle == "lum" || $displayStyle == "mask") { menuItem -e -cb 0 ($editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_allPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_allPlaneItem") ; if ($displayStyle == "lum") { // luminance menuItem -e -cb 1 ($editor + "iiWindowPanel_luminanceItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_maskPlaneItem") ; menuItem -e -cb 1 ($prefix+$editor + "iiWindowPanel_luminanceItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_maskPlaneItem") ; } else { // mask is set menuItem -e -cb 0 ($editor + "iiWindowPanel_luminanceItem") ; menuItem -e -cb 1 ($editor + "iiWindowPanel_maskPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_luminanceItem") ; menuItem -e -cb 1 ($prefix+$editor + "iiWindowPanel_maskPlaneItem") ; } } if ($displayStyle == "color") { menuItem -e -cb 0 ($editor + "iiWindowPanel_luminanceItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_maskPlaneItem") ; //Red if ($redScale == 1 && $greenScale == -1000 && $blueScale ==-1000) { menuItem -e -cb 1 ($editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_allPlaneItem") ; menuItem -e -cb 1 ($prefix+$editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_allPlaneItem") ; } // green else if ($redScale == -1000 && $greenScale == 1 && $blueScale ==-1000) { menuItem -e -cb 0 ($editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 1 ($editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_allPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 1 ($prefix+$editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_allPlaneItem") ; } // blue else if ($redScale == -1000 && $greenScale == -1000 && $blueScale ==1) { menuItem -e -cb 0 ($editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 1 ($editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_allPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 1 ($prefix+$editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_allPlaneItem") ; } // All else if ($redScale == 1 && $greenScale == 1 && $blueScale ==1) { menuItem -e -cb 0 ($editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 1 ($editor + "iiWindowPanel_allPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 1 ($prefix+$editor + "iiWindowPanel_allPlaneItem") ; } else // Custom tuning { menuItem -e -cb 0 ($editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($editor + "iiWindowPanel_allPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_redPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_greenPlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_bluePlaneItem") ; menuItem -e -cb 0 ($prefix+$editor + "iiWindowPanel_allPlaneItem") ; } } } if ($reason == 5 || $reason == 4 || $reason ==0) { // Scroll bar Management // Check to make sure there is still ui. // if ("NONE" != eval($editorCmd+" -q -control "+ $editor)) { int $nImage = eval ($editorCmd+ " -q -nbImages " + $editor) ; if ($nImage == 0) { // Hide the scroll bar eval("formLayout -e -ap "+$editor +" \"bottom\" 00 100 "+ $editor +"WindowPanelLayout_mainForm") ; menuItem -e -enable 0 ($editor + "iiWindowPanel_removeItItem") ; menuItem -e -enable 1 ($editor + "iiWindowPanel_keepItItem") ; menuItem -e -enable 1 ($editor + "iiWindowPanel_saveToDiskItem") ; menuItem -e -enable 0 ($prefix+$editor + "iiWindowPanel_removeItItem") ; menuItem -e -enable 1 ($prefix+$editor + "iiWindowPanel_keepItItem") ; menuItem -e -enable 1 ($prefix+$editor + "iiWindowPanel_saveToDiskItem") ; } else if ($nImage == -1) { // No image present // Hide the scroll bar eval("formLayout -e -ap "+$editor +" \"bottom\" 0 100 "+ $editor +"WindowPanelLayout_mainForm") ; menuItem -e -enable 0 ($editor + "iiWindowPanel_removeItItem") ; menuItem -e -enable 0 ($editor + "iiWindowPanel_keepItItem") ; menuItem -e -enable 0 ($editor + "iiWindowPanel_saveToDiskItem") ; menuItem -e -enable 0 ($prefix+$editor + "iiWindowPanel_removeItItem") ; menuItem -e -enable 0 ($prefix+$editor + "iiWindowPanel_keepItItem") ; menuItem -e -enable 0 ($prefix+$editor + "iiWindowPanel_saveToDiskItem") ; } else if ($nImage >0) { int $index = eval($editorCmd + " -q -displayImage "+ $editor ) ; $nImage= $nImage - 1 ; // Show the scroll bar eval("formLayout -e -ap "+$editor +" \"bottom\" 10 100 "+ $editor +"WindowPanelLayout_mainForm") ; // Set a good min/max and good value eval("intScrollBar -e -min -1 -max "+ $nImage+" -value "+$index+" "+ $editor+"iiWindowPanel_scrollBar"); if ($index == -1) { menuItem -e -enable 0 ($editor + "iiWindowPanel_removeItItem") ; menuItem -e -enable 1 ($editor + "iiWindowPanel_keepItItem") ; menuItem -e -enable 0 ($prefix+$editor + "iiWindowPanel_removeItItem") ; menuItem -e -enable 1 ($prefix+$editor + "iiWindowPanel_keepItItem") ; } else { menuItem -e -enable 1 ($editor + "iiWindowPanel_removeItItem") ; menuItem -e -enable 0 ($editor + "iiWindowPanel_keepItItem") ; menuItem -e -enable 1 ($prefix+$editor + "iiWindowPanel_removeItItem") ; menuItem -e -enable 0 ($prefix+$editor + "iiWindowPanel_keepItItem") ; } // This is always available menuItem -e -enable 1 ($editor + "iiWindowPanel_saveToDiskItem") ; menuItem -e -enable 1 ($prefix+$editor + "iiWindowPanel_saveToDiskItem") ; } } } // Call a subclass update function eval ( $updateFunc + "(" + $reason + ")" ) ; } //----------------------------------------------------------------------------// global proc iiWindowSwitchDrawAxis(string $editor, string $editorCmd) { int $draw = eval ( $editorCmd +" -q -tgl "+ $editor ) ; if ($draw == 0) { eval( $editorCmd +" -e -tgl 1 " + $editor ) ; } else { eval( $editorCmd +" -e -tgl 0 " + $editor ) ; } } global proc iiWindowSwitchBufferMode(string $editor, string $editorCmd) { int $singleBuffer = eval ($editorCmd + " -q -sbf " + $editor ) ; if ($singleBuffer == 0) { eval ( $editorCmd +" -e -sbf "+ $editor) ; } else { eval ( $editorCmd +" -e -dbf "+ $editor) ; } } global proc iiWindowScrollDisplayImage(string $editor, string $editorCmd) { int $index = eval ("intScrollBar -q -value "+ ($editor +"iiWindowPanel_scrollBar")); eval($editorCmd+" -e -displayImage "+ $index + " " + $editor ) ; } //----------------------------------------------------------------------------// global proc iiWindowBuildDisplayMenu(string $parent, string $editor, string $editorCmd, int $menuBar) { setParent -m $parent; // add a prefix to have a different name in the menuBar string $prefix="" ; if ($menuBar == 1) { $prefix = "M"; } // MRGB options radioMenuItemCollection ($parent + "planeCluster"); menuItem -label (uiRes("m_iiWindowEditor.kRedPlane")) -c ($editorCmd+" -e -dst \"color\" -sr 1 -sg -1000 -sb -1000 "+ $editor ) -rb 0 ($prefix+$editor+"iiWindowPanel_redPlaneItem"); menuItem -label (uiRes("m_iiWindowEditor.kGreenPlane")) -c ($editorCmd+" -e -dst \"color\" -sr -1000 -sg 1 -sb -1000 "+ $editor ) -rb 0 ($prefix+$editor+"iiWindowPanel_greenPlaneItem"); menuItem -label (uiRes("m_iiWindowEditor.kBluePlane")) -c ($editorCmd+" -e -dst \"color\" -sr -1000 -sg -1000 -sb 1 "+ $editor ) -rb 0 ($prefix+$editor+"iiWindowPanel_bluePlaneItem"); menuItem -label (uiRes("m_iiWindowEditor.kAllPlanes")) -c ($editorCmd+" -e -dst \"color\" -sr 1 -sg 1 -sb 1 "+ $editor ) -rb 1 ($prefix+$editor+"iiWindowPanel_allPlaneItem"); menuItem -d 1 ; menuItem -label (uiRes("m_iiWindowEditor.kLuminance")) -c ($editorCmd+" -e -displayStyle \"lum\" "+ $editor) -rb 0 ($prefix+$editor+"iiWindowPanel_luminanceItem"); menuItem -label (uiRes("m_iiWindowEditor.kMaskPlane")) -c ($editorCmd+" -e -displayStyle \"mask\" "+ $editor) -rb 0 ($prefix+$editor+"iiWindowPanel_maskPlaneItem"); menuItem -d 1 ; menuItem -label (uiRes("m_iiWindowEditor.kGrid")) -cb 0 -c ("iiWindowSwitchDrawAxis (\"" + $editor+ "\",\"" + $editorCmd+ "\" )") ($prefix+$editor+"iiWindowPanel_drawAxisToggle"); string $typeOfThePanel = `getPanel -to $editor`; if ( $typeOfThePanel == "scriptedPanel" ) { string $type2 = `scriptedPanel -q -type $editor`; if ( $type2 == "polyTexturePlacementPanel" ) { // Only if it is a texture window menuItem -ecr false -optionBox 1 -c "performTextureViewGridOptions true" textureViewGridSpacingItem; } } menuItem -d 1 ; menuItem -label (uiRes("m_iiWindowEditor.kSingleBuffer")) -cb 0 -c ("iiWindowSwitchBufferMode (\"" + $editor+ "\",\"" + $editorCmd+ "\" )") ($prefix+$editor +"iiWindowPanel_bufferModeToggle"); } global proc int iiWindowLoadImageCallBack( string $editor, string $editorCmd, string $theFile, string $fileType ) { if ($theFile != "") { eval( $editorCmd +" -e -loadImage \"" + $theFile + "\" " + $editor) ; } // return 1 to close the filebrowser return 1 ; } global proc iiWindowLoadImageProc( string $editor, string $editorCmd) { string $callBackCmd ; $callBackCmd = "iiWindowLoadImageCallBack \"" + $editor+"\" \"" + $editorCmd + "\" " ; // 0 for a read browser fileBrowser $callBackCmd "Load Image" "image" 0; } global proc int iiWindowWriteImageCallBack( string $editor, string $editorCmd, string $theFile, string $fileType ) { if ($theFile != "") { eval( $editorCmd +" -e -writeImage \"" + $theFile + "\" " + $editor) ; } // return 1 to close the filebrowser return 1 ; } global proc iiWindowWriteImageProc( string $editor, string $editorCmd) { string $callBackCmd ; $callBackCmd = "iiWindowWriteImageCallBack \"" + $editor+"\" \"" + $editorCmd + "\" " ; // 0 for a save browser fileBrowser $callBackCmd "Save Image" "image" 1; } global proc iiWindowBuildImagesMenu (string $parent, string $editor, string $editorCmd, int $menuBar) { // add a prefix to have a different name in the menuBar string $prefix="" ; if ($menuBar == 1) { $prefix = "M"; } setParent -m $parent; menuItem -label (uiRes("m_iiWindowEditor.kKeepIt")) -c ($editorCmd +" -e -si " + $editor) ($prefix+$editor + "iiWindowPanel_keepItItem"); menuItem -label (uiRes("m_iiWindowEditor.kRemoveIt")) -c ($editorCmd +" -e -ri " + $editor) ($prefix+$editor +"iiWindowPanel_removeItItem") ; menuItem -d 1 ; menuItem -label (uiRes("m_iiWindowEditor.kLoadFromDisk")) -c ("iiWindowLoadImageProc (\"" + $editor+ "\", \""+$editorCmd+"\")") ($prefix+$editor +"iiWindowPanel_loadFromDiskItem") ; menuItem -label (uiRes("m_iiWindowEditor.kSaveToDisk")) -enable 0 -c ("iiWindowWriteImageProc (\"" + $editor+ "\", \""+$editorCmd+"\")") ($prefix+$editor +"iiWindowPanel_saveToDiskItem") ; } global proc iiWindowBuildPopupMenu (string $editor, string $editorCmd, string $customPopupCreation, int $toolbar) { string $display = (uiRes("m_iiWindowEditor.kDisplay")); string $images = (uiRes("m_iiWindowEditor.kImages")); if ($toolbar != 1) { // offer the possibilty to add some extra items eval ($customPopupCreation+"(\""+$editor+ "\",\""+$editorCmd+"\")") ; menuItem -label $display -sm 1 -to 1 -aob 1 ($editor+"displayMenus"); iiWindowBuildDisplayMenu ( ($editor+"displayMenus"), $editor, $editorCmd, $toolbar); setParent -m ..; menuItem -label $images -sm 1 -to 1 ($editor+"images"); iiWindowBuildImagesMenu ( ($editor+"images"), $editor, $editorCmd, $toolbar); setParent -m ..; } else { //construction of the toolbar string $menuName; $menuName = `menu -label $display -allowOptionBoxes true -to true -familyImage "menuIconDisplay.png" ($editor+"displayMenus")`; iiWindowBuildDisplayMenu $menuName $editor $editorCmd $toolbar; $menuName = `menu -label $images -to 1 -familyImage "menuIconImages.png" ($editor+"images")`; iiWindowBuildImagesMenu $menuName $editor $editorCmd $toolbar; } } global proc iiWindowEditor( string $editor , string $editorCmd , string $customPopupCreation, string $updateFunction) { $formName = $editor + "WindowPanelLayout_mainForm" ; formLayout $formName; // Popup menus creation popupMenu -b 3 -aob true ($editor+"popupMenus"); iiWindowBuildPopupMenu($editor, $editorCmd, $customPopupCreation, 0 ); setParent -m ..; // attach the editor to the UI eval( $editorCmd +" -e -parent " + $formName + " " + $editor) ; // Creation of the scroll bar intScrollBar -s 1 -cc ("iiWindowScrollDisplayImage (\"" + $editor+ "\", \""+$editorCmd+"\")") ($editor+"iiWindowPanel_scrollBar") ; setParent -m .. ; // Constraints formLayout -e -af $editor "right" 0 -af $editor "left" 0 -ap $editor "bottom" 0 100 -af $editor "top" 0 -af ($editor+"iiWindowPanel_scrollBar") "right" 0 -af ($editor+"iiWindowPanel_scrollBar") "left" 0 -af ($editor+"iiWindowPanel_scrollBar") "bottom" 0 -ac ($editor+"iiWindowPanel_scrollBar") "top" 0 $editor $formName; // If any changes go to "updateEditor" eval( $editorCmd +" -e -cc \"iiWindowUpdateEditor\" \"" + $editor + "\" \"" + $editorCmd + "\" \"" +$updateFunction + "\" " + $editor ) ; // Update all the parameters iiWindowUpdateEditor($editor, $editorCmd, $updateFunction, 0 ) ; } // create the menuBar items (the same as in the popup menus) // global proc iiWindowEditorMenuBar(string $editor,string $editorCmd) { // "" as there is no possibility now to mix iiWindowEditor menus // with some of the subclass // At the difference of the popup menus creation the subclass items // are created before calling this method iiWindowBuildPopupMenu($editor, $editorCmd,"", 1) ; }