# オプションの統合方法

この章で説明する共通デスクトップ環境のコンポーネントによって、特殊な タスクを実行するためにデスクトップが提供するサービスを使用することができます。

RDMAP.optin.mkr.2
RDMAP.optin.mkr.3
RDMAP.optin.mkr.4
RDMAP.optin.mkr.5
RDMAP.optin.mkr.6
RDMAP.optin.mkr.7
RDMAP.optin.mkr.8
RDMAP.optin.mkr.8a
RDMAP.optin.mkr.9

この節で説明するコンポーネントの統合方法以外に、 RDMAP.BIntg.mkr.1で概説 する基本的な統合方法に関する指示にも従ってください。 RDMAP.recin.mkr.1で説明するコンポーネント は、アプリケーションを高度にデスクトップと統合できるようにするのに重要です。

オプションの統合方法の詳細については、プログラマーズ・ガイド を参照してください。

## 共通デスクトップ環境Motifコントロール・ウィジェット

共通デスクトップ環境Motif
コントロール・ウィジェットは、共通デスクトップ環境Motifに同等の機能を提供する ことにより、
OPEN LOOKおよび
Microsoft Windowsのアプリケーションを、共通デスクトップ環境へ移植しやくすくするよう設計 されています。共通デスクトップ環境Motifウィジェット・ライブラリ `libDtWidget`には、すべての共通デスクトップ環境アプリケーション に共通する機能を提供するのに使用するウィジェットと関数が含まれています。 ウィジェットが提供するものは次のとおりです。

- テキスト・フィールドおよび矢印 ボタン・ウィジェット(`DtSpinBox)
  `

### テキスト・フィールドおよび矢印ボタン・ウィジェット (`DtSpinBox`)の例

- テキスト・フィールドおよびリスト・ ボックス・ウィジェット(`DtComboBox)
  `

### テキスト・フィールドおよびリスト・ボックス・ウィジェット (`DtComboBox`)の例

- メニュー・ボタン・ウィジェット (`DtMenuButton)
  `

### メニュー・ボタン・ウィジェット(`DtMenuButton`) の例

共通デスクトップ環境のMotifウィジェット・ライブラリ `libDtWidget`は、共通デスクトップ環境のアプリケーションと OPEN LOOKアプリケーションとの間の操作性をサポートします。つまり、カット、コピー、 ペースト、マウス・ボタン機能など、OPEN LOOKが行うのと同じ方法で動作する アプリケーションを作成することができます。

共通デスクトップ環境は、
すべてのMotifウィジェットをサポートします。

## 共通デスクトップ環境コントロール・ウィジェット

`ウィジェット名` | `説明`
`DtSpinBox` | 数値を増減するか、ブラウズしてテキスト 文字列のリストから選択するためのコントロールを持つ`TextField` ウィジェット
`DtComboBox` | `TextField`と、 `TextField`に有効な選択項目のリストを提供するポップアップ・ リスト・ウィジェットとの組み合わせ
`DtMenuButton` | メニュー・バー、メニュー区画（プルダウン・ メニュー、ポップアップ・メニュー、オプション・メニュー）以外の `XmCascadeButton`ウィジェットの機能を階層化するメニュー機能を 提供するコマンド・ウィジェット

### ライブラリおよびヘッダ・ファイル

ライブラリ`libDtWidget`は、`DtSpinBox`、 `DtComboBox`、`DtMenuButton`ウィジェットへの アクセスを提供します。 これらのウィジェットの`libDtWidget` ヘッダ・ファイルは次のとおりです。

- `Dt/SpinBox.h`

- `Dt/ComboBox.h`

- `Dt/MenuButton.h`

### デモ・プログラム

共通デスクトップ環境Motifコントロール・ウィジェットのデモは、 `/usr/dt/examples/dtwidget`にあります。デモの詳細については、 `README`ファイルを参照してください。

#### 関連マニュアル

共通デスクトップ環境Motifコントロール・ウィジェットの詳細については、関連 するマニュアル・ページとプログラマーズ・ガイドを参照して ください。

## データ型の作成

アプリケーションの基本的な統合方法を実行するとき、データ型を定義できます。 この節では、データ型作成の別の面、つまりアクションおよびデータ型のデータベース から情報を抽出する方法に焦点を当てて説明します。

データ型を作成すると、従来の
UNIXファイル・システムが提供するファイルとデータの属性が拡張されます。この拡張 には、型や属性管理も含まれます。アプリケーションが外部ソースからデータを受信し て動作する場合は、データ型作成APIを使用します。たとえば、アプリケーションで アイコンを表示したり、システム全体に定義されているアクションを実行したりする 必要があるかもしれません。

データ型作成は、次の２つの部分から成ります。

- データ基準およびデータ属性を格納 するデータベース

- データベースを照会するルーチンの集まり

データ型作成システムは、基準のセットに基づいたファイルまたはバイト・ベクタ の型を決定します。基準には名前、アクセス権、シンボリック・リンク値、内容が含まれ ます。型に関連付けられた属性は、説明、グラフィカルに説明を示すアイコン、説明に 適用されるアクションを含んだ、ユーザが見ることができるインタフェースを記述します。 また、属性はデータが準拠する互換フォーマットに名前をつけるためにも存在します。

共通デスクトップ環境のファイル・マネージャおよび共通デスクトップ環境の メールのアタッチメント・ウィンドウは、データ型作成によってファイルに関連する アイコンとアクションを決定します。たとえばC ファイル filename.`c`について、ファイル・ マネージャは、.`c`という拡張子を使用してファイルのデータ型 C_SOURCEを判別します。それからC_SOURCEを使用して、 filename.`c`に使用できるアイコン のアイコン・ファイル名を決定します。

### データベースの読み込み

この節では、アクションおよびデータ型データベースを読み込むAPIについて説明 します。このAPIのシンタクスと、開発者が定義する任意の共通デスクトップ環境データ ベースについては、`/usr/dt/man/man4`ディレクトリにある マニュアル・ページで説明しています。

外部データベースを読み込むAPIは、次の２つの関数から成ります。

- `DtDbLoad()`

- `DtDbReloadNotify()`

`DtDbLoad()`はアクションおよびデータ型データベースを 読み込みます。データベース・ファイルを検索するための一連のディレクトリを決定し、 見つけた`.dt`をデータベースに読み込みます。アプリケーションは、 アクションおよびデータ型データベースを照会する任意のルーチンを起動する前に、 `DtDbLoad()`を起動する必要があります。

`DtDbReLoadNotify()`を使用して、アクションおよびデータ 型データベースの再読み込みイベントの通知を要求してください。アプリケーションが、 データベース再読み込みメッセージを受け取ることを登録します。 `
`

アプリケーションは、データベースが変更されたら必ずデータベースを、再読み 込みしなければなりません。アプリケーションを再起動しなくても、更新があったこと をエンド・ユーザにわかるようにするためです。

### データベースの照会

データ・オブジェクトの属性を調べるには、まずオブジェクトの型を決定し、その 型に適切な属性値を求めてください。データベース照会関数により、データ型および 属性の検索、メモリの解放、データベースの読み込みと解放などのオペレーションを実行 できます。これらの関数については、プログラマーズ・ガイド および`man3`ディレクトリにあるマニュアル・ページで説明してい ます。

### ライブラリおよびヘッダ・ファイル

デスクトップ・サービス・ライブラリ`libDtSvc`は、データ型 作成を含む多くのデスクトップAPIへのアクセスを提供します。データ型作成APIに アクセスするには、`Dt/Dt.h`および`Dt/Dts.h` ヘッダ・ファイルを取り込んでください。

アプリケーションが任意のデータ型作成APIを使用する場合、またはアクション およびデータ型データベースを読み込む場合は、まず `
DtInitialize()`または`
DtAppInitialize()`のいずれかを呼び出して、`libDtSvc` ライブラリを初期化してください。詳細については、`DtInitialize` (3)または`DtAppInitialize`(3)のマニュアル・ページを参照してく ださい。

### デモ・プログラム

データ型作成のデモは、`/usr/dt/examples/dtdts`にありま す。デモの詳細については、`README`ファイルを参照してください。

#### 関連マニュアル

データ型作成の詳細については、関連するマニュアル・ページと プログラマーズ・ガイドを参照してください。

## アクションの起動

アクション起動APIにより、アプリケーションは、ファイルまたはバッファの 引き数上でデスクトップのアクションを起動できます。アクション引き数の `Class`、`Type`、`Mode`、 `Number`に基づいて、ファイルまたはバッファに対して適切な アクションを選択します。 たとえば[開く]アクションは、GIFファイルに対しては イメージ・ビューアを、複雑なドキュメントに対してはワープロを、通常のASCII ファイルに対しては単純なテキスト・エディタを起動します。アプリケーションは、 アクションの選択や起動の詳細に関与する必要がありません。

アクション起動APIを使用すると、アプリケーションは、デスクトップの他の部分 と同じ機能を使用することができます。ユーザにとっては、デスクトップの動作が一定 していることになります。

`libDtSvc`ライブラリのアクション関数は、デスクトップの アクション（[開く]や[印刷]など）をファイルまたはバッファに対して、起動する方法 を提供します。この関数には、アクションの動作を変更できるパラメータが含まれてい ます。アクション起動APIは、次の関数から構成されます。

`DtActionInvoke()` | 引き数に指定したアクションを起動します。 引き数はファイルかバッファです。
`DtActionLabel()` | アクションに関連した、ローカライズ可能な ラベル文字列へのアクセスを提供します。
`DtActionDescription()` | アプリケーションが起動したアクションに 関連する説明情報を含む文字列を返します。
`DtActionExists()` | 指名した名前が既存のアクションに対応する かどうかをチェックするBoolean関数です。
`DtActionIcon()` | 指定したアクションに関連するアイコンの名 前を返します。

### ライブラリおよびヘッダ・ファイル

デスクトップ・サービス・ライブラリ`libDtSvc`は、アクション など多くのデスクトップAPIへのアクセスを提供します。アクションAPIへアクセスするに は、`Dt/Dt.h`および`Dt/Action.h`ヘッダ・ ファイルを取り込んでください。

アプリケーションが任意のアクション起動APIを使用する場合は、まず `
DtInitialize()`または `
DtAppInitialize()`のいずれかを呼び出して`libDtSvc` ライブラリを初期化してください。詳細については、`DtInitialize` (3)または`DtAppInitialize`(3)のマニュアル・ページを参照してく ださい。

### デモ・プログラム

アクション起動のデモは、`/usr/dt/examples/dtaction`に あります。デモの詳細については、`README`ファイルを参照してくだ さい。

#### 関連マニュアル

アクションの詳細については、関連するマニュアル・ページと プログラマーズ・ガイドを参照してください。

## ワークスペース・マネージャ

共通デスクトップ環境のワークスペース・マネージャは、複数のワークスペース をサポートします。各ワークスペースは、仮想画面です。 ウィンドウは１つのワークスペース、すべてのワークスペース、個々のワークスペース の任意の組合せいずれにも配置できます。ユーザは、ワークスペースに対して、動的 な追加、削除、名前の変更を行うことができます。

ワークスペース・マネージャAPIは、ウィンドウが存在するワークスペースを知る のに必要な、またはウィンドウのワークスペースへの配置方法をコントロールするのに 必要な関数をアプリケーションに提供します。さらに、現在のワークスペースがどれで あるかなど、ワークスペース全体の状態の変更内容をアプリケーションが監視できるよう にします。

共通デスクトップ環境では、デスクトップで実行するアプリケーションはワーク スペース・マネージャAPIの使用が必ずしも必要なわけではありません。ワークスペース・ マネージャを知らなくても、ほとんどのデスクトップ・アプリケーションが予想したとお りに実行されます。特に、アプリケーションが１つのメイン・トップレベル・ウィンドウ だけを持ち、ICCCM 1.1および
Motif 1.2に従う場合は、 デスクトップで実行するアプリケーションに対して、共通デスクトップ環境ワーク スペース・マネージャを統合する必要はありません。

ただし、複数のトップ・レベル・ウィンドウを持つ複雑なアプリケーションは、 アプリケーションの状態を正しく保存および復元するために、
セッション・マネージャAPIと共にワークスペース・マネージャAPIを使用する必要が あります。ワークスペース・マネージャAPIにより、アプリケーションは、それぞれの ウィンドウが入っているワークスペースを見つけることができます。また、セッションが 再開したときに正しいワークスペースにウィンドウを表示することもできます。

ワークスペース・マネージャAPIは、次の作業を行います。

- ワークスペースの情報の獲得

- 現在のワークスペースの獲得と設定

- ワークスペースの状態の変更内容のクライアントへの通知

- クライアント向けワークスペース関数の追加と削除

- クライアントが使用しているワークスペースの獲得と設定

- 背景ウィンドウの識別

すべてのワークスペース・マネージャAPI関数は、接頭辞`DtWsm` を共用します。

### ライブラリおよびヘッダ・ファイル

デスクトップ・サービス・ライブラリ`libDtSvc`は、ワーク スペース・マネージャなど多くのデスクトップAPIへのアクセスを提供します。ワーク スペース・マネージャAPIへアクセスするには、`Dt/Dt.h`および `Dt/Wsm.h`ヘッダ・ファイルを取り込んでください。

アプリケーションが任意のワークスペース・マネージャAPIを使用する場合は、 まず、 `
DtInitialize()`または `
DtAppInitialize()`のいずれかを呼び出して`libDtSvc` ライブラリを初期化してください。詳細については、`DtInitialize` (3)または`DtAppInitialize`(3)のマニュアル・ページを参照して ください。

### デモ・プログラム

ワークスペース・マネージャのデモは、 `/usr/dt/examples/dtwsm`にあります。デモの詳細については、 `README`ファイルを参照してください。

#### 関連マニュアル

ワークスペース・マネージャの詳細については、関連するマニュアル・ページと プログラマーズ・ガイドを参照してください。

## 端末エミュレータ・ウィジェット

`DtTerm`ウィジェットは、ANSI X3.64-1979型端末エミュレータ （特に拡張されたDEC VT220仕様の端末）をエミュレートするのに必要な機能を提供 します。端末エミュレータ・ウィジェット・ライブラリ`libDtTerm` は、端末エミュレータ・ウィンドウをGUIに追加するのに使用する `DtTerm`ウィジェットを提供します。端末エミュレータをアプリケー ションに取り込む場合は、共通デスクトップ環境Motifウィジェットを使用して、ポッブ アップ・メニューやスクロール・バーなど表示の拡張機能を追加してください。

共通デスクトップ環境の端末エミュレータは、実行環境の一部ですが、端末として 動作し、デスクトップから従来の端末ベースのアプリケーションへのアクセスを可能に するウィンドウです。`DtTerm`ウィジェットは、デスクトップの実行 時の端末エミュレータ`dtterm`の基礎となるものです。

`libDtTerm`ライブラリには、`DtTerm` ウィジェットを作成、アクセス、サポートするのに便利な一連の関数が入っています。

### ライブラリおよびヘッダ・ファイル

`libDtTerm`ライブラリは、端末エミュレータの設計や、端末 エミュレータ・ウィンドウのGUIへの追加を行うため、Motifに基づいた一連のウィジェット を提供します。

`libDtTerm`のAPIへアクセスするには、 `Dt/Term.h`ヘッダ・ファイルをアプリケーションに取り込んで ください。

### デモ・プログラム

端末エミュレータのデモは、`/usr/dt/examples/dtterm`に あります。デモの詳細については、`README`ファイルを参照してくだ さい。

#### 関連マニュアル

`DtTerm`ウィジェットの詳細については、関連するマニュアル・ ページを参照してください。

デスクトップ端末エミュレータの詳細については、端末エミュレータ・ヘルプ・ ボリューム、関連マニュアル・ページ、ユーザーズ・ガイドを 参照してください。

## テキスト・エディタ・ウィジェット

共通デスクトップ環境のテキスト編集システムは、次の２つのコンポーネントから 成ります。

- `グラフィカル・ インタフェース、アクション・インタフェース、ToolTalkインタフェースによって編集 サービスが行えるようにする、テキスト・エディタ・アプリケーションdtpad` `
  `

- `次の編集サービスに関してプログラム・インタフェースを 提供するエディタ・ウィジェット、DtEditor` `
  `

  - カット＆ペースト

  - 検索と置換

  - 簡単なフォーマット

  - スペルチェック（８ビットのロケール用）

  - 前の編集を元に戻す

  - ASCIIテキスト、マルチバイト・テキスト、データの バッファの入出力をサポートする拡張I/O処理機能

  - ファイルの直接読み取りと書き込みのサポート

Motifテキスト・ウィジェットもプログラム・インタフェースを提供しますが、 システム全体で統一されたエディタを要求するアプリケーションは、 `DtEditor`ウィジェットを使用してください。共通デスクトップ環境 テキスト・エディタおよびメール・プログラムは、エディタ・ウィジェットを使用します。 このウィジェットを次のような場合に、使用してください。

- スペルチェック、元へ戻す、検索/変更 などの`DtEditor`ウィジェットが提供する機能が必要な場合

- ユーザがファイルのデータを読み書きできるようにする場合

- プログラムがテキストの編集をする必要がなくても、 ウィジェットがテキストを制御している場合

### ライブラリおよびヘッダ・ファイル

`DtEditor`ウィジェットは、`libDtWidget` ライブラリにあります。ヘッダ・ファイルは、`Dt/Editor.h`です。

### デモ・プログラム

デモは、`/usr/dt/examples/dtwidget`ディレクトリにあり、 `DtEditor`ウィジェット(`editor.c`)の例が入って います。デモの詳細については、`README`ファイルを参照してくださ い。

#### 関連マニュアル

テキスト・エディタ・ウィジェットの詳細については、関連するマニュアル・ ページとプログラマーズ・ガイドを参照してください。

## カレンダ

共通デスクトップ環境のカレンダは、ネットワーク環境でユーザが時間とリソース をスケジュール調整できるようにする、インフラストラクチャとAPIから成ります。 カレンダGUIは、共通デスクトップ環境の実行環境の一部です。

カレンダは、次の３つから成ります。

- カレンダ・データベースを管理する デーモン

- カレンダを使用するアプリケーションが、デーモンが サポートする機能にアクセスできるように一連のハイレベル関数を定義するカレンダおよ び、スケジュール調整API

- カレンダおよびスケジュール調整APIのライブラリ実装

また、GUIとTTYの両方の対話に対するユーザ・インタフェースを提供します。 システムは、カレンダ項目の入力、削除、変更だけでなく、ブラウズおよび検索機能も サポートします。これらの機能すべてに、ネットワークからアクセスできます。

開発環境は、クライアントがカレンダ・データへアクセスするためのライブラリを 提供します。ユーザが独自のカレンダ項目属性を定義できるように拡張できます。 ライブラリは、データベースの更新を通知するためのクライアント・コールバック機能 を提供します。

カレンダ・デーモンは、カレンダおよびスケジュール調整APIコールのライブラリ の背後にあるサービスを実装しています。カレンダ項目の削除、挿入、変更をサポート しています。また、カレンダ通知を管理し、カレンダ・データベースの作成および 削除をサポートします。さらに、カレンダ・データの検索機能も提供します。

カレンダ項目データは、ドラッグ＆ドロップおよびToolTalkメッセージ・インタ フェースによってデスクトップと統合します。

カレンダおよびスケジュール調整APIは、アプリケーション・プログラミング・ インタフェース・アソシエーション
XAPIA(X.400)カレンダおよびスケジュール調整API 1.0を実現したものです。カレンダお よびスケジュールAPIを使用してアプリケーションにカレンダを統合するか、独自の カレンダ・アプリケーションを開発してください。

### ライブラリおよびヘッダ・ファイル

カレンダ・ライブラリ `libcsa`は、ネットワーク環境において カレンダ・データにアクセスし、管理するプログラム方法を提供します。

`libcsa`のAPIにアクセスするには、 `csa/csa.h`ヘッダ・ファイルをアプリケーションに取り込んでくだ さい。

### デモ・プログラム

カレンダのデモは、`/usr/dt/examples/dtcalendar`にありま す。デモの詳細については、`README`ファイルを参照してください。

#### 関連マニュアル

カレンダの詳細については、関連するマニュアル・ページ、カレンダのヘルプ・ ボリューム、プログラマーズ・ガイドを参照してください。

## インフォメーション・マネージャ

インフォメーション・マネージは、ブックケース、ブック、セクション、サブセクション といった通常のハードコピー・マニュアルのように構成されたオンライン・マニュアル へのアクセスを提供します。インフォメーション・マネージャは、ヘルプ機能とは異な ります。

### ヘッダ・ファイル

ヘッダ・ファイルは、以下のとおりです。

- `/usr/dt/include/Dt/Info.h`

- `/usr/dt/include/Dt/Search.h`

- `/usr/dt/include/Dt/Mmdb.h` (デフォルト・ブラウザ `dtinfo`の拡張または、置換用）

### 関連マニュアル

インフォメーション・マネージャの詳細については、 インフォメーション・システム　設計者およびプログラマのためのガイド を参照してください。

## デスクトップKornShell(dtksh)

デスクトップKornShell
(`dtksh`)は、シェル・スクリプトによってグラフィック・ユーザ 対話を行う方法を提供します。ユーザ・インタフェース機能は、共通デスクトップ環境 Motifウィジェット・セット、Xtイントリンシクス、X11ライブラリに基づいています。

`dtksh`は、多くのX、Xt、Motif、および共通デスクトップ環境 の機能にアクセスできるよう拡張した `
ksh-93`バージョンです。`ksh-93`は、コマンド・シェル およびプログラミング言語`ksh`である
KornShellのバージョンです。 `dtksh`は、次のものをサポートするよう`ksh`を 拡張したものです。

- シェル・スクリプトから共通デスク トップ環境Motifウィジェット・セットへのアクセス

- 完全にローカライズされたシェル・スクリプト。 `dtksh`スクリプトは、`catopen`および `catgets`コマンドを使用できます。

- 共通デスクトップ環境のアプリケーションのヘルプ・ システムへのアクセス

- セッション管理保存状態指示への応答

- ほとんどの共通デスクトップ環境のデスクトップ・ サービス・メッセージ・セットへのアクセス

- 多数の共通デスクトップ環境のデータ型作成API関数への アクセス

- ほとんどの共通デスクトップ環境のアクションAPI関数への アクセス

### デモ・プログラム

`dtksh`のデモは、 `/usr/dt/examples/dtksh`にあります。デモの詳細については、 `README`ファイルを参照してください。

#### 関連マニュアル

`dtksh`の詳細については、関連するマニュアル・ページと、 デスクトップ KornShell ユーザーズ・ガイドを参照してくだ さい。