本章は、Sun WorkShop Visual を初めて使用するユーザーのための一般的な質問および問題に対してのクイックリファレンスです。機能ごとに次の各節で構成されています。
本節では、Sun WorkShop Visual が正しいリソースファイルを探し出すことができない場合に生じる問題を説明します。Sun WorkShop Visual は、X が Sun WorkShop Visual リソースファイルを参照するようにインストールされていなければなりません。以下に示す問題は、ダイナミックディスプレイではなく、Sun WorkShop Visual のインタフェースに関連しています。
状況: Sun WorkShop Visual のボタン、プロンプト、およびメニューのラベルが正しく表示されない。
原因と対応:
これらのラベルは、正しいリソースが読み出された場合にのみ使用することができます。ラベルが使用できない場合、X は変数名を代用します。Sun WorkShop Visual が Sun WorkShop Visual リソースファイルを読み出すように、システムを再構成します。X でシステムを再構成するには、数種類の方法があります。システム管理者にお問い合わせください。
本節では、定義とインスタンスの作成と使用に関連した事項について説明します。詳細は、「定義」を参照してください。
開こうとしているデザインファイルに、Sun WorkShop Visual の現在のセッションでは認識できない定義のインスタンスが含まれています。定義を作成すると、ホームディレクトリに .xddefinitionsrc という特殊なファイルが作成されます。Sun WorkShop Visual は、このファイルを使用して、インスタンスが参照する定義を特定することができます。定義の内容を理解して、以下を実行してください。
以下は、定義のインスタンスを含むデザインから Sun WorkShop Visual が生成したコードをコンパイルするときに発生する可能性のある問題です。
定義とインスタンスが同じデザイン内になく、別々の生成されたコードファイルにあることを確認してください。定義は別のデザインで保持します。定義コードをコンパイルして、インスタンスを含むコードで使用できるようにします。
定義に対するコードを別のディレクトリに生成した場合、その定義のヘッダーファイルを見つけることができるように、メークファイルを変更する必要があります。このヘッダーファイルの名前は、「定義を編集」ダイアログに表示される名前と同じでなければなりません。
Sun WorkShop Visual では認識できない LANG 環境変数を使用してロケールを指定した場合、起動時に、指定したロケールはサポートされていないので「C」に強制的に指定されるというメッセージが表示されます。これによって生じる影響の詳細については、「サポートされていないロケール」を参照してください。
本節では、リソースパネルを使用する場合に起こる可能性がある問題について説明します。実行時にリソース値に関係する問題が発生した場合は、本章の 「コード生成」を参照してください。
特定のウィジェットまたはウィジェットの組み合わせに対してリソースを設定する場合は、第 27 章「ウィジェット・リファレンス」、および Motif マニュアルを参照してください。リソース設定の外観に関する問題の多くは、関連のウィジェットまたはシェルをリセットすることによって解決できます。
Sun WorkShop Visual のリソースパネルに値を設定する場合、Sun WorkShop Visual は実際に、ダイナミックディスプレイにおいてウィジェットインスタンスのリソースをリセットします。結果が意図したものと異なる場合もあるので注意してください。
原因: Motif はユーザーが指定した新しい値を設定することができません。最も一般的な原因は、選択されたウィジェットが他のウィジェット (通常はその親) によって制限されていることです。これは、頻繁に書き換えられるコアリソースパネルの幅や高さのリソースなど、サイズや位置に関係するリソースに多く該当します。
たとえば、ラジオボックスがトグルボタンのグループを持っている場合、個々のトグルボタンの幅がそのテキストとマージンリソースによって決定されます。ラジオボックスの幅は、その子の中で最も幅の広いものによって計算されます。そして、すべてのトグルボタンは最も幅の広い子と同じ幅に強制されます。コアリソースパネル上の幅の設定は、計算された値で書き換えられます。反対に、ラジオボックスがフォームの子である場合、配置エディタで設定されたアタッチメントは、ラジオボックスの規則を書き換えることができます。
対応: デザインに、設定を書き換える可能性のある制約があるかどうかを調べます。意図した効果を実現するためには、他のウィジェットによって指定される制約を使用します。
状況: 新しい値はリソースパネル上に受け入れられたが、ダイナミックディスプレイには変更が即座に反映されない。
対応: ウィジェットをリセットしてください。ウィジェットのリセットを行なってもリソース値が有効にならない場合は、シェルをリセットしてください。シェルのリセットを行なっても意図通りに動作しない場合には、第 27 章「ウィジェット・リファレンス」を参照してください。単一の効果を得るために、2 個以上のリソースの設定が必要な場合もあります。たとえば、ラベルまたはボタンにピックスマップを表示するためには、「ピックスマップ」リソースを設定して使用するピックスマップを指定し、「種類」リソースを「ピックスマップ」に設定する必要があります。
状況: ウィジェットのコアリソースパネルの幅と高さのリソースが書き換えられる。
原因と対応:
ウィジェットの幅と高さのコアリソースは、ウィジェットクラスに固有のリソースによって、あるいはウィジェットの親の物理的条件の規則によって書き換えられる場合があります。ウィジェットおよびそのサイズを制御している可能性がある親については、第 27 章「ウィジェット・リファレンス」、あるいは Motif のマニュアルを参照してください。
原因と対応:
シェルの幅と高さのコアリソースは、シェルの子の対応しているリソースによって書き換えられる場合があります。ダイアログのサイズを制御する1つの方法は、シェルの子の幅と高さのリソースを設定することです。もう1つの方法は、シェルの最小幅と最小高さのリソースを設定することです。これは子によって書き換えられません。
原因と対応:
シェルの X と Y 位置リソースは、シェルの子がブリテンボード、あるいはフォーム、ダイアログテンプレート、またはメッセージボックスなどのブリテンボード派生物である場合は、シェルの子のリソースによって書き換えられる場合もあります。シェルの
X
と
Y
位置リソースを使用してダイアログの位置を制御するためには、ブリテンボードの「デフォルトの位置」リソースを「いいえ」に設定します。
状況: リソース設定はリソースパネル上で受け入れられたが、ウィジェットをリセットしてもリソース設定がダイナミックディスプレイに反映されない。
原因: 一部のリソースは、ウィジェットが最初に作成された際にのみ設定され、ウィジェットがダイナミックディスプレイに追加されてしまうと変更することはできません。これらのリソースには、「スクロール方針」などのスクロールバーに関連するさまざまなリソースが含まれます。Sun WorkShop Visual ではリソースパネル上の値の変更を認めていますし、また、値がダイナミックディスプレイに反映されない場合であっても、実行時には新しい設定が有効になります。個々のリソースについては、『 Motif プログラマーズ・ガイド』を参照してください。
原因: ブリテンボードおよびブリテンボードから派生したウィジェットクラスの「ダイアログのスタイル」リソースは、「モードなし」、「システムモード付き」または「アプリケーションモード付き」に設定することができます。モード付きダイアログは、ユーザーからの答えを受け取るまでは他のすべてのダイアログを使用不能にします。したがって、「システムモード付き」または「アプリケーションモード付き」の設定が、ダイナミックディスプレイで有効である場合は、ダイナミックディスプレイを閉じるまでは、ユーザーは何もできなくなります。これらの設定のひとつを選択することは可能ですが、Sun WorkShop Visual は、ユーザーが階層を構築している間は設定を使用しません。しかし、生成されたコードは設定を正しく使用します。
対応: デザインの中にこの種類のリソースがある場合は、デザインが完了してコードを生成した後にのみ最終結果を確認することができます。以下に示す手順を使用してコードを生成し、プロトタイプを実行することにより、途中の段階で結果を確認することができます。
状況: デフォルトのフォント設定を持つウィジェットが、ダイナミックディスプレイにおいて意図したフォントを表示しない。
原因: ウィジェットが明示的なフォント設定を持たない場合、Motif はデザイン階層をさかのぼって検索を行い、ウィジェットに最も近いブリテンボード、ブリテンボード派生物あるいはシェルの祖先を探し出します。そして現在のウィジェットにその祖先のフォント設定を適用します。したがって、いくつかのボタンがすべてデフォルトのフォント設定を持っていて、それらが異なるブリテンボードの子である場合は、ボタンによって異なるフォントが表示されることもあります。
対応: 個々のウィジェットにではなく、ブリテンボードまたはシェルにフォントを設定すると、すべてのフォントを一度に簡単に設定することができます。統一性を得るためには、明示的なフォント設定により、すべての親に同じフォントを使用する必要があります。この場合、フォントオブジェクトを使用すると、簡単に実行することができます。
状況: ブリテンボード、ブリテンボード派生物、あるいはシェルでのフォントの変更が、子に影響しない。
原因と対応:
親ウィジェットの新しいフォント設定は、親ウィジェットをリセットするまで子には影響しません。親ウィジェットをリセットしてください。
原因と対応:
子が明示的に行われたフォント設定を独自に持っている場合は、親ウィジェットのフォント設定は子に影響しません。子のフォント設定をデフォルトにしてください。
状況: ダイアログテンプレートが、メニューバーにカスケードボタンを収めるようにサイズ変更しない。
原因: これは、Motif の一部のバージョンに見られるバグです。ダイアログテンプレートはボタンボックスおよび作業領域が収まるように、適切にサイズ変更を行いますが、メニューバーがボタンボックスと作業領域の幅よりも広い場合は、切り捨てられます。
対応: カスケードボタンをメニューバーに追加する前に、子であるボタンボックスおよび作業領域をダイアログテンプレートに追加します。たいていの場合、作業領域またはボタンボックスの幅はメニューバーを収めるために十分な幅を作成します。
対応: メニューバーの幅が広すぎて表示できない場合は、作業領域としてフォームを使用する、あるいはフォーム内に作業領域を配置します。その後、配置エディタを使用して作業領域の周辺に余分のスペースを追加します。
対応: コアリソースパネルの「幅」リソースを設定することにより、ダイアログテンプレートを強制的に幅広くすることができます。
本節では、配置エディタ使用時の問題を説明します。配置エディタでの問題の多くは、フォームをリセットすることで解決できます。
状況: ウィジェットが極端に小さくなったり、大きくなったりする。
原因と対応:
Motif の一部のバージョンには、フォームがダイアログテンプレートの子である場合に、フォームにバグが現れるものがあります。この場合、フォームをリセットすると、フォーム内のコンテナウィジェットが極端に小さくなります。この問題が発生した場合は、フォームではなくダイアログテンプレートをリセットすると、適切な表示が行われます。ダイアログテンプレートのリセットを行うには、まず、配置エディタ画面から Sun WorkShop Visual メイン画面に移動し、構成領域からダイアログテンプレートを選択した後、「リセット」コマンドを指定します。配置エディタでの作業を再開するには、最初に構成領域でフォームをもう一度選択します。
原因と対応:
アタッチメントがウィジェットのサイズを変更する場合があります。たとえば、ウィジェットの端をフォームの対応する端にアタッチすると、そのウィジェットは強制的にフォームの幅または高さいっぱいに広げられます。次に、フォームをリセットしてください。フォームのリセットが効果を持たない場合は、ウィジェットからいくつかのアタッチメントを取り除き、再度リセットを行なってください。
アタッチメントを取り除く方法を以下に示します。詳細は、第 4 章「配置エディタ」を参照してください。
状況: アタッチメントを作成した後に「循環依存」メッセージが表示される。
原因と対応:
2 個以上のウィジェットに影響する循環を引き起こすようなアタッチメントを追加する場合、Motif は循環を検出してエラーメッセージを返します。その場合は、「元に戻す」をクリックしてください。それでもエラーメッセージが表示される場合は、配置にアタッチメントループがあるかどうかを注意して調べて、アタッチメントの 1 つを取除きます。
状況: アタッチメントを作成した後に「脱出」メッセージが表示される。
原因と対応:
この Motif メッセージは、循環していない、互いに矛盾するアタッチメントが配置に含まれていることを示します。通常は「自己」または「位置」アタッチメントに発生します。「元に戻す」を選択するかウィジェットを移動して矛盾するアタッチメントを取り除き、フォームをリセットしてください。
状況: フォームの端にあるウィジェットが、フォームの境界線に入り込む。
原因: その端がフォームの端と一致するウィジェットは、フォーム周辺に描かれた線と重なり、線が分断されてしまいます。これは、フォームがシェルの直接の子である場合にのみ発生します。以下の 3 通りの場合に、フォームは重なり合いの問題を引き起こします。
対応: オフセットを 2 ピクセル以上にして、ウィジェットをフォームにアタッチメントで接続します。明示的オフセットを使用することもできますが、フォームの垂直および水平間隔リソースを、オフセット値に設定してデフォルトオフセットを使用することもできます。配置の下および右側のウィジェットが、2 ピクセル以上のオフセットまたは間隔で接続されるようにします。
対応: フォームを別のフォームあるいはダイアログテンプレートなどの他のマネージャウィジェットの中に配置します。この方法が最も簡単で柔軟性のある対処法です。
本節は、ウィジェットメニューの「リンク編集」コマンドを使用する場合に生じる可能性のある問題を説明します。リンクのその他の情報については、次の節の「コード生成」を参照してください。
原因と対応:
リンク機能を使用するには、ターゲットウィジェットに明示的な変数名が必要です。ターゲットウィジェットがシェルである場合、直接の子もまた明示的な名前を持っている必要があります。Sun WorkShop Visual では、明示的な名前が見つからない場合に「追加」オプションをグレー表示します。適切なウィジェットに名前を付けてください。
状況: 動作していたリンクが停止する。「リンク編集」ダイアログには、アイコンの代わりに空白スペースが表示される。
原因と対応:
ウィジェットの名前を変更した場合、Sun WorkShop Visual はそのウィジェットを参照するリンクを自動的に更新しないため、リンクの機能が停止します。使用しなくなったリンクを取り除き、新しいリンクで置き換えます。
状況: リンクパネルが、リソースパネルのように動作しない。あるボタンのリンク編集をしてから別のボタンを選択した際に、「リンク」パネルは以前に選択されたボタンからのリンクをそのまま表示している。
原因: Sun WorkShop Visual は、新しいウィジェットが選択されると、そのウィジェットを以前に選択されたボタンの新しいリンクになる可能性があるターゲットウィジェットであると解釈します。
対応: ウィジェットメニューをプルダウンして再度「リンク編集」を選択し、2 番目のボタンのリンクを表示して編集します。最初にリンクパネルを閉じる必要はありません。
本節では、コード生成時に発生する可能性のある問題を説明します。これらの問題は、Sun WorkShop Visual が柔軟性のあるファイル配置を提供しているために生じるものもあります。たとえば、1 個のファイルにおいてのみリンク関数を生成する、あるいは必要とされるファイルにおいてインクルードを生成することなどを徹底してください。「ファイルの整理」を参照してください。
状況: main() プログラム内で基本モジュールを生成しようとする場合に、Sun WorkShop Visual が「アプリケーションシェルがありません」という警告メッセージを表示します。
原因と対応:
デザインに必要なアプリケーションシェルが含まれていません。デザインのメインウィンドウのシェルに対するリソースパネルを起動し、「アプリケーションシェル」トグルをクリックして、「適用」をクリックしてください。
原因と対応:
基本モジュールを使用してリンクを生成する場合は、リンクに対しての実際のコード (リンク関数) を基本モジュールまたはスタブファイルのどちらかのコードファイルの1 つに生成する必要があります。リンク関数は、確実に適切なファイルに生成してください。
状況: スタブファイルのコンパイル時に、大域的ウィジェットが定義されない。
原因と対応:
大域ウィジェットおよびオブジェクトの宣言は、基本モジュールに生成されますが、スタブファイルには行われません。これらを宣言するヘッダーファイルを生成するためには、「外部宣言」オプションを使用して、結果として生じたヘッダーファイルをコールバックと一緒にインクルードします。この方法は、エラーが少なくなり、成功する可能性が高いため、独自の外部宣言の作成や、基本モジュールに生成された外部宣言のコピーを行う方法よりも適切であると言えます。外部宣言ファイルは、デザイン内での変更を反映するために必要である場合は、再生成することができます。
状況: 生成されたアプリケーションが、生成された X リソースファイルからリソース値を使用しない。たとえば、ラベルやボタン上にラベル文字列の代わりに変数名が表示される、色やフォントが正しくない、など。状況は、X リソースファイルに生成されたリソースファイル、およびハードワイヤされたリソースファイルに依存します。
原因と対応:
コードを再生成した際に、X リソースファイルの再生成が行われませんでした。デザインでウィジェットを追加あるいは削除した場合は、デフォルトウィジェット名が変更され、生成された X リソースファイルでのウィジェット名と対応していない可能性があります。X リソースファイルを再生成してください。
原因と対応:
アプリケーションの実行時に、X は X リソースファイルを見つけることができません。X リソースファイルの名前変更が必要な場合があります。通常は、アプリケーションクラスと同じ名前で、接尾辞を付けません。詳細は、X のマニュアルを参照してください。
原因と対応:
異なるアプリケーションクラス名が生成されたコードファイルおよび X リソースファイルに使用されているため、X はファイル内でウィジェット名を識別することができません。両方に同じアプリケーションクラスが使用されるように、アプリケーションおよび X リソースファイルを再生成します。システムでアクセスする可能性のあるその他のリソースとの混乱を避けるため、固有のアプリケーション名を使用してください。
状況: 実行時の色、フォント、あるいは他のリソースが、ダイナミックディスプレイでのリソースと異なる。
原因: ダイナミックディスプレイに表示されるリソースには、Sun WorkShop Visual から継承されるものがあります。リソースパネルで明示的に設定されていない場合は、プログラムを実行するプラットフォームによって、これらのリソースは実行時に他のリソースからの値を継承する可能性があります。
対応: 確実に正確な色やフォントを使用するためには、リソースパネル上でそれらの値を明示的に設定します。前景および背景の色は、デザインの各シェルに設定することができ、シェルのすべての子が設定を継承します。フォントはブリテンボード、ブリテンボードの派生物、あるいはシェルに設定することができ、そのすべての子に適用されます。
リソース値は、共通の名前を持つウィジェット間で共有することができますが、共有できるのはそれらのリソース値が X リソースファイルからリソースデータベースに読み出される場合に限られています。以下の規則が適用されます。
状況: 実行時のリソース値がダイナミックディスプレイの値とは異なる。リソースが X リソースファイルに生成される場合、結果はハードワイヤされた場合とは異なる。
原因: これらは、ウィジェットがウィジェット名を共有する場合に予想される結果です。ダイナミックディスプレイとハードワイヤされたリソース設定は、共通ウィジェット名を無視します。しかし、X リソースファイルに生成されたリソースは、共通ウィジェット名を持つすべてのウィジェットに影響します。
状況: リソースが X リソースファイルに生成されているにも関わらず、共通ウィジェット名を持つウィジェットが色またはフォントを共有しない。
原因と対応:
色またはフォントは、色またはフォント設定の代わりにオブジェクトバインディングを使用しました。単純な色またはフォント設定を使用するか、値を共有するウィジェットの共通の親にリソースを設定してください。
状況: 明示的に設定したリソース値が、実行時に書き換えられる。
原因: ウィジェットがウィジェット名を共有し、リソースが X リソースファイルに生成される場合、複数の値が設定されていても 1 個だけの値が使用される。
対応: ウィジェットにすべてのリソース値を共有させない限り、ウィジェット名を共有させないでください。対応策としては、手作業でリソース値を強制的に単一のウィジェットに制限することができます。その場合は、リソースパネルのマスクトグルを使用します。
Sun WorkShop Visual 再現、捕獲機能に関して、頻繁に問い合わせのある内容について説明します。
ご自身で作成したソフトウェアを記録および再現できない場合は、そのソフトウェアが libXt.so を使用するように再度リンクを行なってください。
すべての「位置に敏感な」Motif ウィジェットの記録および再現には、特別な Sun WorkShop Visual 再現 ルーチンが使用されます。このようなルーチンのソースコードは、 src/examples/replay/libcvtXm ディレクトリにあります。
XmText および XmTextField に対する変換ルーチンは、デフォルトでは構築されません。テストという目的に関しては、ほとんどの場合、テキストフィールドを単なるデータ入力フィールドと見なし、内容を自由に置き換えるようにするだけで十分です。
doubleclick mytextwidget
type halloworld
doubleclick mytextwidget( position, 25)
type halloworld
また、特定の位置の文字をダブルクリックすることで、すべてのテキストが選択されるかどうかを確認することは、困難でもあります。
テストによっては、テキストフィールドの内容を変更する場合もあります。重要なものはテキストウィジェットの名前であって、その中に入力する値ではありません。
アプリケーション内で XmText ウィジェットの編集機能をテストしたい場合は、 cc コマンドに -DHANDLE_TEXT オプションを追加して libcvtXm ディレクトリを再構築する必要があります。次に、共有オブジェクト libcvtXm.so を lib/xds にコピーして標準のライブラリを上書きしてください。
Sun WorkShop Visual 再現アプリケーションは、再現しようとしているアプリケーションが Motif ではないと判断した場合には終了します。
-O オプションを使用すると、Motif 以外のアプリケーションを再現しようとした場合にも Sun WorkShop Visual 再現アプリケーションは終了せず、強制的にそのアプリケーションの機能を再現することができます。
デフォルトでは、Sun WorkShop Visual 再現機能は 1 番目のアプリケーションシェルを記憶し、参照対象として使用します。通常は、最初に表示されたアプリケーションシェルが 1 番目のシェルとして認識されますが、次のようにオプションを指定して、4 番目のシェルを記憶するように変更することができます。
または、環境変数 XDSUSESHELL を次にように設定します。
正しいアプリケーションシェルが使用されている場合は、記録されたログに次にように記述されています。
in ApplicationShell
......
次のように記述されている場合は、正しいアプリケーションシェルが参照対象として使用されていない可能性があります。
in myapp
ただし、記録したアプリケーションに、マップされていないアプリケーションシェルがあり、かつ最上位シェルが複数存在する場合は、上述の例でも問題はありません。
現在の設定が正しくない場合は、 -use オプションで現在よりも大きな値を指定します。本当のアプリケーションシェルが何番目のシェルか確認できない場合は、すべてのアプリケーションシェルを無視するように設定します。このように設定すると、いずれのアプリケーションシェルも記録、再現、捕獲されません。
このような場合にはデザインを捕獲することはできますが、再現することはできません。
この場合、デフォルトでは、Sun WorkShop Visual 再現アプリケーションは異常終了します。 -O オプションを指定すると、この設定は変更することができます。ただし、Motif に依存する機能は、記録または再現することができません。
捕獲機構では、捕獲したデザインのファイルを Sun WorkShop Visual の .xd 形式で作成します。つまり、標準の Sun WorkShop Visual が使用されていて、Motif 以外のウィジェットが追加されていないと仮定しています。デフォルトでは、Motif 以外のウィジェットは、捕獲ファイルの中では Motif の描画領域ウィジェットに置き換えられています。
使用できます。テキストフィールドに入力されたテキストの内容が記録され、テキストの入力がそのまま再現されます。この機能は、Motif のテキストウィジェットおよびテキストフィールドウィジェットに対してのみ有効であるように設定されています。設定ソフトウェアは、以下の場所にあります。
src/examples/replay/motif/motif4.c
また、このソフトウェアを登録するための機構は、以下のとおりです。
src/examples/replay/motif/register.c
入力メソッドによっては、このルーチンにアクセスできる場合があります。デフォルトの動作は「ウィジェットの中にある文字列にアクセスする」です。
Control + Space キーは、入力メソッドに対する作成要求にハードワイヤされています。また、代替手段の "compose" キーシムのリソースが、デフォルトで変換キーに設定されています。
たとえば、作成キーが F3 キーである入力メソッドを持つソフトウェアを記録する場合は、次のように設定してソフトウェアを実行してください。
-xrm *xdsImComposeKeySym:F3
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |