Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード Twitter

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2011-04-22

[][][][][]InDesignのMini Bridgeのカレントパスを素早く変更する

前回のエントリ「Mini BridgeパネルのTips」の中で、Mini Bridgeのパスを変更するのがめんどいとぶーたれました。まあ、そんな時にスクリプトですよ。ってことで書いてみました。まずは動画をごらんあれ。

D

スクリプトパネルから実行すれば、Finderの最前面のウインドウをMini Bridgeのカレントパスに変更します。

Finder上でドラッグ&ドロップもできるようになっています。アプリケーション形式の「change_path4MiniBridge.app」は(スクリプトパネルからの実行もドラッグ&ドロップも)どちらもできますが、スクリプトパネルからしか実行しないって人は「change_path4MiniBridge.scpt」を使った方が速度が早いです。

ダウンロード:change_path4MiniBridge.zip 直

コードはこんな感じです。

(*
change_path4MiniBridge
(c)2011 seuzo.jp
InDesign CS5のMini Bridgeのカレントパスを変更します。

●Useage:
スクリプトパネルから実行した場合、Finderの最前面のウィンドウをMini Bridgeのカレントパスにします。
フォルダ(またはファイル)をファイルをドラッグ&ドロップすれば、それをカレントパスにします。

●History:
2011-04-22	ver0.1	とりあえず
*)


--------------------------------------------------------●ドラッグ&ドロップされた
on open of theFiles
	tell application "Finder"
		if (length of theFiles > 1) then my my_error("ドラッグ&ドロップできるのはひとつだけです", true)
		set aFile to item 1 of theFiles
		if (kind of aFile) is not ("フォルダ" as Unicode text) then
			set current_dir to (container of aFile) as alias
		else
			set current_dir to aFile as alias
		end if
		my main(current_dir)
		
	end tell
end open


--------------------------------------------------------●起動
on run
	tell application "Finder"
		set current_dir to (insertion location) as alias --最前面のウインドウ
		my main(current_dir)
	end tell
end run


--------------------------------------------------------●メイン
to main(current_dir)
	my ver() --InDesignのバージョン確認
	tell application "Adobe Bridge CS5" to activate
	my deceive_bridge() --Bridgeの「InDesignに戻る」を確実にする
	set current_dir to (POSIX path of current_dir) as Unicode text
	my dir_return2InDesign(current_dir) --Mini Bridgeのパスを変更
end main





--------------------------------------------------------●InDesignバージョン確認ルーチン
to ver()
	tell application "Adobe InDesign CS5"
		activate
		set my_version to (version of script preferences) as real
		if my_version < 7 or my_version > 7.9 then
			activate
			my my_error("このプログラムはInDesign CS5以外では動作しません", true)
		end if
		return version
	end tell
end ver


--------------------------------------------------------●仮のドキュメントを開いて画像をリンクし、リンクをBridgeで表示させる。悪い回避方法
--Bridgeのファイルメニューからアプリケーションに戻る時、app.documents[0].chooseMenuItem("ReturnToApplication");だと、InDesignかPhotoshopかを指定できない対策。
to deceive_bridge()
	--Adobe InDesign CS5:Configuration:Icon.pngが存在するのを前提にパスを得ています。
	tell application "Finder"
		set img_path to container of (path to application "Adobe InDesign CS5")
		set img_path to (file "Icon.png" of folder "Configuration" of img_path) as alias
	end tell
	
	tell application "Adobe InDesign CS5"
		set tmp_doc to make new document
		tell page 1 of tmp_doc
			set tmp_graphic to place img_path as alias --画像を配置
			reveal in Bridge (item link of item 1 of tmp_graphic) --Brigeで表示
		end tell
		close tmp_doc saving no
	end tell
end deceive_bridge

--------------------------------------------------------●Bridgeのカレントディレクトリを変更し、InDesignに返す
to dir_return2InDesign(current_dir)
	tell application "Adobe Bridge CS5"
		--activate
		set my_js to "app.documents[0].presentationPath = '" & current_dir & "';app.documents[0].chooseMenuItem('ReturnToApplication');"
		
		do javascript my_js
	end tell
end dir_return2InDesign


----------------------------------●エラー処理
on my_error(err_str, my_stop)
	set err_str to err_str as Unicode text
	if my_stop then
		set my_stop to {"中止"}
	else
		set my_stop to {"中止", "続行"}
	end if
	tell application "Adobe InDesign CS5"
		activate
		beep
		set ANS to button returned of (display dialog err_str buttons my_stop default button 1 with icon 0) --警告ダイアログ出してストップ
		if ANS is "中止" then
			set user interaction level of script preferences to interact with all --ユーザー操作の再開
			error number -128
		end if
	end tell
end my_error

Bridgeのファイルメニューからアプリケーションに戻るのをapp.documents[0].chooseMenuItem("ReturnToApplication");と書けるんですけど、InDesignPhotoshopかを指定できないんです。それで仕方なく、InDesignのダミーのドキュメントに画像をリンクしてそこからBridgeで表示しています。BridgeはInDesignから呼ばれたので、ファイルメニューは「Adobe InDesignに戻る」になってるんですね。我ながらダメな回避方法です。うまい方法をご存知の方は教えてください。


おまけのTips

Bridgeをバリバリ使っている人はご存知かもしれませんが、Bridge本体のフォルダ移動はFinderからドラッグ&ドロップでできます。

  • フォルダ(またはファイル)をBridgeアプリケーションにドラッグ&ドロップする
  • Adobe Bridgeのパスバー、またはプレビューにフォルダ(またはファイル)をドラッグ&ドロップする

リファレンスにも書いてあります。

Creative Suite 5 * ファイルおよびフォルダー内の移動