X-Designer は、コードにハードワイヤされたリソース設定、あるいは一致する X リソースファイルに生成されているリソース設定を使用して C、C++、Java、および UIL でソースコードを生成します。X-Designer を使用してアプリケーションを作成するためには、コードが生成される方法、およびそのコードにアプリケーションコードをリンクする方法を理解している必要があります。
ダイアログには、パネル上部の出力ファイル選択領域と、コード生成制御領域の 2 個の基本領域が含まれています。 Windows モードにおいては、Windows リソース・ファイルを生成することもできます。ピックスマップを生成してある場合、この時点でそれらのピックスマップは自動的に Windows ビットマップあるいはアイコンに変換されます(選択されたウィジェットが Button であるか、あるいは Label であるかによって異なります) 。個々のピックスマップは、ファイル名としてピックスマップ・オブジェクトの名前を使用して、独立したファイルに書き込まれます。
コードが生成されているデザインはそれぞれ、1 個の出力ファイルまたはモジュールを作成します。各モジュールは数多くのセクションで構成されます。
基本モジュールの分析
主コードモジュールには、上から下への順序で以下の部分が含まれています。ファイルのオプション部分は制御パネルにあるトグルを設定することにより組み込んだり、外したりすることができます。
ヘッダー部分
基本モジュールには、ヘッダー項目が以下に示す順序で含まれています。
いくつかの標準 X-Designer コメントの後、モジュール内のコード に必要な #include 文のリストがあります。#include 文はオプションであり、「コード生成」ダイアログのトグルにより制御されます。
リンク関数またはリンク宣言
モジュールにはリンク関数のためのコードが含まれます。以下のコード部分では、代表的なリンク関数を示します。
void XDunmanage_link ( Widget w, XtPointer client_data, XtPointer call_data )
{
if ( client_data && *(Widget *)client_data )
XtUnmanageChild ( *(Widget *)client_data );
}
このコードの生成はオプションであり、「コード生成」ダイアログによって制御されます。
変数宣言
この部分では、デザイン内で大域的に定義されたすべてのウィジェットが宣言されます。以下に代表的な行を示します。
Widget exit_button = (Widget) NULL;
Widget help_cascade = (Widget) NULL;
ここでは大域的なウィジェットだけが宣言されます。デフォルトでは、ウィジェットの有効範囲は局所的となっています。局所的ウィジェットは、その親であるシェルを作成する関数において定義されるため、アプリケーションのその他の場所で参照することはできません。ウィジェットを大域的にするためには、次のどちらかの操作を行います。
アプリケーションシェルおよび最上位シェルの変数名は、X-Designer では常に大域的であるため、それらを局所的にすることはできません。別の種類のシェルの詳細は、「シェルの型」を参照してください。
変数名
変数名は固有のものでなければなりません。変数名が既存のウィジェット名と重複するウィジェットをデザインに「読む」または「ペースト」を行うと、X-Designer は自動的に重複を取り除き、<ウィジェットの型>n 、たとえば shell4、form5 などの形式をとる新しい局所的な名前を割り当てます。
規約によりウィジェットの変数名は小文字で始めます。これにより、Motif の宣言との衝突を避けることができます。
作成関数
デフォルトにより、X-Designer はデザインのシェルウィジェットの作成関数を生成します。作成関数は、生成されるコードの中心部となります。各作成関数では以下の動作が行われます。
コールバック関数
基本モジュールにはコールバック関数そのものは含まれていません。そのかわり、基本モジュールは各ウィジェットのコールバック・リストに、指定されたコールバックを追加します。
main() 関数プログラム
生成ダイアログにおいて「メインプログラム」トグルが設定されている場合には、別のファイル、または基本モジュールの終わりに最小の main() 関数が生成されます。
X-Designer の main() 関数では、以下の動作が行われます。
スマートコード用に生成されるファイル
「コールバック」ダイアログで「スマートコード」が選択されると、拡張コードファイルが生成されます。「thin クライアント」用および「インターネット」用には、「取得/設定」用の場合に比べ、より多くのファイルが生成されます。 これは、グループ用の getter および setter のほかに、サーバーとの通信用のコードがすべて生成され、さらに「thin クライアント」の場合はサーバー側のアプリケーションも生成されるためです。
スマートコードは使用せずに、グループを使用している場合、一次ソースファイルにウィジェットの配列が定義されます。
コールバックに「取得/設定」用スマートコードを選択し、「thin クライアント」用または「インターネット」用スマートコードを要求しなかった場合、「コード生成」ダイアログの最上部で指定したディレクトリ内に次のファイルが生成されます。
Web アクティブコールバックが組み込まれたデザインからコードを生成する場合、上記の取得/設定生成コードで説明したすべてのファイルおよびディレクトリが生成されます。そのほかに、X-Designer によって次のディレクトリが作成されます。
http_c。これには、URL の構文解析用ソースコードと、HTTP プロトコルを使用してデータを送信したり受信するためのソースコードが含まれます。server_c。これは、サーバー側のアプリケーションです。
"server_c" ディレクトリには、作成したユーザーインタフェースが組み込まれた thin クライアントアプリケーションに接続するサーバーを構築するため必要なファイルがすべて格納されています。リモート Web サーバー上で構築および実行する場合は、このディレクトリ全体を取り除くことができます。
最上位レベルのディレクトリ内のメークファイルには、クライアント (ユーザーデザイン) とサーバー (Web アクティブコールバック) の構築に関する規則が格納されています。クライアントを構築するには、コマンド行に次のように入力します。
make
サーバーを構築するには、コマンド行に次のように入力します
make server