[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:1453) [AS_Indesign CS2]override_selection 0.2
こちらもCS2用にちょっと手直し。
どなたかテストしてくだされば、オモテにアップします。
(*
override_selection
(c)2005-2006 www.seuzo.jp
マスターページ上の選択アイテムをすべての適用ページ内でオーバーライドさせます。
2005.05.01 ver.0.1 とりあえず版。
2006.09.02 ver.0.2 Indesign CS2用
*)
--------------------------------------------------------●コントロールルーチン
my ver()
my doc_exists()
set my_selection to my selection_test()
set cnt to my my_override(my_selection)
beep
if cnt = 0 then
display dialog "オーバーライドすべき箇所はありませんでした" as Unicode text
else
display dialog (cnt & "箇所をオーバーライドしました。") as Unicode text
end if
--------------------------------------------------------●InDesignバージョン確認ルーチン
to ver()
tell application "Adobe InDesign CS2_J"
set my_version to (version of script preferences) as real
if my_version < 4 or my_version > 4.9 then
activate
my my_error("このプログラムはInDesign CS2以外では動作しません", true)
end if
my_version
end tell
end ver
--------------------------------------------------------●ドキュメントが開かれているかどうか
to doc_exists()
tell application "Adobe InDesign CS2_J"
if not (exists document 1) then
my my_error("ドキュメントが開かれていません", true)
end if
end tell
end doc_exists
--------------------------------------------------------●選択されているオブジェクトが妥当かどうかのテスト
(*
ページアイテムが選択されており
選択されているオブジェクトのクラスが{text frame, group, rectangle, oval, polygon, graphic line, guide}のいずれかであり、
それらがマスターページであれば
選択オブジェクトのリストを返す
*)
to selection_test()
tell application "Adobe InDesign CS2_J"
tell document 1
set my_selection to selection
if my_selection is {} then my my_error("なにも選択されていません", true)
set my_class to class of item 1 of my_selection
if my_class is not in {text frame, group, rectangle, oval, polygon, graphic line, guide} then my my_error("選択ツールでアイテムを選択してください", true)
if class of parent of parent of item 1 of my_selection is not master spread then my my_error("マスターページのアイテムが選択されていません", true)
return my_selection
end tell
end tell
end selection_test
--------------------------------------------------------●すべてのページをあたり、オーバーライドする
to my_override(my_selection)
set cnt to 0
tell application "Adobe InDesign CS2_J"
tell document 1
set mypages to every page
repeat with i in mypages
if applied master of i = parent of parent of item 1 of my_selection then --同じマスターを使っていれば
set mymasterpageitems to master page items of i
repeat with ii in mymasterpageitems
--set ii to object reference of ii
if my_selection contains ii then
try
override ii destination page i
set cnt to cnt + 1
on error errMsg number errNum
my my_error("オーバーライド処理中にエラーです" & return & errMsg & return & errNum, false)
end try
end if
end repeat
end if
end repeat
end tell
end tell
return cnt
end my_override
------------------------------------------★以下こまごまとした下請け
------------------------------------------★エラー処理
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 CS2_J"
set user interaction level to interact with all --ユーザー操作の禁止を解除します
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
error number -128
end if
end tell
end my_error