contents
  1. 準備
  2. テスト
  3. ExternalWebBrowser
    1. インストール
    2. コードの変更
    3. 利用する
  4. 関連情報

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/'
Last modified: 2008-03-31
Post-it: New Post-it (help)

Text color: [_][_][_][_]

Background: [_][_][_][_][_][_]

Draw Line:

x: y: