3-b9. SWT/tioport を試す

初出: 2007/04/28
最新: 2007/04/28
[3. D言語各論] に戻る

tioport とは

tioport とは、 Java to D のソースコード変換プログラムです。

特に、eclipseなんかで使われているGUIツールキットであるSWTを D言語に移植するのを最初の目標として作られています。同時に、 Javaの標準ライブラリのD移植版 'dejavu' も作られてます。

インストール方法

準備

準備がちょっと色々必要です。

Tango

tioportは、Phobosでは使えません。Tango 必須です。 入れといてください。

DSSS

ビルドに DSSS を使います。 入れとしてください。

Rake

ビルドに、さらにRuby版Makeである Rake を使います。

Windowsの場合 One-Click Installer でRubyを入れると勝手に入ってるそうです。Linuxだとapt-getとかで。Rakeの公式サイトからダウンロードして

ruby install.rb

とやってインストールすることもできます。

mango

mango ライブラリが必要です。

dsss net install mango

でインストール完了。

本体

Subversionで

svn co http://svn.dsource.org/projects/tioport/trunk tioport

とやるとソースが入手できます。SWT/tioport をビルド&インストールするには、 ソースのルートディレクトリで

rake swt321

と打つと完了です。 (※Windowsでruby install.rbで入れたらrakeコマンドがどこにもなかったりしたので、 その場合は ruby (ruby.exeのあるディレクトリ)\rake.rb swt321 コマンドで。)

コンパイル・実行時に、tioport/swt-3.x.x-環境名/lib ディレクトリに入っている ライブラリが必要です。どこか適切な場所に置いておいてください。他の必要なファイルは DSSSでちゃんとインストールされてます。

SWTを使ってみる

何も中身のないウインドウを出すサンプル。

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.StaticCtorsSwt;
import dejavu.lang.String;

// Javaの埋め込みリソースのエミュレートに必要なダミー関数
extern(C) ubyte[] resources_getDataById( char[] aId ){ return null; }

void main()
{
    // 初期化
    callAllStaticCtors();

    auto display = new Display();
    scope(exit) display.dispose();

    auto shell = new Shell(display);

    // 文字列はdejavu.lang.Stringに変換してやる必要あり
    shell.setText(String.fromUtf8("てすとだよ"));
    shell.open();

    while( !shell.isDisposed() )
        if( !display.readAndDispatch() )
            display.sleep();
}

理由はよくわかりませんがDSSSでビルドすると異様に時間がかかるので、 私はdmdで直接ビルドしちゃってます。sc.ini をいじって dsss\import\d と dsss\lib を 見るように設定してから、こんな感じ。

> dmd test.d
    -L/exet:nt/su:windows:4.0
    swt-wgl-win32-3235.lib
    swt-awt-win32-3235.lib
    swt-gdip-win32-3235.lib
    swt-win32-3235.lib
    Sdejavu.lib
    Stioport-swt-3.2.1-win32.lib

実行画面

そしてここまで書いたところであまりのビルドの重さに疲れたので、 もうちょいなんとかならないか調べてから続きは書こうと思います。

java to D 変換のしかた

メモ書きです。細かいことは一切不明。

cd javaxmlconverter
rake

で、javaxmlconvert.jar が作れる。JavaのソースをXMLに変換するプログラム。使い方は

java -cp javaxmlconvert.jar javaxmlconvert.JavaXMLConverter [config.xml]

次に

cd ../tioport
dsss build tioport.d

で tioport.exe が作れる。javaxmlconverterの出力をDに変換するプログラム。使い方は

cd ../tioport
tioport [config.xml]

こう。config.xmlファイルは両者共通のconfigファイルで、変換するソースやディレクトリの指定を書く。 ports/dejavu/tioport.xml や ports/swt-3.2.1/swt-3.2.1-win32/swt-3.2.1-win32.xml がそれなので、 書き方はそっちを見ながら適当に。swtがやっているように、java.langをdejavuとして参照しながら 変換しないといけない模様。

[3. D言語各論] に戻る

presented by k.inaba   under NYSDL.