// =========================================================================== // 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. // =========================================================================== global proc enableDisableEditMenu( string $parent ) // // Enables or disables menu items in the channelBox // menus, based on whether channels are selected or // not. { int $channelsSelected = `selectedChannels`; int $containerAttrSelected = 0; int $containerMemberSelected = 0; if ($channelsSelected) { string $cbPlugs[] = selectedChannelBoxPlugs(); for ($plug in $cbPlugs) { string $node = plugNode($plug); if (`container -q -isContainer $node`) { $containerAttrSelected = 1; } string $container = `container -q -findContainer { $node }`; if (size($container) > 0) { $containerMemberSelected = 1; } if ($containerAttrSelected && $containerMemberSelected) { break; } } } else { // If nothing is selected in the channel box, look at what is // selected. // string $sel[] = `ls -sl`; for ($obj in $sel) { string $container = `container -q -findContainer { $obj }`; if (size($container) > 0) { $containerMemberSelected = 1; break; } } } menuItem -e -enable $channelsSelected ( $parent + "|deleteAttrItem"); menuItem -e -enable $channelsSelected ( $parent + "|duplicateAttrItem"); menuItem -e -enable $channelsSelected ( $parent + "|editAttributeItem" ); menuItem -e -enable $channelsSelected ( $parent + "|exprItem" ); menuItem -e -enable $channelsSelected ( $parent + "|drivenItem" ); menuItem -e -enable $containerMemberSelected ( $parent + "|publishToContainerItem" ); menuItem -e -enable $containerMemberSelected ( $parent + "|publishToContainerOB" ); menuItem -e -enable $containerAttrSelected ( $parent + "|unpublishFromContainerItem" ); } global proc channelBoxPublishAttr(int $optionBox) // // The user has just selected the publish attributes menu item. // Set the CB publish preference based on whether channel box attributes // are selected. // { string $cbPlugs[] = selectedChannelBoxPlugs(); optionVar -intValue publishWhichAttrs (size($cbPlugs) == 0); if ($optionBox) { PublishAttributesOptions; } else { PublishAttributes; } } global proc generateCBEditMenu( string $parent, int $popupMenu ) // // Generates the menu on both the menubar and on // the RMB, when the user asks for either of these. // After building, this proc keeps the state of the // longname/shortname checkbox up to date whenever // the menu is popped again. // { setParent -m $parent; if( 0 != `menu -q -ni $parent` ) { enableDisableEditMenu $parent; // Make sure the name state is correct. // It can be changed without using the menu. // menuItem -edit -radioButton ( 1 == `optionVar -query channelsLongName` ) niceNameItem; menuItem -edit -radioButton ( 2 == `optionVar -query channelsLongName` ) longNameItem; menuItem -edit -radioButton ( 0 == `optionVar -query channelsLongName` ) shortNameItem; } else { // // The menu doesn't exist yet - build it // if( $popupMenu ) { // // A popup menu is being generated - attach // a label to the top of the popup // menuItem -label (uiRes("m_generateCBEditMenu.kEdit")); menuItem -d true; menuItem -d true; } menuItem -label (uiRes("m_generateCBEditMenu.kExpressions")) -c "channelBoxCommand -expression" exprItem; menuItem -ltVersion "2016" -label (uiRes("m_generateCBEditMenu.kSetKeyDriven")) -c "channelBoxCommand -driven" drivenItem; menuItem -label (uiRes("m_generateCBEditMenu.kGraphEditor")) -c "channelBoxCommand -animCurve" animCurveItem; menuItem -label (uiRes("m_generateCBEditMenu.kChannelControl")) -c "ChannelControlEditor;" channelControlItem; menuItem -label (uiRes("m_generateCBEditMenu.kConnectionEditor")) -c "ConnectionEditor;" connectionEditorItem; menuItem -label (localizedUIComponentLabel("Attribute Editor")) -c "channelBoxCommand -attributeEditor" attributeEditorItem; menuItem -label (uiRes("m_generateCBEditMenu.kMaterialAttributes")) -c "ShowShadingGroupAttributeEditor;" materialAttributesItem; menuItem -divider true; menuItem -label (uiRes("m_generateCBEditMenu.kAddAttribute")) -c "AddAttribute;" addAttributeItem; menuItem -label (uiRes("m_generateCBEditMenu.kEditAttribute")) -c "RenameAttribute;" editAttributeItem; menuItem -label (uiRes("m_generateCBEditMenu.kDuplicateAttribute")) -c "duplicateAttr" duplicateAttrItem; menuItem -label (uiRes("m_generateCBEditMenu.kDeleteAttributes")) -command "channelBoxCommand -deleteAttributes" deleteAttrItem; menuItem -label (uiRes("m_generateCBEditMenu.kPublishAttribute")) -annotation (getRunTimeCommandAnnotation("PublishAttributes")) -command ("channelBoxPublishAttr 0") publishToContainerItem; menuItem -optionBox true -annotation (getRunTimeCommandAnnotation("PublishAttributesOptions")) -command ("channelBoxPublishAttr 1") publishToContainerOB; menuItem -label (uiRes("m_generateCBEditMenu.kUnpublishToAsset")) -c "channelBoxCommand -unpublishFromContainer" unpublishFromContainerItem; menuItem -label (uiRes("m_generateCBEditMenu.kLockContainer")) -annotation (getRunTimeCommandAnnotation("LockContainer")) -command LockContainer; menuItem -label (uiRes("m_generateCBEditMenu.kUnlockContainer")) -annotation (getRunTimeCommandAnnotation("UnlockContainer")) -command UnlockContainer; menuItem -divider true; menuItem -label (uiRes("m_generateCBEditMenu.kSelectNode")) -c "channelBoxCommand -selectNode" selectNodeItem; menuItem -label (uiRes("m_generateCBEditMenu.kDeleteNode")) -c "channelBoxCommand -deleteNode" deleteNodeItem; menuItem -label (uiRes("m_generateCBEditMenu.kDeleteHistory")) -c "DeleteHistory;" deleteHistoryItem; string $menu = `menuItem -label (uiRes("m_generateCBEditMenu.kSettings")) -subMenu true SettingsSubMenu`; menu -e -pmc ( "buildChannelBoxOptionMenu SettingsSubMenu") $menu; setParent -m ..; menuItem -divider true; menuItem -label (uiRes("m_generateCBEditMenu.kChannelNames")) -subMenu true; radioMenuItemCollection; menuItem -label (uiRes("m_generateCBEditMenu.kNice")) -radioButton ( 1 == `optionVar -query channelsLongName` ) -c "setChannelLongName 1" niceNameItem; menuItem -label (uiRes("m_generateCBEditMenu.kLong")) -radioButton ( 2 == `optionVar -query channelsLongName` ) -c "setChannelLongName 2" longNameItem; menuItem -label (uiRes("m_generateCBEditMenu.kShort")) -radioButton ( 0 == `optionVar -query channelsLongName` ) -c "setChannelLongName 0" shortNameItem; setParent -m ..; enableDisableEditMenu $parent; } }