これは、ウィジェットの性質を決めるリソースが設定されていないため、
デフォルトの値が適用されてしまって、この様になります。
実際には、リソースの設定、使用するライブラリでデザインは異なります。
この場合、デフォルトの値とは、以下のことを指す。
|
ちなみに、Xではリソースという言葉の指すものが、2つあります。 1つは、ウィジェットやアプリケーションを性質などを設定するために
特別に用意された変数であり。
もう1つは、利用できる資源(カーソル/フォント/ウィンドウ等) を指します。 |
|
(テキスト・エディッタでも入力できますが、この方が面白いと思います。)
て、"commands"メニューの"Get Tree"でツリー構造取得します。
ウィジェット・ツリーの中から設定したいをウィジェットを一つ選択して、
"commands"メニューから"Show Resource Box"を選択すると、以下のように リソース・ボックスが表示されます。
下の例では、quit を選択した場合の、リソース・ボックスです。
アプリケーション・デフォルト・ファイルでは、リソースは、以下のような 形式で設定する。
上記の例では、ウィジェットを指していますが、ウィジェットごとに 準備された物のほかに、 個々のアプリケーションごとに準備された専用のリソースもあります。 これは、アプリケーション・リソース といいプログラマが、独自のカスタマイズのためなどに用意したリソースです。
(現在、xwireless にはアプリケーション・リソースを用いていません)
たとえば、xwireless の quit を指定する場合は、以下のようになります。
が、ワイルド・カードを使って指定することができるので、以下の方法でも quit を指定できます。
.xwireless.panel.quit.
quit 以外の他のウィジェットを設定されるが、quit も設定される場合は、 以下の通り
*xwireless*panel*quit.
*xwireless*Paned.quit*
.xwireless.?.quit*
*xwireless*quit.
*quit.
しかし、このようなウィジェットの指定は、"editres"では簡単に行えま す。しかも、どのウィジェットに対して設定されるかをツリー表示の部分で、 視覚的に確認することが出来ます。
*xwireless*panel*Command.
.xwireless*Command*
*xwireless.Paned.?.
*Command.
*
"editres"の以下の項目を操作してください。
この項目を操作して、いろいろな指定方法を試してみると、ワイルドカード による指定方法が実感できると思います。
なお、ここの指定で複数のウィジェットになるように設定すると、 "editres"の部品ツリー表示の中で、 リソース設定の対象となるウィジェットが反転表示されます。
上記の部分を見てもらうと分かると思いますが、指定できるリソースが、 "Normal Resources"と"Constraint Resources"に分かれています。
これは、前述したコンストレイント・リソースです。ボタンなどを並べ るための全ての Paned という種類の部品の子ウィジェット(および子孫) に対して、グリップを消すことを設定します。
*xwireless*Paned*showGrip: False
全ての Paned という種類の部品で子ウィジェットを横並びの配置にします。
*xwireless*Paned.orientation: Horizontal
ビットマップファイルを張りつけるリソースです。張りつけるファイル は、"/usr/X11/include/bitmaps/"以下においていない場合は、フルパス でファイルの在り処を設定してください。
*xwireless*rec.bitmap: /usr/src/XawTownsDoc/bitmaps/rec.xbm
*xwireless*rew.bitmap: /usr/src/XawTownsDoc/bitmaps/rew.xbm
*xwireless*play.bitmap: /usr/src/XawTownsDoc/bitmaps/play.xbm
*xwireless*ff.bitmap: /usr/src/XawTownsDoc/bitmaps/ff.xbm
*xwireless*stop.bitmap: /usr/src/XawTownsDoc/bitmaps/stop.xbm
*xwireless*pause.bitmap: /usr/src/XawTownsDoc/bitmaps/pause.xbm
なお、この設定では、部品の配置位置をツリーの別の位置に変更しても、 設定が反映されます。
ビットマップ・ファイルは、"bitmap"アプリケーションで作成します。
部品の前景色(文字の色など)を設定するリソースです。 ここでは、ビットマップの色の設定になります。
*xwireless*rec.foreground: red
*xwireless*font:-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-* |
国際化(日本語化)のときには、"fontSet"リソースを使用します。
これらの設定を行った、アプリケーション・デフォルト・ファイルは、 XawTownsDocSample/sample/XWireless.ad と言う名前で収録しています。
*xwireless*quit.label: Quit
(プログラムを解凍する位置を変えた場合は、再編集必要)
XtVaSetValues(widget,ここで示した。XtVaSetValues() 関数以外にも、XtSetValeus() という 関数もありますが、より扱いやすい XtVaSetValues() を用いました。NULL); (例) XtVaSetValues(power, XtNlabel, "Power", NULL); XtVaSetValues(rec, XtNbitmap, recPixmap, XtNsensitive, False, XtVaTypedArg, XtNforeground, XtRString, "red", 4, NULL);
この関数は、上記のように1つあるいは、複数のリソースを設定できます。
通常は、リソース名と設定する値を組み合わせて設定します。
XtVaTypedArg を指定した場合は、それに続く4つの引数で型を変換して から値を設定します。
Boolean flag; XtVaGetValues(rec, XtNsensitive, &flag, NULL); |
Xツールキットの関数には、`Xt'のあとに`Va'が続く可変引数の 関数が多くあります。ここにあげた、XtVaSetValues()/XtVaGetValues()
なども、その例です。
この種の関数で有名なものは、printf()/scanf() などの関数です。
可変引数の関数は、引数に何が設定されるかわからないために、プロトタイプ 宣言によるエラー検出ができません。ゆえに設定する値には、 注意してください。 XtNsensitive リソースの設定には、XtSetSensitive() 関数、取得に は、XtIsSensitive() 関数を利用することもできます。 |
xwireless では、【 Quit 】だけが、ボタンを押されたときに呼びだれる処理 ルーチン(コールバック関数)を持っています。これを例にみていきます。
メイン関数の中に、以下のような行があります。
この行は、【 Quit 】のボタンが押されたときに、呼び出される関数を設定し ています。XtAddCallback() によって呼び出される関数は、以下のような形式に なっています。
XtAddCallback(quit, XtNcallback, quit_proc, NULL);
これは、もっとも簡単なコールバック関数の例です。
void quit_proc(Widget w, XtPointer client_data, XtPointer call_data) { exit(0); }