// =========================================================================== // 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. // =========================================================================== // // Description: // Insert a sub menu into Pipeline Cache menu. // This procedure ensures menu ordering. // global proc insertPipelineSubMenu(string $subMenu, string $label, string $postMenuCommand) { global string $gMainWindow; // defined by Maya // Check Pipeline Cache menu setParent $gMainWindow; if (!`menu -q -exists mainPipelineCacheMenu`) { // Pipeline Cache menu does not exist, create one // Update(July, 2014): Rename menu to "Cache" menu -label (uiRes("m_insertPipelineSubMenu.kMainCache")) -tearOff true mainPipelineCacheMenu; } // Check the sub menu setParent -menu mainPipelineCacheMenu; if (`menuItem -q -exists $subMenu`) { return; } else { string $existingMenuName[] = `menu -q -itemArray mainPipelineCacheMenu`; int $numItems = size($existingMenuName); if ($numItems == 0 || strcmp($existingMenuName[$numItems-1], $subMenu) < 0) { // Adding an item that should come last alphabetically, // so appending is sufficient // Create sub menu string $menu = `menuItem -label $label -tearOff true -subMenu true $subMenu`; menuItem -e -postMenuCommand ($postMenuCommand + " " + $menu) -postMenuCommandOnce true $menu; setParent -menu ..; } else { // Backup and delete all existing menus string $existingMenuLabel[]; int $existingMenuTearOff[]; int $existingMenuSubMenu[]; string $existingMenuPostMenuCommand[]; int $existingMenuPostMenuCommandOnce[]; int $i; for ($i = 0; $i < size($existingMenuName); $i++) { $existingMenuLabel[$i] = `menuItem -q -label $existingMenuName[$i]`; $existingMenuTearOff[$i] = `menuItem -q -tearOff $existingMenuName[$i]`; $existingMenuSubMenu[$i] = `menuItem -q -subMenu $existingMenuName[$i]`; $existingMenuPostMenuCommand[$i] = `menuItem -q -postMenuCommand $existingMenuName[$i]`; $existingMenuPostMenuCommandOnce[$i] = `menuItem -q -postMenuCommandOnce $existingMenuName[$i]`; } menu -e -deleteAllItems mainPipelineCacheMenu; // Restore the menus before sub menu for ($i = 0; $i < size($existingMenuName) && strcmp($existingMenuName[$i], $subMenu) < 0; $i++) { menuItem -label $existingMenuLabel[$i] -tearOff $existingMenuTearOff[$i] -subMenu $existingMenuSubMenu[$i] -postMenuCommand $existingMenuPostMenuCommand[$i] -postMenuCommandOnce $existingMenuPostMenuCommandOnce[$i] $existingMenuName[$i]; if ($existingMenuSubMenu[$i]) { setParent -menu ..; } } // Create sub menu string $menu = `menuItem -label $label -tearOff true -subMenu true $subMenu`; menuItem -e -postMenuCommand ($postMenuCommand + " " + $menu) -postMenuCommandOnce true $menu; setParent -menu ..; // Restore the menus after sub menu for (; $i < size($existingMenuName); $i++) { menuItem -label $existingMenuLabel[$i] -tearOff $existingMenuTearOff[$i] -subMenu $existingMenuSubMenu[$i] -postMenuCommand $existingMenuPostMenuCommand[$i] -postMenuCommandOnce $existingMenuPostMenuCommandOnce[$i] $existingMenuName[$i]; if ($existingMenuSubMenu[$i]) { setParent -menu ..; } } } } } // // Description: // Delete a sub menu from Pipeline Cache menu. // global proc deletePipelineSubMenu(string $subMenu) { global string $gMainWindow; // defined by Maya // Check Pipeline Cache menu setParent $gMainWindow; if (!`menu -q -exists mainPipelineCacheMenu`) { // Pipeline Cache menu does not exist return; } // Check the sub menu setParent -menu mainPipelineCacheMenu; if (`menuItem -q -exists $subMenu`) { // Delete the sub menu deleteUI -menuItem $subMenu; } // Delete Pipeline Cache menu if there are no sub menus if (`menu -q -numberOfItems mainPipelineCacheMenu` == 0) { deleteUI -menu mainPipelineCacheMenu; } }