【InDesign javascript】 MacとWinで非互換部分?
先日公開しました、「テキストをいろいろ整形するスクリプト」ですが、
いき♂様より、Windowsでの不具合報告をいただき(http://d.hatena.ne.jp/k_iki/20100623)、こちらでも調べてみました。
まず、このスクリプトをWindowsで実行してみます。
すると、ボタン系が完全に表示されていません。
そこでpanelやgroupの記述をradiobuttonの記述より後に書いてみました。(ラジオボタンの長さも少し短くしました)
//★修正前
dlg.add('group', [030,030,280,130]);
dlg.add('panel', [030,030,280,130], "英字の処理");
A_notChange = dlg.add('radiobutton', [050,055,280,075], "変換しない");
A_enEnglish_emEnglish = dlg.add('radiobutton', [050,075,280,095], "半角英字を全角にする");
A_emEnglish_enEnglish = dlg.add('radiobutton', [050,095,280,115], "全角英字を半角にする");
A_notChange.value = true;↓
//★修正後
A_notChange = dlg.add('radiobutton', [050,055,250,075], "変換しない");
A_enEnglish_emEnglish = dlg.add('radiobutton', [050,075,250,095], "半角英字を全角にする");
A_emEnglish_enEnglish = dlg.add('radiobutton', [050,095,250,115], "全角英字を半角にする");
dlg.add('panel', [030,030,280,130], "英字の処理");
dlg.add('group', [030,030,280,130]);
A_notChange.value = true;
すると、
表示ができました。
危惧していた各パーツのズレなどもほとんどなさそうです。
ただ、いき♂様のご指摘どおりWindowsではグループの設定が効かず、ためしにボタンを触ると、↓のようになってしまします。
ちなみにこの状態でも変換処理はうまくいきました。
あとはこのグループ設定だけをなんとかすればよいということで、ためしにここまで修正したスクリプトをMacで実行してみると、見た目は問題なかったのですが、ラジオボタンがクリックできなくなってしましました。
つまり、
・Macでは「panel」や「group」の後に「radiobutton」を記述
・Winでは「panel」(一応「group」)の前に「radiobutton」を記述
しなければならないということでやはりこのへんの互換が完全ではないですね。
★追記
この記事を読んでくださったmg様(http://www.milligramme.cc/weblog/2010/02/indesign-86.html)より、解決方法を教えていただき、そしてなんといき♂様が早速その方法で修正してくださり(http://d.hatena.ne.jp/k_iki/20100625)、このスクリプトは晴れてWindows対応となりました!
1.そもそもpanel自体がgroupの役目を果たすので記述はどちらかひとつでOK
2.グループさせたいパーツ類はdialogではなく、panelやgroup自体にaddしていく
お二人には多大なるご助言誠に感謝いたします。
| 固定リンク
「InDesign javascript」カテゴリの記事
- 【InDesign javascript】 通常のプリフライト以上の項目を調べるスクリプト(2010.10.20)
- 【InDesign javascript】 断ち落とし幅を変更するスクリプト(2010.09.06)
- 【InDesign javascript】 指定フォルダ内にあるinddファイルをPDF書き出しやPS保存またはパッケージをするスクリプト(2010.07.27)
- 【InDesign javascript】 MacとWinで非互換部分?(2010.06.25)
- 【InDesign javascript】 テキストをいろいろ整形するスクリプト(2010.06.20)
この記事へのコメントは終了しました。
コメント
はじめまして、
scriptUIのダイアログですがこの場合、枠線付きでグルーピングしたいということであれば、panelだけでいける気がします。(panelとgroupはvisibleかinvisibleのちがい)また実行順序でなく、構造的に入れ子にしてあげることで、グルーピングできると思います。ちゃんと試していないのですが。URLに自分が書いたものを入れておきましたので参考になればと思います。
たとえば、
dlg.pnl = dlg.add('panel', [030,030,280,130], "英字の処理");
とし、
パーツ類はパネル/グループからの相対的座標に計算し直します。pnlに対してaddする(パネルの左上座標からの位置で開始する)とうまくいくと思います。
A_notChange = dlg.pnl.add('radiobutton', [020,025,220,025], "変換しない");
A_enEnglish_emEnglish = dlg.pnl.add('radiobutton', [020,045,220,065], "半角英字を全角にする");
A_emEnglish_enEnglish = dlg.pnl.add('radiobutton', [020,065,220,85], "全角英字を半角にする");
投稿: mg | 2010年6月25日 (金) 14時15分
mgさん はじめまして。
グループはpanelだけでいけるんですか!
しかもそのpanelに対してパーツ類をaddするんですね~!
貴重なご意見感謝いたします。
(これは早速やってみなくては!
…と思いきや、すでにいき♂さんが解決してくれました^^)
投稿: のひひ | 2010年6月25日 (金) 21時12分