« 【InDesign javascript】 テキストをいろいろ整形するスクリプト | トップページ | 【perl】 現代的なperlの記述方法 »

【InDesign javascript】 MacとWinで非互換部分?

先日公開しました、「テキストをいろいろ整形するスクリプト」ですが、
いき♂様より、Windowsでの不具合報告をいただき(http://d.hatena.ne.jp/k_iki/20100623)、こちらでも調べてみました。

まず、このスクリプトをWindowsで実行してみます。

201006251

すると、ボタン系が完全に表示されていません。


そこで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;


すると、

201006252

表示ができました。


危惧していた各パーツのズレなどもほとんどなさそうです。


ただ、いき♂様のご指摘どおりWindowsではグループの設定が効かず、ためしにボタンを触ると、↓のようになってしまします。


201006253


ちなみにこの状態でも変換処理はうまくいきました。


あとはこのグループ設定だけをなんとかすればよいということで、ためしにここまで修正したスクリプトを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】 テキストをいろいろ整形するスクリプト | トップページ | 【perl】 現代的なperlの記述方法 »

InDesign javascript」カテゴリの記事

コメント

はじめまして、
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分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 【InDesign javascript】 MacとWinで非互換部分?:

» [InDesign][Javascript]ダイアロググループについて その2 [k_ikiの日記]
前回のエントリの続きです。 のひひ様も次のエントリ「MacとWinで非互換部分」を書いておられ、mgさんからコメントが入っています。 それを参考に書き直しました。 まだ座標がおかしいので見た目いびつですが……(^^; 一応問題なく動作するようです。 もう少し座標値を... [続きを読む]

受信: 2010年6月25日 (金) 18時44分

« 【InDesign javascript】 テキストをいろいろ整形するスクリプト | トップページ | 【perl】 現代的なperlの記述方法 »