Pashua で GUI アプリケーション作成


Pashua

UNIXプログラムにMacOSX の Aqua GUIをかぶせることができるツールです。MacOSX用。
  • Pashua 配布元Carsten Blüm Web Development

    (クリックで拡大します。)

  • Pashua 使った実行方法( Terminal から実行)
  • Pashua のバンドルアプリ(ダブルクリックで実行するアプリケーションを作る)
  • リファレンス等 ドキュメントは /Pashua/Documentation%20Files/ にあります。
  • Pashua 使って Terminal から実行

    実行時には同じディレクトリに Pashua.app を置く(エイリアスでも可)
    実行に当たっては、perl や python、 ruby 等の言語のように、それぞれランタイムモジュール(編集の必要なし)として、Pashua.py、 Pashua.pm、Pashua.rb も同じディレクトリに置かなければいけないものもあります。

    楽な方法 正攻法
    1. Terminal を起動しておく
    2. Finderで、Pashuaのexampleディレクトリにを表示させる。
    3. 入っているスクリプト( example.pl 等)アイコンを、FinderからTerminalのウインドウへ、ドラッグ&ドロップ。
    4. そしてTerminalアプリケーションのウインドウを最上面に表示(アクティブ)にする
    5. (ファイルパスが既に自動入力されているので
      例:/Users/Desktop/Pashua/Examples/example.pl )
      そのままリターンキーを押す。
    6. 実行される。
    1. Terminal を起動し
    2. スクリプト( example.pl 等)のあるファイルパスを打ち込む
      例:/Users/Desktop/Pashua/Examples/example.pl

    3. リターンキーを押す。
    4. 実行される。

    サンプル実行の流れ

    スクリプトが実行される→ GUI部品のパラメータをコンフィグテキストとして書き出し、Pashuaに渡す →Pashuaのウインドウに GUIがレンダリングされる。 →OKボタンを押す→Terminalのコンソールに選択したフォーム内容が出力される。

    仕組み

    1. conf という変数にGUI部品のパラメータ(表示位置、大きさ)をテキストとして書き連ねる( $conf="rb.type = radiobutton" など)
    2. それをPashuaに渡すとGUIが表示される。my %result = Pashua::run($conf); (perl の場合)
    3. 返ってきた%result には、各GUI部品で選択された項目が、連想配列として格納されている (perl の場合)。

    Pashuaの初期化や、基本的な書式は、Pashua の example ディレクリに入っているスクリプトファイルのサンプルが参考になります。
    例えば、チェックボックスを作りたかったら...
    $conf .= <<"EOCONF";
    #Preset checkbox ob.type = checkbox
    ob.label = Dmode
    ob.default = 0
    ob.rely= -20

    #Preset checkbox
    chk.type = checkbox
    chk.label = Use Texture Preset
    chk.default = 0
    chk.rely= -20
    EOCONF
    それで、my %result = Pashua::run($conf); を介して、GUIが生成されます
    この時、フォーム内容は、コンソールにも出力されるのでデバッグ時の確認に使えます。
    chk = 1
    ob =
    rb = Radiobutton item #4
    pop =ポップアップメニュー #1
    tf =
    cb = 0
    また、 result に戻ってきた変数は、各言語で加工したり処理する事ができます。 例えば、フォームに入力されたデータをもとに条件分岐などをさせることができます。
    if ( $result{'chk'} ==1 ){ print 'チェックが入っています!'; };
    print $result{'ob'};
    print $result{'rb'};

    ユニコードを使おう(UTF-8)

    スクリプトから Pashua にGUI 設定情報を渡す際に、文字コードの設定を行ないます。 例えば、Perl の場合は、以下のように書き換えます
    my %result = Pashua::run($conf,'utf8');
    Pashuaモジュールの run関数 に引数 utf8 を追加するだけです。 もちろん、スクリプトファイルの文字コードもUTF8にしておいてください。  
     Python の場合  Pashua.run(conf, "utf8")  
      PHP の場合  pashua_run($conf, "utf8") 
    一部のGUIエレメントの、ファイルブラウザ用のボタン、OK, Cancel ボタン、エラーメッセージを日本語化するには、Pashua本体の ローカライズを行なう必要がある? デフォルトでは、German, French , English が用意されています。

    Pashua 使ってダブルクリックで実行するアプリケーションを作る

    もし、これがMacOSXのアプリケーションのように ダブルクリックで起動可能になったらどんなにすばらしいでしょう。

    サンプルフォルダにある、Doubleclickable Example.app が用意されています。このサンプルはダブルクリックで実行可能です。
    ダブルクリックで実行可能なアプリケーションを作るには、このファイルを複製し、編集する必要があります。

    詳しい事は、Pashuaのドキュメントの Chapter 3. Topics 4. Buildung "real" applications with Pashua が参考になります。
    また、Hacking Mac OS X Panther - Add a Dab of GUI to Unix Scriptsにもチュートリアルの情報があります。

    具体的なアプリケーション作成法

    まず、Pashua で実行可能な test.pl というPerlスクリプトを作りました。(ファイルタイプとクリエータは指定せず、Unix実行ファイルにして下さい。)
    1. 最初に、"Doubleclickable Example.app" を複製して、それを[スクリプト名=test]を含む名前に変えます。
      今の例では「Doubleclickable Exampleのコピー.app」 → 「test.app」に変更します。

    2. 次に、Finderからその test.appを右クリックし 「パッケージ内部を開く」で内部を覗いてみます。
      test.app/Contents/MacOS フォルダに、Doubleclickable Example , Pashua.pm , Pashua の3つのファイルが見つかるので、
      その中から Doubleclickable Example を捨てて代わりにtest.pl を入れます。ただし、この時拡張子は取り除いて下さい。

    3. 最後に、test.app/Contents/に存在する、 Info.plist をダブルクリックで開き
      CFBundleName と CFBundleExecutable の値 をそれぞれ[スクリプト名] に変更します。
    これで test.app をダブルクリックするとアプリケーションが起動します。

    ダブルクリックで実行アプリケーションを作る際の問題

    この種類のアプリケーションを作るにあたり、ひとつの問題が発生します。
    例えば、ファイルパスを参照して、GUIにアイコンや背景を使ったり、外部ファイルを読込むタイプのスクリプトはそのままでは動きません。
    そこでアプリケーション実行パスを調べる必要があります。

    例えば、Perl では、現在実行しているスクリプトのパスは Print $0で知る事ができます。
    従って、次のようにして絶対パスを取得することができます。
    # 適当な例
    @true_path =split("/",$0);
    splice( @true_path , -4, 4 );
    $true_path= join( "/" , @true_path );
    ソース中に ログを標準出力できるようにしておけば OSX付属のコンソール.app を使って、出力された ログを手がかりにデバッグも可能です。

    その他

    画像(NSImage)

    TIFF, GIF, JPEG, PNG, PDF, PICT, EPS ファイルが 画像として読み込む事ができます。

    Pashuaでできないこと

    技術的な問題から、プログレスバーには対応してないそうです。その場合は PyObjC や AppleScript Studio がおすすめだそうです。
    またPashuaとCocoaDialogを使用方法もあるそうです。

    Last modified 2007.04.02
    Tsukubado