contents
- 準備
- テスト
- ExternalWebBrowser
- インストール
- コードの変更
- 利用する
- 関連情報
FFI(Squeak Foreign Function Interface)
SqueakからベースのOSの関数などを呼び出す機能です。
準備
FreeBSD portsでは現在利用できなくなっていますので、Squeak VirtualMachineを参照して武藤私家版を利用してください。
defaultでは無効になっていますので、-DWITH_FFI(dialogではFFI "libffi support"を選択)を指定した上でコンパイルする必要があります。
テスト
FFITester allTestをdo-itしてエラーが出なければ動作していると思います。
他に、カテゴリFFI-Example-X11にあるサンプルも利用できます。
ExternalWebBrowser
ExternalWebBrowserパッケージでは、FFIを利用して(Squeak)外部のブラウザを呼び出すことができるようになっています。
ただ、現状のコードではFreeBSDではうまく動作しないようです。
大嘘、単に武藤私家版のFFIPlugin supportがapicallが動かないようになっていただけ(;-;)
インストール
PackageLoaderでExternalWebBrowserをインストールします。
コードの変更
以前は、FFIをapicall:で呼び出せたようですが、現在ではcdecl:で呼び出すように変更されているようです。
そこで、ExternalWebBrowserUnixのsystem:を以下のように変更します。
(コード省略)
また、デフォルトで対応されているブラウザは、(Gnome用の)MozillaとKonquerorですが、以下のようにクラスを作成することで、firefoxも呼び出せます。
ExternalWebBrowserUnix subclass: #ExternalWebBrowserUnixFirefox instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'ExternalWebBrowser'
Class methodに以下のふたつを追加します。
helperCommand ^'"{1}"'
helperProgram ^'firefox'
うまく作れているか自信が無いのですが、ExternalWebBrowserFirefox.2.csとしてチェンジセットも置いておきます。
利用する
以下のようにして一度初期化した後で、URLを指定して呼び出すことができます。
ExternalWebBrowser initialize. ExternalWebBrowser openOnUrl: 'http://mutoh.dyndns.org/'