ScriptUI のEditTextは1バイト環境推奨ですか

..ですね(終了)。



このようなテスト用UIをこしらえた。


実行するとこんな感じ。
 左の入力窓にタイピングすると、ボタンをまたいだ右側の空間に窓の内容が逐一吐き出され、
  ボタンをカチッとすると窓の内容でアラートメッセージが出る。
 それだけの物。


いま、入力は英数ですね。
 ちょちょっと何か入力してみます。思惑通りに動作してます。フツーです。


ボタンをカチっと。
 フツー。


“Shift” + “←” キーをポンポンして2文字選択したところ


そのまま1字入力してボタンをカチッと。
 フツー。


ここから、ことえりに切り替えてみる。ATOKなんかでも同様ですが
 4字入力してカチッと。正常に動作。たまたま。


“Shift” + “←” キーをポンして1文字だけ選択。


そのまま1字入力。カチッと。
 反映されていない。


今度は同様に2字選択。


そこから1字だけ入力。
 今度は反映した。


もう一度、2字選択してみる。


カーソルを矢印キーで移動してみる。
 すると反映する。


同様に反映しない状態を作っておき、英数入力に切り替えて1字ダミーのつもりで入力。
 即座に反応。


【ここまでのまとめ】
・範囲選択した文字数と、再入力した文字数が一致する場合、入力は内部に反映されない
 (英数入力時は1文字選択時のみの不具合、和文の場合は4文字選択して4文字いっぺんに入力確定するなどでも不具合)
・マウス操作や”Shift” + “←→” キー等で文字列の範囲選択状態を作り、カーソルキー入力でそれをクリアすると反映する。マウスクリックでのカーソル位置変更は不可

【とりあえずの回避策】
・入力窓の内容を目的の状態に編集し終え、次の動作に内容を渡す前にダミー文字を入力、すぐ削除
、を手クセ的に行うよう義務づける(無理だろう)
・もう、使うのをやめる


次。上記のテスト用UIを、少し書き換えた。
 InDesign上で動作し、ボタンをカチッとすると選択されたテキストフレームに吐き出す仕組み。


選択フレームのテキスト「あいうえお」のうち「いうえ」を選択した状態で
 入力窓に和文を入力してみた。すると同時にテキストフレームにも文字が入る。
  あらー便利ねこれー。
   もとい、これはひどい。


ならば、InDesignの外で動かせばよいんでしょう。
 ExtendScript ToolKit から実行して、
  BridgeTalkでInDesignにちょっかい出すよう変更。


問題なし。


カチッとすると流れ込む。


しかし、InDesignドキュメントで作業していると前面に出ててくれないのであった。

【思い当たる道】
・ドキュメントの選択範囲に常に気を配る(らせる)
・我慢する(させる)
・もう、使うのをやめる
・SDKに手を染める(Javascript以外の言語も覚える)

星よ..導き給え。
 いや誰か。どなたか。
こんなに困ってますよ。助けて下さいよ。
 日本語絡みなので外人にも頼れませんよ。

8 thoughts on “ScriptUI のEditTextは1バイト環境推奨ですか

  1. ScriptUIのedittextはあてになりませんねぇ。OS10.4のときはアンドゥも効いたんですが10.6では効きません。ココの部分は
    >”Shift” + “←” キーをポンして1文字だけ選択
    は、IMで挙動が違うかもしれません。うちはATOKですが、1文字選択入れ替えのときは確定Returnが2回必要だけど、2文字選択入れ替えは確定Returnが1回でいい。でも、なんどかやっているとどっちも確定Returnが1回でよくなったり……ちなみにOSは10.6でIDはCS3です。
    解決法1:
    FlashUIに手を出す。でも、CS3ではテキスト入力ができません。そう、New仕上げ屋もそれで頓挫している面もあるんですよ。edittextはあれだし、FlashUIはこれだし。どうしてくれようかと。
    解決法2:
    Xcodeのインターフェースビルダーを使う。インターフェースをコレで作ってAS経由でJSを実行。パラメータを受け渡す場合ならオンザフライでJSを実行するとかしないとか。でも、Winで動かせなくなりますね。
    まぁ、CS3を捨ててFlashUIですかねぇ。SDKってプラグインってことですよね? ってことはWinを捨てることになりますよね。どうせWiをn捨てるなら「解決法2」でよろしいかと。
    解決法999:
    IDのテキストフレームをデータ入力用に使う。
    実は、今私が作成しているツールはこの方法を取り入れています。連続した数値データを読み込みたいのですが、JS環境だとEXCELと連動させることは難しい。
    これがスタンドアロン・アプリならボタンを押したらクリップボードの内容を配列に読み込むなんてことができるのですが、これもJS環境ではムリ。
    なので、あらかじめ必要な数値データはタブ区切りで適当なテキストフレームに用意しておき、それを選択してデータ読み込み(ボタン)、その後、とある処理の対象オブジェクトを選択して実行という方法をとっています。
    あぁ……テキストフレームとオブジェクトを一挙に選択してもいいのか。あ、だめだ。<自分のツールのことを考えてる

  2. おおっ
    正直、まだJSしか使ってないくせにwin対応してないんですが orz
    やっとおぼついてきたので近日正式対応です。
    そうなると一度掴んでしまった物は手放しにくい..
    >解決法999:についてですが、
    実はおうち用の物ではけっこう多用してます。
    大量の検索置換テーブルとか。
    FlashUIの中で一部だけ他の物で動かすのはアリかもですね。
    編集したエリアを選択、編集開始、プロンプト内で編集、反映、とか?
    でもこれなら従来のUI(palette)上で、テキスト編集時に子UI(dialog)を出す。
    でもどのみち合番入力には使えない、か。
    >なので、あらかじめ必要な数値データはタブ区切りで適当なテキストフレームに用意しておき、それを選択してデータ読み込み(ボタン)、その後、とある処理の対象オブジェクトを選択して実行という方法をとっています。
     これ、P.O.T.のUI化する前の姿が近いですね
    http://pub.ne.jp/ajabon/?entry_id=2460599
    使用済みは色をつけちゃうので見た目にもわかりやすかったけど合番必須だったので微妙にめんどかった。 UIがわりと整ってきた今、一考かなあ。
    なにしろ、JSしか武器がないのが潔いのか窮屈なのか。八極拳にヒ掛掌を合わせ習うように、なんか補うモノを覚えるべきなのかー

  3. >FlashUI
    部分的というより、Window内全体をそれで作ればよろしいかと。FlashBuilder(旧FlexBuilder)であれば、コントロールはドラッグ&ドロップでざくざく作っていけるし、そのなかには普通の入力エリアに加え、高機能テキストエリア(スタイル付きテキスト)もあります。
    ActionScript言語自体はJSとほぼ一緒です。リファレンスさえあればほとんどなにも覚えることはありません。
    ただ……オブジェクト同士がどういう関係性になっているのかとか、イベント処理などの「流儀・手法」などを覚えるのが結構大変です。なにか他の壮大な計画(?)と合わせ技ということでないとめげるかもしれません。逆に、覚えてしまえばUIの自由度は格段にアップします。しかもサーバーとやりとりできたりしますからねぇ。
    今のシバリ内で考えるなら、IDのテキストフレームを活用するのがいちばん自由だと思います。なんというか、イメージとしては……
    IDのテキストフレームを「その後の流し込みに最適なテキストを作成するエディタ」として機能させるためのツール(フローティングパレット)
    ですかね。結局、原稿がコチラの思うようになっていればいいわけで、そうなっていないのが最大の障害です。逆に原稿がそうなっていればボタン一発の世界が……あるところにはあります(笑・無責任)
    んで、その編集機能をアドオンで追加できるようにするとかしないとか。
    漠然としたイメージですみません。

  4. > ActionScript
    うううううん、LiveMotion時代に少しかじりました。2.0ですらなかったはず。
    逆にJS習得の近道になった事実があるんですが、たぶんキネヅカは発揮しないだろうなあ..
     やぶさかではないんですが、業務の合間の 書&試 行為が遊んでるふうに見られないかが不安で(どんだけ豪華にするつもりなんだ)
    ひとまず装備が整うまで小休止ですかねー。
    winのアドオン部材置き場がおぼついたらお勉強突入です。

  5. >LiveMotion時代
    Flash(アプリ)ならその経験を活かせると思いますが、Flashでいわゆるこういったツールのインターフェースを作るのは、それはそれで面倒だと思います(向きじゃない)。で、FlashBuilderとFlashは全く勝手が違うのでキネヅカは発揮できないと思います。言語以外の部分が難解な構造になっているんですよ。
    ただ、覚えてしまえばWebアプリへの技術転用ができたりして、道がぐっと広がると思いますが、結果はともかくこれだけのために習得するのは合理的ではありません。最低でも道楽心がないとつらいだけかも。
    JSだけでなんとか解決できるといいんですがねぇ。ところで、この現象はInDesign内蔵のインターフェースでも同じなんですよね?あ、そもそも複数行はダメだっけ?

  6. >InDesign内蔵のインターフェース
    標準機能のパネル群では見受けられませんね。
    1バイト文字(数値)では親記事にならった「不具合フラグ確定の入力手順」でもオッケーでした。
    唯一和文を入力できる「カーニング」欄でも同様でした。
    が、
    ..複数行を受け付ける唯一と思われる「スクリプトラベル」では不具合でました。
    一度フォーカスを外さないと同様に無反映です。
    これ、ヒントになり得るかな?
    textselectionを捨てればあるいは?

  7. >InDesign内蔵のインターフェース
    あ、InDesignアプリの入力欄のことではないです。ScriptUIではなく、InDesignのJSに内蔵されているUI(単位入力窓や角度入力窓が作れるヤツ)のことです。でも、どのみちフローティングパレットが作れないからダメか。

  8. >単位入力窓や角度入力窓が作れるヤツ
    意味わかりました。。こっちでは、どうやっても模範的な結果が出ます。ちくしょう。
    もろもろ試しましたが使いどころによっては便利ですねこれ。
    例のPOTにムリヤリ使うとなると自作のpalette内のボタンから子UIを呼び出して入力値を返す、みたくなりますね。Command+J の「ページへ移動」に近い動き。
    どうにかしてeditTextのフィールドをリフレッシュ、違うな、リ..リ何とかできれば。もうちょっとJSの巣穴でもがいてみます。今の農閑期ももう終わるので。

コメントを残す

メールアドレスが公開されることはありません。

*