[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:954) Re: [InDesign CS]document id, window id等の取得
>懐かしい。MNAR。SAPCOL。中村征宏万歳(^^;;;;;
もはや、遠くなりにけりですね。
決して新ゴを進んで使いたいわけではないんですが。
>っていうか、indexではダメなんでしょうか? いまひとつ疑問なんですが、IDは参照と同義なので、いまひとつ利用方法がわかりません(笑)
やりたかったことは、最前面ウインドウのワンキーでのサイクリックな切り替えです。
index of windowsは、やってみると分かるのですがユニークな値になりません。
なぜidが必要になったかというと、windowsを変数に代入すると、
その時点で中身の順列が毎回変わっていたからです(なぜなんでしょう)。
ならばと参照のリスト自体をソートしようと思ったのですが、一度テキストに
型変換しないとできませんから、それは無理(らしい)。
それならば、ユニークな値であるidを取得してそれをソートし、
ソートしたものを「インデックス」としようと思ったけれども、
idが取得できない。取得できる name も index もユニークじゃないんじゃ、
どうしたらいいのかと。まあ、それで困っていたわけです。
以下を試してみると、うまくサイクリックにならないことが分かります。
なんでwindowsをmyWindowsに代入した時点で中身の順序が浮動するのかがよく分かりません。
また、(item previousWindow of myWindows)の部分を(item previousWindow of windows)にしても、うまく動きません。
■やりたいことを素直に書いたが、うまく動かないもの
■なぜなら、myWindowsの順序が毎回浮動するから
property previousWindow : 1
tell application "InDesign CS_J"
copy windows to myWindows
set myCount to (count of myWindows)
if (previousWindow > myCount) then
set previousWindow to 1
bring to front (item previousWindow of myWindows)
else
bring to front (item previousWindow of myWindows)
set previousWindow to previousWindow + 1
end if
end tell
■対策して動くようにしたもの
■windowsを変数に代入した後は、ウインドウの状態が前回起動から
■変わっていないと推測できれば、windowsを更新しない。
--InDesignのウインドウを実行の度にサイクル表示する
property previousCurrnetItem : 1
property CurrnetItemNumber : 1
property myUnSortedWindowList : {}
tell application "InDesign CS_J"
if (CurrnetItemNumber is not equal to (count of windows)) or (myUnSortedWindowList is equal to {}) then
set myUnSortedWindowList to windows
set CurrnetItemNumber to (count of windows)
end if
if previousCurrnetItem is greater than (count of myUnSortedWindowList) then
set previousCurrnetItem to 1
end if
try
bring to front (item previousCurrnetItem of myUnSortedWindowList)
on error
set myUnSortedWindowList to windows
bring to front (item previousCurrnetItem of myUnSortedWindowList)
set previousCurrnetItem to previousCurrnetItem + 1
return
end try
set previousCurrnetItem to previousCurrnetItem + 1
end tell