Trusted Solaris 開発ガイド

フォントリストによるラベルの変換

次の例は、プロセスの機密ラベルを取得し、フォントリストとピクセル幅を使用してその機密ラベルを ASCII に変換します。また、ラベルの文字列を使用して、ラベルウィジェットを作成します。プロセスの機密ラベルはウィンドウの機密ラベルと同等であるため、特権は必要ありません。

最終文字列が幅より長い場合、文字列はクリップされ、クリップを示すインジケータが使用されます。クリップされた機密ラベルのクリップインジケータの詳細は、「機密ラベルと情報ラベル」および sbsltos(3) のマニュアルページを参照してください。X ウィンドウシステムのラベル変換インタフェースは指定されたピクセル数にクリップし、ラベルのクリッピングインタフェースは指定された文字数にクリップします。

サイトが label_encodings ファイルを英語以外の言語で使用する場合、ISO 8859-1 文字セットの 128 以上の文字コードをもつアクセント文字は変換されない場合があります。このプログラム例では、アジア諸国の文字セットは変換されません。

	retval = getcmwplabel(&cmwlabel);
 	getcsl(&senslabel, &cmwlabel);

/* フォントリストを作成して、ラベルを変換する */
 	italic = XLoadQueryFont(XtDisplay(topLevel),
 															"-adobe-times-medium-i-*-*-14-*-*-*-*-*-iso8859-1");
 	fontlist = XmFontListCreate(italic, "italic");
 	xmstr = Xbsltos(XtDisplay(topLevel), &senslabel, width, fontlist, LONG_WORDS);

/* フォントリストとラベルテキストを使用して、ラベルウィジェットを作成する */
 	i=0;
 	XtSetArg(args[i], XmNfontList, fontlist); i++;
 	XtSetArg(args[i], XmNlabelString, xmstr); i++;
 	label = XtCreateManagedWidget(													"label", xmLabelWidgetClass, form, args, i);

斜体で示された機密ラベル文字列と非斜体のラベル「Launch an application (アプリケーションの起動)」のソースコードは、「コード」に示されています。次の図に示すようにラベルウィジェット内で斜体の機密ラベル文字列を表示するには、任意のコマンド行引数を指定してこのアプリケーションを起動してください。

図 15-2 斜体のラベルテキスト

Graphic