この章では、ヘルプ・ダイアログ・ウィジェットとその作成方法を説明します。
ヘルプ・システムは、アプリケーション・プログラマに対して、ヘルプ・ダイアログ・ボックスをすべての OSF/Motif アプリケーションに追加するプログラミング・ライブラリを提供します。
一般ヘルプ・ダイアログには、メニュー・バー、トピック・ツリー、ヘルプ・トピック表示領域があります。トピック・ツリーには、ヘルプ・ボリュームのトピックとサブトピックが表示されます。ユーザは、表示するトピックを選択したり、使用可能なトピックをブラウズしたり、トピックがヘルプ・ボリュームのどこにあるかを見つけるために、トピック・ツリーを使用します。
簡易ヘルプ・ダイアログには、トピック表示領域と、下部に 1 つ以上のダイアログ・ボタンがあります。
プログラミングの点から見ると、ユーザは、アプリケーション内の他の OSF/Motif ウィジェットと対話するのと同じようにヘルプ・ダイアログと対話します。2 種類のヘルプ・ダイアログ・ボックスは、 2 つの新しいウィジェット・クラス (DtHelpDialog と DtHelpQuickDialog) として定義されます。
ボリューム名、トピック ID などのほとんどのヘルプ・ウィンドウの属性は、ウィジェット・リソースとして処理されます。たとえば、新しいトピックを表示するには、DtNhelpVolume、DtNlocationId、DtNhelpType の各リソースを設定するために XtSetValues() 呼び出しを実行するだけです。詳細は、「ヘルプ・トピックの表示」を参照してください。
ヘルプ・システムをアプリケーションに統合するには、C プログラミング言語、OSF/Motif プログラマ・ツールキット、Xt イントリンシクス・ツールキットに関する実用的な知識が必要です。
一般ヘルプ・ダイアログには、トピック・ツリーとトピック表示領域の 2 つの表示領域があります。トピック・ツリーは、スクロールできるヘルプ・トピックのリストを提供しています。常にホーム・トピックのタイトルが 1 番目の項目になります。ユーザがタイトルを選択すると、そのタイトルに矢印 (=>) が付き、そのヘルプ情報がトピック表示領域に表示されます。図 9-1 に、一般ヘルプ・ウィンドウのトピック・ツリーとトピック表示領域を示します。現在のトピック「To select a palette」が表示されます。
一般ヘルプ・ダイアログには、[前のトピックへ]、[ヒストリ]、[索引] の 3 つのダイアログ・ボタンがあります。これらのコマンドはヘルプ・メニューでも使用できます。ヘルプ・ダイアログとグラフィカル・ユーザ・インタフェースの概要については、「ヘルプ・ユーザ・インタフェース」を参照してください。
適切なヘッダ・ファイルを指定します。
#include <Help.h> #include <HelpDialog.h>
一般ヘルプ・ダイアログ・ウィジェットのインスタンスを作成します。
DtCreateHelpDialog() 簡易関数
または XtCreateManagedWidget() 関数を使用します。
ダイアログ内で発生するハイパーリンク・イベントを処理するためのコールバックを追加します (詳細は、「ハイパーリンク・イベントへの応答」を参照してください)。
Close コマンドを処理するためのクローズ・コールバックを追加します。
次のコード・セグメントは、簡易関数を使用して一般ヘルプ・ダイアログを (parent の子として) 作成します。ダイアログは管理されていません。ヘルプが要求された時点で何かのアプリケーションで管理されます。
Widget mainHelpDialog, moreButton, helpButton; ac = 0; XtSetArg (al[ac], XmNtitle, "My Application - Help"); ac++; XtSetArg (al[ac], DtNhelpVolume, "My Help Volume"); ac++; XtSetArg (al[ac], DtNlocationId, "Getting Started"); ac++; XtSetArg (al[ac], DtNhelpType, "DtHELP_TYPE_TOPIC"); ac++; mainHelpDialog = DtCreateHelpDialog (parent, "mainHelpDialog", al, ac);
次の 2 つの呼び出しは、ダイアログにハイパーリンクとクローズ・コールバックを追加します。通常、関数 HyperlinkCB() と CLoseHelpCB はアプリケーションのどこかで宣言されます。
XtAddCallback (mainHelpDialog, DtNhyperLinkCallback, HyperlinkCB, (XtPointer)NULL); XtAddCallback (mainHelpDialog, DtNcloseCallback, CloseHelpCB, (XtPointer)NULL);
DtCreateHelpDialog(3) のマニュアル・ページ
DtHelpDialog(3) のマニュアル・ページ
簡易ヘルプ・ダイアログ・ボックスは、オンライン・ヘルプの第一目標であるユーザができるだけ早く、またうまく作業に戻れることが達成されるように設計されています。このシンプルなユーザ・インタフェースにより、ユーザは情報に集中できます。ダイアログの情報は、ユーザが読んだ後に消してしまっても作業が続けられるように、便利なものでなければなりません。
簡易ヘルプ・ダイアログには 5 つのボタンがあり、そのうち 4 つが管理されています。残りのダイアログ・ボタンは構成可能なので、このボタンは希望に合わせて使用できます。しかし、その目的としては次の 2 つの方法のどちらかでヘルプへのパスを提供することです。
ユーザがより詳しい情報を探せるようにします。この場合、デフォルト・ボタン・ラベル (More) が適切です。これは「段階的な表示」と呼ばれます。
アプリケーションのヘルプ・ボリュームを通常どおりブラウズするために一般ヘルプ・ダイアログを開けるようにします。この場合、「Browse...」が最も適切なボタン・ラベルになります。
開発者用ツールキットには簡易関数 DtHelpQuickDialogGetChild() が含まれています。この関数は、どの簡易ヘルプ・ダイアログ・ボタンにも対応するウィジェット ID を決定します。
#include <Help.h> #include <HelpQuickD.h>
簡易ヘルプ・ダイアログ・ウィジェットのインスタンスを作成します。
DtCreateHelpQuickDialog() 簡易関数
または XtCreateManagedWidget() 関数を使用します。
ダイアログ内で発生するハイパーリンク・イベントを処理するためのコールバックを追加します (詳細は、「ハイパーリンク・イベントへの応答」を参照してください)。
[了解] ボタンを処理するためのクローズ・コールバックを追加します。
使用するダイアログ・ボタンを構成します。
アプリケーション定義のボタンを使用するには、ボタンを管理してアクティブ・コールバックを追加します。
印刷を許可しないようにするには、[印刷] ボタンを管理しないでください。
ユーザが「ヘルプの使い方」を使用できるように、[ヘルプ] ボタンを管理してダイアログへのヘルプ・コールバックを追加します。
次のコード・セグメントは、簡易関数を使用して簡易ヘルプ・ダイアログを (parent の子として) 作成します。ダイアログは管理されていません。通常、ヘルプが要求された時点でアプリケーションのどこかで管理されます。この例では、アプリケーション定義のボタンが使用可能になっており、ヘルプをさらに要求するために使用します。
Widget quickHelpDialog, moreButton, helpButton;
ac = 0; XtSetArg (al[ac], XmNtitle, "My Application - Help"); ac++; XtSetArg (al[ac], DtNhelpVolume, "My Help Volume"); ac++; XtSetArg (al[ac], DtNlocationId, "Getting Started"); ac++; XtSetArg (al[ac], DtNhelpType, "DtHELP_TYPE_TOPIC"); ac++; quickHelpDialog = DtCreateHelpQuickDialog (parent, "quickHelpDialog", al, ac);
次の 2 つの呼び出しは、ダイアログにハイパーリンクとクローズ・コールバックを追加します。通常、関数 HyperlinkCB() と CloseHelpCB() はアプリケーションのどこかで宣言されます。
XtAddCallback (quickHelpDialog, DtNhyperLinkCallback, HyperlinkCB, (XtPointer)NULL); XtAddCallback (quickHelpDialog, DtNcloseCallback, CloseHelpCB, (XtPointer)NULL);
ここでアプリケーション定義のボタンが管理され、アプリケーションの MoreHelpCB() 関数を起動する起動コールバックが割り当てられます。
moreButton = DtHelpQuickDialogGetChild (quickHelpDialog, DT_HELP_QUICK_MORE_BUTTON); XtManageChild (moreButton); XtAddCallback (moreButton, XmNactivateCallback, MoreHelpCB, (XtPointer)NULL);
「ヘルプの使い方」を提供するために、ダイアログの [ヘルプ] ボタンが管理され、ダイアログにヘルプ・コールバックが追加されます。
helpButton = DtHelpQuickDialogGetChild (quickHelpDialog, DT_HELP_QUICK_HELP_BUTTON); XtManageChild (helpButton); XtAddCallback (quickHelpDialog,DtNhelpCallback, HelpRequestCB, USING_HELP);
他の OSF/Motif ダイアログと同様に、簡易ヘルプ・ダイアログにヘルプ・コールバックを追加すると、[F1] キーと [ヘルプ] ボタンのどちらからでも簡易ヘルプ・ダイアログが使用できます。
DtCreateHelpQuickDialog(3) のマニュアル・ページ
DtHelpQuickDialog(3) のマニュアル・ページ
DtHelpQuickDialogGetChild(3) のマニュアル・ページ
ヘルプ・システムに関連するマニュアル・ページは次のとおりです。
ダイアログの作成と操作のための関数
DtHelp(5) DtHelpDialog(5) DtHelpQuickD(5) DtCreateHelpDialog() DtCreateHelpQUickDialog() DtHelpQuickDialogGetChild()
項目ヘルプ・モードの実現のための関数
DtHelpReturnSelectedWidgetId()
ヘルプ・ライブラリにメッセージ・カタログを指定するための関数
DtHelpSetCatalogName()
ヘルプ・ボリュームの作成および表示のためのアプリケーションとアクション
dthelptag(1) dthelpview(1) dthelpgen(1) dthelpaction(5) dtmanaction(5)
文書型定義
dthelptagdtd(4) dtsdldtd(4)