というのは冗談ですが。ハハハ(と言いつつ目は笑ってない)
選択ハニー3部作のうち最初の物となります。
例によって欲張りすぎるうちにぶさいくなコードを書いてしまいましたが
InDesign CS3以降
MacOSX 10.4.11のCS3で動作確認。
Windowsとファミコンでは未検証です。どなたかお願いします親分。
以下、とくに説明が必要な物でもないんですが、いちおう。
【概要】
選択ハニーをフィルタリングします。
ドロップダウンリストから対象となるオブジェクトの種類(リスト内容は下っ端作業に特化してあります)
を選定し、ボタンをカチッと押すとフィルタリングされた選択ハニーを返します。
抽出ボタン…現状の選択ハニーから、リストで選定した種類のオブジェクトだけを選択し直します。
何も選択されていない時はアクティブなスプレッドにあるオブジェクト全てを対象としてフィルタリングします。
除外ボタン…現状の選択ハニーから、リストで選定した種類のオブジェクトだけを選択解除します。
こちらは選択ハニーにのみ作用します。
【挙動】
・選択ハニー内(またはスプレッド内)にグループオブジェクトが含まれている場合、グループのガワは除外し、中身を読みに行きます。子孫グループに対しても、グループオブジェクトが存在する限り追いつめます。先祖の遺した莫大な負債、みたいな。違う。
・インラインオブジェクトは対象外です。一度に1つしか選択できない為です。
【独言】
当初、spread.pageItems.everyItem().*****.everyItem() というフィルタリング関数に *****を引数にして投げてやればかっこよいのでは、と思って書き始めてみたら、とんだ甘ちゃんでした。
結局オブジェクトが仲良く並んだ配列を1こずつ見る泥作業に近い仕様となっております。
selection配列をpageItemsと同義に扱う事ができればかなりの瞬間技ができるんですが。できられませんでした。
また、spread.pageItems.everyItem() だとロックされたレイヤーや非表示レイヤーの中身まで選択状態にできてしまうので、未選択状態からの実行時はわざわざ最初にSelectAllを入れてあります。
ところどころ歯がゆいであります。
何しろ、使用例の画像を用意しなくてもいい内容なので今回は楽だなあ。
※当ブログ内、または運営主(z-)との直接の会話に於いて「選択ハニー」といえば選択範囲の事ですので、脳内変換をお願いします。
————————–
10.07.28 b → c
姉御よりリクエストがあったので、フィルタリング後の変化がなかった場合の表示を「info.」(デフォルト表記の意味で)から「ネクテラジャレー」に(うそ)
「Result : ありません」に変更しました。他の方も些細な要望があればお知らせください。
ついでに処理前に一旦クリアするようにしました。これにより、前回と同様の結果でも一瞬チカッとするので明示的になったかと思います。
と、第二弾の中身が応用できそうなので、いずれぐっとコンパクトに書き直す予定であります。