前へ 次へ 目次 文書セット ホーム


第 3 章

 

リソース


はじめに

Motif では、ウィジェットの外観や動作はそのリソースによって制御されます。リソースには、色、フォント、イメージ、テキスト、タイトル、ウィンドウやウィジェットの位置およびサイズ、コールバック、インタフェースの動作に影響するその他すべてのカスタマイズ可能な引数が含まれます。リソースは直接的な影響とともに、間接的な影響を持つ場合があります。たとえば、ボタンのラベルを変更すると、新しいラベルのためのスペースを空けるようにボタンのサイズが一緒に変更されます。

ウィジェットをデザイン階層に加える場合、Sun WorkShop Visual はそのウィジェットのすべてのリソースにデフォルト値を使用します。しかし、多くの場合、ウィジェットを有効にするためにはユーザーがいくつかのリソースを明示的に設定する必要があります。これらのリソース設定を容易にするため、リソースパネルと呼ばれるダイアログ内には、いくつかのリソースがまとめられています。

リソースパネルの種類には、「ウィジェット」と「コア」の 2 つがあります。ウィジェットリソースパネルには、選択したウィジェットのクラスに関連したリソースが含まれています。ウィジェットのすべてのクラスに共通するリソースは基底クラス
(コア、プリミティブ、マネージャ) に適用されるので、コアリソースパネルに表示されます。すべてのウィジェットクラスはコアクラスから派生しており、その大部分はプリミティブクラスまたはマネージャクラスからも派生しています。コアリソースパネルについては、「コアリソースパネル」を参照してください。

デザインのソースコードを生成する際は、X リソースファイルも生成するよう選択することができます。これは独立したファイルで、一般ユーザーが変更可能なリソース設定を含んでいます。リソースファイルとその生成については、「X リソースファイルの設定」を参照してください。リソースファイル内に生成するリソースの制御以外に、Sun WorkShop Visual は緩い結合と密な結合による制御方法も提供しています。この方法を使用すると、デザイン内のウィジェットにリソースを割り当てる方法を一括して管理できます。詳細は、「リソースの結合」を参照してください。

本章では、リソースパネルを使用して以下の作業を行います。

リソースパネルに加え、Sun WorkShop Visual はフォーム内でのウィジェットの配置、フォントおよびピックスマップの設定、 XmString (Motif コンパウンド文字列) の編集および色の選択を行うための特殊なエディタを用意しています。配置エディタについては 第 4 章「配置エディタ」を、フォント、カラー、ピックスマップ、コンパウンド文字列のエディタについては第 5 章「その他のエディタ」を参照してください。

ラベルリソースパネル

学習用インタフェースを作成するには、すべてのラベルとボタンのテキストをデフォルト以外に設定する必要があります。まず、ローカラムウィジェットにある 3 個のラベルを、 以下に示すように変更します。

 

    図 3-1 テキスト設定前と設定後のラベル

最初に、1 番目のラベルのリソースパネルを表示します。

    1. ローカラムウィジェットの下にある最初のラベルをダブルクリックします。

    ラベルをダブルクリックすると、図 3-2 のようなリソースパネルが表示されます。

 

    図 3-2 ラベルリソースパネル

リソースパネルは通常、複数のページで構成されています。パネルの左上隅にある「オプション」メニューで、リソースパネルのページを選択することができます。

    2. 「表示」ページを撰択します。

    これで、ラベルのテキストを編集することができます。

    3. 「ラベル」の右側にあるテキストボックスをダブルクリックします。

    これらのボックス内でのテキスト編集は、ウィジェット名を割り当てる場合と同様の効果があります。ダブルクリックすると、ボックス内のテキストが強調表示されます。

    4. 次のように入力します。
    Topping 1:

    注 - ここでは <Return> を押さないでください。ラベルは複数行を含むことができるため、ここで <Return> を押すとラベルに改行文字が挿入されることになります。誤って <Return> を押してしまった場合は、<Back Space> を使用して改行文字を削除することができます。

    5. リソースパネル下部の「適用」ボタンをクリックします。

    「適用」コマンドは、新しいリソース値を設定します。「適用」をクリックすると、ダイナミックディスプレイに新しいラベルテキストが表示されます。

    注 - デフォルトのロケールが「C」以外で、かつラベルに国際的テキストを使用している場合は、フォントリストリソースを使用言語用に設定しない限り、そのテキストは正しく表示されません。詳細は、「アプリケーションのフォントリソースの設定」を参照してください。正しいリソース設定がわからない場合は、第 22 章「国際化」を参照してください。

リソースパネルの領域

ウィジェットのクラスが異なる場合は、リソースパネルも異なりますが、すべてのリソースパネルは同じ基本構造になっています。

注釈

リソースを変更すると、図 3-3 の「ラベル」リソースの横に示されるように、リソースパネルの右端に傍線が表示されます。

 

    図 3-3 注釈付きのリソース

「適用」を押すと、変更傍線はグレー表示に変わります。

Java コードに加えられることになるリソースには、図 3-3 に示したように、リソースパネルの横にコーヒーカップの絵が表示されます。Sun WorkShop Visual を使用した Java コードの生成の詳細については、第 10 章「Java 用のデザイン」を参照してください。

    注 - アイコンに十分な色を割り当てることができない場合、Sun WorkShop Visual は文字「J」を使用して Java リソースを表します。

図 3-3 に示されるチェックマークと×印は、Microsoft Windows モードで動作中の場合に限り表示されます。チェックマークはリソースが Microsoft Windows でも適用可能であることを示し、×印は適用できないことを示します。詳細は、「準拠か非準拠かの表示」を参照してください。

リソース名

リソース名はリソースパネルの左側に表示されます。リソース名は単純なラベルである場合と、リソース名自体がボタンになっている場合があります。リソース名のボタンを押すとそのリソースに関連するダイアログが表示されます。図 3-2 のリソースパネルでは、すべてのリソース名がボタンになっています。選択されたウィジェットに適用されないリソースは、グレー表示されます。

リソース値

現在のリソース値は右側のボックスに表示されます。これらのボックスは単一行のテキストフィールド、または複数行のテキストボックス、またはメニューオプションになっています。リソースの設定は、これらのボックスにキーボードから入力するか、オプションメニューから撰択します。デフォルト値は括弧内に表示されます。

マスクトグル

各リソース名の左側に、ラベルの付いていないトグルがあります。これは、コード生成段階で X リソースファイル内外のリソースをマスクするために使用するマスクトグルです。この項目については、「リソースのマスク」で説明します。リソース値を設定するためにこれらのトグルを設定する必要はありません。

ページセレクタとトグルスイッチ

通常、リソースパネルの主要部分は複数のページで構成されています。パネル上部にあるオプションメニューは、ページセレクタです。ページセレクタを使用して、ページ間を移動することができます。ラベルのリソースパネルには、そのウィジェットをガジェットとして指定するために使用するトグルスイッチも含まれています。ウィジェットクラスに対応するガジェットがある場合は、ウィジェット/ガジェット・トグルが他のウィジェットクラスのリソースパネルに表示されます。ウィジェットクラスによっては、そのクラスに適したその他のトグルスイッチを持つ場合もあります。

共通のコマンド

適用

パネル下部の 4 個のボタンは、共通のコマンドです。「適用」は、新しいリソース設定を有効にします。「適用」をクリックせずに別のウィジェットを選択、またはリソースパネルを閉じると、編集した設定が失われます。

元に戻す、閉じる、ヘルプ

「元に戻す」は、編集したすべての設定を、最後に適用された設定に戻します。「閉じる」は、リソースパネルの表示を終了します。「ヘルプ」は、適切なヘルプ画面を表示します。

図 3-3 で「適用」ボタンが強調表示されていることに注意してください。リソースパネルが入力フォーカスを持っている場合に <Return> を押すと、通常は強調表示されているコマンドが実行されます。しかし、複数行のテキストボックス内で入力を行なっている場合に <Return> を押すと、この <Return> は改行文字として処理されるため、強調表示されているコマンドは実行されません。

次に、他の 2 個のラベルウィジェットに対してテキストを設定します。ラベルのリソースパネルを閉じる必要はありません。ただし、リソースパネルが構成領域を覆っている場合には移動させてください。

    1. 2 番目のラベルウィジェットを選択します。

    パネル上の「ラベル」リソースは、新しく選択されたウィジェットの現在の設定を反映させるために変更されます。

    2. リソースパネルの「ラベル」ボックスをダブルクリックして、デフォルトラベルを強調表示します。

    テキストボックスで編集を行う場合は、マウスでドラッグしてテキストを強調表示する、<Delete> を使用して強調表示されたテキストを削除する、または現在のカーソル位置に入力を行う、などの方法でも実行できます。

    3. 次のように入力します。
    Topping 2:

    4. 「適用」をクリックします。

    5. 3 番目のラベルに対して、手順 1 から 手順 4 までを繰り返します。手順 3 では次のように入力します。
    Topping 3:

    6. 「閉じる」をクリックします。

    リソースパネルが消去されます。

複数選択とリソース

ウィジェットを複数選択している場合でも、コアリソースパネルとウィジェットリソースパネルの両方でリソースを設定することができます。この場合は、選択したウィジェットすべてに関連するリソースに限って設定することができます。Sun WorkShop Visual は、選択したウィジェットすべてに共通するウィジェットクラスを見つけることによって、関連するリソースを特定します。たとえばボタンとメニューバーのように、ウィジェット同士が大きく異なる場合は、共通に持っているクラスは、下位レベルのコアウィジェットクラスだけです。このような場合は、変更できるのはコアリソースだけになります。

Microsoft Windows モードでのリソースパネル

Microsoft Windows モードの場合、Sun WorkShop Visual は、作成しているデザインが確実に Microsoft Windows 準拠となるようにします。Motif リソースは、 Microsoft Windows に直接変換を行いません。Microsoft Windows 上で類似したリソース (必ずしもリソースである必要はありません) に変換されるリソースもありますが、変換が不可能なリソースもあります。

Microsoft Windows に変換されないリソースは、次の 2 通りの方法で特定されます。

Microsoft Windows に変換されないリソースは、リソースパネル内のフィールドがピンク色で表示されます。これらのフィールドに値を入力した場合、Motif に対してはリソースが生成されますが、Microsoft Windows に対しては何も生成されません。これらの Microsoft Windows では適用されないリソースのフィールドを示す色は、Sun WorkShop Visual アプリケーションリソースファイルにある項目を変更して行うことができます。「Microsoft Windows 上のオブジェクトではない宛て先ウィジェット」を参照してください。

ボタンウィジェットリソース

同じ手順を使用して、トグルボタン、カスケードボタン、プッシュボタンのラベルを設定します。図 3-4 に示すように、トグルボタンのラベルを設定します。

 

    図 3-4 ラベル設定前と設定後のトグルボタン

    1. 3 つのトグルボタンのうちの最初のトグルボタンを ダブルクリックして、リソースパネルを表示します。

    選択されているウィジェットのリソースパネルは、以下の 2 通りの方法でも表示することができます。

    • 「ウィジェット」メニューから「リソース」コマンドを選択する。
    • ツールバーのリソースボタンを押すか、ウィジェットに入力フォーカスがあるときに <Return> を押す。

    2. 「ラベル」ボックスをダブルクリックして次のように入力します。
    Vanilla

    3. 「適用」をクリックします。

    4. 2 番目のトグルボタンを選択します。

    5. 「ラベル」ボックスをダブルクリックして次のように入力します。
    Chocolate

    6. 「適用」をクリックします。

    7. 3 番目のトグルボタンを選択します。

    8. 「ラベル」ボックスをダブルクリックして次のように入力します。
    Strawberry

    9. 「適用」をクリックします。

共有リソースパネル

トグルボタンとラベルは、共通のリソースパネルを使用しています。これは、Motif ではトグルボタンウィジェットクラスはラベルウィジェットクラスから派生しているためです。言い換えると、トグルボタンはラベルの特殊な種類、つまりサブクラスです。反対に、ラベルはトグルボタンのスーパークラスです。

ウィジェットクラスの継承

トグルボタンクラスは、ほとんどのリソースを含む多くの特性をラベルクラスから継承しています。継承により、すべての Motif ウィジェットクラスはクラス階層と呼ばれる階層に組織化されます。クラス階層は、使用可能なウィジェットクラスの抽象的な階層であるため、画面上で構築しているデザイン階層とは区別して考えます。

いくつかの型のボタン、つまりトグルボタン、プッシュボタン、カスケードボタン、描画ボタンは、ラベルクラスから派生しています。これらのクラスのすべてのウィジェットのテキストは、閉じて再度開くという動作を繰り返すことなく、同一のラベルリソースパネルを使用して設定することができます。

図 3-5 に示すように、ラジオボタン (ラジオボックスにあるトグルボタン) のラベルを設定します。

 

    図 3-5 ラベル設定前と設定後のラジオボタン

    1. ラジオボックスにある最初のトグルボタンをダブルクリックして、リソースパネルを表示します。

    2. 「ラベル」ボックスをダブルクリックして次のように入力します。
    Large

    3. 「適用」をクリックします。

    4. 2 番目のラジオボタンを選択します。

    5. 「ラベル」ボックスをダブルクリックして次のように入力します。
    Small

    6. 「適用」をクリックします。

デフォルトよりも長いラベルをラジオボタンに割り当てると、新しい幅に対応するようにフレーム・ウィジェットのサイズが変更されます。これは、長いテキスト文字列を収めるためにトグルボタンのサイズが変更されると、それに対応してその親であるラジオボックス、さらにその親であるフレームのサイズも変更される、という連鎖反応を示します。Motif は、この動作を自動的に行います。この動作は学習用の配置ではあまり目立ちませんが、図 3-6 のような結果になります。

 

    図 3-6 長いラベルを持つラジオボタン

同じラベルリソースパネルを使用して、図 3-7 のようにカスケードボタンのラベルリソースを設定します。

 

    図 3-7 カスケードボタンの設定 (メニューバー)

    7. 最初のカスケードボタンを選択し、次のラベルを割り当てます。
    Procedures

    8. 2 番目のカスケードボタンを選択し、次のラベルを割り当てます。
    Help

最後に、ボタンボックス内の 3 個のプッシュボタンのラベルを、図 3-8 のように設定します。プッシュボタンは、ラベルを収めるために自動的にサイズ変更を行います。

 

    図 3-8 リソース設定前と設定後のボタンボックス

    9. 最初のプッシュボタンを選択し、次のラベルを割り当てます。
    Cone

    10. 2 番目のプッシュボタンを選択し、次のラベルを割り当てます。
    Dish

    11. 3 番目のプッシュボタンを選択し、次のラベルを割り当てます。
    Cancel

ヒント

リソースを設定した後は、必ず「適用」をクリックしてください。「適用」をクリックしないと、新しい設定は有効になりません。新しい設定を適用する前に別のウィジェットを選択すると、図 3-9 に示すような警告が表示されます。

 

    図 3-9 新しいリソースが適用されていないことを示す警告

リソースパネルに戻るためには、このディスプレイの「取消し」をクリックします。

メニュー項目のリソース

次に、メニューバーのメニューにあるボタンに対するリソースを設定します。現時点では、カスケードボタンのラベルが設定されているだけなので、メニューは図 3-10 のように表示されます。

 

    図 3-10 カスケードボタンラベルの設定されたメニュー

    1. 最初のメニューウィジェットの子である 1 番目のプッシュボタンを選択します。

    2. 「ラベル」リソースを次のように変更します。
    Wash Dishes...

    省略符号 (...) は、メニュー項目がコマンドを実行する前に別のダイアログボックスが表示されることを示します。

    3. 2 番目のプッシュボタンを選択し、次のラベルを割り当てます。
    Count Money

    4. 3 番目のプッシュボタンを選択し、次のラベルを割り当てます。
    Exit

    5. 2 番目のメニューウィジェットの子であるプッシュボタンを選択します。

    6. 次のラベルを割り当てます。
    About This Layout...

現段階でプルダウンメニューは、図 3-11 のようになります。

 

    図 3-11 プッシュボタンラベルの設定されたプルダウンメニュー

次の節では、以下の作業を行います。

キーボードのページ

アクセラレータおよびニーモニックは、ラベルリソースパネルの別のページにあるキーボード・リソースで設定します。以下の手順に従って、「Help」 カスケードボタンにニーモニック「H」を設定します。

    1. 「Help」カスケードボタンを選択します。

    2. リソースパネルのページセレクタから「キーボード」を選択します。

図 3-12 に示されるような「キーボード」ページが表示されます。グレー表示されていないリソースが、カスケードボタンクラスに適用されます。

 

    図 3-12 カスケードボタンのキーボードリソース

ニーモニック

Sun WorkShop Visual では、Sun WorkShop Visual インタフェースのニーモニックと同様に作動するキーボードニーモニックを設定することができます。ニーモニックには、ラベルで使用されていない文字も含め、任意の文字を指定することができます。ラベルに使用される文字の 1 つ、特に最初の文字を使用すると、一般ユーザーには便利なものになります。ニーモニックは、 1 つのメニューバーあるいはメニューの中で同じ文字を使用することはできません。

    1. 「ニーモニック」ボックスをダブルクリックします。

    2. 次のように入力します。
    H

    3. 「適用」をクリックします。

    4. 「Help」メニューの子であるプッシュボタンを選択します。

    5. 「ニーモニック」ボックスをダブルクリックします。

    6. 次のように入力します。
    A

    7. 「適用」をクリックします。

「H」と「A」の文字が下線付きで表示されるようになります。これは、Motif でニーモニックを示す手法です。この段階で、マウスを使用する、あるいは <Meta-H> <A> を押すという 2 通りの方法で「About This Layout」コマンドを呼び出せるようになりました。

ダイナミックディスプレイでニーモニックを表示する場合は、ウィジェットをリセットする必要があります。これを行うには、カスケードボタンが選択されていることを確認して、ツールバーのリセットボタンを押すか、ウィジェットメニューから「リセット」を選択します。

アクセラレータ

次に、「Exit」ボタンにキーボード・アクセラレータを追加します。Sun WorkShop Visual の場合と同様、アクセラレータは、メニューが表示されている場合でも表示されていない場合でも、メニューコマンドを即座に実行します。

    1. 「Exit」ボタンを選択します (最初のメニューの下の 3 番目のプッシュボタン)。

    2. 「アクセラレータ」ボックスをダブルクリックします。

    3. 次の文字列を入力します: Ctrl<Key>E

    4. 「適用」をクリックします。

これらの手順により、アクセラレータが有効になります。インタフェースの実行時には、<Ctrl-E> は「Exit」ボタンと同じ効果を持ちます。アクセラレータの場合は正確な構文が重要です。構文エラーがある場合に適用を行おうとすると、図 3-13 に示されるエラーメッセージが表示されます。

 

    図 3-13 アクセラレータ構文エラーメッセージ

アクセラレータ構文は、トランスレーション・テーブルに使用される構文と同じです。この項目については、「トランスレーションとアクション」で説明します。

アクセラレータテキスト

関連するリソースは、アクセラレータテキストです。このリソースは、 メニューオプションの右側に追加のテキストを表示して、アクセラレータが何であるかを示します。アクセラレータテキストは、ただ表示を行うだけであるため、特定の構文を使用する必要はありません。「Control+E」、「Ctrl-E」および「^E」といった形式が一般に使用されます。

    1. 「アクセラレータテキスト」の右側のテキストボックスの中をダブルクリックします。

    2. 次のテキスト文字列を入力します。
    Control+E

    3. 「適用」をクリックします。

左のメニューをプルダウンすると、図 3-14 に示されるように、すべてのボタンには新しいラベルが、「Exit」ボタンには指定されたアクセラレータが一緒に表示されます。

 

    図 3-14 リソースを設定したプルダウンメニュー

    4. 「閉じる」をクリックします。

ヘルプ専用ウィジェット

『Motif スタイル・ガイド』では、メニューバーの子であるカスケードボタンの 1 つをヘルプウィジェットとして指定することを推奨しています。ヘルプウィジェットは、常にメニューバーの右端に表示します。

    1. メニューバーをダブルクリックして、リソースパネルを表示します。

    メニューバーはローカラムの一種なので、ローカラムのリソースが適用されます。グレー表示されていないリソースが、メニューバーに適用されます。

    2. 「表示」が選択されていない場合は、「表示」を選択します。

    ヘルプウィジェットを指定するには、次のようにします。

    3. 「ヘルプ・ウィジェット」フィールドをダブルクリックして、次のように入力します。
    help_cascade

 

    図 3-15 メニューバーの表示リソース

    4. 「適用」をクリックします。

    メニューバーにあるカスケードボタンの 1 つをヘルプウィジェットにします。カスケードボタンの変数名は正確に入力しなければなりません。正確に入力を行わないと、 Sun WorkShop Visual はその入力を受け付けません。

ダイナミックディスプレイは、この変更を自動的には表示しません。ヘルプウィジェットを指定した効果を確認するには、ダイナミックディスプレイのサイズを変更してください。

メニューバーのパネルは開いたままにしておいてください。

ローカラムリソース

ローカラムウィジェットのデフォルト設定は、垂直方向に 1 列の配置です。そのリソースを設定することにより、デフォルトの状態から図 3-16 に示すような 3 個の水平な行の配置に変更することができます。

 

    図 3-16 リソース設定前と設定後のローカラム配列

図 3-16 に示すような配列にするには、テキストフィールドのサイズを設定する必要があります。

    1. 階層の 3 個のテキストフィールド・ウィジェットを選択します。

    これを行うには、ウィジェットを囲むように矩形をドラッグするか、ウィジェットを 1 つ選択してから、Shift キーを押したまま残りの 2 つを選択します。

テキストフィールドウィジェットを選択すると、画面に表示されているローカラムリソースパネルは無効になります。「適用」ボタンはグレー表示され、テキストフィールドへ入力しようとすると、ビープ音が鳴ります。このパネルはローカラムウィジェットと同じ基底クラスを持つウィジェットが選択された場合に、再び有効になります。

    2. テキストフィールドウィジェットのリソースパネルを表示し、「表示」ページを選択します。

    テキストフィールドウィジェットの 1 つをダブルクリックするか、「ウィジェット」メニューから「リソース」を選択するか、ツールバー上の「リソース」アイコンを押して、リソースパネルを呼び出します。

テキストフィールドウィジェットは、テキストウィジェットの変形であり、多くのリソースがテキストウィジェットと共通しています。ただし、テキストウィジェットが複数行のテキストを含むことができるのに対し、テキストフィールドウィジェットは単一行だけを含むという点が異なっています。これらのクラスは対応するガジェットを持たないため、このリソースパネルにはウィジェット/ガジェットのトグルがありません。その代わりに、ウィジェットをテキストフィールドかテキストに変更するためのトグルがあります。このトグルを使用すると、階層またはリソース設定に影響することなく、あるテキストウィジェットの変形から別のものへ変更することができます。

 

    図 3-17 テキストフィールドリソースパネルの「表示」ページ

テキストフィールド・ボックスの幅を狭くする必要があります。テキストフィールド・ボックスのサイズは、テキストフィールドの「桁数」リソースおよび親であるローカラムが強制する規則の 2 種類の要因によって決定されます。まず、「桁数」リソースを小さな値に設定します。

    3. 「桁数」ボックスをダブルクリックします。

    4. 次のように入力します。
    8

    5. 「適用」をクリックします。

    テキストフィールドの幅が狭くなります。

テキストフィールドまたはテキストウィジェットの「桁数」リソースは、ボックスのサイズに影響するだけで、ユーザーが入力可能な文字数には影響しません。入力を特定の文字数に制限する場合は、「最大長」がデフォルトで非常に大きな数に設定されているのでこれを変更します。

ローカラムリソースパネル

3 個の行を水平に配置するためには、ローカラムのリソースを設定する必要があります。

    1. 構成領域内で、ローカラムウィジェットを選択します。

    メニューバーのリソースパネルをすでに画面上に表示している場合は、そのパネルが再度有効になります。ただし、リソースパネルのタイトルは「ローカラム」に変更されます。画面上にパネルが表示されていない場合は、ローカラムをダブルクリックして表示してください。

    2. 「設定」ページを選択します。

 

    図 3-18 ローカラムリソースパネルの「設定」ページ

図 3-18 に示される「設定」ページは、指定可能な値が限られているリソースを表示します。右側の列にはテキストフィールドの代わりにオプションメニューがあります。

    3. 「方向」オプションメニューで、「水平」を選択します。

    4. 「間隔設定方法」オプションメニューで、「列」を選択します。

    「水平」方向は、ローカラムを列ではなく行に配置します。 ローカラムに複数の行または列を持たせる場合には、「列」間隔設定方法を選択する必要があります。これらの 2 つのリソースの効果を確認するには次のようにします。

    5. 「適用」をクリックします。

    この時点で、ローカラムはすべて同じサイズのセルを持つ水平な行で表示されます。「配置方向」が「水平」である場合、行および列の意味は逆になります。したがって、3 個の行を作成するためには、「列数」リソースを設定する必要があります。

    6. 「表示」ページを選択します。

    7. 「列数」ボックスをダブルクリックし、次のように入力します。
    3

    8. 「適用」をクリックします。

    結果は図 3-19 のようになります。

 

    図 3-19 水平方向のダイアログのローカラム部分

シェルのリソース

シェルウィジェットは、第 1 にアプリケーションと X ウィンドウシステムとの間のインタフェースとして存在します。その動作はおもにウィンドウマネージャと、含まれるウィジェットにより制御されます。ただし、シェルウィジェットには、いくつかの特殊なリソースがあります。

このパネルの上部には、シェルウィジェットの型を設定するトグルスイッチがあります。ウィジェットパレットには 3 つのシェルウィジェットがありますが、トグルの設定が異なるだけで、すべて同じウィジェットです。

シェルの型

すべてのウィンドウはシェルウィジェットで始まりますが、ウィンドウおよびシェルウィジェットにはいくつかの種類があります。Sun WorkShop Visual には、以下に示すシェルウィジェットがあります (図 3-20 参照)。

  • アプリケーションシェル
    アプリケーションのメインウィンドウ。アプリケーションを実行すると最初に表示されます。
  • 最上位シェル
    アプリケーションシェル以外のウィンドウ。 アプリケーションシェルがアイコン化された場合でも表示され、個別にアイコン化することができます。
  • ダイアログシェル
    アプリケーションシェルと切り離してアイコン化することはできないウィンドウ。

 

    図 3-20 パレットのシェルウィジェット

    注 - 上記の動作は、 mwm を使用した場合のものです。 twm の場合は、シェル動作は同じですが外観が異なります。これは、 twm がダイアログシェルを擬似アイコンに変えてサイズを小さくするためです。擬似アイコンは、ディスプレイを整理して見やすくするためのものです。内部では、本物のアイコンと擬似アイコンは区別されており、画面上での外観は異なっています。

アプリケーションシェルを閉じると、デザイン内のすべてのウィンドウが閉じられます。

Sun WorkShop Visual インタフェースにおけるシェルの型の例

種々の型のシェルの例として、Sun WorkShop Visual インタフェースを見てみましょう。ウィジェットパレットおよび構成領域を持つメインウィンドウがアプリケーションシェルです。ダイアログ、リソースパネル、配置エディタウィンドウはすべてダイアログシェルです。これらのウィンドウは、ウィンドウマネージャを使用して個別にアイコン化することはできません。

これらのウィンドウをディスプレイから消すためには、ウィンドウマネージャを使用するか、「閉じる」ボタンをクリックしてウィンドウを閉じます。「閉じる」ボタンは、「活性化 (activate)」コールバックを使用して内部的にウィンドウを閉じます。メインウィンドウがアイコン化される場合、開いていたすべてのダイアログシェルは消去されます。メインウィンドウが復元されると、 ダイアログシェルも再び表示されます。

「ヘルプ」メニューの「ウィジェトパレット」で表示される「ウィジェットパレットの情報」パネルは、最上位シェルの例です。このパネルは Sun WorkShop Visual の起動時には自動的に表示されませんが、いったん表示すると、個別にアイコン化することができます。「ウィジェットパレットの情報」パネルのポップアップ・サブウィンドウは、その他すべてのダイアログシェルと同様にメインアプリケーションシェルの子であるため、「ウィジェットパレットの情報」パネルを使用して閉じたり、アイコン化することはできません。

ダイナミックディスプレイ内のシェルの型

シェルの型は、ダイナミックディスプレイ内には反映されません。ダイナミックディスプレイに対して作成されるすべてのウィンドウは、実際にはダイアログシェルであるため、個別にアイコン化することはできません。Sun WorkShop Visual の構成を変更して、ダイアログシェルではなく、最上位シェルを使用することができます。この操作については、付録 D「アプリケーションのデフォルト」を参照してください。各ウィンドウに対してユーザーが指定したシェルの型は、実行時に生成コードによって作成されます。

アプリケーションシェルの必要条件

各デザインには、1 つ以上のアプリケーションシェルが必要です。デザイン内にアプリケーションシェルがない場合には、そのアプリケーションではウィンドウは一切表示されません。Sun WorkShop Visual は、アプリケーションシェルが存在しない場合にはコード生成時に警告メッセージを発します。

1 つのデザインには、2 個以上のアプリケーションシェルを持たせることができます。この場合には、Sun WorkShop Visual が生成する main() プログラムによってすべてのアプリケーションシェルが作成されますが、その中の 1 つだけが表示されます。

Sun WorkShop Visual は、どのシェルを最初に表示する必要があるかを判断することはできません。デザイン内に 2 個以上のアプリケーションシェルを持たせる場合には、独自の main() プログラムを作成するか、または適切なアプリケーションシェルを起動するように生成された main() プログラムを編集する必要があります。同様の効果を確実に実現するためには、最初のウィンドウにアプリケーションシェルを 1 つだけ持たせ、その他の一次ウィンドウに最上位シェルを使用します。そしてコールバックまたはリンクを使用して最初のウィンドウを除くすべてのウィンドウを表示するようにします。複数のアプリケーションシェルの使用はお勧めできません。

それぞれのアプリケーションは、最低 1 個 (通常は 1 個のみ) のアプリケーションシェルを必要とします。アプリケーションシェルはメインウィンドウとして、さらにアプリケーションと X ウィンドウシステム間のインタフェースとして機能します。

従属するウィンドウは、ダイアログシェルまたは最上位シェルのどちらかにすることができます。この相違点については、「シェルの型」を参照してください。

メインシェルのリソース設定

デザインのメインシェルである myFirstShell はアプリケーションシェルになっているので、タイトルを変更するだけです。

    1. 表示されていない場合は、myFirstShell のリソースパネルを表示します。

    2. 「表示」ページを選択します。

    3. 「タイトル」ボックスをダブルクリックし、次のように入力します。
    Ice Cream Shop

 

    図 3-21 ダイアログ (シェル) リソースパネルの「表示」ページ

    4. 「適用」をクリックします。

    5. 「閉じる」をクリックします。

    この段階で、配置は図 3-22 のようになります。

 

    図 3-22 現段階での学習用インタフェース

2 次ウィンドウのリソースの設定

ここまでで作成した学習用アプリケーションには、ヘルプウィンドウ用に別のシェルがあります。このシェルは、ダイアログシェルです。このウィンドウのタイトルを変更する必要があります。

リソースパネルを表示するには、次のようにします。

    1. ヘルプウィンドウのシェルをダブルクリックします。

    2. 「表示」ページを選択します。

    3. 「タイトル」ボックスをダブルクリックし、次のように入力します。
    Help

    4. 「適用」をクリックします。

    5. 「閉じる」をクリックします。

リソースパネル内での操作

Motif は非常に多くのリソースを持っているため、Sun WorkShop Visual は複数のページで構成されるリソースパネルを使用して画面上にリソースを表示します。リソースパネルの構造が理解できたら、ウィジェットクラスおよびページ別のリソースの一覧が記載されている、第 27 章「ウィジェット・リファレンス」を参照することをお勧めします。

ウィジェットクラスのリソースパネルで使用できないリソースは、「コアリソースパネル」にあります。

設定

通常は、複数の選択肢があるリソース、つまり設定値が限定されているリソースは、「設定」のページにあり、オプションメニューを使用して設定することができます。その他の、新しい値の入力を必要とするリソースや、別のダイアログを呼び出して新しい値を設定するリソースは、すべて別のページに分かれています。「設定」ページの場合を除いては、リソースはおおまかな項目別に編成されています。

表示、マージン

ウィジェットの外観に影響するリソースは、通常は「表示」ページにあります。テキスト、色、フォント、寸法などがそうです。コアリソースパネルにも、ウィジェットの寸法と位置に影響するリソースがいくつあります。

ラベルおよびラベルから派生するウィジェットは、表示リソースを多く持っているため、1 ページ以内に収めることができません。ラベルリソースパネルは、これらのリソースを色、フォント、テキスト、ピックスマップリソースを含む「表示」ページと、サイズ、マージン幅リソースを含む「マージン」ページに分割しています。

キーボード

「キーボード」ページでは、キーボード・ニーモニックおよびアクセラレータを持つことができるウィジェットにそれらの設定を行うことができます。

コアリソースパネル

Sun WorkShop Visual は、これらの広域なスーパークラスのリソースへのアクセスを可能にするコアリソースパネルという単一のリソースパネルを用意しています。特定のウィジェットに対してコアリソースパネルを表示するには、次のようにします。

    1. ウィジェットを選択します。

    2. 「ウィジェット」メニューをプルダウンし、「コアリソース」を選択します。

    図 3-23 に、コアリソースパネルのページを示します。

 

    図 3-23 コアリソースパネルの「表示」ページ

コアリソースパネルの「表示」ページ

コアリソースパネルの「表示」ページには、基本の色とピックスマップリソースがあります。たとえば、ウィジェットの前景、背景、強調表示、シャドウの色を設定することができます。これは、第 5 章「その他のエディタ」で実際に行います。

コアリソースパネルの「寸法」ページ

「寸法」ページには、ウィジェットの画面上の位置やサイズに影響するリソースがあります。クラス固有の寸法リソースは、コアパネルの設定を書き換える場合もあります。 テキストフィールドの「シャドウの厚さ」またはプッシュボタンの「強調表示の厚さ」を設定して、その効果を試してみると良いでしょう。

コアリソースパネルの「設定」ページ

「設定」ページでは、ほとんどのウィジェットクラスに適用する設定を行うことができます。これらの設定には複数の選択肢が設けられています。また、「マネージ時にマップ」設定を変更することもできます。この設定は「マネージトグル」で説明するように、マネージトグルと連動しています。

コアリソースパネルの「コード生成」ページ

「コード生成」ページでは、コード生成に関して大幅に制御を行うことができます。たとえば、特定のウィジェットを静的、局所的、大域的に指定することができます。ウィジェットの呼び出しを変更する理由については、「コールバックのウィジェットへのアクセス」を参照してください。C++ を使用している場合には、ウィジェットを限定公開、非公開、公開として指定することもできます。C++ での呼び出しについては、「ウィジェットメンバーのアクセス制御」で説明しています。さらに、「コード生成」ページを使用すると、独自の派生 C++ クラスを生成することができます。詳細は、「C++ クラス」で説明します。

マネージトグル

マネージトグルは、「コード生成」ページにも表示されます。デフォルトでは、すべてのウィジェットがマネージとして生成されます。ただし、ダイアログシェルの子ではない選択ボックス内の「適用」ボタンはマネージされません。マネージされている状態から変更するには、コアリソースパネルの「コード生成」ページにある「マネージ」トグルを使用します。
これによって通常は、生成されたコードからウィジェットをマネージするコードが省略されます。ただし、コンポジットウィジェットの構成要素であるウィジェットまたはガジェットの場合は、トグルがオフのときは生成されたコードはウィジェットを明示的にアンマネージ (マネージ解除) します。これは、ツールキットがこれらのウィジェットを常にマネージとして作成するためです。選択ボックスの「適用」ボタンの場合は、トグルがオンのときはボタンを明示的にマネージするコードが生成されます。ウィジェットの操作方法については、「ウィジェットの操作」を参照してください。

「リソースの結合にインクルード」トグル

「リソースの結合にインクルード」というラベルが付けられたトグルは、選択されたウィジェットのリソースの生成を参照します。詳細は、「密な結合」で説明します。

コアリソースパネルの「ドロップサイト」ページ

「ドロップサイト」ページでドロップサイトを指定することができます。ドロップサイトとは、Motif 1.2 で導入されたドラッグ&ドロップ機能を使用して、別のウィジェットからある種のデータを受け取るために用意されたウィジェットです。ドラッグ&ドロップ機能を使用すると、マウスでデータを選択してドラッグすることによって、ウィジェット間でデータを受け渡すことができます。

ドラッグの初期化は、通常はコールバックまたはアクション関数内から行われるダイナミック関数によって行われます。Sun WorkShop Visual は、ドロップの受け取りに対しては単純なサポートを行なっていますが、ドラッグのソースに対してはサポートしていません。

ウィジェットをドロップサイトとして設定する方法については、「ドラッグ & ドロップ」を参照してください。

 

    図 3-24 「ドロップサイト」ページ

コンストレイント・パネル

Motif には、コンストレイント・ウィジェットと呼ばれる 2 種類のウィジェットクラス (区画ウィンドウおよびフォーム) があります。これらのクラスのウィジェットは、コンストレイント・リソースと呼ばれる一連の特殊なリソースを持っています。これらのリソースは、子のサイズや位置を制御します。コンストレイント・ウィジェットは、その子に対してそれぞれ別々のコンストレイント・セットを持っています。Sun WorkShop Visual では、それらのリソースを子のリソースであるかのように設定することができます。

コンストレイント・ウィジェットの子に対するコンストレイント・リソースを表示するには、次のようにします。

    1. コンストレイントウィジェットの子 (例 : フォームの子) を選択します。

    2. ウィジェットメニューをプルダウンし、「コンストレイント」を選択します。

 

    図 3-25 コンストレイント・パネル

図 3-25 は、学習用配置のフォームの子であるフレームに対するデフォルトのコンストレイント・リソースパネルです。このパネルでは、フレームの上部がフォームの上部に、左端がフォームの左端に、0 ピクセルのオフセットで接続 (アタッチ) されていることを示しています。このため、フレームはフォームの左上に配置されています。フレームの下部および右端は制約されていません。

フォームがその子に強制するコンストレイント・リソースは、複雑に相互作用するため、第 4 章「配置エディタ」で説明する配置エディタを使用して設定を行うと良いでしょう。コンストレイント・パネルは、おもに配置エディタの補助として、すでに設定されているコンストレイントを表示するのに便利です。上級ユーザーは、パネルそのものに値を設定することもできます。このパネルへの値の設定は、その他のリソースパネルの場合と同様に、新しい値を入力して「適用」をクリックすることにより実行できます。

区画ウィンドウ・ウィジェットの子に対するコンストレイント・リソースパネルは、異なる値の集合を表示します。このパネルについては、 「区画ウィンドウ (PanedWindow)」で説明します。

デフォルトリソース設定

Sun WorkShop Visual はデフォルトのリソース設定を括弧内に表示します。ユーザーがインタフェースを構築する場合の値と同じであっても、デフォルト設定は、明示的に設定する値とは異なります。デフォルト設定は、生成されたコードまたは X リソースファイルに追加されないという点が異なっています。インタフェースでデフォルト設定を使用し、そのインタフェース設計時に使用したものを異なるマシン上で実行する場合には、実行しているマシンに対しての Motif デフォルトが使用されます。

プッシュボタンのラベル、またはローカラムの列数などの多くのリソースでは、移植性の問題が生じることはまずありません。寸法や色などのその他のリソースは、マシンによって異なります。インタフェースに移植性を持たせるためには、そのようなリソースにデフォルト値を使用するか、あるいはコード生成時にそれらのリソースを X リソースファイルに入れて、各マシンに対して編集できるようにする必要があります。これについては、「X リソースファイルの設定」で説明します。

図 3-26 に、これまでの節で明示的に設定されたリソースを持つリソースパネルを示します。明示的な設定は、変更傍線でマークされています。

 

    図 3-26 明示的に設定されたリソースを持つリソースパネル

明示的に設定したリソースをデフォルト設定に戻すには、次のようにします。

    1. リソースパネル上のリソーステキストフィールドにあるすべてのテキストを削除します。

    2. 「適用」をクリックします。

    「設定」のページで、あるリソースに対してデフォルト値を選択するには、次のようにします。

    3. オプションメニューから、括弧内に表示されているオプションを選択します。

    4. 「適用」をクリックします。

    注 - この場合、現段階のダイナミックディスプレイで使用されている値、つまり最後にリソースに対して割り当てられた値がデフォルトの値になります。アプリケーションを Sun WorkShop Visual 内からではなく単独で実行する場合は、システムのデフォルト値が使用されます。Sun WorkShop Visual 内でシステムのデフォルトを確認するには、対象となるウィジェットをリセットする必要があります。

リセットコマンド

なんらかのリソースを設定する場合には、Sun WorkShop Visual はダイナミックディスプレイで選択されたウィジェットにその値を適用しようとします。ダイナミックディスプレイに表示されるものは、ウィジェットのインスタンスの集まりであることに注意してください。Sun WorkShop Visual はただウィジェットの絵を描画するわけではなく、実際に Motif 関数呼び出しを行なってウィジェットの作成を行います。Sun WorkShop Visual がリソースを設定する場合は、適切な Motif 関数呼び出しを作成してそのウィジェットに対するリソースの値を設定します。

通常、値を設定した結果は、最初にその値を使用してウィジェットを作成した場合と同じです。しかし、これが必ずしも当てはまるわけではありません。Sun WorkShop Visual のウィジェットメニューには、選択されたウィジェットとその子を破壊して、最後に適用されたリソース設定を使用してウィジェットおよびその子を作成し直す「リセット」 (<Ctrl-T>) というコマンドがあります。配置が意図した通りに表示されない場合は、「リセット」コマンドを使用してください。以下の手順では、「リセット」が必要とされる例を示します。

    1. 階層で「ヘルプ」カスケードボタンウィジェットをダブルクリックして、リソースパネルを表示します。

    2. 「キーボード」ページを選択します。

    3. 「ニーモニック」テキストフィールドからすべてのテキストを削除して、以前に設定したニーモニックを削除します。

    4. 「適用」をクリックします。

    この時点で、「ニーモニック」テキストフィールドは <デフォルト> 設定に戻ります。しかし、ダイナミックディスプレイの「ヘルプ」ボタンには、もう存在していないニーモニックを表わす下線の付いた「H」が表示されたままです。表示を更新するためには次のようにします。

    5. ウィジェットメニューから「リセット」を選択します。

    リセットは、選択されたウィジェットとその子にのみ影響します。階層の下の方のウィジェットをリセットする場合、ダイナミックディスプレイ上の位置が不正確なまま残されることがあります。たくさんのリソースを設定する場合には、シェルをリセットして、リソースの設定による結果が確実に表示されるようにすることをお勧めします。

    「リセット」コマンドは、フォーム・ウィジェットおよびそのアタッチメントリソースを使用している場合に特に役に立ちます。これについては、第 4 章「配置エディタ」で説明します。

    6. ニーモニックを元の状態に戻します。

拒否されるリソース設定

Motif およびその他のウィジェットツールキットには、リソースの有効な設定を制御する規則があります。また、Sun WorkShop Visual はシミュレーションではなくウィジェットの実際のインスタンスを使用して動作するため、ツールキットの持つ規則に合わない新しいリソース設定は拒否されてしまいます。規則には、特定のウィジェットに対しての有効な値、 ローカラムなどの親ウィジェットの必要条件、そしてデザインを構築するために使用しているマシンの必要条件が含まれています。

たとえば、大画面ワークステーションで使用するためのインタフェースを設計している場合は、寸法のリソースを大きなピクセル数に設定する必要があります。小画面マシンで設計を行なっている場合は、インタフェースが将来大画面のマシンで実行することになっていても、必要な値を設定することができません (この場合には、X リソースファイルを使用することによって必要な幅を設定することが可能です)。

Motif が新しいリソース設定を拒否する場合、以前の設定には戻さずに、デフォルトと階層内の他のリソース設定にもとづいて新しい値を計算します。この新しい値は、リソースパネルおよびダイナミックディスプレイに反映されます。

リソースの結合

本章の前半で各ウィジェットに対してリソースを設定する方法を説明しました。デザインで設定したリソースすべてを含むリソースファイルを Sun WorkShop Visual がどのように生成するかについては、「X リソースファイルの設定」で説明します。

リソースとウィジェットの結び付きは通常、結合と呼ばれます。各リソースには、明示的に設定され、ソースファイル内に生成するようユーザーが要求したリソース設定が 1 行生成されます。リソースファイルの形式については、「リソースファイルの構文」を参照してください。どのリソースをリソースファイル内に生成するかを指定する方法については、「コード生成オプション」を参照してください。

Sun WorkShop Visual では、リソースは次の 2 つの方法で設定します。

    1. リソースパネルで各ウィジェットに対するリソースを設定

    2. 緩い結合を使用

どちらの方法を選択するかは、リソースを使用したいウィジェットの数によって決まります。大規模なデザインでは、特定クラスのすべてのウィジェットを同じ外観にしたい場合があります (すべてのボタンを緑色にするなど)。緩い結合を使用して、このような設定を行うことができます。各リソースに適用されるリソースは、リソースパネルを使用して設定する必要があります。

密な結合は、アプリケーションのリソースファイルで矛盾が発生することを防ぐために使用します。これは、「密な結合」で詳細に説明します。

緩い結合

緩い結合を設定すると、明示的に設定しているリソースがない場合に使用される、デフォルトリソースを指定することができます。緩い結合ダイアログは柔軟性に富んでいます。「緩い結合」ダイアログでは、ウィジェット名、クラス名、さらには記述と一致するあらゆるウィジェットが適用されることを示すワイルドカードを使用して、ウィジェットを参照することができます。また、結合を行う「汎用性」を指定することもできます。この汎用性については、以下の例で詳細に説明します。緩い結合は、次のような場合に便利です。

上記を実現するには、緩い結合を設定します。次に簡単な例を紹介します。

緩い結合の例

    1. 図 3-27 に示すように、各種シェル、フォーム、もう 1 つのフォーム、3 個のプッシュボタンを含むウィジェット階層を作成します。

 

    図 3-27 緩い結合の階層

    2. 図 3-27 に示すように、シェルに「MyShell」、フォームの 1 つに「MyForm」と名前を付けます。

    リソースでは、ウィジェット名が使用されます。ただし、変数名を設定すると、ウィジェット名も同じ名前に設定されます。

    3. シェル、「MyForm」と名前を付けたフォーム、最初のボタンを選択します。

    ウィジェットを 1 つ選択して、Shift キーを押したまま残りの 2 つを選択します。

    4. 「ウィジェット」メニューから「緩い結合」を選択します。

    「緩い結合」ダイアログが表示されます。

 

    図 3-28 「緩い結合」ダイアログ

「緩い結合」ダイアログ

図 3-28 に示す「緩い結合」ダイアログには、次のような領域があります。

メニューバー

このメニューバーには、「ファイル」、「編集」、「オプション」の 3 つのメニューがあります。「ファイル」メニューには、外部リソースファイルからの結合の読み込み、マージ、継承を行うためのコマンドがあります。これらの操作については、「外部リソースファイルからのリソース」で詳細に説明します。「編集」メニューを使用すると、結合をカット、コピー、ペーストに加えて、削除することもできます。リスト内には生成された順序で結合が表示されるため、カット機能およびペースト機能は重要です。また、ファイルは X ツールキットによって順に読み取られるため、リソースファイル内のリソースの順序は重要です。互いに矛盾するリソースがある場合は、後で生成されたリソースが以前に生成されたリソースを上書きします。「オプション」メニューには、「継承された結合を使用」というコマンドがあります。このコマンドで、「緩い結合」リストに表示される継承された結合を使用するかどうかを選択できます。

既存の結合

ウィンドウの最上部には、現在定義されている緩い結合のリストがあります。リストの下に上下の矢印ボタンがあります。これらのボタンを使用してリスト内の結合の順序を変更することができます。このリストに結合が表示されている順序は、リソースファイル内に生成された順序です。

新規の緩い結合

既存の結合リストの下に、オプションメニューを含むスクロールウィンドウがあります。このオプションメニューでは、ウィジェット階層内で選択したウィジェットの結合が選択されています。

リソース名とリソース値

結合の表示の下に、テキストボックスが 2 つあります。1 つはリソースの名前の入力に、もう 1 つはその値の入力に使用します。

リソースパネル

ダイアログの最下部に、コアリソースパネルおよびウィジェットリソースパネルを表示するボタンがあります。リソースパネルは、ウィジェット階層内で選択した最下層のウィジェット (リーフウィジェットとも呼ばれます) のリソースを表示します。また、現在定義されている結合のリストに結合を追加する「追加」ボタンもあります。

結合の作成

前述の例を使用して、説明を続けます。

    1. 「緩い結合」ダイアログ内のオプションメニューを、ドットがそれぞれアスタリスクで置換されるように変更します。

    これは、シェルおよび1つのフォームを名前で参照し、ボタンをその Motif クラス名で参照する結合を示しています。つまり、その結合が命名したフォームの下にあるボタンをすべて参照することを意味します。「新規の緩い結合」領域のオプションで、各ウィジェットの間にアスタリスク (*) を選択しています。これは、命名した各ウィジェットの間に別のウィジェットが存在し得ることを意味しています。この例では、他のフォームも含めることができます。

 

    図 3-29 緩い結合のウィジェットオプション

    2. 「ウィジェット・リソース」を押します。

    ボタンウィジェットのリソースパネルが表示されます。

    3. ラベルリソースを「 Bound 」に設定し、「適用」を押して、リソースパネルを閉じます。

    「リソース名」テキストボックスには、X ウィンドウが認識するラベルリソースの名前である「labelString」という文字列が入っています。「リソース値」テキストボックスには、リソースパネルに入力した値である「Bound」という文字列が入っています。次の行が緩い結合リストに追加されます。
    XApplication*MyShell*MyForm.XmPushButton.labelString: Bound

    4. 「適用」を押します。

次回リソースファイルを生成する際には、この行が生成されたリソースファイルに含まれます。この行の意味は、次のとおりです。

「XApplication」クラスのアプリケーション内にある「MyShell」というシェルの子孫 (間に存在するウィジェットの数に関係なく) である「MyForm」というフォームの
(間に存在するウィジェットの数に関係なく)子孫であるプッシュボタンウィジェットは、すべて、そのラベルが「Bound」に設定されます。

外部リソースファイルからのリソース

「緩い結合」ダイアログの「ファイル」メニューには、以下の 3 つの項目があります。

  • 結合を読み込む
  • 結合をマージ
  • 結合を継承

「結合を読み込む」または「結合をマージ」を選択すると、リソースファイル名の入力を要求するファイル選択ボックスが表示されます。「ファイル」メニューから「結合を継承」を選択すると、「継承された緩い結合」ダイアログが表示されます。

「継承された緩い結合」ダイアログ

「継承された緩い結合」ダイアログには、テキストボックスとボタンの 2 つの領域があります。これらの領域を使用して、最後に撰択したファイルから結合および結合のリストを継承することができます。この結合リストは、読み取り専用のリストです。「リソースファイル」というラベルの付いたボタンを押すとファイル選択ボックスが表示され、リソースファイルを指定することができます。

このダイアログに表示されている結合を継承するには、「オプション」メニューの「継承された結合を使用」トグルをオンにします。

次回リソースファイルを生成する際に「オプション」メニューのトグルボタンが設定されていると、命名したリソースファイルへの参照が生成されます。これによって、実際に 「継承された緩い結合」ダイアログに一覧されているすべてのリソースが継承されます。リソースを継承したくない場合は、「継承された結合を使用」トグルをオフにします。トグルボタンをオフにすると、リソース結合は継承されません。

結合の調整

「緩い結合の例」で紹介している例は、単純なものです。「緩い結合」ダイアログでリソース結合を変更する方法は他にもあります。現在定義されている結合内の各要素は、図 3-30 に示すように対応するオプションメニューを使用して変更することができます。

 

    図 3-30 対応するボタンを持つ現在の結合

これらのオプションメニューを使用して、結合を調整することができます。調整方法には、次の 3 種類があります。

  • ワイルドカードの変更
  • ウィジェットへの参照の変更
  • リソースの変更

これらについて、以下で説明します。

ワイルドカード

各ウィジェット名の間に、ワイルドカード文字があります。これは、ピリオド (.) またはアスタリスク (*) です。ピリオドは、右側のウィジェットが左側のウィジェットの直系の子孫であるという意味です。アスタリスクは、左側と右側のウィジェットの間に命名していない別のウィジェットがいくつかあり得るという意味です。

ウィジェット・リファレンス

ウィジェットを参照する方法は 3 つあります。Motif クラス名 (ボタンの場合は XmPushButton、フォームの場合は XmForm など)、指定したウィジェット名、疑問符文字 (?) のうちいずれかを選択することができます。疑問符は、記述中のこの位置に必ずなんらかのウィジェットを指定しなければならないことを意味するワイルドカードです。

リソース

現在定義されている結合の最後の項目として、「リソース名」および「リソース値」があります。この結合に対してリソースを複数設定している場合は、設定されているリソースは、対応するオプションメニューにリストされます。緩い結合を設定するリソースは、いくつでも構いません。

    注 - ウィジェットの名前が変更された場合は、そのウィジェットをリセットしない限り、緩い結合は名前の変更されたウィジェットには適用されません。

密な結合

複数のウィジェットが同じアプリケーションクラス内に同じウィジェット名を持っている場合は、Sun WorkShop Visual が生成するデフォルトのリソース結合が曖昧なものになる可能性があります。密な結合とは、曖昧になる可能性を減らすために、リソース結合に特別なウィジェットを命名する方法です。リソースファイル内に存在するリソース結合の構造は、「リソースファイルの構文」で説明します。図 3-31 に示す階層に対して Sun WorkShop Visual が生成したデフォルトのリソース結合は次のとおりです。

 

 

    図 3-31 最初の階層

この例では、ウィジェット名が「OkButton」という、1 つのウィジェット (「リーフ」ウィジェット) だけを明示的に取り上げています。

アプリケーションで、同じウィジェット名を持つリーフウィジェットを複数持っている場合があります。ただし、個々のウィジェットに異なるリソース設定が必要な場合は、上述のデフォルトのリソース構文は使用しないでください。この構文では、同じ名前を持つすべてのウィジェットのリソースに対して同じ設定が適用されるため、一部のウィジェットのリソース設定が失われます。リソース結合で明示的に指定するウィジェットの数が多いほど、リソースファイルでウィジェット名に関して矛盾が発生する可能性は低くなります。

密な結合の例

図 3-31 の例を使用して、名前は同じでラベルが異なるリーフウィジェット (この場合は PushButton) を複数持つことができることを説明します。

    1. 図 3-30 に示すような階層を作成します。名前は、ウィジェット名として表示されたものを使用してください。

    2. パレットから別のシェル (任意の型) を選択し、図 3-32 に示すような 2 番目の階層を作成します。ボタンには「OkButton」というウィジェット名を指定し、最初の階層内のボタンと同じウィジェット名になるようにします。

 

    図 3-32 2 番目の階層

    3. 最初の階層のボタンのラベルを次のように指定します。
    Ok

    4. 2 番目の階層のボタンにラベルを次のように指定します。
    Apply

    5. 最初の階層で「FirstShell」を選択し、そのコアリソースパネルを表示します。

    6. 「コード生成」ページを選択します。

    7. 「リソースの結合にインクルード」というラベルが付いたトグルを設定します。

    これは、ウィジェットのリソース結合を「密」にするトグルです。

    8. 「適用」を押します。

    次回リソースファイルを生成する際に、密なリソース結合を持つウィジェットが次のように表示されます。

XApplication*FirstShell*OkButton.labelString: Ok

    9. 2 番目の階層に対しても同じ作業を行います。ウィジェット「SecondShell」をリソース結合に含めます。

    2 番目の階層に対する結合は、次のようになります。

XApplication*SecondShell*OkButton.labelString: Apply

    これで、同じウィジェット名を持つ 2 つのボタンのリソースが簡単に区別できます。リソース結合にはウィジェットをいくつでも追加することができます (この例では、フォームも追加できます)。これで、結合はより密になり、曖昧さが少なくなります。

密なリソース結合の推奨

デザイン中のすべてのシェルに対して「リソースの結合にインクルード」トグルを設定することをお勧めします。こうすることで、結合がより密になり、曖昧な部分が少なくなります。

リソース生成の比較

図 3-27 に示す緩い結合の例の最初のボタンのラベルリソースを明示的に設定しても、緩い結合を設定していないとリソースファイル内に次の行が生成されます。

XApplication*button1.labelString:Bound

「密な結合」で説明している密な結合を使用して、シェル (MyShell) に密な結合を設定しても、緩い結合を指定していないとリソースファイルには次の行が生成されます。

XApplication*MyShell*button1.labelString:Bound

「緩い結合の例」で説明したように、すべてのボタンを包含するために緩い結合を設定すると、リソースファイル内に次の行が生成されます。

XApplication*MyShell*MyForm*XmPushButton.labelString:Bound

その他のリソースに関する参考資料

ウィジェットリソースの詳細は、第 27 章「ウィジェット・リファレンス」を参照してください。「ウィジェット・リファレンス」では、各 Motif ウィジェットクラスに対して最もよく使用されるリソースについて記述しています。リソースを設定する前に、この概要情報をご覧になることをお勧めします。

Motif ウィジェットリソースの詳細については、Motif プログラミング・マニュアルなどの参考文献が多く発売されていますので参照してください。その他の参考文献については、付録 E「参考資料」をご覧ください。

他のウィジェットを用いて Sun WorkShop Visual を使用している場合には、ウィジェットの開発元で提供している資料も参照してください。



前へ 次へ 目次 文書セット ホーム

サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.