[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:636) TEXT OUT
ちょっと書き直してみました。
かざりがいっぱいで、ただ意味なく長いだけなんですが(^^;;;;;
#しかもQXPかよ!
オモテにはQXP4.1を出すつもりはないので、ここで。
property cd : ""
on open Doc
set para_style to my start_up()
with timeout of 3600 seconds
tell application "Finder"
repeat with thisDoc in Doc
if file type obsolete of thisDoc is "XDOC" then
tell application "QuarkXPress? 4.10r2J"
--activate
open thisDoc use doc prefs yes remap fonts no do auto picture import no
my TT(para_style)
close document 1 saving no
end tell
end if
end repeat
end tell
end timeout
end open
on run
set para_style to my start_up()
with timeout of 3600 seconds
tell application "QuarkXPress? 4.10r2J"
--activate
if exists document 1 then
my TT(para_style)
beep 3
else
choose file with prompt "処理するドキュメントを選んでください" of type {"XDOC"}
set thisDoc to result
open thisDoc use doc prefs yes remap fonts no do auto picture import no
my TT(para_style)
close document 1 saving no
end if
end tell
end timeout
end run
--------------------------------------------------------●起動チェック
to start_up()
my OpenProgress("起動チェック中", 5, "Starting up ...") --プログレスバー登場
try
my DescribeProgress("Find osax ...")
my UpdateProgress(1)
my confirm_osax("Dialog Director", "http://www.hylight.demon.co.uk/") --OSAXの確認1
my DescribeProgress("Serial check ...")
my UpdateProgress(2)
my p("Ned-d5q-k3r-Nf3")
my DescribeProgress("Version check ...")
my UpdateProgress(3)
my ver() --QXPバージョンのチェック
my DescribeProgress("User interface ...")
my UpdateProgress(4)
set para_style to my ui()
my UpdateProgress(5)
on error
my CloseProgress()
error "Eroor : StartUP..." number -6000
end try
my CloseProgress() --これが正当な終わり方です
return para_style
end start_up
--------------------------------------------------------●実行ルーチン
on TT(para_style)
global txt_path, page_txt
tell application "QuarkXPress? 4.10r2J"
--activate
set doc_name to name of document 1 as text
set txt_path to choose file name with prompt "どこにテキストファイルを書き出しますか?" default name (doc_name & ".txt")
set ttl_pages to count every page of document 1
my OpenProgress("書き出し処理中", ttl_pages, " ... ") --プログレスバー登場
try
set page_txt to ""
repeat with i from 1 to ttl_pages
tell page i of document 1
set page_name to name
set page_txt to page_txt & return & "%%QRKPageBegin: " & page_name & "------------------------------" & return
set cnt_boxes to (count every text box)
repeat with j from 1 to cnt_boxes
if para_style then
tell text box j
set cnt_para to (count every paragraph)
repeat with k from 1 to cnt_para
tell paragraph k
set page_txt to page_txt & (name of style sheet) & tab & text 1
end tell
end repeat
end tell
else
set tmp_str to text of text box j
if tmp_str is not "" then
set page_txt to page_txt & tmp_str & return --テキストボックスが終わったら改行を入れる
end if
end if
end repeat
set page_txt to page_txt & "%%QRKPageEnd: " & page_name & "------------------------------" & return & return & return
my text_write(txt_path, page_txt)
end tell
my DescribeProgress((i as text) & "page")
my UpdateProgress(i)
end repeat
on error
my CloseProgress()
error "Eroor : Writing..." number -6001
end try
end tell
end TT
--------------------------------------------------------●User interfase 段落スタイルを含めるかどうか?
to ui()
with timeout of 3600 seconds
tell application "QuarkXPress? 4.10r2J"
activate
set para_style to button returned of (display dialog "書き出すテキストに段落スタイルを含めますか?" & return & "スタイルを含めるとやや時間がかかります。" buttons {"キャンセル", "含めない", "含める"} default button 3 with icon 1)
if para_style is "含める" then
set para_style to true
else
set para_style to false
end if
return para_style
end tell
end timeout
end ui
--------------------------------------------------------●テキストの出力(追記型)
to text_write(txt_path, my_text)
tell application "Finder"
set fh to open for access txt_path with write permission
try
write (my_text as text) to fh starting at (get eof fh) + 1
on error errText
close access fh
display dialog "以下の理由によりスクリプトは中断されました" & return & errText
end try
close access fh
end tell
end text_write
--------------------------------------------------------●QuarkXPress バージョン確認ルーチン
to ver()
tell application "QuarkXPress? 4.10r2J"
activate
set QXP_ver to version
if (QXP_ver as text) contains "Dongleless" then
beep 10
display dialog "Dongleless Version" buttons {"キャンセル"} with icon 2
--error "Dongleless Version" number -6000
else if (QXP_ver as text) is not "4.10r2J" then
beep 10
display dialog "このプログラムはVer. 4.10r2J以外では動作しません" buttons {"キャンセル"} with icon 2
end if
end tell
end ver
--------------------------------------------------------●簡単なパスワード制限
to p(wd)
tell application "Finder"
if not cd = (creation date of startup disk) then
set my_messege to "はじめてお使いになる方はパスワードを入力してください"
set try_count to 3 --リトライ回数
repeat
activate
set ans to text returned of (display dialog my_messege default answer "" with icon 1)
if ans = wd then --パスワードが合致
set cd to creation date of startup disk
exit repeat
else if try_count > 1 then
beep 1
set try_count to try_count - 1
set my_messege to "パスワードが有効ではありません。もう一度入力してください"
else --規定回数以上パスワード入力に失敗した
beep 3
display dialog "規定回数以上パスワード入力に失敗しました" & return & "処理を中止します" buttons {"キャンセル"} with icon 2
end if
end repeat
end if
end tell
end p
--------------------------------------------------------●osaxがインストールされているかどうかの確認。
to confirm_osax(osax_name, osax_URL)
tell application "Finder"
if not ((exists file osax_name of (path to scripting additions)) or (exists file osax_name of folder "スクリプティング機能追加" of (path to extensions folder))) then
activate
display dialog osax_name & "がインストールされていません" & return & osax_URL & return & " からダウンロードしてください" buttons {"キャンセル"} with icon 0
end if
end tell
end confirm_osax
--------------------------------------------------------●以下プログレスバー用
to OpenProgress(theTitle, theMax, aDescription) -----★プログレスバー生成(1個以上開かないようにしましょう。混乱します)
tell application of me to activate
dd install with grayscale
dd make dialog {size:[300, 50], style:movable dialog, name:theTitle, contents:[ツ
{class:static text, contents:aDescription, bounds:[8, 4, 290, 20]}, ツ
{class:gauge, bounds:[10, 25, 290, 25 + 12], value:0, max value:theMax} ツ
]}
end OpenProgress
to UpdateProgress(aValue) -----★プログレスバーのアップデート
tell application of me to activate
dd set value of item 2 of dialog 1 to aValue
dd interact with user for max ticks 0
end UpdateProgress
to DescribeProgress(aDescription) -----★カレントワーク(進捗状況)の表示
dd set contents of item 1 of dialog 1 to aDescription
end DescribeProgress
to CloseProgress() -----★プログレスバー後かたづけ(どんなときも必ずすること!!!特にエラーで落ちたときとか)
dd delete dialog 1
if (dd count dialogs) = 0 then dd uninstall
end CloseProgress