この章で説明する共通デスクトップ環境のコンポーネントは、特殊なタスクを実行するためにデスクトップが提供するサービスを使用できるようにします。
この節で説明するコンポーネントの統合方法以外に、第 5 章「基本的なアプリケーションの統合方法」で概説する基本的な統合方法に関する指示にも従ってください。第 6 章「推奨する統合方法」で説明するコンポーネントは、アプリケーションを高度にデスクトップと統合できるようにするのに重要です。
オプションの統合方法の詳細は、『Solaris 共通デスクトップ環境 プログラマーズ・ガイド』を参照してください。
共通デスクトップ環境 Motif コントロール・ウィジェットは、共通デスクトップ環境 Motif に同等の機能を提供することにより、OPEN LOOK および Microsoft Windows のアプリケーションを、共通デスクトップ環境へ移植しやすくするよう設計されています。共通デスクトップ環境 Motif ウィジェット・ライブラリ libDtWidget には、すべての共通デスクトップ環境アプリケーションに共通する機能を提供するのに使用するウィジェットと関数が含まれています。ウィジェットが提供するものは次のとおりです。
テキスト・フィールドおよび矢印ボタン・ウィジェット (DtSpinBox)
テキスト・フィールドおよびリスト・ボックス・ウィジェット (DtComboBox)
メニュー・ボタン・ウィジェット (DtMenuButton)
共通デスクトップ環境の Motif ウィジェット・ライブラリ libDtWidget は共通デスクトップ環境のアプリケーションと OPEN LOOK アプリケーションとの間の操作性をサポートします。つまり、カット、コピー、ペースト、マウス・ボタン機能など、OPEN LOOK が行うのと同じ方法で動作するアプリケーションを作成できます。
共通デスクトップ環境は Motif 1.2 ウィジェットをすべてサポートします。共通デスクトップ環境 Motif の詳細は、付録 A 「共通デスクトップ環境 Motif」 を参照してください。
ウィジェット名 |
説明 |
---|---|
DtSpinBox |
数値を増減するか、ブラウズしてテキスト文字列のリストから選択するためのコントロールを持つ TextField ウィジェット |
DtComboBox |
TextField と、TextField に有効な選択項目のリストを提供するポップアップ・リスト・ウィジェットとの組合せ |
DtMenuButton |
メニュー・バー、またはメニュー区画 (プルダウン・メニュー、ポップアップ・メニュー、オプション・メニュー) 以外の XmCascadeButton ウィジェットの機能を階層化するメニュー機能を提供するコマンド・ウィジェット |
DtSpinBox および DtComboBox ウィジェットの API は、 Motif 2.1 リリースの XmSpinBox および XmComboBox ウィジェットと同等です。API は、アプリケーションが簡単に Motif 2.1 バージョンのウィジェットに交換できるように設計されています。交換するにはクラス、型、作成ルーチンの名前の Dt を Xm に変更してください。たとえばコードにある DtSpinBox という名前はすべて XmSpinBox に変更してください。この情報は、アプリケーションを Motif 2.1 に移植することを選択した場合に提供されますが、そうすることを推奨しているわけではありません。
共通デスクトップ環境は、そのウィジェットと Motif 2.1 のウィジェット間での厳密な API またはバイナリ互換を保証するものではありません。
ライブラリ libDtWidget は、DtSpinBox、DtComboBox、DtMenuButton ウィジェットへのアクセスを提供します。これらのウィジェットの libDtWidget ヘッダ・ファイルは次のとおりです。
Dt/SpinBox.h
Dt/ComboBox.h
Dt/MenuButton.h
共通デスクトップ環境 Motif コントロール・ウィジェットのデモは、/usr/dt/examples/dtwidget にあります。デモの詳細は、README ファイルを参照してください。
共通デスクトップ環境 Motif コントロール・ウィジェットの詳細は、関連するマニュアル・ページと『Solaris 共通デスクトップ環境 プログラマーズ・ガイド』を参照してください。
アプリケーションの基本的な統合方法を実行するときは、データ型を定義できます。この節では、データ型作成の別の面、つまりアクションおよびデータ型のデータベースから情報を抽出する方法に焦点を当てて説明します。
データ型を作成すると、従来の UNIX ファイル・システムが提供するファイルとデータの属性が拡張されます。この拡張には型や属性管理も含まれます。アプリケーションが外部ソースからデータを受信して動作するには、データ型作成 API を使用します。たとえばアプリケーションでアイコンを表示する、またはシステム全体に定義されているアクションを実行する必要があるかもしれません。
データ基準およびデータ属性を格納するデータベース
データベースを照会するルーチンの集まり
データ型作成システムは、ファイルまたは基準のセットに基づいたバイト・ベクタの型を決定します。基準には名前、アクセス権、シンボリック・リンク値、内容が含まれます。型に関連付けられた属性は、説明、グラフィカルにそれを示すアイコン、それに適用されるアクションを含んだ、ユーザが見ることができるインタフェースを記述しています。また、属性はデータが準拠する互換フォーマットに名前を付けるためにも存在します。
共通デスクトップ環境のファイル・マネージャおよび共通デスクトップ環境のメールのアタッチメント・ウィンドウは、データ型作成によって、アイコンとファイルに関連するアクションを決定します。たとえば C ファイル filename.c について、ファイル・マネージャは .c という拡張子を使用してファイルのデータ型 C_SOURCE を判別します。それから C_SOURCE を使用して filename.c に使用できるアイコンのアイコン・ファイル名を決定します。
この節では、アクションおよびデータ型データベースを読み込む API について説明します。この形式と、開発者が定義する任意の共通デスクトップ環境データベースについては、/usr/dt/man/man4 ディレクトリにあるマニュアル・ページで説明しています。
外部データベースを読み込む API は、次の 2 つの関数から成ります。
DtDbLoad()
DtDbReloadNotify()
DtDbLoad() はアクションおよびデータ型データベースを読み込みます。データベースを検索する一連のディレクトリを決定し、見つけた .dt ファイルをデータベースに読み込みます。アプリケーションは、アクションおよびデータ型データベースを照会する任意のルーチンを起動する前に、DtDbLoad() を起動する必要があります。
DtDbReLoadNotify() を使用して、アクションおよびデータ型データベースの再読み込みイベントの通知を要求してください。アプリケーションがデータベース再読み込みメッセージを受け取ることを登録します。
アプリケーションは、データベースが変更されたら、アプリケーションを再起動しなくても更新があったことがエンド・ユーザにわかるように、必ずデータベースを再読み込みしなければなりません。
データ・オブジェクトの属性を調べるには、まずオブジェクトの型を決定し、その型に適切な属性値を求めてください。データベース照会関数により、データ型および属性の検索、メモリの解放、データベースの読み込みと解放などのオペレーションを実行できます。これらの関数については、『Solaris 共通デスクトップ環境 プログラマーズ・ガイド』および man3 ディレクトリにあるマニュアル・ページで説明しています。
デスクトップ・サービス・ライブラリ libDtSvc は、データ型作成を含む多くのデスクトップ API へのアクセスを提供します。データ型作成 API にアクセスするには、Dt/Dt.h および Dt/Dts.h ヘッダ・ファイルを取り込んでください。
アプリケーションが任意のデータ型作成 API を使用する場合、またはアクションおよびデータ型データベースを読み込む場合は、DtInitialize() または DtAppInitialize() のいずれかを呼び出して libDtSvc ライブラリを初期化してください。詳細は、DtInitialize(3) または DtAppInitialize(3) のマニュアル・ページを参照してください。
データ型作成のデモは、/usr/dt/examples/dtdts にあります。デモの詳細は、README ファイルを参照してください。
データ型作成の詳細は、関連するマニュアル・ページと『Solaris 共通デスクトップ環境 プログラマーズ・ガイド』を参照してください。
アクション実行 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 ファイルを参照してください。
アクションの詳細は、関連するマニュアル・ページと『Solaris 共通デスクトップ環境 プログラマーズ・ガイド』を参照してください。
共通デスクトップ環境のワークスペース・マネージャは、複数のワークスペースをサポートします。各ワークスペースは仮想画面です。ウィンドウは 1 つのワークスペース、すべてのワークスペース、個々のワークスペースの任意の組合せのいずれにも配置できます。ワークスペースに対しては、ユーザによる動的な追加、削除、名前の変更ができます。
ワークスペース・マネージャ API は、ウィンドウが存在するワークスペースを知るのに必要な、またはウィンドウのワークスペースへの配置方法をコントロールするのに必要なアプリケーションの関数を提供します。さらに、現在のワークスペースがどれであるかなど、ワークスペース全体の状態の変更内容をアプリケーションが監視できるようにします。
共通デスクトップ環境では、デスクトップで実行するアプリケーションはワークスペース・マネージャ API の使用が必ずしも必要なわけではありません。ワークスペース・マネージャを知らなくても、ほとんどのデスクトップ・アプリケーションが予想したとおりに実行されます。特に、アプリケーションが 1 つのメイン・トップレベル・ウィンドウだけを持ち、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 ファイルを参照してください。
ワークスペース・マネージャの詳細は、関連するマニュアル・ページと『Solaris 共通デスクトップ環境 プログラマーズ・ガイド』を参照してください。
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 ウィジェットの詳細は、関連するマニュアル・ページを参照してください。
デスクトップ端末エミュレータの詳細は、端末エミュレータのヘルプ・ボリューム、関連するマニュアル・ページ、および『Solaris 共通デスクトップ環境 ユーザーズ・ガイド』を参照してください。
共通デスクトップ環境のテキスト編集システムは、次の 2 つのコンポーネントから成ります。
グラフィカル・インタフェース、アクション・インタフェース、ToolTalk インタフェースによって編集サービスを行えるようにする、テキスト・エディタ・アプリケーション dtpad
次の編集サービスに関してプログラム・インタフェースを提供するエディタ・ウィジェット DtEditor
カット&ペースト
検索と置換
簡単なフォーマット
スペルチェック (8 ビットのロケール用)
前の編集を元に戻す
ASCII テキスト、マルチバイト・テキスト、データのバッファの入出力をサポートする拡張 I/O 処理機能
ファイルの読み取りと書き込みのサポート
Motif テキスト・ウィジェットもプログラム・インタフェースを提供しますが、システム全体で統一されたエディタを要求するアプリケーションは、DtEditor ウィジェットを使用してください。共通デスクトップ環境のテキスト・エディタおよびメール・プログラムは、エディタ・ウィジェットを使用します。このウィジェットは次のような場合に使用してください。
スペルチェック、元へ戻す、検索および変更などの、DtEditor ウィジェットが提供する機能が必要な場合
ユーザがファイルのデータを読み書きできるようにする場合
DtEditor ウィジェットは libDtWidget ライブラリにあります。ヘッダ・ファイルは Dt/Editor.h です。
デモは、/usr/dt/examples/dtwidget ディレクトリにあり、 DtEditor ウィジェット (editor.c) の例が入っています。デモの詳細は、README ファイルを参照してください。
テキスト・エディタ・ウィジェットの詳細は、関連するマニュアル・ページと『Solaris 共通デスクトップ環境 プログラマーズ・ガイド』を参照してください。
共通デスクトップ環境のカレンダは、ネットワーク環境でユーザが時間とリソースをスケジュール調整できるようにする、インフラストラクチャと API から成ります。カレンダ GUI は共通デスクトップ環境の実行環境の一部です。
カレンダは次の 3 つから構成されています。
カレンダ・データベースを管理するデーモン
一連のハイレベル関数を定義し、カレンダを使用するアプリケーションが、デーモンがサポートする機能にアクセスできるようにする、カレンダおよびスケジュール調整 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 ファイルを参照してください。
カレンダの詳細は、関連するマニュアル・ページ、カレンダのヘルプ・ボリューム、『Solaris 共通デスクトップ環境 プログラマーズ・ガイド』を参照してください。
デスクトップ Korn シェル (dtksh) は、シェル・スクリプトによってグラフィック・ユーザ対話を行う方法を提供します。ユーザ・インタフェース機能は、共通デスクトップ環境 Motif ウィジェット・セット、Xt イントリンシクス、X11 ライブラリに基づいています。
dtksh は多くの X、Xt、Motif、および共通デスクトップ環境の機能にアクセスできるよう拡張した ksh-93 バージョンです。ksh-93 は、コマンド・シェルおよびプログラミング言語 ksh である Korn シェルのバージョンです。dtksh は、次のものをサポートするよう ksh を拡張したものです。
シェル・スクリプトから共通デスクトップ環境 Motif ウィジェット・セットへのアクセス
完全にローカライズされたシェル・スクリプト。dtksh スクリプトは catopen および catgets コマンドを使用できます。
共通デスクトップ環境のアプリケーションのヘルプ・システムへのアクセス
セッション管理保存状態指示への応答
ほとんどの共通デスクトップ環境のデスクトップ・サービス・メッセージ・セットへのアクセス
多くの共通デスクトップ環境のデータ型作成 API 関数へのアクセス
ほとんどの共通デスクトップ環境のアクション API 関数へのアクセス
dtksh のデモは /usr/dt/examples/dtksh にあります。デモの詳細は、README ファイルを参照してください。
dtksh の詳細は、関連するマニュアル・ページと『Dtksh ユーザーズ・ガイド』を参照してください。