アウトライナで勝手に検索フィールドがアクティブで激怒。の続き。
アウトライナを MEL で作成すると、いくつでも作成できる代わりに、なぜか検索フィールドがアクティブな状態になって表示されやがるので激怒しますという話を前回書きました。 解決するには、アウトライナウインドウを作った後にそのウインドウを setFocus コマンドでアクティブにしてあげれば、とりあえず検索フィールドのアクティブは外れるよ、と教えてもらった話でした。
↓このように書けばよいと。
--------------------------------------------
window -t "Outliner" fuckinOutliner;
frameLayout -labelVisible false -h 400 -w 280;;
string $panel = `outlinerPanel`;
string $outliner = `outlinerPanel -query -outlinerEditor $panel`;
showWindow;
setFocus fuckinOutliner;
----------------------------------------------
しかしその後、問題が発覚しました。
このやり方だと、アウトライナが複数開けない
↓こんなエラーが出てしまいます。
// Error: line 1: Object's name 'fuckinOutliner' is not unique. //
あ~ そうか、ウインドウの名前を fuckinOutliner などとハードコーディングしちゃってるからですね・・・。 この名前でウインドウを作っちまうと、閉じない限りその名前でウインドウが存在するわけで、そして2個目以降も同じ名前でウインドウを作ろうとするからユニークネームにならず、エラーになるんですね。 なるほど・・・・ 勝手に1とか付けて解決してくれないのですね Maya さま。
ん~ これじゃ意味無いですね。そもそも、Mayaさまのインターフェースから普通にアウトライナを出すと、1つしかできないというのが元々の問題ですからね。 スクリプトでやれば複数いけるよ、ということでわざわざこんなスクリプト書いているわけですからね。 検索フィールドのアクティブ問題が解決したのはいいけど、アウトライナが複数開けなくなっちまったんでは、本末転倒ですからね。
ってことで、またおじさまに相談したのですが、いつものように一刀両断あっさり解決。 なるほど、ウインドウの名前をスクリプトに書いてしまわずに、window コマンドの戻り値を使えばいいんですね。
--------------------------------------------
{
string $w = `window -t "Outliner"`;
frameLayout -labelVisible false -h 400 -w 280;;
string $panel = `outlinerPanel`;
string $outliner = `outlinerPanel -query -outlinerEditor $panel`;
showWindow;
setFocus $w;
}
----------------------------------------------
なるほど~ window コマンドの戻り値(ウインドウの名前)を変数に格納しておいて、あとで setFocus する時にこの変数を指定してやればいいわけですね。 なるほど~
※ 追記 { } を足しました これあったほうがいいね。スコープっていうの? 変数の有効範囲が{ } に限定されるから、他のスクリプトと競合しなくていい。
なんか俺、いまだに mel の戻り値がよくわからんのですよ・・・・そのアクサングラーヴっていうの? ヘンな記号で全部囲うと戻り値が得られるんですよね。 いつもピンと来てないなあ・・・。 window コマンドの場合は、なるほど、ドキュメントを見ると、ウインドウの名前が戻り値になると書いてありますね。
http://help.autodesk.com/cloudhelp/2015/ENU/Maya-Tech-Docs/Commands/window.html
うーん、いつまで経っても慣れねえな・・・・ もっと書かないとダメだよなあ。 書いて書いて書きまくって自分用に調教するのが、Mayaさまと生きていくための唯一の道だと思う。
あるいは Maya さまを使わないというのが、Maya さまと生きていく道なのかも知れない。使わなければいいんだ。 Mayaさまがそこに居て下さってもかまわない。使わなければ。
ともかくこれでアウトライナをいくつでも出せるし、かつ検索フィールドがファッキンアクティブになってしまうという問題も解決できました。 調教がまた一歩前進した。 わーい
| 固定リンク
コメント