以下のように AEnewNonNumericMulti.mel をカスタマイズして「Add New Item」などのボタンを無効化することができます。
runTime/scripts/AETemplates の AEnewNonNumericMulti.mel を変更して $nodeName のタイプを確認します。たとえば、該当するノードが「fooType」のときはフィールドを無効にする場合、以下の 2 つの文のうち 1 つを使用します。
int $showField = nodeType( $nodeName ) != "fooType"; int $showField = !`objectType -isa "fooType" $nodeName`;
フラグ「-m $showField」を適切な UI コントロールに追加してフィールドの表示、非表示を切り替えることにより、各フィールドを管理された状態に設定します(ボタン、テキスト、rowLayout など)。AEreplaceNonNumericMulti でも同じようにし、そのテンプレートを使用して新しいノードをロードしたときに同じフィールドの有効無効を切り替える必要があります。
finalGatherMergeFileUtils.mel などスクリプトによっては明示的に AEnewNonNumericMulti.mel をソースにし、容易にユーザ独自のバージョンをソースにして AEnewNonNumericMulti の定義をオーバーライドできないようにしてください。プロシージャがどこで定義されているかを確認するには、whatIs を使用します。
たとえば、独自のバージョンの AEnewNonNumericMulti.mel ソースにしている場合、以下を入力します。
whatIs “AEnewNonNumericMulti”;
Maya はたとえば // 結果: Mel プロシージャが <somePath>/myAEnewNonNumericMulti.mel // で見つかりました(// Result: Mel procedure found in <somePath>/myAEnewNonNumericMulti.mel //)という行を返します。
ただし、Render Settings ウィンドウを開いている場合に間接ライティング(Indirect Lighting)タブを選択すると、オリジナルの AEnewNonNumericMulti.mel ファイルがソースになってプロシージャの定義が変更されます。ここで
whatIs “AEnewNonNumericMulti”; と入力すると、
Maya はたとえば // 結果: Mel プロシージャが <somePath>/runTime/scripts/AETemplates/AEnewNonNumericMulti.mel で見つかりました(//// Result: Mel procedure found in <somePath>/runTime/scripts/AETemplates/AEnewNonNumericMulti.mel //)という行を返します。