// =========================================================================== // 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. // =========================================================================== // // // Creation Date: Oct 31, 2003 // // Procedure Name: // preloadReferenceEditorPanel // // Description: // Creates a panel that contains a reference editor. // // Input Arguments: // None // // Return Value: // None. // global string $gPreloadRefEdSelectedNodes[]; global proc preloadRefEdFileSelected(string $dialogName) { global string $gPreloadRefEdSelectedNodes[]; $gPreloadRefEdSelectedNodes = `preloadRefEd -q -selectFileNode ($dialogName + "preloadReferenceEditorPanel")`; if (size($gPreloadRefEdSelectedNodes) > 0) { string $rawFileNames[]; $rawFileNames = `selLoadSettings -q -unresolvedName -fileName $gPreloadRefEdSelectedNodes`; string $realFileNames[] = `selLoadSettings -q -fileName $gPreloadRefEdSelectedNodes`; text -e -label $rawFileNames[0] -annotation $rawFileNames[0] preloadUnresolvedFileNameValue; text -e -label $realFileNames[0] -annotation $realFileNames[0] preloadResolvedFileNameValue; } else { // Nothing selected. // string $notAvailable = "N/A"; text -e -label $notAvailable -annotation $notAvailable preloadUnresolvedFileNameValue; text -e -label $notAvailable -annotation $notAvailable preloadResolvedFileNameValue; } } global proc createPreloadRefEdPanel(string $dialogName) { preloadRefEd -unParent -selectCommand ("preloadRefEdFileSelected \"" + $dialogName + "\"") ($dialogName + "preloadReferenceEditorPanel"); global int $gStandardIdent; int $numDivisions = 100; string $rp = ($dialogName + "preloadReferenceEditorPanel"); // Get the name of the dialog's formLayout // string $edParent; if ( `about -mac` ) { $edParent = `formLayout`; } else { $edParent = `setParent -q`; } frameLayout -label (uiRes("m_preloadReferenceEditorPanel.kFileParticulars")) -collapsable true -collapse `optionVar -q preloadReferenceEdFilePartCl` -collapseCommand "optionVar -iv preloadReferenceEdFilePartCl 1" -expandCommand "optionVar -iv preloadReferenceEdFilePartCl 0" -labelIndent $gStandardIdent preloadFileInfoFrame; string $fInfoForm = `formLayout -numberOfDivisions $numDivisions preloadFileInfoForm`; text -l (uiRes("m_preloadReferenceEditorPanel.kUnresolvedName")) preloadUnresolvedFileNameLabel; text preloadUnresolvedFileNameValue; text -l (uiRes("m_preloadReferenceEditorPanel.kResolvedName")) preloadResolvedFileNameLabel; text preloadResolvedFileNameValue; formLayout -e -attachForm preloadUnresolvedFileNameLabel left 0 -attachForm preloadUnresolvedFileNameLabel top 0 -attachControl preloadUnresolvedFileNameValue left 15 preloadUnresolvedFileNameLabel -attachForm preloadUnresolvedFileNameValue top 0 -attachForm preloadResolvedFileNameLabel left 0 -attachControl preloadResolvedFileNameLabel top 0 preloadUnresolvedFileNameLabel -attachControl preloadResolvedFileNameValue left 15 preloadResolvedFileNameLabel -attachControl preloadResolvedFileNameValue top 0 preloadUnresolvedFileNameValue $fInfoForm; setParent $edParent; // Set the height and width to make sure the outliner // is visible. // string $outlinerLayout; if ( `about -mac` ) { $outlinerLayout = `formLayout`; } else { $outlinerLayout = `formLayout -height 400 -width 400`; } preloadRefEd -e -parent $outlinerLayout $rp; // Preload Editor // formLayout -e -attachForm $rp top 0 -attachForm $rp left 0 -attachForm $rp right 0 -attachForm $rp bottom 0 $outlinerLayout; setParent $edParent; formLayout preloadButtonRow; button -l (uiRes("m_preloadReferenceEditorPanel.kOpen")) -recomputeSize 0 -height 26 -command ("preloadRefEdOpenCB \"" + $dialogName + "\"") preloadOpenButton; button -l (uiRes("m_preloadReferenceEditorPanel.kCancel")) -recomputeSize 0 -height 26 -command ("preloadRefEdCancelCB \"" + $dialogName + "\"") preloadCancelButton; formLayout -e -numberOfDivisions 100 -attachForm preloadOpenButton "top" 0 -attachForm preloadOpenButton "left" 0 -attachForm preloadOpenButton "bottom" 0 -attachPosition preloadOpenButton "right" 2 50 -attachForm preloadCancelButton "top" 0 -attachPosition preloadCancelButton "left" 2 50 -attachForm preloadCancelButton "bottom" 0 -attachForm preloadCancelButton "right" 0 preloadButtonRow; formLayout -e -attachForm preloadFileInfoFrame top 0 -attachForm preloadFileInfoFrame left 0 -attachForm preloadFileInfoFrame right 0 -attachControl $outlinerLayout top 5 preloadFileInfoFrame -attachForm $outlinerLayout left 0 -attachForm $outlinerLayout right 0 -attachForm $outlinerLayout bottom 26 -attachNone preloadButtonRow top -attachForm preloadButtonRow left 0 -attachForm preloadButtonRow right 0 -attachForm preloadButtonRow bottom 0 $edParent; setParent $edParent; source PreloadReferenceEdMenu; PreloadReferenceEdMenu($dialogName + "preloadReferenceEditorPanel"); preloadRefEdFileSelected($dialogName); } global proc preloadRefEdCancelCB(string $dialogName) { if ( `about -mac` ) { deleteUI -window $dialogName; } else { layoutDialog -dismiss "Cancel"; } } global proc preloadRefEdOpenCB(string $dialogName) { string $file = `optionVar -query preloadRefEdTopLevelFile`; if ( `about -mac` ) { deleteUI -window $dialogName; } else { // Dismissing the dialog won't immediately delete the // preload reference editor. However doing the file // open will delete the internal selective load // settings data structure which the preload reference // editor refers to. To avoid any problems we'll manually // unparent and delete the preload reference editor. // string $preloadPanel = ($dialogName + "preloadReferenceEditorPanel"); preloadRefEd -e -unParent $preloadPanel; deleteUI $preloadPanel; layoutDialog -dismiss "Open"; } // Make sure layoutDialog is deleted before we try to open the file. If // the reference file is not found, a missingReference layoutDialog will be // created, and we can only have one layout dialog at a time. // evalDeferred("file -f -o -loadSettings implicitLoadSettings \"" + $file + "\""); // find out file type and add to recent files list string $fileType; string $fileTypeList[] = `file -q -typ $file`; int $listSize = size($fileTypeList); int $index; for ($index = 0; $index < $listSize; $index++) { if (`translator -q -rs $fileTypeList[$index]`) { $fileType = $fileTypeList[$index]; break; } } addRecentFile( $file, $fileType); } global proc preloadRefEdUnloadCB() // // Description: // A callback to unload a reference. // { global string $gPreloadRefEdSelectedNodes[]; if (size($gPreloadRefEdSelectedNodes) > 0) { // Save the connections in the reference node. // string $args = stringArrayToString( $gPreloadRefEdSelectedNodes, " " ); selLoadSettings -e -deferReference 1 $gPreloadRefEdSelectedNodes; } } global proc preloadRefEdLoadCB() // // Description: // A callback to load a reference. // { global string $gPreloadRefEdSelectedNodes[]; if (size($gPreloadRefEdSelectedNodes) > 0) { // Save the connections in the reference node. // string $args = stringArrayToString( $gPreloadRefEdSelectedNodes, " " ); selLoadSettings -e -deferReference 0 $gPreloadRefEdSelectedNodes; } } global proc removePreloadRefEdPanel(string $dialogName) { optionVar -stringValue preloadRefEdTopLevelFile ""; preloadRefEd -e -unParent ($dialogName + "preloadReferenceEditorPanel"); } global proc buildPreferenceEdProxySwitchMenu(string $parentMenu) // // Description: // Switch to the proxy selected in the preference editor. // { // Selected nodes // global string $gPreloadRefEdSelectedNodes[]; string $menu = ($parentMenu + "|preloadReferenceEdProxySwitchItem"); int $selSize = size($gPreloadRefEdSelectedNodes); string $oldParent = `setParent -q -menu`; setParent -menu $parentMenu; menu -e -deleteAllItems $menu; setParent -menu $menu; if( $selSize == 0 ){ menuItem -l (uiRes("m_preloadReferenceEditorPanel.kSelectToSwitch")) -enable false; setParent -menu $oldParent; return; } // Get the available tags, and make the set sorted & unique. // string $proxySetTags[] = `selLoadSettings -q -proxySetTags $gPreloadRefEdSelectedNodes`; string $shortFileNames[] = `selLoadSettings -q -shortName -proxySetFiles $gPreloadRefEdSelectedNodes`; string $activeProxyTag = ""; if( $selSize > 1 ){ // Eliminate the duplicate tags, and sort. // string $uniqTags[] = stringArrayRemoveDuplicates( $proxySetTags ); $proxySetTags = sort( $uniqTags ); } else { string $activeProxyTags[] = `selLoadSettings -q -activeProxy $gPreloadRefEdSelectedNodes`; if( size($activeProxyTags) != 1 ){ // Fail gracefully // menu -e -deleteAllItems $menu; return; } $activeProxyTag = $activeProxyTags[0]; } int $tagSize = size( $proxySetTags ); if( $tagSize == 0 ){ menu -e -deleteAllItems $menu; return; } int $tagIndex = 0; int $enable = true; while( $tagIndex < $tagSize ){ string $proxyTag = $proxySetTags[$tagIndex]; string $proxyLabel = $proxyTag; if( $selSize == 1 ){ $enable = ( $proxyTag != $activeProxyTag ); $proxyLabel = ($proxyTag + " (" + $shortFileNames[$tagIndex] + ")"); } menuItem -l $proxyLabel -enable $enable -c ("preloadRefEdSwitchCB " + $proxyTag ); $tagIndex++; } setParent -menu $oldParent; } global proc preloadRefEdSwitchCB( string $proxyTag ) // // Description: // Preload Ref Ed switch callback. // { global string $gPreloadRefEdSelectedNodes[]; // Switch to the proxy // selLoadSettings -e -activeProxy $proxyTag $gPreloadRefEdSelectedNodes; } // Global procs used by the menus... //