// =========================================================================== // 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: // saveNodePresetDialog // // jdc (September 1, 2000) // cdt (March 2005) // // Description: // This method is called when a user wants to save the settings of a // node to a preset. This procedure displays the main dialog for preset // saving, which allows the user to type in the name by which they would // like the preset to be known. // // Input Arguments: // $argv - a variable list of node names and optional nodePreset flags. // // Return Value: // None // global string $gSaveNodePresetNodes[]; global string $gSaveNodePresetArgs[]; global proc invalidNodePresetNameDialog(string $name) // // Description: // This procedure is called when the user has typed an invalid preset name // into the text field of the save preset dialog and hit enter, or // hit the OK button in the save preset dialog box while and invalid name // is displayed in the text field. // This procedure displays a dialog telling the user they have typed an // invalid preset name, and describing what constitutes an invalid preset // name. // { string $message = (uiRes("m_saveNodePresetDialog.kInvalidName")); string $dispMsg = `format -s $name $message`; string $ok = (uiRes("m_saveNodePresetDialog.kOk")); $confirmResponse = `confirmDialog -title (uiRes("m_saveNodePresetDialog.kInvalidPresetName")) -parent saveNodePresetDialogWindow -button $ok -defaultButton $ok -message $dispMsg -messageAlign "left"`; } global proc int confirmOverwriteDialog( string $presetName) // // Description: // This procedure is called when the user has asked to save the settings // of a node under a certain preset name, but a preset already exists by // that name for that node. // This procedure displays a dialog prompting the user to confirm that // they want to overwrite the existing preset. // If the user chooses "OK", the preset is overwritten. If the user // chooses "Cancel", this dialog closes and the preset is not written. // { string $message = (uiRes("m_saveNodePresetDialog.kPresetExist")); string $dispMsg = `format -s $presetName $message`; string $overwrite = (uiRes("m_saveNodePresetDialog.kOverwrite")); string $cancel = (uiRes("m_saveNodePresetDialog.kOverwriteCancel")); $confirmResponse = `confirmDialog -title (uiRes("m_saveNodePresetDialog.kOverwriteExistingPreset")) -parent saveNodePresetDialogWindow -button $overwrite -button $cancel -cancelButton $cancel -defaultButton $overwrite -message $dispMsg -messageAlign "left"`; int $isOverwritten = false; if ($overwrite == $confirmResponse) { $isOverwritten = true; } return $isOverwritten; } global proc saveNodePresetDialogValidateName( string $presetNameGrp, int $performOperationIfValid) // // Description: // This procedure is called when the user has typed a name for the // preset they are trying to save and we need to verify that the name // they have typed is actually valid. // // This method uses the nodePreset command to determine if the name // typed by the user is valid. If the name is valid, and // $performOperationIfValid is true, this procedure will proceed to // perform the saving of the preset using the name typed by the user. If // the name is invalid, a dialog will be displayed to illustrate to the // user the error of their ways. // // $presetNameGrp is the name of the textFieldGrp control which contains // what the user has typed. // { string $presetName; $presetName = `textFieldGrp -query -text $presetNameGrp`; if (!`nodePreset -isValidName $presetName`) { invalidNodePresetNameDialog($presetName); } else if ($performOperationIfValid) { string $savePreset = true; global string $gSaveNodePresetNodes[]; if (`nodePreset -exists $gSaveNodePresetNodes[0] $presetName`) { // If a preset already exists by that name, we will confirm // before overwriting it. // $savePreset = confirmOverwriteDialog($presetName); } if ($savePreset) { global string $gSaveNodePresetArgs[]; int $i; for ($i = 0; $i < size($gSaveNodePresetNodes); $i++) { evalEcho("nodePreset " + $gSaveNodePresetArgs[$i] + " -save " + $gSaveNodePresetNodes[$i]+" \""+$presetName+"\""); } } evalDeferred("deleteUI -window saveNodePresetDialogWindow"); } } global proc saveNodePresetDialog( string $nodes[], string $args[]) { global string $gSaveNodePresetNodes[]; global string $gSaveNodePresetArgs[]; clear($gSaveNodePresetNodes); clear($gSaveNodePresetArgs); int $num = size($nodes); if($num != size($args)){ return; } for ($i=0; $i < $num; $i++) { // Append node and arguments $gSaveNodePresetNodes[size($gSaveNodePresetNodes)] = $nodes[$i]; $gSaveNodePresetArgs[size($gSaveNodePresetArgs)] = $args[$i]; } if (`window -exists saveNodePresetDialogWindow`) { deleteUI saveNodePresetDialogWindow; } if (`windowPref -exists saveNodePresetDialogWindow`) { windowPref -remove saveNodePresetDialogWindow; } string $savePreset = (uiRes("m_saveNodePresetDialog.kSavePreset")); window -title (uiRes("m_saveNodePresetDialog.kSaveSettingsAsPreset")) -iconName $savePreset saveNodePresetDialogWindow; formLayout mainLayout; string $presetNameGrp; $presetNameGrp = `textFieldGrp -label (uiRes("m_saveNodePresetDialog.kPresetName")) -editable true`; text -align center -label (uiRes("m_saveNodePresetDialog.kValidCharacters")) helpText; formLayout -numberOfDivisions 2 buttonLayout; button -label $savePreset -command ("saveNodePresetDialogValidateName \"" + $presetNameGrp + "\" true") saveButton; button -label (uiRes("m_saveNodePresetDialog.kCancel")) -command "deleteUI saveNodePresetDialogWindow" cancelButton; formLayout -edit -af saveButton "top" 0 -af saveButton "bottom" 0 -af saveButton "left" 0 -ap saveButton "right" 3 1 -af cancelButton "top" 0 -af cancelButton "bottom" 0 -ap cancelButton "left" 3 1 -af cancelButton "right" 0 buttonLayout; setParent ..; formLayout -edit -af $presetNameGrp "top" 5 -af $presetNameGrp "left" 5 -af $presetNameGrp "right" 5 -ac helpText "top" 5 $presetNameGrp -af helpText "left" 5 -af helpText "right" 5 -ac helpText "bottom" 5 buttonLayout -an buttonLayout "top" -af buttonLayout "bottom" 5 -af buttonLayout "left" 5 -af buttonLayout "right" 5 mainLayout; setParent ..; showWindow saveNodePresetDialogWindow; }