ひさびさー、ひさびさー。
転職でバタバタしておりました。
新しい仕事もまだまだ覚える事があり、いいトシだけどしばらくぺえぺえ新人なのでよろしくどうぞ。
仕事中にTwitter覗いたり、ましてや仕事と全然関係ないスクリプト書いたりFlash起動したりなんかとてもとても。。
というわけで昼休みにしたためた物となりますが
いつだかのTL
設定内容や挙動としては確かに正しいのだけど、元のレイヤーをロックしたり隠していたりする場合は「記憶」を無視してほしい、気もする…あと、ハマりそうなポイントでもあるなぁ。
— あかつき@DTPの勉強会・11/15開催 (@akatsuki_obana) October 23, 2014
コレですね。当該レイヤーがロック、または非表示な時に「元の位置にペースト」すると出るお節介なやつ。
なんとかなりそうな気がしたので作ってみました。リハビリを兼ねてやってみたです。
id_pasteinPlace_handler.jsx
MacOSX 10.9 InDesignCS3とCS6 で動作確認済み
2014.10.31 ver_d 以下の通り変更しました。
・CS4以前に未対応だったので書式を見直して対応
2014.10.31 ver_c
・外部アプリケーションでコピーしたプレーンテキストをペーストする際、過去の最後のInDesign上のコピー元レイヤーを参照してしまう不具合をあかつきさんよりご指摘いただき、万全ではありませんがひとまず文字ツールの使用中は動作しないよう変更しました
2014.10.27 ver_b
・通常のペーストも捕まえるよう修正
・「レイヤーを記憶してペースト」していないのにペースト後チェックが入ってしまう不具合を修正
さいしょ、「『元の位置にペースト』にイベントハンドラ立てて、ペーストの前にペースト先レイヤーの状況を見て、ロックされてたり非表示だったりしたら『レイヤーを記憶してペースト』オフにすりゃいいんでしょ」ぐらいに軽く考えてたんだけど、
よくよく考えたらペースト前にペースト先レイヤーがドレかなんてわからない。エスパーじゃない。
んじゃ、別ドキュメントにペーストして名前を拾えばよかろうのじゃろう、と思って、
ウィンドウを開かずに新規ドキュメント作成(スクリプトではできるのだ)してみたら、
前面に来ないのでペーストできないorz
やや焦りかけた頃、てんのこえが
@AJABON コピーする時にオブジェクトIDとレイヤー情報をグローバルに書き込んどく。
— 機修手鞠右衞門 (@ten_A_cclab) October 24, 2014
そういえばヘルパーオブジェクトに変数を置いたことないぞ。
と思ってぐぐってたら見つかったのがコレ
いや、確かあそこトラックバック弾くんだよなw こっちで
http://chuwa.iobb.net/tech/archive/2014/09/copy-history.html
というわけで名指し記事を放置してたんですねすいませんorz
というわけで完成。
使い方は、いつものスクリプト置き場のひとつ上の階層に「startup scripts」フォルダを作成し、
その中に置いておきます。InDesign起動時に読み込まれ、陰でこそこそ監視するタイプです。
「レイヤーを記憶してペースト」にチェックが入っていて、
当該レイヤーがロック、または非表示な時。
…に「元の位置にペースト」すると、その瞬間だけ「レイヤーを記憶してペースト」をオフにします。
ペースト直後また「レイヤーを記憶してペースト」はオンに戻ります。
ふつうのペーストには対応させていませんが対応自体は簡単です。どうする?(※ver_bで修正済み)
アラートが出ますが、「なにこれうざい」と思われる珍しい方は、スクリプトの一行目を書き換えれば出なくできます。
難しくないので自分でやってください。開けば書き換え方も書いてありますから。
こうして、コピー元レイヤーではなく現在アクティブなレイヤーにペーストされる事となりますが、
その上でアクティブレイヤーがロックまたは非表示だった場合は正規のアラートが二重で出る事となります。
これはしょうがないからしょうがない。
でーすー。