配備
GUIKit フレームワークの中には,必要なときに簡単に実行できるようにユーザのAddOnsを使ってユーザインターフェース定義の配備を助ける機能が数多くある.ユーザインターフェースを表す式をプログラム的に構築し動的にGUIRunあるいはGUIRunModalを呼び出す代りに,すべてのAddOn中にユーザインターフェースの定義が自動的に見付かるファイルシステムのディレクトリがある."GUI/"という名前のAddOnのサブディレクトリフォルダに置かれた任意の定義は"GUI/"ディレクトリ中のパスで始まる相対パス名でロードすることができる.これはJavaクラスとJarsのAddOn中の"Java/"サブディレクトリ中のファイルが J/Link によって見付けられるのと同様の技法である.
GUIKit`パッケージの起動と同時にすべてのAddOnsが"GUI/"のサブディレクトリについて検索され,これらのパスが組み合されて$GUIPathとしてパスのリストに保存される.このパスリストはファイルシステムからユーザインターフェース定義をロードする際に使われる.次の表はAddOnsアプリケーションの一般的な位置を示している.
■ $UserBaseDirectory/Applications |
■ $UserBaseDirectory/Autoload |
■ $BaseDirectory/Applications |
■ $BaseDirectory/Autoload |
GUIKit が検索するユーザのWolframシステムアプリケーションの場所
このパスのリストはGUIKit`パッケージの起動に際してすべてのAddOnsにあるすべての"GUI/"サブディレクトリを検索することで生成される.
"SomeAddOn/GUI/Wolfram/Example/Calculator.xml"にあるファイルのロードに必要なのは相対パスの"Wolfram/Example/Calculator"だけである.
GUIKit の定義はファイルシステムに保存し拡張子.xmlを使ってXML形式のGUIKitXMLで,または拡張子.mを使ってWolfram言語式形式で使うことができる.ユーザインターフェース定義の使用可能な拡張子はその相対パスを指定する際には除外される.まず,指定の相対パス名と拡張子".xml"を持ったファイルが検索され,XMLバージョンが見付からない場合は次に拡張子".m" を持ったファイルが検索される.これによってインターフェースを定義する際に自由にXMLとWolfram言語の定義を混ぜることができる.実装の詳細のひとつとしてランタイムのすべてのインターフェース定義が作成時にXML形式に変換されるので,最終的なAddOnインターフェース定義をXML表現で配備するのには多少のメリットがある.しかし,手動で式をXMLバージョンに作り直す必要はない.Export["file.xml",expr,"GUIKitXML"]を使って GUIKit システムにXML定義を作らせればよい.これを使えばGUIKit`パッケージがロードされたときに自動的に"GUIKitXML"形式がImportおよびExportとともに登録される.
アプリケーションのサンプル
以下は,GUIKit が機動力となっている特化したユーザインターフェースを含むサンプルアプリケーションのレイアウトの例である.
Compute
Kernel
init.m
Compute.m
GUI
ZoroCorp
ComputeGUI.m
ComputeScript.m
このアプリケーションはComputeと呼ばれ,中心となるWolfram言語コードはCompute.mというファイルの中にある.これらはすべて標準的なWolframシステムアプリケーションの手法である.ユーザインターフェースの定義はGUI ディレクトリに入り,Compute.m中のWolfram言語コードからアクセスできる.次はこれをどのように行うかのサンプルである.
Needs["GUIKit`"]
...
Module[ {ref},
ref = GUIRun[ "ZoroCorp/ComputeGUI"] ;
...
]
このアプリケーションはWolframシステムアプリケーションの標準的な位置のひとつ,例えば$UserBaseDirectory/Applicationsにインストールして使用することができる.
以上のように,GUIの定義はZoroCorpという名前のサブディレクトリに置かれる.これは,他の人がComputeGUIという名前のGUIを発表した際にコンフリクトが起らないようにするために行われる.
より再利用が可能でモジュール形式にするために,設計によってGUIのスクリプトに使われたコードを分割してComputeScript.mという別のファイルにした.これは以下のようにGUIからロードされる.
Widget["Frame",
{
...
Script[{}, ScriptSource -> "ComputeScript.m"]
}
]
Wolfram言語のコードを別々のスクリプトファイルに分割することは,同じコードを使う複数のGUIコンポーネントがある場合に特に役に立つ.
Wolfram Workbench はWolfram言語の開発環境である.これには GUIKit を使用する上での数多くの有用な機能が含まれている.これにはGUIの定義を含むWolframシステムアプリケーションを作ることとデバッグツールでGUIの開発を助けることが含まれる.詳しくはチュートリアルの「Wolfram Workbench Support」を参照のこと.