Initial import of the CDE 2.1.30 sources from the Open Group.

This commit is contained in:
Peter Howkins
2012-03-10 18:21:40 +00:00
commit 83b6996daa
18978 changed files with 3945623 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
<!-- $XConsortium: BEntity.sgm /main/1 1996/12/17 06:05:09 cde-hit $ -->
<!ENTITY PG.dndPG.fig.1 SYSTEM "./progGuide/graphics/valmovts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.2 SYSTEM "./progGuide/graphics/valmovss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.3 SYSTEM "./progGuide/graphics/valmovms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.4 SYSTEM "./progGuide/graphics/valcopts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.5 SYSTEM "./progGuide/graphics/valcopss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.6 SYSTEM "./progGuide/graphics/valcopms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.7 SYSTEM "./progGuide/graphics/vallnkts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.8 SYSTEM "./progGuide/graphics/vallnkss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.9 SYSTEM "./progGuide/graphics/vallnkms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.10 SYSTEM "./progGuide/graphics/invmovts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.11 SYSTEM "./progGuide/graphics/invmovss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.12 SYSTEM "./progGuide/graphics/invmovms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.13 SYSTEM "./progGuide/graphics/invcopts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.14 SYSTEM "./progGuide/graphics/invcopss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.15 SYSTEM "./progGuide/graphics/invcopms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.16 SYSTEM "./progGuide/graphics/invlnkts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.17 SYSTEM "./progGuide/graphics/invlnkss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.18 SYSTEM "./progGuide/graphics/invlnkms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.19 SYSTEM "./progGuide/graphics/basdrdr.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.20 SYSTEM "./progGuide/graphics/optdrdr.cgm" NDATA CGM-BINARY>
<!ENTITY PG.widgs.fig.1 SYSTEM "./progGuide/graphics/spnbxwid.cgm" NDATA CGM-BINARY>
<!ENTITY PG.widgs.fig.2 SYSTEM "./progGuide/graphics/txtflwid.cgm" NDATA CGM-BINARY>
<!ENTITY PG.widgs.fig.3 SYSTEM "./progGuide/graphics/mnbutwid.cgm" NDATA CGM-BINARY>
<!ENTITY PG.widgs.fig.4 SYSTEM "./progGuide/graphics/lstbxwid.cgm" NDATA CGM-BINARY>
<!ENTITY PG.calmg.fig.1 SYSTEM "./progGuide/graphics/poscal.cgm" NDATA CGM-BINARY>
<!ENTITY PG.calmg.fig.2 SYSTEM "./progGuide/graphics/compcal.cgm" NDATA CGM-BINARY>
<!ENTITY PG.basc1.fig.1 SYSTEM "./progGuide/graphics/noprint.cgm" NDATA CGM-BINARY>

View File

@@ -0,0 +1,3 @@
/* $XConsortium: Title.tmpl /main/2 1996/06/19 16:04:02 drk $ */
/* TOC title, only what's between quotes should be modified. */
title = "共通デスクトップ環境 プログラマーズ・ガイド"

View File

@@ -0,0 +1,126 @@
<!-- $XConsortium: adbook.sgm /main/1 1996/12/17 06:05:32 cde-hit $ -->
<!DOCTYPE DocBook PUBLIC "-//HaL and O'Reilly//DTD DocBook V2.2.1//EN" [
<!ENTITY PG.dndPG.fig.1 SYSTEM "./graphics/valmovts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.2 SYSTEM "./graphics/valmovss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.3 SYSTEM "./graphics/valmovms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.4 SYSTEM "./graphics/valcopts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.5 SYSTEM "./graphics/valcopss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.6 SYSTEM "./graphics/valcopms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.7 SYSTEM "./graphics/vallnkts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.8 SYSTEM "./graphics/vallnkss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.9 SYSTEM "./graphics/vallnkms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.10 SYSTEM "./graphics/invmovts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.11 SYSTEM "./graphics/invmovss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.12 SYSTEM "./graphics/invmovms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.13 SYSTEM "./graphics/invcopts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.14 SYSTEM "./graphics/invcopss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.15 SYSTEM "./graphics/invcopms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.16 SYSTEM "./graphics/invlnkts.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.17 SYSTEM "./graphics/invlnkss.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.18 SYSTEM "./graphics/invlnkms.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.19 SYSTEM "./graphics/basdrdr.cgm" NDATA CGM-BINARY>
<!ENTITY PG.dndPG.fig.20 SYSTEM "./graphics/optdrdr.cgm" NDATA CGM-BINARY>
<!ENTITY PG.widgs.fig.1 SYSTEM "./graphics/spnbxwid.cgm" NDATA CGM-BINARY>
<!ENTITY PG.widgs.fig.2 SYSTEM "./graphics/txtflwid.cgm" NDATA CGM-BINARY>
<!ENTITY PG.widgs.fig.3 SYSTEM "./graphics/mnbutwid.cgm" NDATA CGM-BINARY>
<!ENTITY PG.widgs.fig.4 SYSTEM "./graphics/lstbxwid.cgm" NDATA CGM-BINARY>
<!ENTITY PG.calmg.fig.1 SYSTEM "./graphics/poscal.cgm" NDATA CGM-BINARY>
<!ENTITY PG.calmg.fig.2 SYSTEM "./graphics/compcal.cgm" NDATA CGM-BINARY>
<!ENTITY PG.basc1.fig.1 SYSTEM "./graphics/noprint.cgm" NDATA CGM-BINARY>
<!ENTITY % local.notations "| XPM | XBM | XWD">
<!NOTATION XPM SYSTEM "XPM">
<!NOTATION XBM SYSTEM "XBM">
<!NOTATION XWD SYSTEM "XWD">
<!ENTITY Pref SYSTEM "./preface.sgm">
<!ENTITY prtI SYSTEM "./part1.sgm">
<!ENTITY basc1 SYSTEM "./ch01.sgm">
<!ENTITY prt2 SYSTEM "./part2.sgm">
<!ENTITY fonts SYSTEM "./ch02.sgm">
<!ENTITY msgs SYSTEM "./ch03.sgm">
<!ENTITY smgr SYSTEM "./ch04.sgm">
<!ENTITY dndPG SYSTEM "./ch05.sgm">
<!ENTITY prt3 SYSTEM "./part3.sgm">
<!ENTITY wsmgr SYSTEM "./ch06.sgm">
<!ENTITY widgs SYSTEM "./ch07.sgm">
<!ENTITY aIII SYSTEM "./ch08.sgm">
<!ENTITY datat SYSTEM "./ch09.sgm">
<!ENTITY calmg SYSTEM "./ch10.sgm">
<!ENTITY info SYSTEM "./ch11.sgm">
<!ENTITY print SYSTEM "./ch12.sgm">
<!ENTITY gloss SYSTEM "./glossary.sgm">
]>
<!-- ____________________________________________________________________________ -->
<DocBook>
<Book>
<Title>共通デスクトップ環境 プログラマーズ・ガイド</Title>
&Pref;
<Part Id="PG.prtI.div.1">
&prtI;
&basc1;
</Part>
<Part Id="PG.prt2.div.1">
&prt2;
&fonts;
&msgs;
&smgr;
&dndPG;
</Part>
<Part Id="PG.prt3.div.1">
&prt3;
&wsmgr;
&widgs;
&aIII;
&datat;
&calmg;
&info;
&print;
</Part>
&gloss;
</Book>
</DocBook>

View File

@@ -0,0 +1,101 @@
<!-- $XConsortium: book.sgm /main/1 1996/12/17 06:05:45 cde-hit $ -->
<!DOCTYPE Book PUBLIC "-//HaL and O'Reilly//DTD DocBook//EN" [
<!ENTITY % ISOpublishing PUBLIC "ISO 8879-1986//ENTITIES Publishing//EN">
%ISOpublishing;
<!ENTITY % ISOnumeric PUBLIC "ISO 8879-1986//ENTITIES Numeric and Special Graphic//EN">
%ISOnumeric;
<!ENTITY % ISOaddedMath PUBLIC "ISO 8879-1986//ENTITIES Added Math Symbols: Arrow Relations//EN">
%ISOaddedMath;
<!ENTITY % ISOdiacritical PUBLIC "ISO 8879-1986//ENTITIES Diacritical Marks//EN">
%ISOdiacritical;
<!ENTITY % ISOgeneraltech PUBLIC "ISO 8879-1986//ENTITIES General Technical//EN">
%ISOgeneraltech;
<!ENTITY % ISOalatin1 PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN">
%ISOalatin1;
<!ENTITY % ISOalatin2 PUBLIC "ISO 8879-1986//ENTITIES Added Latin 2//EN">
%ISOalatin2;
<!ENTITY % ISOgreek PUBLIC "ISO 8879-1986//ENTITIES Greek Symbols//EN">
%ISOgreek;
<!ENTITY % ISOboxandline PUBLIC "ISO 8879-1986//ENTITIES Box and Line Drawing//EN">
%ISOboxandline;
<!ENTITY % BEntities SYSTEM "./progGuide/BEntity.sgm">
%BEntities;
<!ENTITY % local.notations "| XPM | XBM | XWD">
<!NOTATION XPM SYSTEM "XPM">
<!NOTATION XBM SYSTEM "XBM">
<!NOTATION XWD SYSTEM "XWD">
<!ENTITY Pref SYSTEM "./progGuide/preface.sgm">
<!ENTITY prtI SYSTEM "./progGuide/part1.sgm">
<!ENTITY basc1 SYSTEM "./progGuide/ch01.sgm">
<!ENTITY prt2 SYSTEM "./progGuide/part2.sgm">
<!ENTITY fonts SYSTEM "./progGuide/ch02.sgm">
<!ENTITY msgs SYSTEM "./progGuide/ch03.sgm">
<!ENTITY smgr SYSTEM "./progGuide/ch04.sgm">
<!ENTITY dndPG SYSTEM "./progGuide/ch05.sgm">
<!ENTITY prt3 SYSTEM "./progGuide/part3.sgm">
<!ENTITY wsmgr SYSTEM "./progGuide/ch06.sgm">
<!ENTITY widgs SYSTEM "./progGuide/ch07.sgm">
<!ENTITY aIII SYSTEM "./progGuide/ch08.sgm">
<!ENTITY datat SYSTEM "./progGuide/ch09.sgm">
<!ENTITY calmg SYSTEM "./progGuide/ch10.sgm">
<!ENTITY info SYSTEM "./progGuide/ch11.sgm">
<!ENTITY print SYSTEM "./progGuide/ch12.sgm">
<!ENTITY gloss SYSTEM "./progGuide/glossary.sgm">
]>
<!-- ____________________________________________________________________________ -->
<Book>
<Title>共通デスクトップ環境 プログラマーズ・ガイド</Title>
&Pref;
<Part Id="PG.prtI.div.1">
&prtI;
&basc1;
</Part>
<Part Id="PG.prt2.div.1">
&prt2;
&fonts;
&msgs;
&smgr;
&dndPG;
</Part>
<Part Id="PG.prt3.div.1">
&prt3;
&wsmgr;
&widgs;
&aIII;
&datat;
&calmg;
&info;
&print;
</Part>
&gloss;
</Book>

View File

@@ -0,0 +1,426 @@
<!-- Fragment document type declaration subset:
ArborText, Inc., 1988-1995, v.4001
<!DOCTYPE DOCBOOK [
<!ENTITY PG.BIntg.fig.1 SYSTEM "./progGuide/graphics/NoPrint.eps" NDATA eps>
<!ENTITY PG.BIntg.fig.2 SYSTEM "./progGuide/graphics/package.eps" NDATA eps>
<!ENTITY PG.BIntg.fig.3 SYSTEM "./progGuide/graphics/approot.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.1 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.1.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.2 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.2.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.3 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.3.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.4 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.4.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.5 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.5.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.6 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.6.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.7 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.7.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.8 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.8.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.9 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.9.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.10 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.10.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.11 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.11.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.12 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.12.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.13 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.13.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.14 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.14.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.15 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.15.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.16 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.16.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.17 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.17.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.18 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.18.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.19 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.19.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.20 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.20.eps" NDATA eps>
<!ENTITY PG.widgs.fig.1 SYSTEM "./progGuide/graphics/PG.widgs.iFrame.1.eps" NDATA eps>
<!ENTITY PG.widgs.fig.2 SYSTEM "./progGuide/graphics/ComboBox.rs" NDATA eps>
<!ENTITY PG.widgs.fig.3 SYSTEM "./progGuide/graphics/MenuButton2.rs" NDATA eps>
<!ENTITY PG.calmg.fig.1 SYSTEM "./progGuide/graphics/PG.calmg.iFrame.1.eps" NDATA eps>
<!ENTITY PG.calmg.fig.2 SYSTEM "./progGuide/graphics/PG.calmg.iFrame.2.eps" NDATA eps>
<!ENTITY PG.basc1.fig.1 SYSTEM "./progGuide/graphics/NoPrint.eps" NDATA eps>
<!ENTITY PG.basic.fig.1 SYSTEM "./progGuide/graphics/NoPrint.eps" NDATA eps>
<!ENTITY PG.basic.fig.2 SYSTEM "./progGuide/graphics/package.eps" NDATA eps>
<!ENTITY PG.basic.fig.3 SYSTEM "./progGuide/graphics/approot.eps" NDATA eps>
<!ENTITY Copyr SYSTEM "./progGuide/copyright.sgm">
<!ENTITY Pref SYSTEM "./progGuide/preface.sgm">
<!ENTITY prtI SYSTEM "./progGuide/part1.sgm">
<!ENTITY prt2 SYSTEM "./progGuide/part2.sgm">
<!ENTITY fonts SYSTEM "./progGuide/ch02.sgm">
<!ENTITY msgs SYSTEM "./progGuide/ch03.sgm">
<!ENTITY smgr SYSTEM "./progGuide/ch04.sgm">
<!ENTITY dndPG SYSTEM "./progGuide/ch05.sgm">
<!ENTITY prt3 SYSTEM "./progGuide/part3.sgm">
<!ENTITY wsmgr SYSTEM "./progGuide/ch06.sgm">
<!ENTITY widgs SYSTEM "./progGuide/ch07.sgm">
<!ENTITY aIII SYSTEM "./progGuide/ch08.sgm">
<!ENTITY datat SYSTEM "./progGuide/ch09.sgm">
<!ENTITY calmg SYSTEM "./progGuide/ch10.sgm">
<!ENTITY gloss SYSTEM "./progGuide/glossary.sgm">
]>
-->
<!-- $XConsortium: ch01.sgm /main/1 1996/12/17 06:05:57 cde-hit $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<chapter id="PG.basc1.div.1">
<title id="PG.basc1.mkr.1">基本的なアプリケーションの統合方法</title>
<para>基本的なアプリケーションの統合方法は、実行することが強く推奨されるタスクのセットです。<indexterm><primary>基本的な統合方法</primary><secondary>定義</secondary></indexterm></para>
<informaltable id="PG.basc1.itbl.1" frame="All">
<tgroup cols="1">
<colspec colname="1" colwidth="4.0 in">
<tbody>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Basic Integration Features3'--><xref
role="JumpText" linkend="PG.basc1.mkr.2"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Basic Integration Tasks5'--><xref
role="JumpText" linkend="PG.basc1.mkr.3"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Complete Print Integration6'--><xref
role="JumpText" linkend="PG.basc1.mkr.6"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Partial Print Integration10'--><xref
role="JumpText" linkend="PG.basc1.mkr.8"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Nonintegrated Printing13'--><xref
role="JumpText" linkend="PG.basc1.mkr.9"></para></entry></row></tbody></tgroup>
</informaltable>
<para>基本的な統合方法には、デスクトップのアプリケーション・プログラマ・インタフェース(API)の拡張仕様は含まれません。
したがって、ドラッグ&ドロップ、セッション管理、
ToolTalk&reg;
メッセージ、アクションおよびデータ型データベースへのプログラムのアクセスなど、デスクトップとの他の相互作用は提供されません。</para>
<para>この章で説明する統合方法の作業の一部は、ソースコードの変更を必要とします。それらはオプションですが、基本的な統合方法の作業と密接な、関係があるため、ここで説明します。</para>
<sect1 id="PG.basc1.div.2">
<title id="PG.basc1.mkr.2">基本的な統合方法の特徴</title>
<para>基本的なアプリケーションの統合方法には、エンドユーザ向けの次のような特徴があります。</para>
<itemizedlist remap="Bullet1"><listitem><para>デスクトップ上のアプリケーションを探して起動するためのグラフィカルな方法</para>
<para>アプリケーションはデスクトップ<indexterm><primary>登録パッケージ
</primary></indexterm><symbol role="Variable">登録パッケージ</symbol>を提供し、インストール・スクリプトはアプリケーションを自動的に登録します。</para>
<para>登録によって、アプリケーション・マネージャのトップ・レベルにアプリケーション・グループが作成されます。アプリケーション・グループにはアイコンがあり、ユーザがアイコンをダブルクリックすると、アプリケーションが起動します。<indexterm><primary>登録</primary><secondary>定義</secondary></indexterm></para>
</listitem><listitem><para>アプリケーションのデータ・ファイルを認識し、操作する機能</para>
<para>アプリケーションは、データ・ファイルにデータ型を提供します。</para>
<para>データ型定義は、データ・ファイルが固有のアイコンを使うように構成して、データ・ファイルを見分けやすくします。また、データ・ファイルは、意味があるデスクトップ動作も持っています。たとえば、ユーザはデータ・ファイルをダブルクリックすることによってアプリケーションを起動したり、デスクトップのプリンタ・ドロップ領域にデータ・ファイルをドロップして、適切な印刷コマンドを使用してファイルを印刷することができます。<indexterm><primary>データ型</primary><secondary>データ型の目的</secondary></indexterm></para>
</listitem><listitem><para>スタイル・マネージャによる簡単なフォントとカラーの選択<indexterm>
<primary>スタイル・マネージャ</primary><secondary>スタイル・マネージャとの統合</secondary></indexterm></para>
<para>アプリケーションは、インタフェースのフォントと、バックグラウンド、フォアグラウンド、およびシャドウの色を動的に変更します。</para>
<para>デスクトップは、対応するアプリケーション固有のリソースがない場合に使われる、一般的なインタフェースのフォントおよびカラーのリソースを定義します。<indexterm><primary>スタイル・マネージャ</primary><secondary>スタイル・マネージャからのフォントの獲得</secondary></indexterm><indexterm><primary>スタイル・マネージャ</primary><secondary>スタイル・マネージャからのカラーの獲得</secondary></indexterm></para>
</listitem></itemizedlist>
<para>基本的な統合方法では、システム管理者に次のような利点を提供します。<indexterm><primary>基本的な統合方法</primary><secondary>基本的な統合方法の利点</secondary></indexterm></para>
<itemizedlist remap="Bullet1"><listitem><para>インストールと登録が容易</para>
<para>インストール時に、アプリケーションは自動的に登録されます。他にシステム管理者がしなければならないことはほとんどありません。</para>
</listitem><listitem><para>運用時の管理が容易</para>
<para>デスクトップの構成ファイルは、すべて一ヶ所に集められます。また、たとえば管理者がアプリケーションを更新したい場合や、別のアプリケーション・サーバに移動したい場合には、アプリケーションの登録解除が簡単にできます。</para>
</listitem></itemizedlist>
<sect2 id="PG.basc1.div.3">
<title>基本的な統合方法情報の構成</title>
<para>基本的な統合に必要な作業の大部分は、既存のアプリケーションをデスクトップに統合するシステム管理者によって実行されます。
したがって、基本的な統合方法の説明の大部分は、<emphasis>共通デスクトップ環境 上級ユーザ及びシステム管理者ガイド</emphasis>の「アプリケーションの登録」の章にあります。</para>
<para>この章では、その説明の概要を紹介し、アプリケーション・プログラマ向けの追加説明をします。</para>
</sect2>
</sect1>
<sect1 id="PG.basc1.div.4">
<title id="PG.basc1.mkr.3">基本的な統合方法の作業</title>
<para>基本的な統合に必要な一般的な作業は次のとおりです。</para>
<itemizedlist remap="Bullet1"><listitem><para>フォントとカラーを設定するアプリケーションのリソースを変更する。これによってユーザは、スタイル・マネージャを使ってアプリケーションのインタフェース・フォントおよびカラーを変更することができます。<indexterm><primary>基本的な統合方法</primary><secondary>基本的な統合方法の作業の概要</secondary></indexterm></para> <para><emphasis>共通デスクトップ環境 上級ユーザおよびシステム管理者ガイド</emphasis>の「アプリケーションの登録」の章の「フォント・リソースおよびカラー・リソースの変更」の節を参照してください。</para>
</listitem><listitem><para>アプリケーションのための登録パッケージを作成する。</para>
<para>このマニュアルの<!--Original XRef content: '&xd2;Creating a Registration
Package for Your Application'--><xref role="SectionTitle" linkend="PG.basc1.mkr.11">
と<emphasis>共通デスクトップ環境 上級ユーザおよびシステム管理者ガイド</emphasis>の「アプリケーションの登録」の章を参照してください。</para>
</listitem><listitem><para>登録パッケージ・ファイルをインストールし、登録手順を実行するように、アプリケーションのインストール・スクリプトを変更する。</para>
<para id="pg.basc1.mkr.4"><emphasis>共通デスクトップ環境 上級ユーザおよびシステム管理者ガイド</emphasis>の「アプリケーションの登録」の章の「<command>dtappintegrate</command>を使用したアプリケーションの登録」の節を参照してください。<indexterm><primary>データ型</primary><secondary>データ型の印刷</secondary></indexterm><indexterm><primary>登録パッケージ</primary><secondary>印刷の提供</secondary></indexterm><indexterm><primary>印刷統合</primary></indexterm></para>
</listitem><listitem><para>ネットワークおよびローカル・プリンタでアプリケーション・データ・ファイルを印刷する。デスクトップ・プリンタ・モデルは、印刷のためのグラフィカルな方法をユーザに提供し、UNIXの<command>lp</command>サービスの本来のネットワーク機能の上に構築されます。</para>
</listitem></itemizedlist>
<sect2 id="PG.basc1.div.5">
<title id="PG.basc1.mkr.5">印刷統合のレベル<indexterm><primary>印刷統合</primary></indexterm><indexterm><primary>基本的な統合方法</primary><secondary>印刷</secondary></indexterm></title>
<para>ユーザが使用できる印刷機能は、統合のレベルによって異なります。統合には次の3つのレベルがあります。<indexterm><primary>印刷統合</primary><secondary>印刷統合のレベル</secondary></indexterm></para>
<itemizedlist remap="Bullet1"><listitem><para>完全な統合。<!--Original
XRef content: '&xd2;Complete Print Integration&xd3; on page&numsp;6'--><xref
role="SecTitleAndPageNum" linkend="PG.basc1.mkr.6">を参照してください。</para>
<para>アプリケーションのソースコードを変更する能力がある場合には、完全な統合を行ってください。</para>
<para>完全な統合を行うと、ユーザはデータ・ファイルをプリンタ・ドロップ領域(フロントパネルのプリンタとプリント・マネージャのプリンタ・アイコン)にドロップすることによって、さまざまなプリンタで印刷することができます。その他の特定のデスクトップ動作も実現します(<!--Original XRef content: '&xd2;Desktop
Printing Environment
Variables&xd3; on page&numsp;6'--><xref role="SecTitleAndPageNum" linkend="PG.basc1.mkr.7">を参照)。
</para>
</listitem><listitem><para>部分的な統合。<!--Original XRef content:
'&xd2;Partial Print Integration&xd3; on page&numsp;10'--><xref role="SecTitleAndPageNum"
linkend="PG.basc1.mkr.8">を参照してください。</para>
<para>アプリケーションのソースコードを変更する能力はないが、アクションによって印刷機能を呼び出すことができる場合には、部分的な統合を行ってください。</para>
<para>部分的な統合をした場合、アプリケーションは完全統合機能の一部分の機能を提供します。たとえば、<command>LPDEST</command>環境変数を使用することによって、アプリケーションの印刷機能は、印刷の出力先をドロップ領域から獲得します。</para>
</listitem><listitem><para>統合なし。<!--Original XRef content:
'&xd2;Nonintegrated Printing&xd3; on page&numsp;13'--><xref role="SecTitleAndPageNum"
linkend="PG.basc1.mkr.9">を参照してください。</para>
<para>アプリケーションがデータ・ファイルの印刷アクションを提供できない場合には、ユーザがファイルをプリンタ・ドロップ領域にドロップしたときに[エラー]ダイアログ・ボックスを表示するように、データ・ファイルを構成しなければなりません。</para>
</listitem></itemizedlist>
</sect2>
<sect2 id="PG.basc1.div.6">
<title id="PG.basc1.mkr.6">完全な印刷統合<indexterm><primary>印刷統合</primary><secondary>完全な印刷統合</secondary></indexterm></title>
<para>完全な印刷統合をするためには、アプリケーションは次の条件を備えていなければなりません。</para>
<itemizedlist remap="Bullet1"><listitem><para>印刷アクションを提供する。</para>
</listitem><listitem><para>4つのデスクトップ印刷環境変数を使用する。</para>
</listitem></itemizedlist>
<sect3 id="PG.basc1.div.7">
<title id="PG.basc1.mkr.7">デスクトップ印刷環境変数<indexterm><primary>印刷統合</primary><secondary>環境変数</secondary></indexterm><indexterm><primary>印刷環境変数</primary></indexterm></title>
<para>完全に統合された印刷機能を持つためには、アプリケーションは次の4つの環境変数を参照しなければなりません。<command>LPDEST</command>変数は、とくに重要です。これによってユーザは、特定のプリンタ・ドロップ領域を使用して印刷の出力先を選ぶことができます。</para>
<informaltable>
<tgroup cols="2" colsep="0" rowsep="0">
<?PubTbl tgroup dispwid="6.58in">
<colspec align="left" colwidth="188*">
<colspec align="left" colwidth="355*">
<thead>
<row><entry align="left" valign="bottom"><para>印刷環境変数</para></entry>
<entry align="left" valign="bottom"><para>説明</para></entry></row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><para><command>LPDEST</command><indexterm>
<primary>LPDEST変数</primary></indexterm></para></entry>
<entry align="left" valign="top"><para>指定された値をファイルのプリンタ出力先として使います。この変数が設定されていない場合には、アプリケーションのデフォルトの印刷装置が使用されます。<indexterm><primary>印刷統合</primary><secondary>出力先プリンタの指定</secondary></indexterm></para></entry>
</row>
<row>
<entry align="left" valign="top"><para><command>DTPRINTUSERFILENAME</command><indexterm>
<primary>DTPRINTUSERFILENAME変数</primary></indexterm></para></entry>
<entry align="left" valign="top"><para>印刷ダイアログまたは印刷出力に表示されるファイルの名前を指定します。この変数が設定されていない場合には、実際のファイル名が使用されます。<indexterm><primary>印刷統合</primary><secondary>ファイル名の指定</secondary></indexterm></para></entry>
</row>
<row>
<entry align="left" valign="top"><para><command>DTPRINTSILENT</command><indexterm><primary>DTPRINTSILENT変数</primary></indexterm></para></entry>
<entry align="left" valign="top"><para>[印刷]ダイアログ・ボックスを表示するかどうかを指定します。この変数にTrueが設定されているときには、印刷ダイアログは表示されません。この変数が設定されていない場合には、[印刷]ダイアログ・ボックスが表示されます。<indexterm>
<primary>印刷統合</primary><secondary>[印刷]ダイアログ・ボックスなしの印刷</secondary></indexterm><indexterm><primary>[印刷]ダイアログ・ボックス</primary></indexterm></para></entry></row>
<row>
<entry align="left" valign="top"><para><command>DTPRINTFILEREMOVE</command><indexterm>
<primary>DTPRINTFILEREMOVE変数</primary></indexterm></para></entry>
<entry align="left" valign="top"><para>この変数にTrueが設定されているときには、印刷したあと、そのファイルは削除されます。この機能は、印刷後は保存しておく必要がない一時ファイルを対象にしています。
この変数が設定されていない場合には、ファイルは削除されません。<indexterm><primary>印刷統合</primary><secondary>一時ファイルの削除</secondary></indexterm></para></entry></row></tbody></tgroup></informaltable>
</sect3>
<sect3 id="pg.basc1.div.8">
<title>完全に統合された印刷アクション<indexterm><primary>印刷アクション</primary></indexterm></title>
<para>印刷アクションは、登録パッケージの一部分であり、構成ファイル<symbol role="Variable">app_root</symbol><filename>/dt/appconfig/types/language/</filename><symbol role="Variable">name</symbol><filename>.dt</filename>の中で提供されます。</para>
<para>印刷アクションが、<!--Original XRef content: '&xd2;Desktop Printing
Environment Variables'--><xref role="SectionTitle" linkend="pg.basc1.mkr.7">で示した4つの環境変数を参照するプログラムを実行する場合には、
データ型は完全に統合されています。
印刷アクションは、アプリケーションのデータ型に応じて書かなければならず、1つのファイルだけを受け入れなければなりません。</para>
<para>たとえば、次の印刷アクションは、<command>ThisAppData</command>という名前のデータ型に固有です。</para>
<programlisting>Print
{
ARG_TYPE ThisAppData
EXEC_STRING <symbol role="Variable">print_command</symbol> -file %(file)Arg_1%
}</programlisting>
<para>アプリケーションがToolTalkの印刷要求を処理する場合には、印刷アクションは次のアクションの変形で送ることができます。(4つの環境変数のどれかが設定されていない場合には、対応するメッセージ引数はヌルになります。メッセージ引数がヌルのときのデフォルトの解釈については、「デスクトップ印刷環境変数」を参照してください。)</para>
<programlisting>ACTION Print
{
ARG_TYPE ThisAppData
ARG_CLASS FILE
ARG_COUNT 1
TYPE TT_MSG
TT_CLASS TT_REQUEST
TT_SCOPE TT_SESSION
TT_OPERATION Print
TT_FILE %Arg_1%
TT_ARG0_MODE TT_IN
TT_ARG0_VTYPE %Arg_1%
TT_ARG1_MODE TT_IN
TT_ARG1_VTYPE LPDEST
TT_ARG1_VALUE $LPDEST
TT_ARG2_MODE TT_IN
TT_ARG2_VTYPE DTPRINTUSERFILENAME
TT_ARG2_VALUE $DTPRINTUSERFILENAME
TT_ARG3_MODE TT_IN
TT_ARG3_VTYPE DTPRINTSILENT
TT_ARG3_VALUE $DTPRINTSILENT
TT_ARG4_MODE TT_IN
TT_ARG4_VTYPE DTPRINTFILEREMOVE
TT_ARG4_VALUE $DTPRINTFILEREMOVE
}
ACTION Print
{
ARG_TYPE ThisAppData
ARG_CLASS BUFFER
ARG_COUNT 1
TYPE TT_MSG
TT_CLASS TT_REQUEST
TT_SCOPE TT_SESSION
TT_OPERATION Print
TT_ARG0_MODE TT_IN
TT_ARG0_VTYPE %Arg_1%
TT_ARG0_VALUE %Arg_1%
TT_ARG1_MODE TT_IN
TT_ARG1_VTYPE LPDEST
TT_ARG1_VALUE $LPDEST
TT_ARG2_MODE TT_IN
TT_ARG2_VTYPE DTPRINTUSERFILENAME
TT_ARG2_VALUE $DTPRINTUSERFILENAME
TT_ARG3_MODE TT_IN
TT_ARG3_VTYPE DTPRINTSILENT
TT_ARG3_VALUE $DTPRINTSILENT
TT_ARG4_MODE TT_IN
TT_ARG4_VTYPE DTPRINTFILEREMOVE
TT_ARG4_VALUE false
}</programlisting>
</sect3>
<sect3 id="PG.basc1.div.9">
<title>フィルタされたデータまたは印刷の準備ができているデータのための印刷アクションの作成<indexterm><primary>印刷フィルタ</primary></indexterm><indexterm><primary>フィルタ、印刷</primary></indexterm><indexterm><primary>印刷アクション</primary></indexterm></title>
<para>デスクトップ印刷ユーティリティ<filename>/usr/dt/dtlp</filename>は、<command>lp</command>サブシステムに基づく機能を提供します。<command>lp</command>の印刷オプションを集めて、指定されたファイルを印刷します。</para>
<para>次の条件のどちらかに該当する場合には、アプリケーションは、<command>dtlp</command>を使用することができます。</para>
<itemizedlist remap="Bullet1"><listitem><para>プリンタに送る前にデータ・ファイルを処理する必要がない。</para>
</listitem><listitem><para>アプリケーションがデータ・ファイルを印刷できる形式に変換するためのフィルタを備えている。</para>
</listitem></itemizedlist>
<para>アプリケーションのデータ・ファイルが上記の条件に合わない場合には、アプリケーションの印刷システムへのエントリ・ポイントを設定しなければなりません。それによってアプリケーションは、データ・ファイルを印刷するためにXプリント・システムを使用することができます。たとえば次のようにします。</para>
<programlisting>
Print
{
ARG_TYPE ThisAppData
EXEC_STRING app_name -print %Arg_1%
}
</programlisting>
<para><command>dtlp</command>サービスは、アクション・システムによる印刷(アプリケーションによる印刷ではなく)を対象としていることに、注意してください。
<command>dtlp</command>の詳細については、<filename moreinfo="RefEntry">dtlp</filename>(1) リファレンス・ページを参照してください。</para>
<para>ファイルを印刷する準備ができている場合には、印刷アクションは、<command>EXEC_STRING</command>の中で<command>dtlp</command>を実行します。たとえば次のようにします。</para>
<programlisting>Print
{
ARG_TYPE ThisAppData
EXEC_STRING dtlp %Arg_1%
}</programlisting>
<para>アプリケーションが変換フィルタを備えている場合には、<filename>dtlp</filename>を実行する前にフィルタが実行されなければなりません。たとえば次のようにします。</para>
<programlisting>Print
{
ARG_TYPE MyAppData
EXEC_STRING /bin/sh `cat %Arg_1%| <symbol role="Variable">filter_name</symbol> | dtlp`
}</programlisting>
<para><symbol role="Variable">filter_name</symbol>は印刷ファイルの名前です。</para>
</sect3>
</sect2>
<sect2 id="PG.basc1.div.10">
<title id="PG.basc1.mkr.8">部分的な印刷統合<indexterm><primary>印刷統合</primary><secondary>部分的な印刷統合</secondary></indexterm></title>
<para>部分的な印刷統合をするためには、アプリケーションは次のものを提供しなければなりません。</para>
<itemizedlist remap="Bullet1"><listitem><para>印刷アクション</para>
</listitem><listitem><para>
どの印刷環境変数がアクションによって処理されるかによって印刷が統合される範囲</para>
</listitem></itemizedlist>
<sect3 id="pg.basc1.div.11">
<title>部分的な統合のための印刷コマンドの提供<indexterm><primary>印刷コマンド行</primary><secondary>部分的な統合</secondary></indexterm></title>
<para>部分的な印刷統合を提供するためには、アプリケーションは次の形式の印刷コマンド行を提供しなければなりません。</para>
<programlisting><symbol role="Variable">print_command</symbol> [<symbol role="Variable">options</symbol>] -file <symbol role="Variable">filename</symbol></programlisting>
<para><symbol role="Variable">options</symbol>は、
印刷環境変数のいくつかまたはすべてを参照する、あるいはどれも参照しないためのメカニズムを提供します(<!--Original XRef content: '&xd2;Desktop Printing
Environment Variables&xd--><!--3;
on page&numsp;6'--><xref role="SecTitleAndPageNum" linkend="pg.basc1.mkr.7">を参照してください)。</para>
<para>この印刷コマンド行のもっとも単純な形式では、オプションを省略します。</para>
<programlisting><symbol role="Variable">print_command</symbol> -file <symbol role="Variable">filename</symbol></programlisting>
<para>このコマンド行を使うと、ユーザはデスクトップのプリンタ・ドロップ領域を使用して、アプリケーションのデータ・ファイルを印刷することができます。
ただし、印刷の出力先はドロップ領域によって設定されません。
また環境変数によって設定されたその他の印刷動作は実装されません。
たとえば、デスクトップは直接サイレント印刷を行ったり、一時ファイルを削除することはできません。</para>
<para>印刷コマンド行でデスクトップ
環境変数に対応する別のコマンド行<symbol role="Variable">options</symbol>を提供する場合には、別の統合を提供することができます。</para>
<para>たとえば、次のコマンド行は<command>LPDEST</command>を参照する能力を提供します。</para>
<programlisting><symbol role="Variable">print_command</symbol> [-d <symbol role="Variable">destination</symbol>] [-file <symbol role="Variable">filename</symbol>]</programlisting>
<para><symbol role="Variable">destination</symbol>は、出力先プリンタです。</para>
<para>次の印刷コマンド行は、4つの変数すべてを参照するためのオプションを提供します。</para>
<programlisting><symbol role="Variable">print_command</symbol> [-d <symbol role="Variable">destination</symbol>] [-u <symbol role="Variable">user_file_name</symbol>] [-s] [-e] -file <symbol role="Variable">filename</symbol></programlisting>
<informaltable>
<tgroup cols="2" colsep="0" rowsep="0">
<colspec align="left" colwidth="100*">
<colspec align="left" colwidth="356*">
<tbody>
<row>
<entry><para><symbol role="Variable">user_file_name</symbol></para></entry>
<entry><para>画面に表示されるファイル名。</para></entry></row>
<row>
<entry><para><filename>-s</filename></para></entry>
<entry><para>サイレント印刷([印刷]ダイアログ・ボックスは表示されません)。</para></entry>
</row>
<row>
<entry><para><filename>-e</filename></para></entry>
<entry><para>印刷後に、ファイルは削除されます。</para></entry></row>
</tbody></tgroup></informaltable>
<para>参照は、アクション定義で発生します。詳しくは、<!--Original XRef content: '&xd2;Desktop
Printing Environment Variables&xd--><!--3; on page&numsp;6'--><xref role="SecTitleAndPageNum"
linkend="pg.basc1.mkr.7">を参照してください。</para>
</sect3>
<sect3 id="pg.basc1.div.11a">
<title>環境変数のコマンド行スイッチへの変換</title>
<para>アクションは4つの環境変数を参照できないが、対応するコマンド行オプションをとることができる場合について、この項では環境変数をコマンド行オプションに変換する方法を説明します。</para>
<para>たとえば、次の例は<command>LPDEST</command>を参照する簡単な印刷アクション です。</para>
<programlisting>Print
{
ARG_TYPE <symbol role="Variable">data_type</symbol>
EXEC_STRING <symbol role="Variable">print_command</symbol> -d $LPDEST -file %(file)Arg_1%
}</programlisting>
<para>しかし、この印刷アクションは、<command>LPDEST</command>が設定されていない場合には、予測できない動作を生む場合もあります。</para>
<para>変数が設定されていないときに適切な動作を提供する印刷アクションを作成するための1つの方法は、印刷アクションが使うシェル・スクリプトを作成することです。</para>
<para>
たとえば、次のアクションとそれが使用するスクリプトは、4つの環境変数すべてを正しく処理します。</para>
<programlisting>Print
ARG_TYPE <symbol role="Variable">data_type</symbol>
EXEC_STRING <symbol role="Variable">app_root</symbol>/bin/envprint %(File)Arg_1%
}</programlisting>
<para><command>envprint</command>スクリプトの内容は次のとおりです。
<indexterm><primary>印刷統合</primary><secondary>印刷統合のためのスクリプト</secondary></indexterm></para>
<programlisting>#!/bin/sh
# envprint - sample print script
DEST=&rdquo;&rdquo;
USERFILENAME=&rdquo;&rdquo;
REMOVE=&rdquo;&rdquo;
SILENT=&rdquo;&rdquo;
if [ $LPDEST ]; then
DEST=&rdquo;-d $LPDEST&rdquo;
fi
if [ $DTPRINTUSERFILENAME ]; then
USERFILENAME=&rdquo;-u $DTPRINTUSERFILENAME&rdquo;
fi
DTPRINTFILEREMOVE=echo $DTPRINTFILEREMOVE | tr &ldquo;[:upper:]&rdquo;
&ldquo;[:lower:]&rdquo;`
if [ &ldquo;$DTPRINTFILEREMOVE&rdquo; = &ldquo;true&rdquo; ]; then
REMOVE=&rdquo;-e&rdquo;
fi
DTPRINTSILENT=`echo $DTPRINTSILENT | tr &ldquo;[:upper:]&rdquo; &ldquo;[:lower:]&rdquo;`
if [ &ldquo;$DTPRINTSILENT&rdquo; = &ldquo;true&rdquo; ]; then
SILENT=&rdquo;-s&rdquo;
fi
<symbol role="Variable">print_command</symbol> $DEST $USERFILENAME $REMOVE $SILENT -file $1
</programlisting>
</sect3>
</sect2>
<sect2 id="PG.basc1.div.12">
<title id="PG.basc1.mkr.9">統合されていない印刷<indexterm><primary>印刷統合</primary><secondary>[印刷なし]アクションの使用</secondary></indexterm></title>
<para>アプリケーションがデスクトップと印刷機能を統合しない場合には、データ・ファイルを正しく印刷するために、ユーザがアプリケーションを開かなければなりません。</para>
<para>それでも、アプリケーションのデータ・ファイルをプリンタ・ドロップ領域にドロップするときに動作する印刷アクションを提供すべきでしょう。
さもなければ、デスクトップはファイルがテキスト・データを含むとみなして、印刷出力を勝手に行うかもしれません。</para>
<para>デスクトップはこの目的のために[印刷なし]という印刷アクションを提供します。
[印刷なし]アクションは、プリンタ・ドロップ領域を使用してデータ・ファイルを印刷できないことをユーザに知らせるダイアログ・ボックスを表示します。</para>
<para><indexterm><primary>[印刷なし]アクション</primary></indexterm>
[印刷なし]アクションは、<indexterm><primary>[印刷できません]ダイアログ・ボックス</primary></indexterm><!--Original XRef content:
'Figure&numsp;1&hyphen;1'--><xref role="CodeOrFigureOrTable" linkend="PG.basc1.mkr.10">
に示されている[印刷できません]ダイアログ・ボックスを表示します。</para>
<figure>
<title id="PG.basc1.mkr.10">組み込みの[印刷なし]アクションによって表示されるダイアログ・ボックス</title>
<graphic id="PG.basc1.grph.1" entityref="PG.basc1.fig.1"></graphic>
</figure>
<para>
[印刷できません]ダイアログ・ボックスを使用するには、[印刷なし]アクションにマップされる、データ型に固有の印刷アクションを作成します。
たとえば、アプリケーションのデータ型を次のように仮定します。</para>
<programlisting>DATA_ATTRIBUTES MySpreadSheet_Data1
{
&mdash;
}</programlisting>
<para>次の印刷アクションは、このデータ型の[印刷なし]にマップされます。</para>
<programlisting>ACTION Print
{
ARG_TYPE MySpreadSheet_Data1
TYPE MAP
MAP_ACTION NoPrint
}</programlisting>
</sect2>
<sect2 id="PG.basc1.div.13">
<title id="PG.basc1.mkr.11">アプリケーションのための登録パッケージの作成<indexterm><primary>登録パッケージ</primary><secondary>作成</secondary></indexterm><indexterm><primary>基本的な統合方法</primary><secondary>登録パッケージ</secondary>
</indexterm></title>
<para>アプリケーションのために作成するデスクトップ登録パッケージは、アプリケーションのインストール・パッケージの一部にならなければなりません。
登録パッケージを作成するための手順は、既存のアプリケーションをデスクトップに統合するシステム管理者によって実行されます。
これらの手順については、<emphasis>共通デスク トップ環境 上級ユーザおよびシステム管理者ガイド</emphasis>の「アプリケーションの登録」の章に説明があります。</para>
</sect2>
</sect1>
</chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->
<?Pub Caret>
<?Pub *0000030451>

View File

@@ -0,0 +1,412 @@
<!-- $XConsortium: ch02.sgm /main/5 1996/09/08 19:36:17 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Chapter Id="PG.fonts.div.1">
<Title Id="PG.fonts.mkr.1">フォントの統合</Title>
<Para>アプリケーションは、X 端末で、またはネットワークを介してリモート・ワークステーションで使用できます。
このような状況では、ユーザのX ディスプレイをX ウィンドウ・サーバから使用できるフォントは、アプリケーションのデフォルトとは異なることもあり、使用できないフォントもあります。
</Para>
<Para>CDEによって定義されたインタフェース標準フォント名は、すべての
CDE準拠システムで使えるように保証されています。
これらの名前は、実際のフォントを表すわけではありません。
その代わりに、各システム・ベンダが使用できるフォントの中で最も適したフォントにマップする別名です。
アプリケーションの中でこれらのフォント名だけを使用する場合には、CDE準拠システムで最もよく適合したフォントを使うことができます。</Para>
<Para>インタフェース標準フォント名は、すべての
ロケールで使用できることが保証されています。
標準アプリケーション・フォント名のほうは、ISO Latin ロケールだけで使用できます。
詳しくは、<Command>DtStdInterfaceFontNames</Command>と<Command>DtStdAppFontNames</Command>を参照してください。</Para>
<InformalTable Id="PG.fonts.itbl.1" Frame="All">
<TGroup Cols="1">
<ColSpec Colname="1" Colwidth="4.0 in">
<TBody>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Standard Interface Fonts18'--><XRef Role="JumpText" Linkend="PG.fonts.mkr.2"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Using Fonts in CDE Configuration Files20'--><XRef Role="JumpText" Linkend="PG.fonts.mkr.4"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Standard Application Fonts21'--><XRef Role="JumpText" Linkend="PG.fonts.mkr.5"></Para></Entry>
</Row>
</TBody>
</TGroup>
</InformalTable>
<Sect1 Id="PG.fonts.div.2">
<Title Id="PG.fonts.mkr.2">インタフェース標準フォント
</Title>
<Sect2 Id="PG.fonts.div.3">
<Title>デフォルトのフォント名
<IndexTerm>
<Primary>フォント名</Primary>
<Secondary>インタフェース標準</Secondary>
</IndexTerm><IndexTerm>
<Primary>インタフェース標準フォント名</Primary>
</IndexTerm><IndexTerm>
<Primary>フォント名、デフォルト</Primary>
</IndexTerm><IndexTerm>
<Primary>デフォルトのフォント名</Primary>
</IndexTerm></Title>
<Para>インタフェース標準フォント名のセットは、<!--Original XRef content: 'Table&numsp;2&hyphen;2'--><XRef Role="CodeOrFigureOrTable" Linkend="PG.fonts.mkr.6">に示されているXLFDフィールド名の値によって定義されます。</Para>
<Table Id="PG.fonts.tbl.1" Frame="Topbot">
<Title Id="PG.fonts.mkr.3">インタフェース標準フォント名のフィールド名の値</Title>
<TGroup Cols="3">
<ColSpec Colname="1" Colwidth="1.125 in">
<ColSpec Colname="2" Colwidth="1.5 in">
<ColSpec Colname="3" Colwidth="2.25 in">
<THead>
<Row>
<Entry><Para><Literal>フィールド</Literal></Para></Entry>
<Entry><Para><Literal>値</Literal></Para></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Command>FOUNDRY</Command></Para></Entry>
<Entry><Para><Command>dt</Command></Para></Entry>
<Entry><Para>CDE名</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>FAMILY_NAME</Filename></Para></Entry>
<Entry><Para><Command>interface system</Command>
または<Command>interface user</Command></Para></Entry>
<Entry><Para>CDEインタフェース標準フォント名</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>WEIGHT_NAME</Filename></Para></Entry>
<Entry><Para><Command>medium</Command>または<Command>bold</Command></Para></Entry>
<Entry><Para>フォントの線の太さ</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>SLANT</Command></Para></Entry>
<Entry><Para><Command>r</Command></Para></Entry>
<Entry><Para>ローマン</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>SET_WIDTH</Filename></Para></Entry>
<Entry><Para><Command>normal</Command></Para></Entry>
<Entry><Para>通常設定幅</Para></Entry>
</Row>
<Row>
<Entry><Para>SPACING</Para></Entry>
<Entry><Para>pまたはm</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Filename>ADD_STYLE</Filename></Para></Entry>
<Entry><Para>「サイズ・ヒント」
</Para><Para><Command>sans</Command>または<Command>serif</Command></Para></Entry>
<Entry><Para>xxsからxxlまでのプロポーショナルまたは固定幅の値</Para><Para>sansはsans serifフォント。serifはserifフォント</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>PIXEL_SIZE</Filename></Para></Entry>
<Entry><Para>プラットホーム依存</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Filename>POINT_SIZE</Filename></Para></Entry>
<Entry><Para>プラットホーム依存</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Filename>RESOLUTION_X</Filename></Para></Entry>
<Entry><Para>プラットホーム依存</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Filename>RESOLUTION_Y</Filename></Para></Entry>
<Entry><Para>プラットホーム依存</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Filename>AVERAGE_WIDTH</Filename></Para></Entry>
<Entry><Para><Command>m</Command></Para><Para>p</Para></Entry>
<Entry><Para>ユーザ・フォントに対する固定幅</Para><Para>システム・フォントに対するプロポーショナル</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>NUMERIC FIELD</Command></Para></Entry>
<Entry><Para>プラットホーム依存</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Filename>CHAR_SET_REGI
STRY</Filename></Para></Entry>
<Entry><Para>ロケール依存</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Command>ENCODING</Command></Para></Entry>
<Entry><Para>ロケール依存</Para></Entry>
<Entry></Entry>
</Row>
</TBody>
</TGroup>
</Table>
</Sect2>
<Sect2 Id="PG.fonts.div.4">
<Title>インタフェース標準フォントのポイント・サイズ</Title>
<Para>3つのスタイルそれぞれに対する7種類のポイント・サイズ名は
<Filename>ADD_STYLE_NAME</Filename>フィールドに指定します。
名前と一致するフォントのXLFDパターンは、数値としてのサイズではなく、サイズ名に一致します。
インタフェース・フォントの正確なサイズがサイズ名より重要ではないことと、各システムで使用されるインタフェース・フォントの実装上の相違から、各システム間の共通値としてのポイント・サイズを保証できないことから、これらのサイズ名は使用されます。
</Para>
<Para>7種類のサイズ名を次に示します。</Para>
<ProgramListing>xxs extra extra small
xs extra small
s small
m medium
l large
xl extra large
xxl extra extra large</ProgramListing>
<Para>サイズ名の目的は、CDEを実行するいろいろなサイズや解明度のモニタに表示するのに十分なフォントを用意することと、ユーザにとって読みやすいボタン・ラベルやウィンドウ・タイトルの範囲をGUIで実現することです。
最小サイズxxsと最大サイズxxlは、一般的なディスプレイX端末上で、CDEデスクトップの表示と操作を行うために適当なサイズを意図したものです。これらは、判読が難しいほど精緻な印刷物やヘッドライン・サイズ型のディスプレイまで、考慮した
ものではありません。
</Para>
</Sect2>
<Sect2 Id="PG.fonts.div.5">
<Title>インタフェース標準フォント名のパターン</Title>
<Para>このような値を使用すると、XLFDパターンの</Para>
<ProgramListing>-dt-interface*-*</ProgramListing>
<Para>は、論理的にXCDEインタフェース標準フォント名のセットのすべてと一致します。(どの特定のXサーバ動作も意味しないことに注意してください。)</Para>
<Para>たとえば、Westernロケールでは、21のCDEインタフェース標準フォント名のセットのすべては、次のように表現できます。
</Para>
<ProgramListing>-dt-interface system-medium-r-normal-*-*-*-*-*-*-*-iso8859-1
-dt-interface user-medium-r-normal-*-*-*-*-*-m-*-iso8859-1
-dt-interface user-bold-r-normal-*-*-*-*-*-m-*-iso8859-1</ProgramListing>
<Para>7種類のシステム・フォント・サイズに対する<Filename>app-defaults</Filename>ファイル内のパターンの全セットを、次のように表すことができます。
</Para>
<ProgramListing>-dt-interface system-medium-r-normal-xxs*-*-*-*-*-*-*-iso8859-1
-dt-interface system-medium-r-normal-xs*-*-*-*-*-*-*-iso8859-1
-dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-iso8859-1
-dt-interface system-medium-r-normal-m*-*-*-*-*-*-*-iso8859-1
-dt-interface system-medium-r-normal-l*-*-*-*-*-*-*-iso8859-1
-dt-interface system-medium-r-normal-xl*-*-*-*-*-*-*-iso8859-1
-dt-interface system-medium-r-normal-xxl*-*-*-*-*-*-*-iso8859-1</ProgramListing>
<Para>これらのパターンは、リソース内で使用できますし、すべてのCDE準拠システム上のiso Latin-1 ロケールに対する
インタフェース標準名のすべてに一致するはずです。
詳しくは、<Filename>DtStdInterfaceFontNames(5)</Filename>を参照してください。</Para>
</Sect2>
</Sect1>
<Sect1 Id="PG.fonts.div.6">
<Title Id="PG.fonts.mkr.4">CDE構成ファイルでのフォントの
<IndexTerm>
<Primary>フォント</Primary>
<Secondary>構成ファイルでのフォント</Secondary>
</IndexTerm><IndexTerm>
<Primary>構成ファイル</Primary>
<Secondary>フォント</Secondary>
</IndexTerm>
使用</Title>
<Para>CDEは、すべてのプラットホーム上のCDEで動作するアプリケーションで使用できる一般的なアプリケーション・フォント名のセットを、いくつかのサイズにおいて指定します。
各CDEベンダは、標準フォント名のセットを使用可能なフォントにマップします。
既存のフォントへのフォント名のマッピングは、ベンダによって異なります。</Para>
<Para><Filename>app-defaults</Filename>ファイルの中で標準アプリケーション・フォント名を使用すると、すべてのCDEプラットホームで単一の<Filename>app-defaults</Filename>
ファイルを使用することができます。
<IndexTerm>
<Primary>&lt;Filename>app-defaults&lt;Default Para Font>ファイル</Primary>
</IndexTerm>
標準フォント名を使用しない場合には、各CDEプラットホーム上の各アプリケーションごとに別の
<ComputerOutput>app-defaults</ComputerOutput>ファイルをそれぞれ提供しなければなりません。
</Para>
<Para>すべてのCDEシステムは、13の標準アプリケーション・フォント名のセットを、少なくともサイズで提供します。
これは、12の一般的なデザインと変形スタイル
(serifおよびsans serif)、および記号フォントを表します。
これらの標準名に加えて、特定のCDEプラットホームに対応して標準名がマップされるフォント名が提供されます。
また、追加の4つの標準フォント名(固定幅フォント内にserifとsans serifの両方のデザインを可能にします)がCDEプラットホーム・ベンダによって提供されることもあります。
</Para>
<Para>これら13のフォント名は、<IndexTerm><Primary>ISO 8859-1 文字セット</Primary></IndexTerm><IndexTerm><Primary>文字セット ISO 8859-1</Primary></IndexTerm>
ISO 8859-1の文字セットを使用するロケールのために、
CDEプラットホームの中に用意されています。他のロケールでの標準フォント名の使用については、<Emphasis>共通デスクトップ環境 国際化対応プログラマーズ・ガイド</Emphasis>を参照してください。</Para>
</Sect1>
<Sect1 Id="PG.fonts.div.7">
<Title Id="PG.fonts.mkr.5">標準アプリケーション・フォント</Title>
<Sect2 Id="PG.fonts.div.8">
<Title>デフォルトのフォント名<IndexTerm>
<Primary>フォント名、デフォルト</Primary>
</IndexTerm><IndexTerm>
<Primary>デフォルトのフォント名</Primary>
</IndexTerm></Title>
<Para>デフォルトの標準アプリケーション・フォント名のセットは、
<!--Original XRef content: 'Table&numsp;2&hyphen;2'-->
<XRef Role="CodeOrFigureOrTable" Linkend="PG.fonts.mkr.3">に示されているXLFD
フィールド名の値によって定義されます。</Para>
<Table Id="PG.fonts.tbl.2" Frame="Topbot">
<Title Id="PG.fonts.mkr.6">標準アプリケーション・フォント名に対するフィールド名の値</Title>
<TGroup Cols="3">
<ColSpec Colname="1" Colwidth="1.5 in">
<ColSpec Colname="2" Colwidth="1.125 in">
<ColSpec Colname="3" Colwidth="2.375 in">
<THead>
<Row>
<Entry><Para><Literal>フィールド</Literal></Para></Entry>
<Entry><Para><Literal>値</Literal></Para></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Command>FOUNDRY</Command></Para></Entry>
<Entry><Para><Command>dt</Command></Para></Entry>
<Entry><Para>CDE名</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>FAMILY_NAME</Filename></Para></Entry>
<Entry><Para><Command>application</Command></Para></Entry>
<Entry><Para>CDE標準アプリケーション・フォント名</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>WEIGHT_NAME</Filename></Para></Entry>
<Entry><Para><Command>medium</Command>または<Command>bold</Command></Para></Entry>
<Entry><Para>フォントの線の太さ</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>SLANT</Command></Para></Entry>
<Entry><Para><Command>r</Command></Para><Para><Command>i</Command></Para></Entry>
<Entry><Para>ローマン</Para><Para>イタリック</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>SET_WIDTH</Filename></Para></Entry>
<Entry><Para><Command>normal</Command></Para></Entry>
<Entry><Para>通常設定幅</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>ADD_STYLE</Filename></Para></Entry>
<Entry><Para><Command>sans</Command></Para><Para><Command>serif</Command></Para></Entry>
<Entry><Para>sans serifフォント</Para><Para>serifフォント</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>PIXEL_SIZE</Filename></Para></Entry>
<Entry><Para><Filename>*</Filename></Para></Entry>
<Entry><Para>プラットフォーム依存</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>POINT_SIZE</Filename></Para></Entry>
<Entry><Para><Symbol Role="Variable">pointsize</Symbol></Para></Entry>
<Entry><Para>要求されたフォントのポイント・サイズ</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>RESOLUTION_X</Filename></Para></Entry>
<Entry><Para><Filename>*</Filename></Para></Entry>
<Entry><Para>プラットホーム依存</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>RESOLUTION_Y</Filename></Para></Entry>
<Entry><Para><Filename>*</Filename></Para></Entry>
<Entry><Para>プラットホーム依存</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>AVERAGE_WIDTH</Filename></Para></Entry>
<Entry><Para><Command>p</Command></Para><Para><Command>m</Command></Para></Entry>
<Entry><Para>プロポーショナル</Para><Para>固定幅</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>NUMERIC FIELD</Command></Para></Entry>
<Entry><Para><Filename>*</Filename></Para></Entry>
<Entry><Para>プラットホーム依存</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>CHAR_SET_REGISTRY</Filename></Para></Entry>
<Entry><Para><Filename>iso8859-1</Filename></Para></Entry>
<Entry><Para>規格作成組織</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>ENCODING</Command></Para></Entry>
<Entry><Para><Filename>1</Filename></Para></Entry>
<Entry><Para>文字セット番号</Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
<Para>.</Para>
<Para>標準名は、X Windows XLFDフォント命名スキーマに従って使用することができます。
プラットホーム依存フィールドに対して適切なワイルドカードで正しく指定すれば、CDEフォント名は、有効な、対応するプラットホーム依存フォントを確実に開きます。
Xlibの<ComputerOutput>XListFont</ComputerOutput>関数の呼び出しから返される<Command>XLFD</Command>名は、すべてのCDEプラットホーム上で同じであるとは限りません。
</Para>
<Para>このような値を使うと、次のXLFDパターンは特定のプラットホーム上のCDE標準アプリケーション・フォント名のセットのすべてと一致します。</Para>
<ProgramListing>-dt-application-*</ProgramListing>
<Para>次のパターンは、CDEのボールドのプロポーショナルスペース・フォント(serifとsan sserifの両方)に一致します。</Para>
<ProgramListing>-dt-application-bold-*-*-*-*-*-*-*-p-*-*-*-</ProgramListing>
<Para>
また、次のパターンは、固定幅フォントに一致しますserifまたはsan serif、あるいは両方)。
</Para>
<ProgramListing>-dt-application-*-*-*-*-*-*-*-*-m-*-*-*-</ProgramListing>
<Para>CDE標準アプリケーション
・フォント名のセットのすべては、次のように表すことができます。
</Para>
<ProgramListing>-dt-application-bold-i-normal-serif-*-*-*-*-p-*-iso8859-1
-dt-application-bold-r-normal-serif-*-*-*-*-p-*-iso8859-1
-dt-application-medium-i-normal-serif-*-*-*-*-p-*-iso8859-1
-dt-application-medium-r-normal-serif-*-*-*-*-p-*-iso8859-1
-dt-application-bold-i-normal-sans-*-*-*-*-p-*-iso8859-1
-dt-application-bold-r-normal-sans-*-*-*-*-p-*-iso8859-1
-dt-application-medium-i-normal-sans-*-*-*-*-p-*-iso8859-1
-dt-application-medium-r-normal-sans-*-*-*-*-p-*-iso8859-1
-dt-application-bold-i-normal-*-*-*-*-*-m-*-iso8859-1
-dt-application-bold-r-normal-*-*-*-*-*-m-*-iso8859-1
-dt-application-medium-i-normal-*-*-*-*-*-m-*-iso8859-1
-dt-application-medium-r-normal-*-*-*-*-*-m-*-iso8859-1
-dt-application-medium-r-normal-*-*-*-*-*-p-*-dtsymbol-1</ProgramListing>
</Sect2>
<Sect2 Id="PG.fonts.div.9">
<Title Id="PG.fonts.mkr.7">標準アプリケーション・フォントの
<IndexTerm>
<Primary>フォントのポイント・サイズ</Primary>
</IndexTerm><IndexTerm>
<Primary>ポイント・サイズ</Primary>
</IndexTerm>ポイント・サイズ</Title>
<Para>それぞれの標準アプリケーション・フォント名で使用できるポイント・サイズの完全なセットは、ベンダのCDEプラットホームで出荷されるフォントのセットによって決まります(ビットマップ・フォントのみかビットマップ・フォントとスケーラブル・アウトライン・フォントの両方)。
すべてのCDEプラットホーム上で使用できる必要最低限のサイズのセットは、X11R5のデフォルトの、マッピングを構成するビットマップ・フォントの標準サイズ(8、10、12、14、18、24)に対応します。
</Para>
<Para>たとえば、単純な固定幅フォントの6サイズの全セットを次のパターンによって表すことができます。
</Para>
<ProgramListing>-dt-application-medium-r-normal-*-80-*-*-*-m-*-iso8859-1
-dt-application-medium-r-normal-*-100-*-*-*-m-*-iso8859-1
-dt-application-medium-r-normal-*-120-*-*-*-m-*-iso8859-1
-dt-application-medium-r-normal-*-140-*-*-*-m-*-iso8859-1
-dt-application-medium-r-normal-*-180-*-*-*-m-*-iso8859-1
-dt-application-medium-r-normal-*-240-*-*-*-m-*-iso8859-1</ProgramListing>
<Para>これらのパターンは、CDEプラットホーム上の対応する標準フォント名に一致しますが、<Command>POINTSIZE</Command>以外の数値フィールドはプラットッホームによって異なる場合があります。
またベンダが標準名を実装する方法によって、一致するフォントはserifかsan serifのどちらかになります。
</Para>
</Sect2>
<Sect2 Id="PG.fonts.div.10">
<Title Id="PG.fonts.mkr.8">app-defaultsファイル内の標準アプリケーション・フォント名
<IndexTerm>
<Primary>フォント名</Primary>
<Secondary>標準アプリケーション・フォント</Secondary>
</IndexTerm><IndexTerm>
<Primary>標準アプリケーション・フォント名</Primary>
</IndexTerm></Title>
<Para>一つの<ComputerOutput>app-defaults</ComputerOutput>ファイルを作成してアプリケーションのフォント・リソースを指定し、それをすべてのCDEプラットホームで使用することができます。
定義される標準名の部分はどのベンダのプラットホームでも同じなので、<ComputerOutput>app-defaults</ComputerOutput>ファイルの中のリソース指定でこれらの値を指定することができます。ただし、その他のフィールド(<Filename>PIXEL_SIZE</Filename>、<Filename>RESOLUTION_X</Filename>、<Filename>RESOLUTION_Y</Filename>、および<Filename>AVERAGE_WIDTH</Filename>)
は、プラットホームによって異なることがあるので、ワイルドカードを使用しなければなりません。
たとえば、<Command>appOne</Command>という名前のアプリケーションが必要とするデフォルトのリソースを指定するには、次のようにします。</Para>
<ProgramListing>appOne*headFont: -dt-application-bold-r-normal-sans-*-140-*-*-p-*-iso8859-1
appOne*linkFont: -dt-application-bold-i-normal-sans-*-100-*-*-p-*-iso8859-1</ProgramListing>
<Para>もう一つの例として、あるベンダのプラットホーム上で動作する<Command>appTwo</Command>は、見出しとハイパーテキスト・リンクのために2つのフォント・リソースを定義すると仮定します。
<Command>appTwo</Command>は、ポイントのボールドのserifフォント
(Lucidabright bold)とポイントのボールドかつイタリックのsan serifフォント
(Lucida bold-italic)を使用します。
その場合、<Filename>app-defaults</Filename>ファイル内のフォント定義を、
</Para>
<ProgramListing>apptwo*headingFont: -b&amp;h-lucidabright-bold-r-normal--20-140-100-100-p-127-iso8859-1
apptwo*linkFont: -b&amp;h-lucida-bold-i-normal-sans-17-120-100-100-p-96-iso8859-1</ProgramListing>
<Para>から</Para>
<ProgramListing>apptwo*headingFont: -dt-application-bold-r-normal-serif-*-140-*-*-p-*-iso8859-1
apptwo*linkFont: -dt-application-bold-i-normal-sans-*-120-*-*-p-*-iso8859-1</ProgramListing>
<Para>に変更します。ほかのCDEプラットホーム上のフォント名がわからなくても、
CDE標準アプリケーション・フォント名で指定されたプラットホームに独立したパターンは、各プラットホーム上の適切なフォントを示します。
</Para>
<Para>リソース定義の中で、<Filename>*</Filename>ワイルドカードを使用して示したように作成します。
ポイント・サイズ以外の数値フィールドにワイルドカードを適応することによって、フォントの正確なピクセル・サイズまたは平均の幅が少々違っても、リソースがすべてのプラットホーム上のCDEフォントに必ず一致するようにできます。
</Para>
<Para>詳細については、<Emphasis>Common Desktop Environment Programmer's Reference</Emphasis>と<Command>DtStdAppFontNames(5)</Command>を参照してください。</Para>
</Sect2>
</Sect1>
</Chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->

View File

@@ -0,0 +1,190 @@
<!-- $XConsortium: ch03.sgm /main/8 1996/09/08 19:36:25 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<chapter id="PG.msgs.div.1">
<title id="PG.msgs.mkr.1">アプリケーションからのメッセージの表示とログ採取</title>
<para>アプリケーションを実行しているユーザは、メッセージ・フッタ、エラー・ダイアログ、または警告ダイアログにメッセージが表示され、適宜詳しい説明がオンラインヘルプにあることを期待します。
環境によっては、ユーザにとって表示する必要のないメッセージがログされることもあります。
共通デスクトップ環境のアプリケーションは、エラー・メッセージと警告を表示しログ採取するための共通モデルに従います。
</para>
<informaltable id="PG.msgs.itbl.1" frame="All">
<tgroup cols="1">
<colspec colname="1" colwidth="4.0 in">
<tbody>
<row rowsep="1">
<entry><para><!--Original XRef content: 'How to Present Error Messages23'--><xref
role="JumpText" linkend="PG.msgs.mkr.2"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Information to Present in Error Dialogs24'--><xref
role="JumpText" linkend="PG.msgs.mkr.3"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Linking Message Dialogs to Online
Help24'--><xref role="JumpText" linkend="PG.msgs.mkr.4"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Recovery Routines25'--><xref role="JumpText"
linkend="PG.msgs.mkr.5"></para></entry></row>
</tbody></tgroup></informaltable>
<sect1 id="PG.msgs.div.2">
<title id="pg.msgs.mkr.2">エラー・メッセージの表示方法
<indexterm><primary>エラー・メッセージ</primary><secondary>表示</secondary></indexterm></title>
<para>メッセージ・テキストの処理方法のために、ダイアログ、フッタ、または別のユーザ・インタフェースのどこかに表示しないと、ユーザはアプリケーションからのメッセージを見ることができません。
</para>
<para>CDEでは、そのようなメッセージは、通常のユーザが定期的に調べることのないログ・ファイルに出力されます。
警告、メッセージ、及びエラー条件を表示する場所を決めるときには、次の規則に従ってください。
</para>
<itemizedlist remap="Bullet1"><listitem><para><emphasis>情報を示すメッセージの場合は、
</emphasis>アプリケーションのメッセージ・フッタにテキストを表示します。
たとえば、「MyDocファイルがコピーされました」のようになります。
</para>
</listitem><listitem><para><emphasis>エラーまたは重大な警告についてのメッセージの場合は
</emphasis>(ユーザにとって重要な操作が失敗した場合のトラブルなど)、
エラー・ダイアログまたは警告ダイアログに表示します。</para>
</listitem></itemizedlist>
</sect1>
<sect1 id="PG.msgs.div.3">
<title id="PG.msgs.mkr.3">エラー・ダイアログに表示する情報</title>
<para>優れたエラー・ダイアログまたは警告ダイアログでは次の情報を表示します。
</para>
<itemizedlist remap="Bullet1"><listitem><para>なにが起きたか(ユーザの視点から)</para>
</listitem><listitem><para>原因(ユーザが現在の作業と環境に関連づけて理解できるような簡単な表現で)
</para>
</listitem><listitem><para>問題の解決方法</para>
</listitem></itemizedlist>
<para>4、5行のエラー・ダイアログで説明できない場合には、ダイアログに[ヘルプ]ボタンを追加して、それをアプリケーションのヘルプ・ボリューム内のトピックにリンクすることを検討してください。
</para>
<para>メッセージの作成の詳細については、
<emphasis>共通デスクトップ環境 国際化対応プログラマーズ・ガイド</emphasis>を
参照してください。</para>
</sect1>
<sect1 id="pg.msgs.div.4">
<title id="pg.msgs.mkr.4">メッセージ・ダイアログとオンライン・ヘルプのリンク</title>
<para>追加の背景情報が必要な場合や、4、5行のダイアログではエラーを十分に説明できない場合には、オンライン・ヘルプにリンクするボタンを追加することができます。
</para>
<para>ダイアログのオンライン・ヘルプの追加、簡単な作業でできます。
特定なダイアログをオンライン・ヘルプの候補として決めたら、次のようにします。
</para>
<orderedlist><listitem><para>エラー・ヘルプに対して固有なIDを選びます。</para>
<para>このIDがオンライン・ヘルプ・テキストへのリンクとなります。
IDは、文字以下でなければなりません。たとえば、
<filename>DiskSpaceError</filename>のようになります。</para>
</listitem><listitem><para>ダイアログを作成して、ヘルプ・コールバックを追加します。
</para>
<para>エラー・メッセージに対しては<command>XmCreateErrorDialog</command>簡易関数を、警告に対しては
<command>XmCreateWarningDialog</command>簡易関数を使用して、次のようにヘルプ・コールバックを追加します。
</para>
<programlisting>XtAddCallback(dialog, XmNhelpCallback, <replaceable remap="Emphasis">helpfn</replaceable>, &ldquo;<replaceable remap="Emphasis">ID</replaceable>&rdquo;);</programlisting>
<para>この例では、<emphasis>helpfn</emphasis>はヘルプ・ダイアログを管理するために作成したヘルプ関数であり、文字列「<emphasis>ID</emphasis>」はエラー・メッセージに対して選んだIDです(たとえば<filename>DiskSpaceError</filename>)。ヘルプ関数では、<command>XmNlocationId</command>リソースを<emphasis>ID</emphasis>の値に設定します。<filename>/usr/dt/examples/dthelp</filename>デイレクトリに、このようなヘルプ関数の設定例があります。
</para>
<para>ヘルプ・ダイアログ・ウィジットの作成と管理の詳細については、
<emphasis>共通デスクトップ環境 ヘルプ・システム 設計者およびプログラマのためのガイド</emphasis>を参照してください。</para>
</listitem><listitem><para>エラー・メッセージに対応するヘルプ・セクションを書きます。
</para>
<para>ヘルプ・ボリュームの「メッセージ」の章に、メッセージの説明を書きます。
ヘルプのソース・ファイルでは、メッセージごとにセクションを設けなければならず、セクションの始めのID=属性は、コードの中でエラーに対して選んだIDと一致しなければなりません。
</para>
<para>たとえば、<command>s1</command>セクション見出しでは、IDは<computeroutput>DiskSpaceError</computeroutput>です。</para>
<para>次の見出しは、ユーザのシステムに十分なデイスク領域がないときに、「ファイルをセーブできません」というエラー・メッセージを表示します。
</para>
<programlisting>&lt;s1 ID=DiskSpaceError>Could Not Save File &lt;\s1></programlisting>
<para>
規則によって、セクションの見出しのテキストはエラー・ダイアログと一対一に対応しなければならないので注意してください。</para>
</listitem><listitem><para>ヘルプ・ファイルを再作成します。</para>
<para>エラー・メッセージに対する新しいヘルプ・セクションは、ヘルプ・ファイルを再作成して
(<command>dthelptag</command>プログラムを使用して)、アプリケーションを再コンパイルするとすぐにアクティブになります。
</para>
</listitem></orderedlist>
<para>オンライン・ヘルプの記述と作成の詳細については、<emphasis>共通デスクトップ環境 ヘルプ・システム 設計者およびプログラマのためのガイド</emphasis>を参照してください。
</para>
</sect1>
<sect1 id="PG.msgs.div.5">
<title id="PG.msgs.mkr.5">回復処理ルーチン</title>
<para>エラー条件のための回復処理ルーチンがある場合には、ダイアログに[再実行]
ボタンを追加することを検討してください。
たとえば、システムのディスク領域が不足しているためにファイルをコピーできなかった場合、ダイアログに[再コピー]オプションがあれば、ユーザはディスク領域やアクセス権の問題を訂正してから、そのオプションを選ぶことができます。
</para>
</sect1>
<sect1 id="PG.msgs.div.6">
<title id="PG.msgs.mkr.6">メッセージ・ログ採取の使用</title>
<indexterm><primary>エラー・メッセージ</primary><secondary>ログ採取</secondary></indexterm>
<indexterm><primary>メッセージ・ログ採取</primary><secondary>一般的な情報</secondary></indexterm>
<para>メッセージ・ログ採取・サービスはCDEアプリケーションのメッセージのログを取ります。
このサービスは、
ユーザやシステム管理者が問題を診断するために使用できるメッセージの位置を提供します。
デスクトップ環境では、アプリケーションは<literal>ファイル・マネージャ</literal>または<literal>フロント・パネル</literal>を経て
(シェルからの直接呼び出しに対抗するものとして)開始します。
アプリケーションが重要な情報を<literal>stderr</literal>に書く場合に、その情報が失われることがあります。
ですから、ユーザがその情報をログ内で見つけられるように、アプリケーションはCDEメッセージ・ログ採取・サービスを使用しなければなりません。
ユーザ・インタフェースを持たないライブラリやアプリケーションも、メッセージのログを取るためにこのサービスを使用します。
このようなアプリケーションは、システム・コンソールや<literal>stderr</literal>に出力する代わりに、メッセージ・ログ採取・サービスを使用しなければなりません。
</para>
<para>メッセージ・ログ採取・サービスは、次の型のメッセージをサポートします。
</para>
<itemizedlist remap="Bullet1">
<listitem><para>情報: ユーザが警告を受ける必要のない情報メッセージ(たとえば、ステータス情報など)。ユーザにとっては、この型のメッセージは見なくてもよいかもしれません。
</para></listitem>
<listitem><para>標準エラー出力: アプリケーションが、子プロセスから<literal>stderr</literal>のログを取る必要がある場合は、その<literal>stderr</literal>は、Stderrメッセージ型としてログ採取されなければなりません。たとえば、<literal>dtexec</literal>プログラムは、このメッセージ型を
ログを取るメッセージを識別するために使用します(コマンド型のアクションからの<literal>stderr</literal>)。
</para></listitem>
<listitem><para>デバッグ: アプリケーションからのデバッグ・メッセージ
(たとえば、<literal>-debug</literal>コマンド行オプションが使われたときに出力されるメッセージ
)は、デバッグ型メッセージとしてログ採取されなければなりません。
</para></listitem>
<listitem><para>警告: アプリケーション・プログラムを終了させるほど重大なエラーではない場合です。
</para></listitem>
<listitem><para>エラー: プログラムを終了させなくてはならないほど致命的なエラーの場合です。
</para></listitem>
</itemizedlist>
<para>ユーザ・インタフェースを持たないデモン型のアプリケーション(たとえば、<literal>inetd</literal>によって開始される低レベル・サービスなど)は、
CDEメッセージ・ログ採取・サービスよりもシステムのsyslogサービスを使う方が向いています。
</para>
<sect2 id="PG.msgs.div.7">
<Title>ログ項目の書式</title>
<indexterm><primary>メッセージ・ログ採取</primary><secondary>ログ項目の書式</secondary></indexterm>
<para>メッセージ・ログの項目と書式を次に示します。
</para>
<para><literal>***</literal> <symbol role="Variable">msgtype_string</symbol> <literal>(</literal><symbol role="Variable">msg_type</symbol><literal>):</literal> <symbol role="Variable">program_name</symbol><literal>: PID</literal> <symbol role="Variable">proc_id</symbol><literal>:</literal> <symbol role="Variable">date</symbol>
</para>
<para><symbol role="Variable">_text</symbol>
</para>
<para><literal>*** [</literal><symbol role="Variable">bytes_output</symbol><literal>]</literal>
</para>
<para>たとえば
</para>
<programlisting>*** WARNING(3): fontview: PID 12312: Thu Jun 13 16:51:51 1995
The specified font 'fixed' could not be loaded.
*** [109]
</programlisting>
<Para>日付の後に改行、テキストの後に改行、そしてバイト数の後に2行改行(空白行が各ログ項目を分けます)
型の文字列と日付指定は、現在のロケールのメッセージ・カタログから検索されなければなりません。
ログを取るためにメッセージを配置することは、アプリケーションの責任です。
</para>
</sect2>
<sect2 id="PG.msgs.div.8">
<title>メッセージ・ログ採取API</title>
<para>メッセージ・ログ採取APIには、次の機能があります。
</para>
<itemizedlist remap="Bullet1">
<listitem><para><function>DtMsgLogMessage</function>: メッセージ・ログにメッセージのログを取る。
<indexterm><primary>DtMsgLogMessage</primary></indexterm>
</para></listitem>
<listitem><para><function>DtMsgLogSetHandler</function>: アプリケーションが<function>DtMsgLogMessage</function>を呼び出したときに呼び込まれる代替メッセージ・ログ採取ハンドラを組み込む。
この機能はオプションで、デフォルトのメッセージ・ログ採取ハンドラを取り消すときだけ使用します。
<indexterm><primary>DtMsgLogSetHandler</primary></indexterm>
</para>
</listitem>
<listitem><para><function>DtMsgLogOpenFile</function>: メッセージ・ログ・ファイルを開きます。
<indexterm><primary>DtMsgLogOpenFile</primary></indexterm>
</para></listitem>
</itemizedlist>
</sect2>
</sect1>
</chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->

View File

@@ -0,0 +1,157 @@
<!-- $XConsortium: ch04.sgm /main/5 1996/09/08 19:36:34 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Chapter Id="PG.smgr.div.1">
<Title Id="PG.smgr.mkr.1">セッション・マネージャとの統合</Title>
<Para>セッション・マネージャは、ユーザが(現在のセッションから)ログアウトするときや、ユーザが(ホーム・セッションとして)環境を保存するときに、デスクトップ環境と実行中のアプリケーションに関する情報を保存します。
アプリケーションが現在のセッッションまたはホーム・セッションの一部として保存され、次のセッションの一部として再起動されるためには、Xクライアント間通信規約マニュアルICCCM1.1のセッション管理プロトコルに関与する必要があります。
この章では、セッション・マネージャがセッションを保存し、復元する方法を概説し、アプリケーションがセッション管理に関与するために必要な手順を詳しく述べます。
</Para>
<InformalTable Id="PG.smgr.itbl.1" Frame="All">
<TGroup Cols="1">
<ColSpec Colname="1" Colwidth="4.0 in">
<TBody>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'How Session Manager Saves Sessions and Applications27'-->
<XRef Role="JumpText" Linkend="PG.smgr.mkr.2"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'How to Program the Application for Session Management28'-->
<XRef Role="JumpText" Linkend="PG.smgr.mkr.3"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'How Session Manager Restores a Session30'-->
<XRef Role="JumpText" Linkend="PG.smgr.mkr.4"></Para></Entry>
</Row>
</TBody>
</TGroup>
</InformalTable>
<Sect1 Id="PG.smgr.div.2">
<Title Id="PG.smgr.mkr.2">セッション・マネージャがセッション及びアプリケーションを保存する方法</Title>
<Para>
セッションを終了するときや、ホーム・セッションを保存するとき、 セッション・マネージャは次のことを行います。</Para>
<OrderedList>
<ListItem>
<Para>選択されたリソース設定とXサーバ設定を保存する。
</Para>
</ListItem>
<ListItem>
<Para>各アプリケーションが状態を保存できるようにして、保存の完了を待つ。
</Para>
</ListItem>
<ListItem>
<Para>アプリケーションの再起動に必要なコマンド行を獲得する。
</Para>
</ListItem>
</OrderedList>
</Sect1>
<Sect1 Id="PG.smgr.div.3">
<Title Id="PG.smgr.mkr.3">セッション管理のためのアプリケーションのプログラム方法</Title>
<Sect2 Id="PG.smgr.div.4">
<Title>プログラム環境の設定</Title>
<Para>この節では、統合プロセスの一部としてアプリケーションを保存するために必要なプログラミングの手順を説明します。
</Para>
<Para>プログラム環境を設定するには、次の手順に従います。</Para>
<OrderedList>
<ListItem>
<Para>次のヘッダ・ファイルを組み込みます。</Para>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para><Filename>Xm/Xm.h</Filename></Para>
</ListItem>
<ListItem>
<Para><Filename>Xm/Protocols.h</Filename></Para>
</ListItem>
<ListItem>
<Para><Filename>Dt/Session.h</Filename></Para>
</ListItem>
</ItemizedList>
</ListItem>
<ListItem>
<Para><Command>libXm</Command>と<Command>libDtSvc</Command>をリンクします。</Para>
</ListItem>
<ListItem>
<Para>ツールキットを初期化して、トップレベル・ウィジェットを作成します。</Para>
</ListItem>
</OrderedList>
<Sect3 Id="PG.smgr.div.5">
<Title>WM_SAVE_YOURSELFアトムの設定</Title>
<Para>次の例で示すように、Motifの<Filename>XmAddWMProtocol()</Filename>関数を利用して、アプリケーションのトップレベル・ウィンドウの<ComputerOutput>WM_PROTOCOLS</ComputerOutput>属性の<Filename>WM_SAVE_YOURSELF</Filename>アトムを設定します。
</Para>
<ProgramListing>Atom XaWmSaveYourself;
Display *dsp;
dsp = XtDisplay(toplevel);
XaWmSaveYourself =
XmInternAtom(dsp, &rdquo;WM_SAVE_YOURSELF&rdquo;, False);
XmAddWMProtocols(toplevel, &amp;XaWmSaveYourself, 1);</ProgramListing>
<Note>
<Para>複数のウィンドウに対して<ComputerOutput>WM_SAVE_YOURSELF</ComputerOutput>アトムを設定しないでください。</Para>
</Note>
</Sect3>
<Sect3 Id="PG.smgr.div.6">
<Title>WM_SAVE_YOURSELFメッセージを受け取るための準備</Title>
<Para>Motifの<Filename>XmAddWMProtocolCallback()</Filename>関数を使用して、アプリケーションが
<Filename>WM_SAVE_YOURSELF</Filename>クライアント・メッセージを受け取ったときに呼び出されるコールバック・プロシージャを設定します。
</Para>
<ProgramListing>XmAddWMProtocolCallback(toplevel, XaWmSaveYourself,
SaveYourselfProc,
toplevel);</ProgramListing>
</Sect3>
<Sect3 Id="PG.smgr.div.7">
<Title>WM_SAVE_YOURSELFメッセージの処理</Title>
<Para>セッション・マネージャがこのアプリケーションのトップレベル・ウィンドウに<Filename>WM_SAVE_YOURSELF</Filename>クライアント・メッセージを送ると、
<Filename>SaveYourselfProc()</Filename>コールバック・プロシージャが呼び出されます。
このコールバックを使用して、アプリケーションの状態を保存します。
アプリケーションはプログラマが選んだ任意の方法で状態を保存できますが、保存中はユーザと対話できません。
</Para>
<Para>セッション・マネージャは、アプリケーションの状態を保存するための絶対パス名とベース・ファイル名を返す手段として、<Filename>DtSessionSavePath()</Filename>関数を提供します。
</Para>
</Sect3>
<Sect3 Id="PG.smgr.div.8">
<Title>WM_COMMAND属性の設定</Title>
<Para>アプリケーションが<Filename>WM_SAVE_YOURSELF</Filename>メッセージの処理
(状態を保存するか、メッセージを無視する)を終了した後、
アプリケーションはトップレベル・ウィンドウの<Filename>WM_COMMAND</Filename>属性を設定して、保存操作が完了したことをセッション・マネージャに知らせなければなりません。
</Para>
<Para>アプリケーションのトップレベル・ウィンドウの<Filename>WM_COMMAND</Filename>属性を設定するには、Xlibの<Filename>XsetCommand()</Filename>関数を使います。
この属性を設定することによって、アプリケーションが<Filename>WM_SAVE_YOURSELF</Filename>メッセージの処理を終了したことを
セッション・マネージャに知らせ、アプリケーションを再起動するために必要なコマンド行を
セッション・マネージャに与えます。
</Para>
<Para><Filename>XsetCommand()</Filename>は、コマンド引数の配列を受け入れます。
アプリケーションが保存プロセスの一部として<Filename>DtSessionSavePath()</Filename>関数を使用する場合には、<Filename>XsetCommand()</Filename>には追加のコマンド引数<Command>&hyphen;session</Command> <Symbol Role="Variable">basename</Symbol>が必要です。<Symbol Role="Variable">basename</Symbol>は、<Filename>DtSessionSavePath()</Filename>によって返されるベース・ファイル名です。</Para>
</Sect3>
</Sect2>
</Sect1>
<Sect1 Id="PG.smgr.div.9">
<Title Id="PG.smgr.mkr.4">セッション・マネージャがセッションを復元する方法</Title>
<Para>セッション・マネージャは、次のようにしてセッションを復元します。</Para>
<OrderedList>
<ListItem>
<Para>リソース・データベースとサーバ設定を復元する。
</Para>
</ListItem>
<ListItem>
<Para>保存されたコマンド行を使用して、アプリケーションを再起動する。
</Para>
</ListItem>
</OrderedList>
<Para>アプリケーションが、保存された状態のパスを見つけるために<Filename>DtSessionSavePath()</Filename>を使用した場合には、
アプリケーションはベース・ファイル名を<Filename>-session</Filename>引数から
<Filename>DtSessionRestorePath()</Filename>関数に渡して、保存状態の絶対パス名を見つけることができます。
</Para>
</Sect1>
</Chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,385 @@
<!-- $XConsortium: ch06.sgm /main/5 1996/09/08 19:36:52 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Chapter Id="PG.wsmgr.div.1">
<Title Id="PG.wsmgr.mkr.1">ワークスペース・マネージャとの統合
</Title>
<Para>
<IndexTerm>
<Primary>ワークスペース・マネージャ</Primary>
<Secondary>ワークスペース・マネージャとの統合</Secondary>
</IndexTerm>ワークスペース・マネージャは、デスクトップの複数のワークスペース環境の中でアプリケーションがウィンドウを管理するための手段を提供します。
アプリケーションは、ワークスペース・マネージャと通信することによって
、おもに4つのタスクを実行することができます。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>アプリケーションのウィンドウを1つ以上のワークスペースに置く。
</Para>
</ListItem>
<ListItem>
<Para>アプリケーションのウィンドウが位置するワークスペースを識別する。
</Para>
</ListItem>
<ListItem>
<Para>アプリケーションのウィンドウが別のワークスペースに移動するのを防止する。</Para>
</ListItem>
<ListItem>
<Para>ユーザが別のワークスペースに切り替えるなど、ワークスペースに対する変更を監視する。
</Para>
</ListItem>
</ItemizedList>
<Para>通常セッション・マネージャはプログラマに干渉されることなく、アプリケーションのメイン・ウィンドウを正しいワークスペースに取り出します。
ただし、アプリケーションが複数のトップレベル・ウィンドウを持つ場合には、ワークスペース・マネージャのAPIを使用してウィンドウの位置を特定し、このデータをセッション状態の一部として保存しなければなりません。
</Para>
<Para>セッション間のアプリケーション関連情報の保存についての詳細は、<!--Original XRef content: 'Chapter&numsp;4, &xd2;Integrating with Session Manager'-->
<XRef Role="ChapNumAndTitle" Linkend="PG.smgr.mkr.1">を参照してください。
</Para>
<InformalTable Id="PG.wsmgr.itbl.1" Frame="All">
<TGroup Cols="1">
<ColSpec Colname="1" Colwidth="4.0 in">
<TBody>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Communicating with the Workspace Manager64'-->
<XRef Role="JumpText" Linkend="PG.wsmgr.mkr.2"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Placing an Application Window in Workspaces64'-->
<XRef Role="JumpText" Linkend="PG.wsmgr.mkr.3"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Identifying Workspaces Containing the Application Windows65'-->
<XRef Role="JumpText" Linkend="PG.wsmgr.mkr.4"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Preventing Application Movement Among Workspaces66'-->
<XRef Role="JumpText" Linkend="PG.wsmgr.mkr.5"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Monitoring Workspace Changes67'-->
<XRef Role="JumpText" Linkend="PG.wsmgr.mkr.6"></Para></Entry>
</Row>
</TBody>
</TGroup>
</InformalTable>
<Sect1 Id="PG.wsmgr.div.2">
<Title Id="PG.wsmgr.mkr.2">ワークスペース・マネージャとの
<IndexTerm>
<Primary>ワークスペース・マネージャ</Primary>
<Secondary>ワークスペース・マネージャとの通信</Secondary>
</IndexTerm>通信</Title>
<Para>アプリケーションは、デスクトップが提供する
関数を使用して、ワークスペース・マネージャと通信します。
これらの関数を使用すると、ワークスペースの管理に関するさまざまなタスクをすばやく簡単に実行できます。
次に、これらの関数のリストを示します。
</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Command>DtWsmAddCurrentWorkspaceCallback</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmAddWorkspaceFunctions</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmAddWorkspaceModifiedCallback</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmFreeWorkspaceInfo</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmGetCurrentBackdropWindows</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmGetCurrentWorkspace</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmGetWorkspaceInfo</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmGetWorkspaceList</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmGetWorkspacesOccupied</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmOccupyAllWorkspaces</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmRemoveWorkspaceCallback</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmRemoveWorkspaceFunctions</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmSetCurrentWorkspace</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtWsmSetWorkspacesOccupied</Command></Para>
</ListItem>
</ItemizedList>
<Para>2つのデモ・プログラム(<Filename>occupy.c</Filename>と<Filename>wsinfo.c</Filename>)のコードの一部分が、これらの関数の使用方法を示しています。<Command>occupy.c、wsinfo.c</Command>、
およびいくつかのブランドのワークステーションのmakefileをリストしたものが、
ディレクトリ<Filename>/usr/dt/examples/dtwsm</Filename>にあります。
各関数の詳細については、該当するマニュアル・ページを参照してください。
</Para>
</Sect1>
<Sect1 Id="PG.wsmgr.div.3">
<Title Id="PG.wsmgr.mkr.3">アプリケーション・ウィンドウを
<IndexTerm>
<Primary>ワークスペース</Primary>
<Secondary>アプリケーション・ウィンドウをワークスペースに置く</Secondary>
</IndexTerm>ワークスペースに置く</Title>
<Para>アプリケーションは、ウィンドウを任意のまたは全部の既存のワークスペースに置くことができます。<Command>DtWsmOccupyAllWorkspaces</Command>は、現在定義されているすべてのワークスペースにウィンドウを置きます。
一方、<Command>DtWsmSetWorkspacesOccupied</Command>は、
関数に渡されたリストの中で指定されているすべてのワークスペースに
ウィンドウを置きます。
</Para>
<Sect2 Id="PG.wsmgr.div.4" Role="Procedure">
<Title>アプリケーション・ウィンドウをすべてのワークスペースに置くには
</Title>
<OrderedList>
<ListItem>
<Para><Command><IndexTerm>
<Primary>DtWsmOccupyAllWorkspaces</Primary>
</IndexTerm>DtWsmOccupyAllWorkspaces</Command>を使用します。</Para>
<Para><Filename>occupy.c</Filename>では、[すべてのワークスペースに配置]プッシュ・ボタンのコールバック<Command>allWsCB</Command>が、
この関数を呼び出します。</Para>
<ProgramListing>DtWsmOccupyAllWorkspaces (XtDisplay(toplevel),
XtWindow(toplevel));</ProgramListing>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para><Filename>XtDisplay(toplevel)</Filename>は、Xのディスプレイです。</Para>
</ListItem>
<ListItem>
<Para><Filename>XtWindow(toplevel)</Filename>は、すべてのワークスペースに置かれるウィンドウです。</Para>
</ListItem>
</ItemizedList>
</ListItem>
</OrderedList>
<Para>この関数に関する詳細は、<Command>DtWsmOccupyAllWorkspaces</Command>のマニュアル・ページを参照してください。
</Para>
</Sect2>
<Sect2 Id="PG.wsmgr.div.5" Role="Procedure">
<Title>アプリケーション・ウィンドウを指定されたワークスペースに置くには
</Title>
<OrderedList>
<ListItem>
<Para><Command><IndexTerm>
<Primary>DtWsmSetWorkspacesOccupied</Primary>
</IndexTerm>DtWsmSetWorkspacesOccupied</Command>を使用します。</Para>
<Para><Filename>occupy.c</Filename>では、[配置するワークスペース]プッシュ・ボタンのコールバック<Command>setCB</Command>が、この関数を呼び出します。</Para>
<ProgramListing>DtWsmSetWorkSpacesOccupied (XtDisplay(toplevel),
XtWindow(toplevel), paWsSet, numSet);</ProgramListing>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para><Filename>XtDisplay(toplevel)</Filename>は、Xのディスプレイです。</Para>
</ListItem>
<ListItem>
<Para><Filename>XtWindow(toplevel)</Filename>は、ワークスペースに置かれるウィンドウです。</Para>
</ListItem>
<ListItem>
<Para><Command>paWsSet</Command>は、Xのアトムに変換されたワークスペース名のリストを指すポインタです。
</Para>
</ListItem>
<ListItem>
<Para><Command>numSet</Command>は、リスト内のワークスペースの番号です。
</Para>
</ListItem>
</ItemizedList>
</ListItem>
</OrderedList>
<Para>この関数についての詳細は、<Command>DtWsmSetWorkspacesOccupied</Command>のマニュアル・ページを参照してください。</Para>
</Sect2>
</Sect1>
<Sect1 Id="PG.wsmgr.div.6">
<Title Id="PG.wsmgr.mkr.4">アプリケーション・ウィンドウがあるワークスペースの
<IndexTerm>
<Primary>ワークスペース</Primary>
<Secondary>識別</Secondary>
</IndexTerm>識別</Title>
<Para>関数<Command>DtWsmGetWorkspacesOccupied</Command>は、指定されたアプリケーション・ウィンドウがあるワークスペースのリストを返します。<Filename>occupy.c</Filename>では、
プロシージャ<Command>ShowWorkspaceOccupancy</Command>がこの関数を呼び出します。
この呼び出しの結果に基づいて、<Command>ShowWorkspaceOccupancy</Command>は
ワークスペースを表すトグル・ボタンの外観を変更します。
アプリケーション・ウィンドウがあるワークスペースの各トグル・ボタンには、チェック・マークが表示されます。
</Para>
<Sect2 Id="PG.wsmgr.div.7" Role="Procedure">
<Title>アプリケーション・ウィンドウがあるワークスペースを識別するには</Title>
<OrderedList>
<ListItem>
<Para><Command><IndexTerm>
<Primary>DtWsmGetWorkspacesOccupied</Primary>
</IndexTerm>DtWsmGetWorkspacesOccupied</Command>を使用します。</Para>
</ListItem>
</OrderedList>
<ProgramListing>rval = DtWsmGetWorkspacesOccupied(XtDisplay(toplevel)
XtWindow(toplevel), &amp;paWsIn, &amp;numWsIn);</ProgramListing>
<Para><Filename>where:</Filename></Para>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para><Filename>XtDisplay(toplevel)</Filename>は、Xのディスプレイです。
</Para>
</ListItem>
<ListItem>
<Para><Filename>XtWindow(toplevel)</Filename>は、ワークスペースで検索されるウィンドウです。
</Para>
</ListItem>
<ListItem>
<Para><Command>paWsIn</Command>は、Xのアトムに変換されたワークスペース名のリストを指すポインタのアドレスです。
</Para>
</ListItem>
<ListItem>
<Para><Command>numWsIn</Command>は、リスト内のワークスペースの番号を表す整数のアドレスです。
</Para>
</ListItem>
</ItemizedList>
<Para>この呼び出しの後、ループがセットされ、ワークスペースのリスト(<Command>DtWsmGetWorkspaceList</Command>によって
プロシージャ<Command>SetUpWorkspaceButtons</Command>内で検索された)と、
アプリケーション・ウィンドウが検索されたワークスペースのリストとを比較します。
各トグル・ボタンがアプリケーション・ウィンドウがあるワークスペースを表す場合には、
トグル・ボタン・リソース <Command>XmNset</Command>にTrueが設定されます。
</Para>
</Sect2>
</Sect1>
<Sect1 Id="PG.wsmgr.div.8">
<Title Id="PG.wsmgr.mkr.5">ワークスペース間の
<IndexTerm>
<Primary>ワークスペース</Primary>
<Secondary>アプリケーションの移動防止</Secondary>
</IndexTerm>アプリケーションの移動防止</Title>
<Para>関数<Command><IndexTerm>
<Primary>DtWsmRemoveWorkspaceFunctions</Primary>
</IndexTerm>DtWsmRemoveWorkspaceFunctions</Command>は、アプリケーションに対して次のことを防止します。
</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>他のワークスペースへの切り替え</Para>
</ListItem>
<ListItem>
<Para>すべてのワークスペースの占有</Para>
</ListItem>
<ListItem>
<Para>現在のワークスペースからの削除</Para>
</ListItem>
</ItemizedList>
<Para><Command>DtWsmRemoveWorkspaceFunctions</Command>が上記のことを行う場合は、
デスクトップ・ワークスペース・マネージャ (<Command>dtwm</Command>)のウィンドウ・メニューの一部分をアクティブにしないようにします。
<Command>dtwm</Command>はアプリケーションのトップレベル・ウィンドウを管理するときにワークスペース情報をチェックするだけなので、
アプリケーションはトップレベル・ウィンドウがマップされる前に<Command>DtWsmRemoveWorkspaceFunctions</Command>を
呼び出さなければなりません。
アプリケーションのトップレベル・ウィンドウが管理された後で<Command>DtWsmRemoveWorkspaceFunctions</Command>を
呼び出す必要がある場合には、
最初にXlib関数<Command>XWithdrawWindow</Command>を
呼び出してから<Filename>DtWsmRemoveWorkspaceFunctions</Filename>を呼び出し、
次に<Command>XMapWindow</Command>を呼び出してトップレベル・ウィンドウを再マップしなければなりません。
</Para>
<Sect2 Id="PG.wsmgr.div.9" Role="Procedure">
<Title>別のワークスペースへの移動を防止するには</Title>
<OrderedList>
<ListItem>
<Para><Command><IndexTerm>
<Primary>DtWsmRemoveWorkspaceFunctions</Primary>
</IndexTerm>DtWsmRemoveWorkspaceFunctions</Command>を使用します。</Para>
<ProgramListing>DtWsmRemoveWorkspaceFunctions(XtDisplay(toplevel),
XtWindow(toplevel));</ProgramListing>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para><Filename>XtDisplay(toplevel)</Filename>は、Xのディスプレイです。</Para>
</ListItem>
<ListItem>
<Para><Filename>XtWindow(toplevel)</Filename>は、ワークスペースの移動を防止するウィンドウです。
</Para>
</ListItem>
</ItemizedList>
</ListItem>
</OrderedList>
</Sect2>
</Sect1>
<Sect1 Id="PG.wsmgr.div.10">
<Title Id="PG.wsmgr.mkr.6">ワークスペースの
<IndexTerm>
<Primary>ワークスペース</Primary>
<Secondary>変更の監視</Secondary>
</IndexTerm>変更の監視</Title>
<Para>次の関数の1つまたは両方を使用して、ワークスペースの変更を監視することができます。
</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Command><IndexTerm>
<Primary>DtWsmAddCurrentWorkspceCallback</Primary>
</IndexTerm>DtWsmAddCurrentWorkspaceCallback</Command></Para>
</ListItem>
<ListItem>
<Para><Command><IndexTerm>
<Primary>DtWsmWorkspaceModifiedCallback</Primary>
</IndexTerm>DtWsmWorkspaceModifiedCallback</Command></Para>
</ListItem>
</ItemizedList>
<Para><Command>DtWsmAddCurrentWorkspaceCallback</Command>は、ワークスペース・マネージャが
新しいワークスペースに切り替えられたときに必ず呼び出される
アプリケーション・コールバックを登録します。
詳細は、<Filename>DtWsmAddCurrentWorkspaceCallback</Filename>(3)のマニュアル・ページを参照してください。
</Para>
<Para><Command>DtWsmWorkspaceModifiedCallback</Command>は、ワークスペースが追加、削除、または変更されたときに必ず呼び出される
アプリケーション・コールバックを登録します。
詳細は、<Filename>DtWsmWorkspaceModifiedCallback</Filename>(3) のマニュアル・ページを参照してください。</Para>
<Sect2 Id="PG.wsmgr.div.11" Role="Procedure">
<Title>ワークスペースの切り替えを監視するには</Title>
<OrderedList>
<ListItem>
<Para><Command><IndexTerm>
<Primary>DtWsmAddCurrentWorkspaceCallback</Primary>
</IndexTerm>DtWsmAddCurrentWorkspaceCallback</Command>を使用します。</Para>
</ListItem>
</OrderedList>
<Para>デモ・プログラム<Filename>wsinfo.c</Filename>では、この関数はトップレベル・ウィジェットが実体化された後で呼び出されます。
</Para>
<ProgramListing>DtWsmAddCurrentWorkspaceCallback (toplevel, wschangecb, NULL);</ProgramListing>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para><Command>toplevel</Command>は、アプリケーションのトップレベル ・ウィジェットです。</Para>
</ListItem>
<ListItem>
<Para><Command>wschangecb</Command>は、呼び出される関数の名前です。
</Para>
</ListItem>
<ListItem>
<Para><Command>NULL</Command>は、コールバックに渡されるクライアント・データのパラメータです。
この場合、データは渡されません。
</Para>
</ListItem>
</ItemizedList>
</Sect2>
<Sect2 Id="PG.wsmgr.div.12" Role="Procedure">
<Title>他のワークスペースの変更を監視するには
</Title>
<OrderedList>
<ListItem>
<Para><Command><IndexTerm>
<Primary>DtWsmWorkspaceModifiedCallback</Primary>
</IndexTerm>DtWsmWorkspaceModifiedCallback</Command>を使用します。</Para>
<ProgramListing>DtWsmWorkspaceModifiedCallback (toplevel, wschangecb, NULL);</ProgramListing>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para><Command>toplevel</Command>は、アプリケーションのトップレベル・ウィジェットです。</Para>
</ListItem>
<ListItem>
<Para><Command>wschangecb</Command>は、呼び出される関数の名前です。
</Para>
</ListItem>
<ListItem>
<Para><Command>NULL</Command>は、コールバックに渡されるクライアント・データのパラメータです。
この場合、データは渡されません。
</Para>
</ListItem>
</ItemizedList>
</ListItem>
</OrderedList>
</Sect2>
</Sect1>
</Chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,698 @@
<!-- $XConsortium: ch08.sgm /main/8 1996/09/08 19:37:13 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Chapter Id="PG.aIII.div.1">
<Title Id="PG.aIII.mkr.1">アプリケーションからのアクションの
実行</Title>
<Para Id="PG.aIII.mkr.2">アプリケーションが拡張性のある一連のデータ型を管理する場合には、アクションの実行によりデータ型を直接実行しなければなりません。
この章では、アプリケーションからアクションを実行する方法について説明します。
アクションの実行方法を示すサンプル・プログラムも示します。</Para>
<Para>アクションとアクションの作成の詳細については、
<IndexTerm>
<Primary>アクション</Primary>
</IndexTerm>
<IndexTerm><Primary>アクション</Primary>
<Secondary>アプリケーションからのアクションの実行</Secondary>
</IndexTerm>このマニュアルの
<!--Original XRef content: 'Chapter&numsp;9,
&xd2;Accessing the Data-Typing Database'-->
<XRef Role="ChapNumAndTitle" Linkend="PG.datat.mkr.1">と、
<Emphasis>共通デスクトップ環境 上級ユーザおよびシステム管理者ガイド</Emphasis>の次の章を参照してください。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>「アクションおよびデータ型の概要」</Para>
</ListItem>
<ListItem>
<Para>「アクション作成ツールを使ったアクションとデータ型の作成」</Para>
</ListItem>
<ListItem>
<Para>「手動によるアクションの作成」</Para>
</ListItem>
<ListItem>
<Para>「手動によるデータ型の作成」</Para>
<InformalTable Id="PG.aIII.itbl.1" Frame="All">
<TGroup Cols="1">
<ColSpec Colname="1" Colwidth="4.0 in">
<TBody>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Mechanisms for Invoking Actions from an Application110'-->
<XRef Role="JumpText" Linkend="PG.aIII.mkr.3"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Types of Actions111'-->
<XRef Role="JumpText" Linkend="PG.aIII.mkr.4"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Action Invocation API112'-->
<XRef Role="JumpText" Linkend="PG.aIII.mkr.5"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Related Information112'-->
<XRef Role="JumpText" Linkend="PG.aIII.mkr.6"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'actions.c Example Program113'-->
<XRef Role="JumpText" Linkend="PG.aIII.mkr.7"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Listing for actions.c118'-->
<XRef Role="JumpText" Linkend="PG.aIII.mkr.18"></Para></Entry>
</Row>
</TBody>
</TGroup>
</InformalTable>
</ListItem>
</ItemizedList>
<Sect1 Id="PG.aIII.div.2">
<Title Id="PG.aIII.mkr.3">アプリケーションからアクションを実行する方法</Title>
<Para>デスクトップ・サービス・ライブラリによってエクスポートされたアクション実行APIは、アプリケーションから別のアプリケーションを実行したり、操作を実行するための方法の1つです。
その他の方法として、次のものがあります。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Filename>fork/exec</Filename>システム・コール</Para>
</ListItem>
<ListItem>
<Para>ToolTalkメッセージ</Para>
</ListItem>
</ItemizedList>
<Para>これらの方法は、それぞれ利点と制約があるので、具体的な状況を評価して、どちらが適切かを判断しなければなりません。</Para>
<Para><IndexTerm>
<Primary>アクション</Primary>
<Secondary>アクションの利点</Secondary>
</IndexTerm>アクション実行APIの利点は、次のとおりです。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>アクションは、従来の
コマンド行アプリケーション(すなわち、<Command>COMMAND</Command>アクション)と
ToolTalkアプリケーション(すなわち、<Filename>TT_MSG</Filename>アクション)の両方をカプセル化することができます。
アクションを実行するアプリケーションは、コマンドがフォークされたのか、それともメッセージが送られたのかを知る必要はありません。</Para>
</ListItem>
<ListItem>
<Para>アクションは、多様性を持ち、デスクトップのデータ型機構と統合されます。
このことは、[開く]や[印刷]などのアクションは、与えられる引き数の型に基づいて異なる動作をするが、動作の違いは、アクションを呼び出すアプリケーションに対して透過されることです。</Para>
</ListItem>
<ListItem>
<Para>アクションは、アプリケーション開発者、システム統合者、システム管理者、およびエンド・ユーザに対して、構成の大きな可能性を提供します。
これらのユーザは、アクション・データベースを編集して、アクションの実行方法の定義を変更することができます。</Para>
</ListItem>
<ListItem>
<Para>アクションは、分散環境でも有効です。アプリケーションが
<Filename>fork/exec</Filename>により別のアプリケーションを直接実行する場合には、両方のアプリケーションが同じシステム上で実行できなければなりません。
それに対して、アクション実行APIは、アクション・データベース内の情報に基づいて、どのシステム上で<Command>COMMAND</Command>アクションを実行するかを判断します。</Para>
</ListItem>
<ListItem>
<Para>アクションによって、デスクトップの動作と常に一貫性のあるアプリケーションの動作が可能になります。
これは、デスクトップのコンポーネントがユーザのデータ・ファイルを操作するとき、アクションを使用することで対話するからです。</Para>
</ListItem>
</ItemizedList>
<Para>アクション実行 API の欠点は、戻り値機能が制限されている実行方法であることであり、実行されたアクション・ハンドラとの対話機能がないことです。
これらの機能が必要な場合には、<Command>fork/exec/pipes</Command>を使用できます。ただし、CDEで望ましいプロセス間通信の方法は、一般化されたクライアント/サーバ・パラダイムを持つToolTalkです。</Para>
<Para>実行について説明します。
アプリケーションがいくつかの異なる形式(テキストとグラフィック)のデータ・ファイルを管理すると仮定し、これらのファイルの編集と表示の手段をユーザに提供する必要があると仮定します。
アクションを使用せずにこれを実現するには、次の方法の一つを使用することになります。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Filename><IndexTerm>
<Primary>fork/exec</Primary>
</IndexTerm>fork/exec</Filename> を使用して、適切なエディタを起動し、ユーザがエディタの名前を指定するための何らかの方法(環境変数など)を考えてください。
このアプローチには次のような制約があります。</Para>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para>システム・コールによりサブプロセスを実行し、その結果のシグナルを監視する複雑なコードを書かなければなりません。</Para>
</ListItem>
<ListItem>
<Para>アプリケーションと同じシステム上で使用できるエディタが必要であり、システム管理者は、<Command>rsh</Command>などの機能を使用する複雑な構成を提供しなければなりません。</Para>
</ListItem>
<ListItem>
<Para>システム管理者とユーザは、アプリケーションの固有の構成モデルを学び、管理しなければなりません。</Para>
</ListItem>
</ItemizedList>
</ListItem>
<ListItem>
<Para>
<IndexTerm>
<Primary>ToolTalk</Primary>
</IndexTerm>メッセージを使用して、編集や表示などの操作をデータに対して実行することを要求します。
このアプローチには、すべてのデータ型に対して使用可能なToolTalk形式のエディタが必要であるという制約があります。</Para>
</ListItem>
</ItemizedList>
<Para>アクションによりこれを実現するには、バッファまたはデータ・ファイルに対して[開く]アクションを実行するだけです。
アクション実行APIはアクション・データベースに基づいて、送信する適切なメッセージまたは実行するコマンドを判断し、一時ファイルの作成か削除、また必要なシグナルの取り込みなどすべての詳細を処理します。
</Para>
</Sect1>
<Sect1 Id="PG.aIII.div.3">
<Title Id="PG.aIII.mkr.4"><IndexTerm>
<Primary>アクション</Primary>
<Secondary>アクションの型</Secondary>
</IndexTerm><IndexTerm>
<Primary>2</Primary>
</IndexTerm><IndexTerm>
<Primary>2</Primary>
</IndexTerm><IndexTerm>
<Primary>アクション</Primary>
<Secondary>アクションの型</Secondary>
</IndexTerm>アクションの型</Title>
<Para>アクションのアプリケーション・プログラム・インタフェース(API)は、どの種類のアクションに対しても機能します。
デスクトップでのアクションの種類は、次のとおりです。</Para>
<InformalTable>
<TGroup Cols="2">
<TBody>
<Row>
<Entry><Para>コマンド・アクション</Para></Entry>
</Row>
<Row>
<Entry><Para>実行するコマンド行を指定します。</Para></Entry>
</Row>
<Row>
<Entry><Para>ToolTalk アクション</Para></Entry>
</Row>
<Row>
<Entry><Para>送信するToolTalkメッセージを指定します。
メッセージは、適切なアプリケーションによって受信されます。</Para></Entry>
</Row>
<Row>
<Entry><Para>マップ・アクション</Para></Entry>
</Row>
<Row>
<Entry><Para>特定の動作を定義する代わりに、別のアクションを参照します。</Para></Entry>
</Row>
</TBody>
</TGroup>
</InformalTable>
<Para>詳しくは、<Emphasis>共通デスクトップ環境 上級ユーザおよびシステム管理者ガイド</Emphasis>の「アクションおよびデータ型の概要」を参照して下さい。</Para>
</Sect1>
<Sect1 Id="PG.aIII.div.4">
<Title Id="PG.aIII.mkr.5"><IndexTerm>
<Primary>アクション実行ライブラリ</Primary>
</IndexTerm>アクション実行 API</Title>
<Para>アクション実行APIは、デスクトップ・サービス・ライブラリからエクスポートされて、次のような多数のタスクを実行する関数を提供します。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>アクションおよびデータ型定義のデータベースを初期化し、読み込みます。
アクションを実行するためには、その前にデータベースが<Emphasis>読み込まれていなければなりません。</Emphasis></Para>
</ListItem>
<ListItem>
<Para>データベースに問い合わせます。指定されたアクション、またはそれに関連付けられたアイコン・イメージ、ラベル、または記述が存在するかどうかを判断する関数があります。</Para>
</ListItem>
<ListItem>
<Para>アクションを実行します。
アプリケーションは、ファイルまたはバッファ引き数をアクションに渡すことができます。</Para>
</ListItem>
<ListItem>
<Para>アクション・ステータスを受け取り、引き数を返すコールバックを登録します。</Para>
</ListItem>
</ItemizedList>
</Sect1>
<Sect1 Id="PG.aIII.div.5">
<Title Id="PG.aIII.mkr.6">関連情報</Title>
<Para>アクション・コマンド、関数およびデータ形式の詳細については、次のマニュアル・ページを参照して下さい。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Filename>dtaction</Filename>(1)</Para>
</ListItem>
<ListItem>
<Para><Filename>dtactionfile(4)</Filename></Para>
</ListItem>
<ListItem>
<Para><Filename>DtActionCallbackProc</Filename>(3)</Para>
</ListItem>
<ListItem>
<Para><Filename>DtActionDescription</Filename>(3)</Para>
</ListItem>
<ListItem>
<Para><Filename>DtActionExists</Filename>(3)</Para>
</ListItem>
<ListItem>
<Para><Filename>DtActionIcon</Filename>(3)</Para>
</ListItem>
<ListItem>
<Para><Filename>DtActionInvoke</Filename>(3)</Para>
</ListItem>
<ListItem>
<Para><Filename>DtActionLabel</Filename>(3)</Para>
</ListItem>
<ListItem>
<Para><Filename>DtActionQuit</Filename>(3)</Para>
</ListItem>
<ListItem>
<Para><Filename>DtActionQuitType</Filename>(3)</Para>
</ListItem>
<ListItem>
<Para><Filename>DtActionStUpCb</Filename>(3)</Para>
</ListItem>
<ListItem>
<Para><Filename>dtexec</Filename>(1)</Para>
</ListItem>
</ItemizedList>
</Sect1>
<Sect1 Id="PG.aIII.div.6">
<Title Id="PG.aIII.mkr.7"><IndexTerm>
<Primary>アクション</Primary>
<Secondary>プログラム例</Secondary>
</IndexTerm><IndexTerm>
<Primary>アクション</Primary>
<Secondary>プログラム例</Secondary>
</IndexTerm>actions.c プログラム例</Title>
<Para>この節では、簡単なプログラム例<Filename>actions.c</Filename>について説明します。
<Filename>actions.c</Filename>の完全なリストは、この章の終りにあります。</Para>
<Sect2 Id="PG.aIII.div.7">
<Title>アクションおよびデータ型データベースの読み込み</Title>
<Para>アプリケーションがアクションを実行するためには、そのまえに、<Emphasis>デスクトップ・サービス・ライブラリ(アクション実行 API を含む)を初期化して、アクションおよびデータ型定義のデータベースを読み込まなければなりません。</Emphasis></Para>
</Sect2>
<Sect2 Id="PG.aIII.div.8" Role="Procedure">
<Title>デスクトップ・サービス・ライブラリを初期化するには</Title>
<OrderedList>
<ListItem>
<Para>デスクトップ・サービス・ライブラリを初期化するには<Filename><IndexTerm>
<Primary>DtInitialize</Primary>
</IndexTerm>DtInitialize()</Filename>関数を使用します。</Para>
<programlisting>DtInitialize(*<Symbol Role="Variable">display</Symbol>,<Symbol Role="Variable">widget</Symbol>,*<Symbol Role="Variable">name</Symbol>,*<Symbol Role="Variable">tool_class</Symbol>)</programlisting>
<Para><Filename>DtInitialize()</Filename>は、デフォルトのイントリンシクス関数<Command>XtAppContext</Command>を使用します。
API は、アプリケーションが<Symbol Role="Variable">app_context</Symbol>を指定しなければならないときに使用する追加の関数
<Filename><IndexTerm><Primary>DtAppInitialize</Primary>
</IndexTerm>DtAppInitialize()</Filename>を提供します。:</Para>
<programlisting>DtAppInitialize(<Symbol Role="Variable">app_context</Symbol>,*<Symbol Role="Variable">display</Symbol>,<Symbol Role="Variable">widget</Symbol>,*<Symbol Role="Variable">name</Symbol>, <Symbol Role="Variable">tool_class</Symbol>)</programlisting>
</ListItem>
</OrderedList>
<Sect3 Id="PG.aIII.div.9">
<Title>DtInitialize() の例</Title>
<Para>次のコードの一部分は、
プログラム例<Filename>actions.c</Filename>の中で
<Filename>DtInitialize()</Filename>がどのように使用されているかを示しています。</Para>
<ProgramListing>if (DtInitialize(XtDisplay(shell), shell, argv[0],ApplicationClass)==False) {
/* DtInitialize() has already logged an appropriate error msg */
exit(1);
}</ProgramListing>
</Sect3>
</Sect2>
<Sect2 Id="PG.aIII.div.10" Role="Procedure">
<Title>アクションおよびデータ型データベースを読み込むには</Title>
<OrderedList>
<ListItem>
<Para>アクションおよびデータ型データベースを読み込むには、<Filename><IndexTerm>
<Primary>DtDbLoad</Primary>
</IndexTerm>DtDbLoad()</Filename>関数を使用します。</Para>
<programlisting>DtDbLoad(void)</programlisting>
<Para><Filename>DtDbLoad()</Filename>は、アクションおよびデータ型データベースを読み込みます。
この関数は、データベースファイルを検索するディレクトリのセット(データベース検索パス)を判断して、データベース内で見つかった<Filename>*.dt</Filename>ファイルを読み込みます。
ディレクトリ検索パスは、<Command>DTDATABASESEARCHPATH</Command>環境変数と内部のデフォルト値に基づきます。</Para>
</ListItem>
</OrderedList>
</Sect2>
<Sect2 Id="PG.aIII.div.11" Role="Procedure">
<Title Id="PG.aIII.mkr.8">再読み込みイベントの通知を要求するには</Title>
<Para>長時間実行中のアプリケーションの中でDtDbLoad()を使用する場合には、データベースが変更されたときには、動的に再読み込みしなければなりません。</Para>
<OrderedList>
<ListItem>
<Para><Command><IndexTerm>
<Primary>DtDbReloadNotify</Primary>
</IndexTerm>DtDbReloadNotify()</Command>関数を使用して、再読み込みイベントの通知を要求します。</Para>
</ListItem>
</OrderedList>
<ProgramListing>/* Notice changes to the database without needing to restart
application */
DtDbReloadNotify(DbReloadCallbackProc, callback_proc,
XTPointer, client_data);
</ProgramListing>
<OrderedList>
<ListItem>
<Para>次のことを実行するコールバックを指定します。</Para>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para>アプリケーションによって保持されている、キャッシュされたデータベース情報を破棄する。</Para>
</ListItem>
<ListItem>
<Para><Filename>DtDbLoad()</Filename>関数を再びコールする。</Para>
</ListItem>
</ItemizedList>
</ListItem>
</OrderedList>
<Para><Emphasis>C</Emphasis><Symbol Role="Variable">allback_proc</Symbol>は、アプリケーションが保持している、キャッシュされたデータベース情報をクリーンアップしてから、<Filename>DtDbLoad()</Filename>を呼び出します。
<Emphasis>Client_data</Emphasis>を使用して、追加のクライアント情報をコールバック・ルーチンに渡すことができます。</Para>
</Sect2>
<Sect2 Id="PG.aIII.div.12">
<Title Id="PG.aIII.mkr.9">アクション・データベースのチェック</Title>
<Para>アプリケーションは、アクションのアイコンまたはラベルを表示する必要がある場合には、データベースにアクセスします。
また、アクションを実行する前にアプリケーションは、その存在をチェックできます。
データベース内のアクションは、アクション名によって識別されます。</Para>
<ProgramListing>ACTION <Symbol Role="Variable">action_name</symbol>
{
&hellip;
}</ProgramListing>
<Para>例えば、[電卓]アクション定義は次のとおりです。</Para>
<ProgramListing>ACTION Dtcalc
{
LABEL 電卓
ICON Dtcalc
ARG_COUNT 0
TYPE COMMAND
WINDOW_TYPE NO_STDIO
EXEC_STRING /usr/dt/bin/dtcalc
DESCRIPTION 電卓(Dtcalc)アクションは、デスクトップ電卓 \ アプリケー ションを起動します。
}</ProgramListing>
<Para>[電卓]アクションのアクション名はDtcalcです。</Para>
<Para>実行形式ファイルがデータベース内のアクション名と一致するファイル名を持つときには、そのファイルはアクション・ファイルです。
すなわち、基本のアクションの表現です。
そのファイルのアイコンとラベルに関する情報は、データベースに格納されます。</Para>
</Sect2>
<Sect2 Id="PG.aIII.div.13" Role="Procedure">
<Title>指定されたアクション定義が存在するかどうかを判断するには</Title>
<OrderedList>
<ListItem>
<Para>指定されたアクション定義が存在するかどうかを判断するには、<Filename><IndexTerm>
<Primary>DtActionExists</Primary>
</IndexTerm><IndexTerm>
<Primary>アクション</Primary>
<Secondary>アクションのアイコンイメージ</Secondary>
</IndexTerm>DtActionExists()</Filename>関数を使用します。</Para>
<programlisting>DtActionExists(*<Symbol Role="Variable">name</Symbol>)</programlisting>
<Para><Filename>DtActionExists()</Filename>は、
指定された<Symbol Role="Variable">名前</Symbol>がデータベース内のアクションの名前に一致するかどうかをチェックします。
この関数は、<Symbol Role="Variable">名前</Symbol>がアクション名に一致する場合にはTrueを返し、その名前のアクションが見つからない場合にはFalseを返します。</Para>
</ListItem>
</OrderedList>
</Sect2>
<Sect2 Id="PG.aIII.div.14" Role="Procedure">
<Title Id="PG.aIII.mkr.10">指定されたアクションのアイコン・イメージ情報を取り出すには</Title>
<OrderedList>
<ListItem>
<Para>アイコン・イメージ情報を取り出すには、
<Filename Id="PG.aIII.mkr.11">DtActionIcon()</Filename>関数を使用します。</Para>
<programlisting>DtActionIcon(char *<Symbol Role="Variable">action_name</Symbol>)</programlisting>
</ListItem>
</OrderedList>
<Para>アクション定義は、アクションを表すために使われるアイコン・イメージを定義のICONフィールドで指定します。</Para>
<ProgramListing>ACTION <Symbol Role="Variable">action_name</Symbol>
{
ICON <Symbol Role="Variable">icon_image_base_name</symbol>
&hellip;
}</ProgramListing>
<Para><Filename>DtActionIcon()</Filename>は、アイコン・イメージ・フィールドの値にある文字列を返します。
アクション定義にアイコン・フィールドがない場合には、この関数はデフォルトのアクション・アイコン・イメージの値<Command>Dtactn</Command>を返します。</Para>
<Para>次に、使用したいアイコンとサイズの位置を決めます。
アイコンには4つのサイズがあり、ビットマップまたはピックスマップ形式で扱えます。たとえば、[電卓]のアクション定義からアイコン・ファイルのベース名を見つけることができます。
次に、そのベース名と<!--Original XRef content: 'Table&numsp;8&hyphen;1'-->
<XRef Role="CodeOrFigureOrTable" Linkend="PG.aIII.mkr.13">の情報の組み合わせと、すべてのアイコンの格納情報から、目的のアイコン・ファイルを見つけだせます。</Para>
<Para Id="PG.aIII.mkr.12">[電卓]アクションのアイコン名は
<Command>Dtcalc</Command>ですが、これはファイル名全体ではありません。
アイコン・ファイル名はアイコンのサイズに基づきます。
<!--Original XRef content: 'Table&numsp;8&hyphen;1'-->
<XRef Role="CodeOrFigureOrTable" Linkend="PG.aIII.mkr.13">は、デスクトップ・アイコンのサイズとファイル名の命名規則を示します。</Para>
<Table Id="PG.aIII.tbl.1" Frame="Topbot">
<Title Id="PG.aIII.mkr.13">アイコンのサイズとファイル名</Title>
<TGroup Cols="3">
<ColSpec Colname="1" Colwidth="1.25 in">
<ColSpec Colname="2" Colwidth="1.25 in">
<ColSpec Colname="3" Colwidth="1.375 in">
<THead>
<Row>
<Entry><Para><Literal>アイコンのサイズ</Literal></Para></Entry>
<Entry><Para><Literal>ビットマップ名</Literal></Para></Entry>
<Entry><Para><Literal>ピックスマップ名</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para>16 × 16 (極小)</Para></Entry>
<Entry><Para><Symbol Role="Variable">name</Symbol><Filename>.t.bm</Filename></Para></Entry>
<Entry><Para><Symbol Role="Variable">name</Symbol><Filename>.t.pm</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para>24 × 24 (小)</Para></Entry>
<Entry><Para><Symbol Role="Variable">name</Symbol><Filename>.s.bm</Filename></Para></Entry>
<Entry><Para><Symbol Role="Variable">name</Symbol><Filename>.s.pm</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para>32 × 32 (中)</Para></Entry>
<Entry><Para><Symbol Role="Variable">name</Symbol><Filename>.m.bm</Filename></Para></Entry>
<Entry><Para><Symbol Role="Variable">name</Symbol><Filename>.m.pm</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para>48 × 48 (大)</Para></Entry>
<Entry><Para><Symbol Role="Variable">name</Symbol><Filename>.l.bm</Filename></Para></Entry>
<Entry><Para><Symbol Role="Variable">name</Symbol><Filename>.l.pm</Filename></Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
<Note>
<Para>デスクトップ・アイコン・ファイルの詳細については、<Emphasis>共通デスクトップ環境 上級ユーザおよびシステム管理者ガイド</Emphasis>の「デスクトップのアイコンの作成」を参照してください。</Para>
</Note>
<Para>ビットマップの場合、マスクとして使われる追加のファイルがあり、そのファイルの拡張子<Filename>_m.bm</Filename>で終わります。
したがって、各サイズのアイコンに対して合計3個のファイルがあります。
次に、電卓のアイコン・ファイルを示します。</Para>
<ProgramListing>Dtcalc.t.bm
Dtcalc.t.pm
Dtcalc.t_m.bm
Dtcalc.m.bm
Dtcalc.m.pm
Dtcalc.m_m.bm
Dtcalc.l.bm
Dtcalc.l.pm
Dtcalc.l_m.bm</ProgramListing>
<Note>
<Para>電卓には小型アイコン(<Filename>Dtcalc.s.bm</Filename>, <Filename>Dtcalc.s.pm</Filename>,<Filename>Dtcalc.s_m.bm</Filename>)がない点に注意してください。</Para>
</Note>
<Para><Filename Id="PG.aIII.mkr.14">DtActionIcon()</Filename>はベース名だけを返します。
電卓の場合は<Command>Dtcalc</Command>です。
種類(ピックスマップまたはビットマップ)とサイズ(極小、小、中、大)を選んで、使用可能な拡張子をベース名に追加してください。
また、ファイルがどこにあるかを知っておいてください。</Para>
</Sect2>
<Sect2 Id="PG.aIII.div.15" Role="Procedure">
<Title>アクションのローカライズ・ラベルを取り出すには</Title>
<OrderedList>
<ListItem>
<Para>アクションのローカライズ・ラベルを取り出すには、
<Command Id="PG.aIII.mkr.15"> DtActionLabel()</Command>関数を使用します。</Para>
<programlisting>char *DtActionLabel(char *<Symbol Role="Variable">actionName</Symbol>)</programlisting>
</ListItem>
</OrderedList>
<Para>アクション定義にはラベルを入れることができます。
ラベルは、<Emphasis>label_text</Emphasis>フィールドを使用して定義されます。</Para>
<ProgramListing>ACTION <Symbol Role="Variable">action_name</symbol>
{
LABEL <Symbol Role="Variable">label_text</symbol>
&hellip;
}</ProgramListing>
<Para>このラベルは、グラフィック・コンポーネント(ファイル・マネージャやアプリケーション・マネージャなど)中でアクションのアイコンにラベルを付けるために使用されます。
アクション定義に<Emphasis>label_text</Emphasis>フィールドがない場合には、
<Symbol Role="Variable">action_name</Symbol>が使用されます。</Para>
<Para><Emphasis>label_text</Emphasis>文字列の値は、エンドユーザがアクションを見分けられるように、すべてのインタフェース・コンポーネントによって使用されなければなりません。
</Para>
<Para><Filename>DtActionLabel()</Filename>関数は、
<Symbol Role="Variable">actionName</Symbol>という名前のアクションのアクション定義の中の<Emphasis>label_text</Emphasis>フィールドの値を返します。
<Emphasis>label_text</Emphasis>フィールドがない場合には、この関数は<Symbol Role="Variable">actionName</Symbol>を返します。</Para>
</Sect2>
<Sect2 Id="PG.aIII.div.16">
<Title Id="PG.aIII.mkr.16">アクションの実行</Title>
<Para>アプリケーションがデスクトップ・サービス・ライブラリを初期化した後は、アクションを実行することができます。</Para>
</Sect2>
<Sect2 Id="PG.aIII.div.17" Role="Procedure">
<Title>アクションを実行するには</Title>
<OrderedList>
<ListItem>
<Para>アクションを実行するには
<Command Id="PG.aIII.mkr.17"> DtActionInvoke</Command>関数を使用します。</Para>
<programlisting>DtActionInvokeID (<Symbol Role="Variable">widget</Symbol>, <Symbol Role="Variable">action</Symbol>, <Symbol Role="Variable">args</Symbol>, <Symbol Role="Variable">argCount</Symbol>, <Symbol Role="Variable">termOpts, execHost,</Symbol>
<Symbol Role="Variable">contexDir</Symbol>, <Symbol Role="Variable">useIndicator</Symbol>, <Symbol Role="Variable">statusUpdateCb</Symbol>, <Symbol Role="Variable">client_data</Symbol>)</programlisting>
</ListItem>
</OrderedList>
<Para><Filename>DtActionInvoke()</Filename>は、アクション・データベースから、指定されたアクション名に一致するエントリを探して、指定されたクラス、型、およびカウントの引数を受け入れます。
アクションを実行する前に、アプリケーションはデータベースを初期化し、読み込まなければならないので注意してください。</Para>
</Sect2>
</Sect1>
<Sect1 Id="PG.aIII.div.18">
<Title Id="PG.aIII.mkr.18">actions.cのリスト</Title>
<ProgramListing>/*
* (c) Copyright 1993, 1994 Hewlett-Packard Company
* (c) Copyright 1993, 1994 International Business Machines Corp.
* (c) Copyright 1993, 1994 Sun Microsystems, Inc.
* (c) Copyright 1993, 1994 Novell, Inc.
*/
#include &lt;Xm/XmAll.h>
#include &lt;Dt/Dt.h>
#include &lt;Dt/Action.h>
#define ApplicationClass &ldquo;Dtaction&ldquo;
static Widget shell;
static XtAppContext appContext;
static Widget actionText;
static Widget fileText;
static void CreateWidgets(Widget);
static void InvokeActionCb(Widget, XtPointer, XtPointer);
static void InvokeAction(char*, char*);
static void DbReloadProc(XtPointer);
void main(int argc, char **argv)
{
Arg args[20];
int n=0;
int numArgs = 0;
shell = XtAppInitialize(&amp;appContext, ApplicationClass, NULL, 0,
&amp;argc, argv, NULL, args, n);
CreateWidgets(shell);
if (DtInitialize(XtDisplay(shell), shell, argv[0],
ApplicationClass)==False) {
/* DtInitialize() has already logged an appropriate error msg */
exit(-1);
}
/* Load the filetype/action databases */
DtDbLoad();
/* Notice changes to the database without needing to restart application */
DtDbReloadNotify(DbReloadProc, NULL);
XtRealizeWidget(shell);
XmProcessTraversal(actionText, XmTRAVERSE_CURRENT);
XtAppMainLoop(appContext);
}
static void CreateWidgets(Widget shell)
{
Widget messageBox, workArea, w;
Arg args[20];
int n;
XmString labelString;
labelString = XmStringCreateLocalized(&ldquo;Invoke&ldquo;);
n = 0;
XtSetArg(args[n], XmNdialogType, XmDIALOG_TEMPLATE); n++;
XtSetArg(args[n], XmNokLabelString, labelString); n++;
messageBox = XmCreateMessageBox(shell, &ldquo;messageBox&ldquo;, args, n);
XtManageChild(messageBox);
XmStringFree(labelString);
XtAddCallback(messageBox, XmNokCallback, InvokeActionCb, NULL);
n = 0;
XtSetArg(args[n], XmNorientation, XmVERTICAL); n++;
XtSetArg(args[n], XmNpacking, XmPACK_COLUMN); n++;
XtSetArg(args[n], XmNnumColumns, 2); n++;
XtSetArg(args[n], XmNentryAlignment, XmALIGNMENT_END); n++;
workArea = XmCreateWorkArea(messageBox, &ldquo;workArea&ldquo;, args, n);
XtManageChild(workArea);
labelString = XmStringCreateLocalized(&ldquo;Invoke Action:&ldquo;);
n = 0;
XtSetArg(args[n], XmNlabelString, labelString); n++;
w = XmCreateLabel(workArea, &ldquo;actionLabel&ldquo;, args, n);
XtManageChild(w);
XmStringFree(labelString);
labelString = XmStringCreateLocalized(&ldquo;On File:&ldquo;);
n = 0;
XtSetArg(args[n], XmNlabelString, labelString); n++;
w = XmCreateLabel(workArea, &ldquo;fileLabel&ldquo;, args, n);
XtManageChild(w);
XmStringFree(labelString);
n = 0;
XtSetArg(args[n], XmNcolumns, 12); n++;
actionText = XmCreateTextField(workArea, &ldquo;actionText&ldquo;, args, n);
XtManageChild(actionText);
n = 0;
XtSetArg(args[n], XmNcolumns, 12); n++;
fileText = XmCreateTextField(workArea, &ldquo;fileText&ldquo;, args, n);
XtManageChild(fileText);
}
static void DbReloadProc(XtPointer cd)
{
/* Pick up any dynamic changes to the database files */
DtDbLoad();
}
static void InvokeActionCb(Widget w, XtPointer cd, XtPointer cb)
{
char *action;
char *file;
action = XmTextFieldGetString(actionText);
if (action == NULL) return;
if (strlen(action) == 0) {
XtFree(action);
return;
}
file = XmTextFieldGetString(fileText);
InvokeAction(action, file);
XtFree(action);
XtFree(file);
XmTextFieldSetString(actionText, &ldquo;&ldquo;);
XmTextFieldSetString(fileText, &ldquo;&ldquo;);
XmProcessTraversal(actionText, XmTRAVERSE_CURRENT);
}
static void InvokeAction(char *action, char *file)
{
DtActionArg *ap = NULL;
int nap = 0;
DtActionInvocationID actionId;
/* If a file was specified, build the file argument list */
printf(&ldquo;&percnt;s(&percnt;s)\n&ldquo;,action,file);
if (file != NULL &amp;&amp; strlen(file) != 0) {
ap = (DtActionArg*) XtCalloc(1, sizeof(DtActionArg));
ap[0].argClass = DtACTION_FILE;
ap[0].u.file.name = file;
nap = 1;
}
/* Invoke the specified action */
actionId = DtActionInvoke(shell,action,ap,nap,NULL,NULL,NULL,True,NULL,NULL);
}
</ProgramListing>
</Sect1>
</Chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->

View File

@@ -0,0 +1,855 @@
<!-- $XConsortium: ch09.sgm /main/7 1996/09/08 19:37:22 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Chapter Id="PG.datat.div.1">
<Title Id="PG.datat.mkr.1">データ型データベースのアクセス</Title>
<Para>この章では、データ型関数とデータ型データベースの使い方について説明します。
</Para>
<InformalTable Id="PG.datat.itbl.1" Frame="All">
<TGroup Cols="1">
<ColSpec Colname="1" Colwidth="4.0 in">
<TBody>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Summary121'-->
<XRef Role="JumpText" Linkend="PG.datat.mkr.2"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Data Criteria and Data Attributes122'-->
<XRef Role="JumpText" Linkend="PG.datat.mkr.5"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Data-Typing Functions129'-->
<XRef Role="JumpText" Linkend="PG.datat.mkr.9"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Registering Objects as Drop Zones133'-->
<XRef Role="JumpText" Linkend="PG.datat.mkr.12"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Example of Using the Data-Typing Database134'-->
<XRef Role="JumpText" Linkend="PG.datat.mkr.14"></Para></Entry>
</Row>
</TBody>
</TGroup>
</InformalTable>
<Sect1 Id="PG.datat.div.2">
<Title Id="PG.datat.mkr.2">要約</Title> <Para>データ型により、従来のUNIXファイル・システムによって提供される機能を越えて、ファイルとデータの属性が拡張されます。これらの拡張は、アイコン名、記述、アクションなどの属性から成っており、ファイルやデータ上で実行できます。
この情報は、<Filename>DATA_ATTRIBUTES</Filename>テーブル(またはデータベース)に名前と値の対として格納されます。
デスクトップは、次のパラグラフで説明する特定の
<Filename>DATA_ATTRIBUTES</Filename>のセットを使用します。
<Filename>DATA_ATTRIBUTES</Filename>テーブルは、将来およびアプリケーション固有の成長のために拡張可能ですが、他のアプリケーションでは追加をチェックできないので、このテーブルを拡張することは推奨しません。</Para>
<Para>データを特定のファイルまたは<Filename>DATA_CRITERIA</Filename>テーブルのデータ・エントリに一致させます。
<Filename>DATA_CRITERIA</Filename>テーブルのエントリは、具体性が高いものから具体性が低いものへ降順に並べられます。
たとえば、<Filename>/usr/lib/lib*</Filename>は<Filename>/usr/*</Filename>よりも具体的なので、<Filename>/usr/*</Filename>より前に置かれます。
ファイルまたはデータの型の検査が要求されると、このテーブルが始めからチェックされ、ファイルまたはデータから与えられた情報を使用してもっとも一致するものが検索されます。
情報に一致するエントリが見つかると、<Filename>DATA_ATTRIBUTES_NAME</Filename>を使用して、正しい<Filename>DATA_ATTRIBUTES</Filename>エントリが検索されます。</Para>
<Sect2 Id="PG.datat.div.3">
<Title Id="PG.datat.mkr.3">ライブラリとヘッダ・ファイル
<IndexTerm>
<Primary>データ型</Primary>
<Secondary>ライブラリ</Secondary>
</IndexTerm><IndexTerm>
<Primary>ライブラリ</Primary>
<Secondary>データ型</Secondary>
</IndexTerm><IndexTerm>
<Primary>アクション</Primary>
<Secondary>ライブラリ</Secondary>
</IndexTerm><IndexTerm>
<Primary>ライブラリ</Primary>
<Secondary>アクション</Secondary>
</IndexTerm><IndexTerm>
<Primary>&lt;Filename>libDtSvc&lt;Default Para Font> ライブラリ</Primary>
</IndexTerm><IndexTerm>
<Primary>&lt;Filename>libXm&lt;Default Para Font> ライブラリ</Primary>
</IndexTerm><IndexTerm>
<Primary>&lt;Filename>libX11&lt;Default Para Font> ライブラリ</Primary>
</IndexTerm></Title>
<Para>データ型を使用するには、<Command>libDtSvc</Command>ライブラリをリンクしてください。
アクションは、通常はデータ型情報と一緒に読み込まれます。
アクションは、<Command>libXm</Command>ライブラリと<Filename>libX11</Filename>ライブラリのリンクを必要とします。
ヘッダ・ファイルは、<ComputerOutput>Dt/Dts.h</ComputerOutput>と
<ComputerOutput>Dt/Dt.h</ComputerOutput>です。</Para>
</Sect2>
<Sect2 Id="PG.datat.div.4">
<Title Id="PG.datat.mkr.4">デモ・プログラム
<IndexTerm>
<Primary>データ型</Primary>
<Secondary>デモ・プログラム</Secondary>
</IndexTerm><IndexTerm>
<Primary>デモ・プログラム</Primary>
<Secondary>データ型</Secondary>
</IndexTerm></Title>
<Para>データ型データベースの使用例が入っているデモ・プログラムが、
<Filename>/usr/dt/examples/dtdts/datatypes/datatyping.c</Filename>にあります。</Para>
</Sect2>
</Sect1>
<Sect1 Id="PG.datat.div.5">
<Title Id="PG.datat.mkr.5">データの基準とデータの属性
<IndexTerm>
<Primary>データ型検査</Primary>
<Secondary>データの基準</Secondary>
</IndexTerm><IndexTerm>
<Primary>データの基準</Primary>
</IndexTerm><IndexTerm>
<Primary>データの属性</Primary>
</IndexTerm><IndexTerm>
<Primary>データ型検査</Primary>
<Secondary>データの属性</Secondary>
</IndexTerm></Title>
<Para>データ型検査は、次の 2 つの部分から成ります。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>データの基準とデータの属性を格納するデータベース</Para>
</ListItem>
<ListItem>
<Para>データベースに問い合わせるルーチンの集まり</Para>
</ListItem>
</ItemizedList>
<Para>データ基準の
<IndexTerm>
<Primary>データ型検査</Primary>
<Secondary>基準</Secondary>
</IndexTerm><IndexTerm>
<Primary>基準、データ型検査</Primary>
</IndexTerm>属性は、次のとおりです(アルファベット順)。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Command>CONTENT</Command></Para>
</ListItem>
<ListItem>
<Para><Filename>DATA_ATTRIBUTES_NAME</Filename></Para>
</ListItem>
<ListItem>
<Para><Filename>LINK_NAME</Filename></Para>
</ListItem>
<ListItem>
<Para><Filename>LINK_PATH</Filename></Para>
</ListItem>
<ListItem>
<Para><Command>MODE</Command></Para>
</ListItem>
<ListItem>
<Para><Filename>NAME_PATTERN</Filename></Para>
</ListItem>
<ListItem>
<Para><Filename>PATH_PATTERN</Filename></Para>
</ListItem>
</ItemizedList>
<Para>データの基準を使用頻度が高いものから順に
<!--Original XRef content: 'Table&numsp;9&hyphen;1'-->
<XRef Role="CodeOrFigureOrTable" Linkend="PG.datat.mkr.7">に示します。</Para>
<Table Id="PG.datat.tbl.1" Frame="Topbot">
<Title Id="PG.datat.mkr.6">データの基準(使用頻度順)</Title>
<TGroup Cols="3">
<ColSpec Colname="1" Colwidth="1.82341 in">
<ColSpec Colname="2" Colwidth="3.44445 in">
<ColSpec Colname="3" Colwidth="1.72817 in">
<THead>
<Row>
<Entry><Para><Literal>基準</Literal></Para></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
<Entry><Para><Literal>使用例</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Filename>DATA_ATTRIBUTES_NAME</Filename></Para></Entry>
<Entry><Para>このデータ型の名前。
この値は、データ属性テーブル中の<Filename>record_name</Filename>です。</Para></Entry>
<Entry><Para>POSTSCRIPT</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>NAME_PATTERN</Filename></Para></Entry>
<Entry><Para>このデータに一致するファイル名を記述するシェル・パターン照合表現。デフォルトは空の文字列で、照合の際にファイル名のパターンを無視することを意味します。</Para></Entry>
<Entry><Para><Filename>*.ps</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>CONTENT</Command></Para></Entry>
<Entry><Para>ファイル・ユーティリティが使用し、マジック・ファイルの開始、型、および値のフィールドとして解釈される 3 つの値。
詳細については、<Filename>file(1)</Filename>のマニュアル・ページを参照してください。
デフォルトは空のフィールドで、照合の際に内容を無視することを意味します。
一致する型の例としては、文字列、バイト、ショート、ロング、およびファイル名があります。</Para></Entry>
<Entry><Para><Command>0 string !&percnt;</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>MODE</Command></Para></Entry>
<Entry><Para><Command>stat</Command>構造体のモード・フィールドに一致する 0 4 文字の文字列。
詳細については、<Filename>stat(2)</Filename>のマニュアル・ページを参照してください。
最初の文字は、次のとおりです。</Para><Para><Command>d</Command>は、ディレクトリに一致します。</Para><Para><Command>s</Command>は、ソケットに一致します。</Para><Para><Command>l</Command>は、シンボリック・リンクに一致します。</Para><Para><Command>f</Command>は、通常ファイルに一致します。</Para><Para><Command>b</Command>は、ブロック・ファイルに一致します。</Para><Para><Command>c</Command>は、文字列特殊ファイルに一致します。</Para></Entry>
<Entry><Para><Filename>f&amp;!x</Filename></Para></Entry>
</Row>
<Row>
<Entry></Entry>
<Entry><Para>次の文字は、最初または後続の文字にすることができます。</Para><Para><Command>r</Command>は、ユーザ、グループ、またはその他の読み取り権ビットが設定されたファイルに一致します。</Para><Para><Command>w</Command>は、ユーザ、グループ、またはその他の書き込み権ビットが設定されたファイルに一致します。</Para><Para><Command>x</Command>は、ユーザ、グループ、またはその他の実行あるいはディレクトリ検索のアクセス権ビットが設定されたファイルに一致します。</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry></Entry>
<Entry><Para>たとえば、<Command>frw</Command>の<Command>MODE</Command>フィールドは、読み取り可能または書き込み可能な通常ファイルに一致します。<Command>x</Command>は、実行可能なビットまたは検索ビットが設定されたファイルに一致します。</Para><Para>デフォルトは空の文字列で、照合の際にモードを無視することを意味します。</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Filename>PATH_PATTERN</Filename></Para></Entry>
<Entry><Para>このデータに一致する絶対パス名を記述するシェル・パターン照合式。
デフォルトは空の文字列で、照合の際にパス・パターンを無視することを意味します。</Para></Entry>
<Entry><Para>*/<Symbol Role="Variable">mysubdir</Symbol>/*</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>LINK_NAME</Filename></Para></Entry>
<Entry><Para><Filename>dtdtsfile(4)</Filename>のマニュアル・ページを参照してください。</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Filename>LINK_PATH</Filename></Para></Entry>
<Entry><Para><Filename>dtdtsfile(4)</Filename>のマニュアル・ページを参照してください。</Para></Entry>
<Entry></Entry>
</Row>
</TBody>
</TGroup>
</Table>
<Para>データ型の一般的な属性のいくつかをアルファベット順に示します。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Command>ACTIONS</Command></Para>
</ListItem>
<ListItem>
<Para><Filename>COPY_TO_ACTION</Filename></Para>
</ListItem>
<ListItem>
<Para><Command>DESCRIPTION</Command></Para>
</ListItem>
<ListItem>
<Para><Command>ICON</Command></Para>
</ListItem>
<ListItem>
<Para><Filename>INSTANCE_ICON</Filename></Para>
</ListItem>
<ListItem>
<Para>IS_EXECUTABLE</Para>
</ListItem>
<ListItem>
<Para><Filename>IS_TEXT</Filename></Para>
</ListItem>
<ListItem>
<Para><Filename>LINK_TO_ACTION</Filename></Para>
</ListItem>
<ListItem>
<Para><Command>MEDIA</Command></Para>
</ListItem>
<ListItem>
<Para><Filename>MIME_TYPE</Filename></Para>
</ListItem>
<ListItem>
<Para><Filename>MOVE_TO_ACTION</Filename></Para>
</ListItem>
<ListItem>
<Para>NAME_TEMPLATE</Para>
</ListItem>
<ListItem>
<Para><Command>PROPERTIES</Command></Para>
</ListItem>
<ListItem>
<Para><Filename>X400_TYPE</Filename></Para>
</ListItem>
</ItemizedList>
<Para>これらのデータの属性を使用頻度が高い順に<!--Original XRef content: 'Table&numsp;9&hyphen;1'-->
<XRef Role="CodeOrFigureOrTable" Linkend="PG.datat.mkr.6">に示します。</Para>
<Table Id="PG.datat.tbl.2" Frame="Topbot">
<Title Id="PG.datat.mkr.7">データの属性(使用頻度順)</Title>
<TGroup Cols="3">
<ColSpec Colname="1" Colwidth="1.82341 in">
<ColSpec Colname="2" Colwidth="3.20635 in">
<ColSpec Colname="3" Colwidth="1.9623 in">
<THead>
<Row>
<Entry><Para><Literal>基準</Literal></Para></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
<Entry><Para><Literal>使用例</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Command>DESCRIPTION</Command></Para></Entry>
<Entry><Para>人間が読める形式で書かれたデータの説明。
このフィールドが<Command>NULL</Command>か、データ属性レコードに含まれていない場合は、データ属性の名前が使用されます。</Para></Entry>
<Entry><Para>これは、あと書きのページに記述されています。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>ICON</Command></Para></Entry>
<Entry><Para>このデータに対して使用されるアイコンの名前。
このフィールドが<Command>NULL</Command>か、データ属性レコードに含まれていない場合は、標準のアイコンが使用されます。
アイコンの命名の詳細については、<Filename>dtdtsfile(4)</Filename>を参照してください。</Para></Entry>
<Entry><Para><Command>Dtps</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>PROPERTIES</Command></Para></Entry>
<Entry><Para>このデータの属性を示すキーワード。
見える場合と見えない場合があります。
このフィールドが<Command>NULL</Command>か、データ属性レコードに含まれていない場合は、可視属性とみなされます。
これは、ファイルをユーザから完全に隠したい場合に使用します。</Para></Entry>
<Entry><Para><Command>invisible</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>ACTIONS</Command></Para></Entry>
<Entry><Para>このデータに対して実行できるアクションのリスト。
このリストは、この型のオブジェクトに対してユーザに提示されるアクションのアクション・テーブル内の名前を参照します。
このフィールドが<Command>NULL</Command>か、データ属性レコードに含まれていない場合は、どのアクションも使用できません。</Para></Entry>
<Entry><Para><Filename>Open,Print</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>NAME_TEMPLATE フィールド</Command></Para></Entry>
<Entry><Para>この型のデータの新規ファイル作成に使用される文字列。
文字列はファイル名とともに1つの引数として<Filename>sprintf(3)</Filename>に渡されます。
デフォルトは空です。
このフィールドをデータ抽出条件テーブルの<Filename>NAME_PATTERN</Filename>フィールドと比較してみてください。
テンプレートは<Filename>&percnt;s.c</Filename>など、特定のファイルを作成するために使用されますが、パターンは<Filename>*.c</Filename>などのファイルを検索するために使用されます。</Para></Entry>
<Entry><Para><Filename>&percnt;s.ps</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>IS_EXECUTABLE フィールド</Command></Para></Entry>
<Entry><Para>この型をアプリケーションとして実行できることをユーザに知らせる文字論理値。
<Filename>IS_EXECUTABLE</Filename>に<Command>true</Command>が設定されている場合
<Filename>(</Filename><Filename>DtDtsIsTrue()</Filename>参照)、データは実行可能です。
このフィールドが<Command>NULL</Command>か、データ属性テーブルに含まれていない、またはtrueに設定されていない場合は、データは実行可能でないとみなされます。</Para></Entry>
<Entry><Para><Command>true</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>MOVE_TO_ACTION</Filename></Para></Entry>
<Entry><Para>オブジェクトが現在のオブジェクトに移動されるときに実行されるアクションの名前。</Para></Entry>
<Entry><Para><Filename>FILESYSTEM_MOVE</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>COPY_TO_ACTION</Filename></Para></Entry>
<Entry><Para>オブジェクトが現在のオブジェクトにコピーされるときに実行されるアクションの名前。</Para></Entry>
<Entry><Para><Filename>FILESYSTEM_COPY</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>LINK_TO_ACTION</Filename></Para></Entry>
<Entry><Para>オブジェクトが現在のオブジェクトにリンクされるときに実行されるアクションの名前。</Para></Entry>
<Entry><Para><Filename>FILESYSTEM_LINK</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para>IS_TEXT</Para></Entry>
<Entry><Para>このデータ型がテキスト・エディタまたはテキスト・ウィジェットでの操作(表示または編集)に適していることをユーザに知らせる文字列論理値。
データが本来はテキストである場合や、ユーザに対してテキスト形式で表示される場合、<Filename>IS_TEXT</Filename>フィールドには<Command>true</Command>が設定されます
<Filename>(</Filename><Filename>DtDtsIsTrue()</Filename>参照)。
その基準は、データが人間の言語から成るものか、手動で生成および管理されているか、テキスト・エディタでの表示と編集が可能か、構造体と書式の情報をまったく(あるいはごくわずかしか)ないかという点から決定されます。</Para></Entry>
<Entry><Para>詳細な例については、
<!--Original XRef content: 'Table&numsp;9&hyphen;3'-->
<XRef Role="CodeOrFigureOrTable" Linkend="PG.datat.mkr.8">を参照してください。</Para></Entry>
</Row>
<Row>
<Entry></Entry>
<Entry><Para><Filename>IS_TEXT</Filename>フィールドが<Command>true</Command>の場合、データはアプリケーションから直接表示することができます。
すなわち、アプリケーションは <Command>XmText</Command>などのテキスト編集ウィジェットにデータを直接読み込むことができます。</Para></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para>MEDIAフィールド</Para></Entry>
<Entry><Para><Command>MEDIA</Command>ネーム・スペースの名前は、データそのものの形式について記述します。<Command>MEDIA</Command>名は、ICCCM選択ターゲットとして使用され、データ型レコードの<Command>MEDIA</Command>フィールドで名前が付けられ、ToolTalkメディア交換メッセージの型パラメータの中で使用されます。</Para><Para><Command>MEDIA</Command>ネーム・スペースは、ICCCMによって定義された選択ターゲット・アトムのネーム・スペースのサブセットです。
データ書式を指定する選択ターゲットはすべて有効な<Command>MEDIA</Command>名で、有効な<Command>MEDIA</Command>名は選択ターゲットとして直接使用することができます。データ書式ではなく、選択の属性(たとえば、<Filename>LIST_LENGTH</Filename>)や発生する副作用(たとえば、<Command>DELETE</Command>)を指定する選択ターゲットもあります。
これらの属性選択ターゲットは、<Command>MEDIA</Command>ネーム・スペースの一部ではありません。</Para></Entry>
<Entry><Para><Command>POSTSCRIPT</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>MIME_TYPE</Filename></Para></Entry>
<Entry><Para><Command>MEDIA</Command>は、デスクトップ内部にあり、データ型を表す一意の名前です。
ただし、外部の他の命名組織もネーム・スペースを設定しています。
MIME RFCで述べられているMultipurpose Internet Message Extensions (MIME)は、そのような外部登録の1つであり、デスクトップ・メール・プログラムのための標準的なネーム・スペースです。</Para></Entry>
<Entry><Para><Filename>application/postscript</Filename></Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>X400_TYPE</Filename></Para></Entry>
<Entry><Para>X.400型は、構造は<Command>MEDIA</Command>型に似ていますが、異なる規則を使用して書式化され、異なる命名組織を持ちます。</Para></Entry>
<Entry><Para><Command>1 2 840 113556 3 2 850</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>INSTANCE_ICON フィールド</Command></Para></Entry>
<Entry><Para>データのインスタンスのために使用されるアイコンの名前で、通常は
<Filename>&percnt;</Filename><Symbol Role="Variable">name</Symbol><Filename>&percnt;.icon</Filename>などの値[<Command>dtdtsfile(4)</Command>のマニュアル・ページの「バグ」も参照]。
<Filename>INSTANCE_ICON</Filename>が設定されている場合は、アプリケーションは
<Command>ICON</Command>の代わりにそれを使用しなければなりません。
このフィールドが<Command>NULL</Command>か、データ属性レコードに含まれていない場合は、<Command>ICON</Command>フィールドが使用されます。</Para></Entry>
<Entry><Para><Filename>/</Filename><Symbol Role="Variable">myicondir</Symbol><Filename>/&percnt;</Filename><Symbol Role="Variable">name</Symbol><Filename>&percnt;.</Filename>bm</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>DATA_HOST</Filename></Para></Entry>
<Entry><Para><Filename>DATA_HOST</Filename>属性は、<Filename>*.dt</Filename>ファイルの属性テーブルに追加できるフィールドではありませんが、テーブルから属性を読み込むアプリケーションに返すことができます。
データ型検査サービスはこの属性を自動的に追加して、データ型の読み込み元のホスト・システムを示します。
このフィールドが<Command>NULL</Command>か、データ属性レコードに含まれていない場合、データ型はローカル・システムから読み込まれています。</Para></Entry>
<Entry></Entry>
</Row>
</TBody>
</TGroup>
</Table>
<Para><Filename>IS_TEXT</Filename>は、<Command>MIME_ RFC</Command>で述べられている<Command>MIME</Command>コンテント・タイプである<Filename>MIME_TYPE</Filename>のテキスト属性とは異なります。
<Command>MIME</Command>コンテント・タイプからデータがテキスト文字とバイト値のどちらで作成されているかがわかります。
データがテキスト文字で作成され、データに<Filename>text/*</Filename>というラベルが付けられている場合、<Filename>IS_TEXT</Filename>フィールドはテキスト形式でユーザに表示するのに適したデータかどうかを判別します。</Para>
<Para>さまざまな<Command>MIME_TYPE</Command>属性での<Filename>IS_TEXT</Filename>の使用例を<!--Original XRef content: 'Table&numsp;9&hyphen;3'-->
<XRef Role="CodeOrFigureOrTable" Linkend="PG.datat.mkr.8">に示します。</Para>
<Table Id="PG.datat.tbl.3" Frame="Topbot">
<Title Id="PG.datat.mkr.8">IS_TEXT 属性の例</Title>
<TGroup Cols="2">
<ColSpec Colname="1" Colwidth="3.67858 in">
<ColSpec Colname="2" Colwidth="1.33134 in">
<THead>
<Row>
<Entry><Para><Literal>説明と MIME_TYPE 属性</Literal></Para></Entry>
<Entry><Para><Literal>IS_TEXT 値</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Command>MIME_TYPE text/plain</Command>でASCIIにエンコードされた自然言語</Para></Entry>
<Entry><Para><Command>IS_TEXT true</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>MIME_TYPE text/plain; charset=XXX</Command>でE*UC、JIS、Unicode、またはISOラテン文字セットにエンコードされた自然言語</Para></Entry>
<Entry><Para><Command>IS_TEXT true</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>MIME_TYPE text/plain</Command>による、
CalendarAppointmentAttrs</Para></Entry>
<Entry><Para><Command>IS_TEXT false</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>MIME_TYPE text/html</Command>による、ハイパーテキスト・マークアップ言語 (HTML)</Para></Entry>
<Entry><Para><Command>IS_TEXT true</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>MIME_TYPE application/postscript</Command>による、PostScript</Para></Entry>
<Entry><Para><Command>IS_TEXT false</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>MIME_TYPE text/plain</Command>による、C プログラム・ソース (<Filename>C_SRC</Filename>)</Para></Entry>
<Entry><Para><Command>IS_TEXT true</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>MIME_TYPE text/plain</Command>による、ビットマップとピックスマップ (<Command>XBM</Command> と <Command>XPM</Command>)</Para></Entry>
<Entry><Para><Command>IS_TEXT false</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>MIME_TYPE text/plain</Command>による、デスクトップ・アプリケーション・ビルド・サービスのためのプロジェクトまたはモジュール・ファイル</Para></Entry>
<Entry><Para><Command>IS_TEXT false</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Command>MIME_TYPE text/plain</Command>による、シェル・スクリプト</Para></Entry>
<Entry><Para><Command>IS_TEXT false</Command></Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>uuencode(1)</Filename> により、<Command>MIME_TYPE text/plain</Command>で生成されたエンコード・テキスト</Para></Entry>
<Entry><Para><Command>IS_TEXT false</Command></Para></Entry>
</Row>
<Row>
<Entry><Para>*<Command>MIME_TYPE text/plain</Command></Para></Entry>
<Entry><Para><Command>IS_TEXT false</Command></Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
<Para>データ型属性の詳細については、<Filename>dtdtsfile(4)</Filename>のマニュアル・ページを参照してください。</Para>
</Sect1>
<Sect1 Id="PG.datat.div.6">
<Title Id="PG.datat.mkr.9">データ型関数
<IndexTerm>
<Primary>関数</Primary>
<Secondary>データ型検査</Secondary>
</IndexTerm><IndexTerm>
<Primary>データ型検査</Primary>
<Secondary>関数</Secondary>
</IndexTerm><IndexTerm>
<Primary>データ型</Primary>
<Secondary>関数</Secondary>
</IndexTerm><IndexTerm>
<Primary>関数</Primary>
<Secondary>データ型</Secondary>
</IndexTerm></Title>
<Para>データオブジェクトの属性を調べるためには、まずオブジェクトの型を判断し、その型の適切な属性値を求めなければなりません。
データベースにデータ情報を問い合わせるための関数を
<!--Original XRef content: 'Table&numsp;9&hyphen;4'-->
<XRef Role="CodeOrFigureOrTable" Linkend="PG.datat.mkr.10">に示します。
これらの関数はそれぞれ、セクション (3) にマニュアル・ページがあります。
詳細については、該当するマニュアル・ページを参照してください。</Para>
<Table Id="PG.datat.tbl.4" Frame="Topbot">
<Title Id="PG.datat.mkr.10">データ型データベース問い合わせ関数
<IndexTerm>
<Primary>データ型検査</Primary>
<Secondary>データベース問い合わせ関数</Secondary>
</IndexTerm><IndexTerm>
<Primary>データベース問い合わせ関数、データ型検査</Primary>
</IndexTerm></Title>
<TGroup Cols="2">
<ColSpec Colname="1" Colwidth="2.5 in">
<ColSpec Colname="2" Colwidth="2.5 in">
<THead>
<Row>
<Entry><Para><Literal>関数</Literal></Para></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Command>DtDtsBufferToAttributeList</Command></Para></Entry>
<Entry><Para>指定バッファのデータ属性のリストを検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsBufferToAttributeValue</Command></Para></Entry>
<Entry><Para>指定バッファのデータ属性を検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsBufferToDataType</Command></Para></Entry>
<Entry><Para>指定バッファのデータ型名を検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsDataToDataType</Command></Para></Entry>
<Entry><Para>指定データ・セットのデータ型を検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsDataTypeIsAction</Command></Para></Entry>
<Entry><Para>結果として保存されたディレクトリのデータ型を返します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsDataTypeNames</Command></Para></Entry>
<Entry><Para>使用可能なデータ型のリストを検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsDataTypeToAttributeList</Command></Para></Entry>
<Entry><Para>指定データ属性名の属性リストを検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsDataTypeToAttributeValue</Command></Para></Entry>
<Entry><Para>指定データ属性名の属性値を検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsFileToAttributeList</Command></Para></Entry>
<Entry><Para>指定ファイルのデータ属性のリストを検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsFileToAttributeValue</Command></Para></Entry>
<Entry><Para>指定ファイルのデータ属性値を検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsFileToDataType</Command></Para></Entry>
<Entry><Para>指定ファイルのデータ型を検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsFindAttribute</Command></Para></Entry>
<Entry><Para>属性<Command>name</Command>が<Command>value</Command>に一致するデータ型のリストを検索します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsFreeAttributeList</Command></Para></Entry>
<Entry><Para>指定属性リストのメモリを解放します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsFreeAttributeValue</Command></Para></Entry>
<Entry><Para>指定属性値のメモリを解放します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsFreeDataType</Command></Para></Entry>
<Entry><Para>指定データ型名のアプリケーション・メモリを解放します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsFreeDataTypeNames</Command></Para></Entry>
<Entry><Para><Command>DtDtsDataTypeNames</Command>または
<Command>DtDtsFindAttribute</Command>を呼び出して作成されたメモリを解放します。</Para></Entry>
</Row>
<Row>
<Entry><Para>DtDtsIsTrue</Para></Entry>
<Entry><Para>文字列を論理値に変換する簡易関数。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsRelease</Command></Para></Entry>
<Entry><Para>一般的には再読み込みの準備として、データ型データベース情報の読み込みを解除します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtDtsSetDataType</Command></Para></Entry>
<Entry><Para>指定されたディレクトリのデータ型を設定します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>DtsLoadDataTypes</Command></Para></Entry>
<Entry><Para>データ型関数のためにデータベース・フィールドを初期化し、読み込みます。
アクションまたはアクション型を使用する必要がなく、パフォーマンスを向上させたいとき、<Command>DtDbLoad</Command>の代わりに使用します。
アクションを使用する必要があるときには<Command>DtDbLoad</Command>を使用します。</Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
<Para>データ型を検査して属性を検索するには、簡易、中間、拡張の3つの方法があります。</Para>
<Sect2 Id="PG.datat.div.7">
<Title>簡易データ型検査</Title>
<Para>データ型を検査するための最も簡単な方法は、次の関数を使用することです。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Command>DtDtsFileToAttributeList</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtDtsFileToAttributeValue</Command></Para>
</ListItem>
</ItemizedList>
<Para>これらの関数を使用すると、ファイルの型が検査され、単一の属性またはリスト全体が検索されます。
システム・コールが行われ、データ型の検査と属性の検索が行われます。
次の関数は、中間データ型検査関数を呼び出します。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Command>DtDtsBufferToAttributeList</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtDtsBufferToAttributeValue</Command></Para>
</ListItem>
</ItemizedList>
<Para>バッファは、読み取り/書き込み権を持つ通常ファイルに一致するモードを持つと想定されます。
読み専用バッファの型の検査については、
<!--Original XRef content: '&xd2;Advanced Data Typing'-->
<XRef Role="SectionTitle" Linkend="PG.datat.mkr.11">を参照してください。</Para>
</Sect2>
<Sect2 Id="PG.datat.div.8">
<Title>中間データ型検査</Title>
<Para>データの型を検査して属性を検索する場合、プロセスのデータ型検査部分は、パフォーマンスの点で最もコストがかかります。
データ型の検査を2番目の方法で行うと、データ型検査のための関数と属性検索のための関数を切り離すことによって、パフォーマンスを改善できます。
中間データ型検査には、次の関数を使用します。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Command>DtDtsBufferToDataType</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtDtsFileToDataType</Command></Para>
</ListItem>
<ListItem>
<Para><Command>DtDtsDataTypeToAttributeList</Command></Para>
</ListItem>
<ListItem>
<Para>DtDtsDataTypeToAttributeValue</Para>
</ListItem>
</ItemizedList>
<Para>アプリケーションが複数の属性値を問い合わせる場合には、これらの関数を使用します。
これらの関数を使用すると、オブジェクトの型が検査され、その型を使用して属性リストから1つ以上の属性を検索します。</Para>
<Para>データ型検査と属性の検索を行うには、中間データ型検査関数を使用するようにしてください。
これらの関数は、拡張データ型検査関数を呼び出し、バッファについて簡易データ型検査と同様に想定します。</Para>
</Sect2>
<Sect2 Id="PG.datat.div.9">
<Title Id="PG.datat.mkr.11">拡張データ型検査</Title>
<Para>拡張データ型検査では、システム・コール、データ型、さらには属性検索も別々に行われます。
拡張データ型検査では、あらかじめ初期化されてデータ型検査関数の一部としては含まれない既存のシステム・コールからのデータを使用するので、コード化が複雑になります。拡張データ型検査には、次の関数を使用してください。</Para>
<Para><Command>DtDtsDataToDataType</Command></Para>
<Para>読み取り専用バッファの型を検査するには、
<Filename>st_mode</Filename>フィールドが
<Command>S_IFREG | S_IROTH | S_IRGRP | S_IRUSR</Command>に設定された
<Command>stat</Command>構造体が渡されなければなりません。</Para>
</Sect2>
<Sect2 Id="PG.datat.div.10">
<Title>アクションであるデータ型(DtDtsDataTypeIsAction)</Title>
<Para>データベースが読み込まれるとアクションの検査ができるようになるため、データベースの各アクションに対して<Emphasis>合成データ型</Emphasis>が生成されます。
これらのデータ型は、次の2つの追加の属性を持つことができます。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Filename>IS_ACTION</Filename>は、このデータ型がアクションであることをユーザに知らせる文字列論理値です。
<Filename>IS_ACTION</Filename>に文字列<Command>true</Command>(大文字と小文字の区別はありません)が設定されている場合、データはアクションです。</Para>
</ListItem>
<ListItem>
<Para><Filename>IS_SYNTHETIC</Filename>は、このデータ型が<Command>ACTION</Command>テーブルのエントリから生成されたことをユーザに知らせる文字列論理値です。
<Filename>IS_SYNTHETIC</Filename>に<Command>true</Command>が設定されている場合、データ型は生成されています。</Para>
</ListItem>
</ItemizedList>
</Sect2>
</Sect1>
<Sect1 Id="PG.datat.div.11">
<Title Id="PG.datat.mkr.12">ドロップ領域としてのオブジェクトの登録
<IndexTerm>
<Primary>データ型検査</Primary>
<Secondary>ドロップ領域としてのオブジェクトの登録</Secondary>
</IndexTerm><IndexTerm>
<Primary>ドロップ領域</Primary>
<Secondary>オブジェクトの登録</Secondary>
</IndexTerm><IndexTerm>
<Primary>ドロップ領域としてのオブジェクトの登録</Primary>
</IndexTerm></Title>
<Para>アプリケーションがデータ型を定義する場合は、次の手順に従ってプログラマが意図したドラッグ・ドロップ動作のすべてが提供されているか確認してください。</Para>
<OrderedList>
<ListItem>
<Para>アプリケーションの中で、データ型を定義する必要があるかどうかを指定します。</Para>
</ListItem>
<ListItem>
<Para>定義する各データ型について、関連するオブジェクトをドロップ領域にするかどうかを指定します。</Para>
</ListItem>
<ListItem>
<Para>ドロップ領域として登録したい各オブジェクトについて、どの操作(移動、コピー、またはリンク)を定義するかを指定します。</Para>
</ListItem>
<ListItem>
<Para>各オブジェクトに対して有効なドロップ操作について、適切なドロップ・アクションを定義します(<Filename>MOVE_TO_ACTION</Filename>、
<Filename>COPY_TO_ACTION</Filename>、および
<Filename>LINK_TO_ACTION</Filename>属性を設定してください)。</Para>
</ListItem>
</OrderedList>
<Para>アプリケーションがデータ・オブジェクトのアイコンを表示する場合、それらのアイコンをドロップ領域としてサポートしなければならないこともあります。
その場合、<Filename>MOVE_TO_ACTION</Filename>、
<Filename>COPY_TO_ACTION</Filename>、または
<Filename>LINK_TO_ACTION</Filename>属性を問い合わせて、それらのデータ・オブジェクトのドロップ動作を指定する必要があります。
対応する属性値が<Command>NULL</Command>でない場合だけ、オブジェクトはドロップ操作をサポートしなければなりません。
3つの属性すべてが<Command>NULL</Command>の値を持つ場合、オブジェクトはドロップ領域として登録されません。
データ型が定義されているオブジェクトの属性を最低1つでも設定すると、アプリケーションはそのオブジェクトをドロップ領域として登録できます。</Para>
<Para>ユーザがオブジェクトをドロップ領域にドラッグすると、アプリケーションはドロップを行うためにどのジェスチャ(すなわち、どのドラッグ操作)が使用されたかを判断します。
ドラッグ操作とドロップ領域のデータ型に基づいて、アプリケーションはデータ型データベースからドロップ属性を検索します。
次に、<Command>DtActionInvoke</Command>を呼び出して、次の2つの規則によってパラメータを判断します。</Para>
<OrderedList>
<ListItem>
<Para Id="PG.datat.mkr.13">ユーザがオブジェクトAとBをオブジェクトCの上にドロップした場合は、C、A、Bを<Symbol Role="Variable">args</Symbol>として
<Command>DtActionInvoke</Command>を呼び出します。
<Command>action</Command>はCの
<Filename>MOVE_TO_ACTION</Filename>、
<Filename>COPY_TO_ACTION</Filename>、
<Filename>LINK_TO_ACTION</Filename>のいずれかの値です。
オブジェクトCがアクションの場合、引き数リストはCを含みません。
また、<Command>action</Command>はCです。</Para>
</ListItem>
</OrderedList>
<Para>ファイル・マネージャとそのディレクトリおよびフォルダ・オブジェクトは、デスクトップが移動、コピー、およびリンクされたドロップ属性を使用する方法を示す例となります。
ユーザは、オブジェクト(ファイル)をディレクトリ・フォルダへドラッグ&ドロップすることができます。
ファイル・マネージャは、フォルダ・オブジェクトに対して、
<Filename>MOVE_TO_ACTION</Filename>、
<Filename>COPY_TO_ACTION</Filename>、および
<Filename>LINK_TO_ACTION</Filename>アクションを定義します。
これらのアクションは、適切なファイル・システムの移動、コピー、およびリンクのためのシステム関数を実行します。</Para>
<Para><Filename>MOVE_TO_ACTION</Filename>、
<Filename>COPY_TO_ACTION</Filename>、および
<Filename>LINK_TO_ACTION</Filename>属性の定義の例については、
<Filename>/usr/dt/appconfig/types/C/dtfile.dt</Filename>を参照してください。
ドラッグ&ドロップの使用方法の詳細については、
<!--Original XRef content: 'Chapter&numsp;5, &xd2;Integrating with Drag and Drop'-->
<XRef Role="ChapNumAndTitle" Linkend="PG.dndPG.mkr.1">を参照してください。</Para>
</Sect1>
<Sect1 Id="PG.datat.div.12">
<Title Id="PG.datat.mkr.14">データ型データベースの使用例
<IndexTerm>
<Primary>データ型検査</Primary>
<Secondary>コーディング例</Secondary>
</IndexTerm><IndexTerm>
<Primary>コーディング例</Primary>
<Secondary>データ型検査</Secondary>
</IndexTerm></Title>
<Para>この節では、データ型検査のコード例を示します。
このコード例は、<Filename>/usr/dt/examples/dtdts/datatyping.c</Filename>にあります。
このサンプル・コードは、渡された各ファイルのデータ型、アイコン名、およびサポートされるアクションを表示します。
<Command>dtaction</Command>クライアントを使用して、サポートされているアクションをファイルで実行することもできます。
<Command>datatyping</Command>の使い方は、次のとおりです。</Para>
<ProgramListing>datatyping <Symbol Role="Variable">file1</Symbol> [<Symbol Role="Variable">file2</Symbol> <Symbol Role="Variable">...</Symbol>]
#include &lt;Xm/Form.h>
#include &lt;Xm/Text.h>
#include &lt;Dt/Dts.h>
#define ApplicationClass &ldquo;DtDatatyping&ldquo;
static Widget text;
static void DisplayTypeInfo(int, char**);
int main(int argc, char **argv)
{
XtAppContext appContext;
Widget toplevel, form;
Arg args[20];
int n;
toplevel = XtAppInitialize(&amp;appContext, ApplicationClass,
NULL, 0,
argc, argv, NULL, NULL, 0);
if (argc == 1) {
printf(&ldquo;&percnt;s: No files specified.\n&ldquo;, argv[0]);
exit(1);
}
form = XmCreateForm(toplevel, &ldquo;form&ldquo;, NULL, 0);
XtManageChild(form);
n = 0;
XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNeditable, False); n++;
XtSetArg(args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++;
XtSetArg(args[n], XmNrows, 25); n++;
XtSetArg(args[n], XmNcolumns, 90); n++;
text = XmCreateScrolledText(form, &ldquo;text&ldquo;, args, n);
XtManageChild(text);
XtRealizeWidget(toplevel);
if (DtAppInitialize(appContext, XtDisplay(toplevel), toplevel,
argv[0],
ApplicationClass) == False) {
printf(&ldquo;&percnt;s: Couldn't initialize Dt\n&ldquo;, argv[0]);
exit(1);
}
DtDbLoad();
DisplayTypeInfo(argc, argv);
XtAppMainLoop(appContext);
}
static void DisplayTypeInfo(int argc, char **argv)
{
char *file;
char *datatype;
char *icon;
char *actions;
char str[100];
int i;
sprintf(str, &ldquo;&percnt;-30s\t&percnt;-10s\t&percnt;-8s\t&percnt;-20s\n&ldquo;,
&ldquo;File&ldquo;,
&ldquo;DataType&ldquo;,
&ldquo;Icon&ldquo;,
&ldquo;Actions&ldquo;);
XmTextInsert(text, XmTextGetLastPosition(text), str);
sprintf(str, &ldquo;&percnt;-30s\t&percnt;-10s\t&percnt;-8s\t&percnt;-20s\n&ldquo;,
&ldquo;-------------------&ldquo;,
&ldquo;--------&ldquo;,
&ldquo;----&ldquo;,
&ldquo;-------&ldquo;);
XmTextInsert(text, XmTextGetLastPosition(text), str);
for(i=1; i &lt; argc; i++) {
char *file = argv[i];
/* find out the Dts data type */
datatype = DtDtsFileToDataType(file);
if(datatype) {
/* find the icon attribute for the data type */
icon = DtDtsDataTypeToAttributeValue(datatype,
DtDTS_DA_ICON, file);
}
/* Directly find the action attribute for a file */
actions = DtDtsFileToAttributeValue(file,
DtDTS_DA_ACTION_LIST);
sprintf(str, &ldquo;&percnt;-30s\t&percnt;-10s\t&percnt;-8s\t&percnt;s\n&ldquo;,
file,
datatype?datatype:&ldquo;unknown&ldquo;,
icon?icon:&ldquo;unknown&ldquo;,
actions?actions:&ldquo;unknown&ldquo;);
XmTextInsert(text, XmTextGetLastPosition(text), str);
/* Free the space allocated by Dts */
DtDtsFreeAttributeValue(icon);
DtDtsFreeAttributeValue(actions);
DtDtsFreeDataType(datatype);
}
</ProgramListing>
</Sect1>
</Chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,602 @@
<chapter id="PG.info.div.1">
<title id="PG.info.mkr.1">インフォメーション・マネージャの統合</title>
<indexterm><primary>インフォメーション・マネージャの統合</primary>
<secondary>一般情報</secondary></indexterm>
<indexterm><primary>オンライン・ヘルプ統合</primary>
<secondary>一般情報</secondary></indexterm>
<indexterm><primary>dtinfo</primary>
<secondary>一般情報</secondary></indexterm>
<para>CDEユーザは、<literal>dtinfo</literal>機能を使用して、グラフィックやハイパーテキスト・リンクを含む、大量のSGML形式のオンライン・マニュアルを検索したり、ブラウズできます。
それらをインフォメーション・ライブラリといいます。
インフォメーション・ライブラリは、ブック・ケースの集まりであり、各ブック・ケースは、ブックの集まりです。</para>
<para>インフォメーション・マネージャは、複数の場所から、CDEデスクトップ上で使用できます。
ユーザの初期セッションの一部として、セッション・マネージャが
<literal>dtinfo</literal>を自動的に開始します。
インフォメーション・ライブラリは、DtInfoLibオブジェクトとして、ファイル・マネージャからデスクトップ上で使用できます。
<literal>dtinfo</literal>アプリケーションはフロントパネルから直接実行できます。また、<literal>アプリケーション・マネージャ</literal>にある
<literal>デスクトップアプリケーション</literal>アプリケーション・グループの
<literal>インフォメーション・マネージャ</literal>アクションからも実行できます。</para>
<para>CDEアプリケーションは、<literal>dtinfo</literal>ブラウザを統合し、インフォメーション・ライブラリをアクセス可能にするために、小型のAPIを呼び出します。
もし<literal>dtinfo</literal>があなたのアプリケーション環境に適応しなければ、
dtinfoデータベース・エンジンAPIを使用して、それを拡張するか、あなた自信のブラウザと置き換えることができます。
次は、dtinfo機能の一般的な論議です。
なお、この章では、<literal>dtinfo</literal>APIと
<literal>dtinfo</literal>データベース・エンジンAPIを説明します。</para>
<sect1 id="PG.info.div.2">
<title id="PG.info.mkr.2">サーバ・アーキテクチャの構造</title>
<indexterm><primary>dtinfo</primary>
<secondary>サーバ・アーキテクチャの構造</secondary></indexterm>
<para>CDEでのインフォメーション管理は、サーバ・アーキテクチャに基づきます。
つまり、CDEデスクトップ・セッション中はいつでも、<literal>dtinfo</literal>のメイン・ブック・リスト・ウインドウのインスタンスが一つだけ正常に表示できます。
ユーザまたはアプリケーションがセッション中に、新しいドキュメント・ライブラリとの接続を要求したときは、インスタンスによって、オンライン・マニュアルの編成や検索に力をつぎ込み、システムのレスポンス・タイムは最小限にするように取り扱われます。</para>
<para>ただし、<literal>dtinfo</literal>インスタンスが現在動作中で、そのホストからはアクセスできないinfolibに対して、ユーザまたはアプリケーションがアクセスを要求したときは、例外が起きます。
このような場合、デスクトップ・メカニズムは、要求されたインフォメーション・ライブラリとのアクセスを持つホスト上に、<literal>dtinfo</literal>の新しいインスタンスを自動的に起動します。
また、現在実行中の<literal>dtinfo</literal>プロセスが使用しているロケールとは異なるロケール中のinfolibに対して、ユーザまたはアプリケーションがアクセスを要求したときも、同様なことが起きます。
この場合、デスクトップ・メカニズムは、同じホスト上に異なるロケールで
<literal>dtinfo</literal>の新しいインスタンスを起動します。
二つの条件が重なると、要求されたロケールのインフォメーション・ライブラリとのアクセスを持つホスト上に新しい<literal>dtinfo</literal>のインスタンスを起動します。</para>
<para>コマンド行で<literal>dtinfo</literal>を起動すると、複数のインスタンスが、指定されたホスト上に指定されたロケールで作成できます。
通常、ToolTalk メカニズムは、一つのインスタンスだけがデスクトップ上を実行中であると保証しますが、この場合、<literal>dtinfo</literal>は保証を期待できません。</para>
</sect1>
<sect1 id="PG.info.div.3">
<title id="PG.info.mkr.3">検索パス</title>
<indexterm><primary>dtinfo</primary>
<secondary>検索パス</secondary></indexterm>
<indexterm><primary>dtinfo</primary>
<secondary>環境変数</secondary></indexterm>
<para>環境変数<systemitem class="environvar">DTINFOLIBSEARCHPATH</systemitem>と
<systemitem class="environvar">DTINFOLIBDEFAULT</systemitem>は、組み込み時に、
<command>dtsearchpath</command>によって定義されます。
infolib検索パスは、あなたのシステムに登録されているはずのインフォメーション・ライブラリを、指定された位置で、デスクトップに検索させます。</para>
<sect2 id="PG.info.div.4">
<title id="PG.info.mkr.4">デフォルトのInfolib検索パス</title>
<para>デフォルトのinfolib検索パスは、システム共通の位置および組み込みの位置を持っています。</para>
<itemizedlist>
<listitem>
<para>システム共通の位置 - <literal>/etc/dt/infolib/%L/%I.dti</literal></para>
</listitem>
<listitem>
<para>組み込みの位置 - <literal>/usr/dt/infolib/%L/%I.dti</literal></para>
</listitem>
</itemizedlist>
<para>デフォルトの言語は、Cです。
<systemitem class="environvar">DTINFOLIBDEFAULT</systemitem>の値は、%Iに置き換えられます。
<systemitem class="environvar">DTINFOLIBDEFAULT</systemitem>の初期値は、
<literal>cde</literal>です。</para>
</sect2>
<sect2 id="PG.info.div.5">
<title id="PG.info.mkr.5">
アプリケーション検索パスが、Infolib検索パスに、どう影響するか</title>
<para>アプリケーション検索パスに位置が追加された場合、infolib検索パスにinfolibサブディレクトリが自動的に追加されます。
たとえば、アプリケーション・サーバ<literal>hosta:</literal>がアプリケーション検索パスに追加された場合、infolib検索パスには、
<literal>hosta:/etc/dt/infolib/%L</literal>が自動的に追加されます。</para>
</sect2>
<sect2 id="PG.info.div.6">
<title id="PG.info.mkr.6">Infolib検索パス環境変数</title>
<para>infolib検索パスは、組み込みの位置と以下の入力変数から組み立てられます。</para>
<itemizedlist>
<listitem>
<para><systemitem class="environvar">DTSPSYSINFOLIB</systemitem>
- システム共通infolib検索パス入力変数</para>
</listitem>
<listitem>
<para><systemitem class="environvar">DTSPUSERINFOLIB</systemitem>
- 個人用infolib検索パス入力変数</para>
</listitem>
</itemizedlist>
<para>これらの入力変数を使用して、アプリケーション検索パス以外の位置を指定できます。
組み立てられたデータベース検索パスは、
<systemitem class="environvar">DTINFOLIBSEARCHPATH</systemitem>出力変数で指定できます。</para>
</sect2>
<sect2 id="PG.info.div.7">
<title id="PG.info.mkr.7">Infolib検索パス入力変数の構文</title>
<para><systemitem class="environvar">DTSPSYSINFOLIB</SYSTEMITEM>変数と
<systemitem class="environvar">DTSPUSERINFOLIB</systemitem>変数の構文は、次のとおりです。</para>
<para><symbol role="variable">VARIABLE</symbol> <literal>=</literal> <symbol role="variable">位置 [,位置...]</symbol>
</para>
<para>ここで<symbol role="variable">位置</symbol>には、
ローカル(セッション・サーバ)システムのディレクトリである
<Filename>/</Filename><symbol role="variable">パス</symbol>を指定することもできます。
この構文で、ローカル・ディレクトリを追加して下さい。
別のシステムの位置を指定するには、そのネットワーク・ファイル名、たとえば、
<Filename>/nfs/servera/projects/infolib</Filename>を使用します。</para>
</sect2>
<sect2 id="PG.info.div.8">
<title id="PG.info.mkr.8">Infolib検索パスの組み立て方</title>
<para>infolib 検索パスの値
(<systemitem class="environvar">DTINFOLIBSEARCHPATH</systemitem>)は、以下の位置を組み立てて作成されます(使用頻度が高いものから順に表示してあります)。</para>
<itemizedlist>
<listitem>
<para><systemitem class="environvar">DTSPUSERINFOLIB</systemitem>変数で指定された位置</para>
</listitem>
<listitem>
<para><systemitem class="environvar">DTSPUSERAPPHOSTS</systemitem>変数から引き出された位置</para>
</listitem>
<listitem>
<para>デフォルトの位置は、<literal>/etc/dt/infolib/%L/%I.dti</literal>です。</para>
</listitem>
<listitem>
<para><systemitem class="environvar">DTSPSYSINFOLIB</systemitem>変数で指定された位置</para>
</listitem>
<listitem>
<para><systemitem class="environvar">DTSPSYSAPPHOSTS</systemitem>変数から引き出された位置</para>
</listitem>
<listitem>
<para><literal>/usr/dt/infolib/%L/%I.dti</literal></para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="PG.info.div.9">
<title id="PG.info.mkr.9">ワークスペース管理</title>
<indexterm><primary>dtinfo</primary>
<secondary>ワークスペース管理</secondary></indexterm>
<para>接続要求時に、ワークスペース中で実行されていても、ブラウザは、ワークスペース対応に予定の動作を行ないます。
ウインドウは、次のルールにしたがってワークスペースにマップされます。</para>
<itemizedlist>
<listitem>
<para>主ウインドウが新しいワークスペースにマップされると、関連するすべての副ウインドウも新しいワークスペースにマップされます。</para>
</listitem>
<listitem>
<para>副ウインドウが新しいワークスペースにマップされると、関連する主ウインドウとそれに関連するすべての副ウインドウも新しいワークスペースにマップされます。</para>
</listitem>
<listitem>
<para>主ウインドウが新しいワークスペースにマップされると、アプリケーションに関連するその他の主ウインドウは、現在のワークスペースに残ります。</para>
</listitem>
</itemizedlist>
<para>ブラウザ・ウインドウが現在のワークスペースにマップされると、
<function>DtInfo_LoadInfoLib</function>と
<function>DtInfo_ShowInfoAtLoc</function>のメッセージが出力されます。
ユーザは、また、<literal>dtwm</literal>メニューを通じて、新しいワークスペースにアプリケーション・ウインドウをマップすることができます。</para>
</sect1>
<sect1 id="PG.info.div.10">
<title id="PG.info.mkr.10">アプリケーション・リンケージ</title>
<indexterm><primary>dtinfo</primary>
<secondary>アプリケーション・リンケージ</secondary></indexterm>
<para>アプリケーションは、<literal>dtinfo</literal>を起動して、特定のオンライン・マニュアルを表示する手段として用意されています。
<literal>dtinfo</literal> 外部APIは、一つには、情報の表示やナビゲーションを管理したり、自動的に行なうアプリケーションとして使用されます。</para>
<para>(<function>DtShowInfoAtLoc</function>アクションの明示的なロケータ値を使用して)アプリケーションから、<literal>dtinfo</literal>に接続すると、すでに未表示の状態になっているブラウザを表示することができます。
このため、次に示す状態は変化します。</para>
<itemizedlist>
<listitem>
<para>ブラウザが<function>DtLoadInfoLib</function>アクションを使用してアクセスするとき、ただ一つのinfolibパスだけを指定できます。
その場合、新しくロードされたinfolibのブックケースを含む、最初の
<literal>dtinfo</literal>(ブックリスト)ウインドウだけが表示されます。</para>
</listitem>
<listitem>
<para><literal>dtinfo</literal>は、ワークスペース中でアクティブですが、ブック・リスト・ウインドウおよび/またはブラウザは、アイコン化されます。</para>
<itemizedlist>
<listitem>
<para>ブック・リスト・ウインドウおよびくくりつけられたブラウザのウインドウは、アイコン化されたままです。
くくりつけられていないブラウザのウインドウがない(アイコン化されている、いないに
かかわらず)場合には、新しいブラウザのウインドウが現われ、要求されたトピックが表示されます。</para>
</listitem>
<listitem>
<para>アイコン化されたブラウザのウインドウがくくりつけられていないときは、それがマップされ、以前のトピックは要求されたトピックに取って代わられます。</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>デスクトップと<literal>dtinfo</literal>インスタンスは、
あるホスト(<literal>host1</literal>)上の、
あるロケール(<literal>locale1</literal>)で起動されましたが、
<literal>dtinfo</literal>を使用するアプリケーションは、同一セッション中は、異なるホスト(<literal>host2</literal>)上および/または異なるロケール
(<literal>locale1</literal>)で、リモート・シェルから起動されます。</para>
<itemizedlist>
<listitem>
<para>アプリケーションからの要求は、現在のセッション中のすべての<literal>dtinfo</literal>プロセスで、処理できるかどうか、検査されます。
たとえば、<literal>dtinfo</literal>プロセスで要求を受け入れることは、それが同じロケールで動作中でなければならず、しかも、指定されたインフォメーション・ライブラリにアクセスできなければならないということです。</para>
</listitem>
<listitem>
<para>そのようなプロセスが存在しないときは、ブラウザの独立したコピーは
<literal>locale2</literal>の
<literal>host2</literal>上で起動されます。
オリジナル・メッセージは、処理のために新しいインスタンスに送られます。</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="PG.info.div.11">
<title id="PG.info.mkr.11">ToolTalkメッセージ</title>
<indexterm><primary>dtinfo</primary>
<secondary>ToolTalkメッセージ</secondary></indexterm>
<para><literal>dtinfo</literal>コマンドは、次のメッセージを取扱うためToolTalkに登録します。</para>
<itemizedlist>
<listitem>
<para><function>DtInfo_LoadInfoLib</function>
(配信範囲<Symbol>TT_SESSION</Symbol>)</para>
</listitem>
<listitem>
<para><function>DtInfo_ShowInfoAtLoc</function>
(配信範囲<Symbol>TT_SESSION</Symbol>)</para>
</listitem>
</itemizedlist>
<para><literal>dtinfo</literal>インスタンスは、次のメッセージを監視します。</para>
<itemizedlist>
<listitem>
<para><function>DtInfo_Quit</function>
(配信範囲<Symbol>TT_SESSION</Symbol>)
</para>
</listitem>
</itemizedlist>
<para>インフォメーション管理システムは、ToolTalkの要求を取扱うことのできる、現在有効な<literal>dtinfo</literal>プロセスがない場合には、<literal>dtinfo</literal>プロセスを開始するために使用される、ptypeの"DtInfo"も定義します。</para>
</sect1>
<sect1 id="PG.info.div.12">
<title id="PG.info.mkr.12">一般化されたロケータの書式</title>
<indexterm><primary>dtinfo</primary>
<secondary>インフォメーション・ロケータの書式</secondary></indexterm>
<para>外部ナビゲーションで参照できる一連のドキュメントとしてinfolibをアドレス付
けする目的で、一般化されたロケータの書式がアプリケーションおよびエンドユーザ用に
定義されています。
このメカニズムは、<Symbol>DtInfoLib</Symbol>レベルで作業するよりも、ずっと正確です。
このメカニズムは、それ自身のオンライン・マニュアルをしっかりと統合したいアプリケーションで、アクション・システム中でまたはコマンド行からの特定のセクションの印刷用に使用されます。</para>
<para>BNFが定義する一般化されたロケータの書式の構文を次に示します。</para>
<programlisting>&lt;GLF&gt; ::= &lt;MMDB&gt; | &lt;ULV&gt; | &lt;URI&gt;
&lt;MMDB&gt; ::= mmdb: &lt;IBL&gt; | &lt;IB&gt; | &lt;IL&gt; | &lt;INFOLIB&gt; | &lt;BL&gt; | &lt;BOOKCASE&gt; |
&lt;LOCATOR&gt;
&lt;IBL&gt; ::= &lt;INFOLIB&gt; &amp; &lt;BOOKCASE&gt; &amp; &lt;LOCATOR&gt;
&lt;IB&gt; ::= &lt;INFOLIB&gt; &amp; &lt;BOOKCASE&gt;
&lt;IL&gt; ::= &lt;INFOLIB&gt; &amp; &lt;LOCATOR&gt;
&lt;BL&gt; ::= &lt;BOOKCASE&gt; &amp; &lt;LOCATOR&gt;
&lt;INFOLIB&gt; ::= INFOLIB= &lt;NAME&gt;
&lt;BOOKCASE&gt; ::= BOOKCASE= &lt;NAME&gt;
&lt;LOCATOR&gt; ::= LOCATOR= &lt;ULV&gt; &lt;NAME&gt;
&lt;ULV&gt; ::= uuid_ | xsm_ | isbn_
&lt;NAME&gt; ::= &lt;CHAR&gt; { &lt;CHAR&gt;)
&lt;CHAR&gt; ::= a-z | A-Z | 0-9 | &lt;SPECIAL_CHAR&gt;
&lt;SPECIAL_CHAR&gt; ::= everything but ":" and "&amp;"
&lt;URI&gt; ::= Uniform Resource Identifier (as defined by the Web Consortium)
</programlisting>
<para>上記のように、<literal>uuid</literal> (DCE-style Universal Unique ID用)、
<literal>xsm</literal> (XSession Manager style Unique ID用)、および
<literal>isbn</literal> (ISBN - International Standard Book Number用)などを含む、ロケータの書式を識別するための予約語がいくつかあります。
このうち、<literal>xsm</literal>は直接、実行例でサポートしてあります。</para>
</sect1>
<sect1 id="PG.info.div.13">
<title id="PG.info.mkr.13">DtInfo APIの概要</title>
<indexterm><primary>dtinfo</primary>
<secondary>API</secondary></indexterm>
<para>つぎはデスクトップ・インフォメーション・マネージャAPIの概要です。</para>
<variablelist>
<varlistentry><term><function>DtInfoLib</function></term>
<listitem>
<para><function>DtInfoLib</function>は、インフォメーション・マネージャを介してアクセスできる、ドキュメントの一連のブックケースを表す、デスクトップ・オブジェクトです。
DtInfoLibのデータ基準とデータ属性は、デスクトップ機能で使用するために、識別されます。
それらはCDE組み込みデータ型の一部です。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtInfoShowTopic</function></term>
<listitem>
<para>これは、ある特定の位置でユーザがインフォメーションの本文にアクセスできるようにするために、アプリケーションによる呼び出しが可能なC言語のAPIと呼ぶものです。
位置としては、ブックケースの先頭から特定のトピックまで、またはブックケース内のセクションまでのどこにあっても識別することが可能です。
また、セクション内のターゲットも可能です。
これには、データの構築において、外部的に一意なリンクIDが与えられています。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtActionInvoke</function></term>
<listitem>
<para>この機能は、<function>dtinfo</function>下の指定されたトピックを、デスクトップ・アプリケーションから使用可能なCDEデスクトップ・アクションAPIを使って、表示します。
<function>dtinfo</function>を起動するか、または、<function>dtinfo</function>と接続します。
アンカー・ポイントは最上位のブックケースと同じくらい広範囲か、または、特定のトピック(セクション)と同じくらい詳細です。
また、セクション内のターゲットも可能です。
これには、データの構築において、外部的に一意なリンクIDが与えられています。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>Browse</function></term>
<listitem>
<para>infolib用<function>Browse</function>は
<function>DtLoadInfoLib</function>アクションをリマップします。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>Open</function></term>
<listitem>
<para><function>Open</function>アクションは、
関連する<function>DtInfoLib</function>オブジェクトのための
<function>DtLoadInfoLib</function>の起動に使用されます。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtShowInfoAtLoc</function></term>
<listitem>
<para><function>DtShowInfoAtLoc</function>アクションは、infolibの特定のポイントに表示するために、ブラウザのToolTalkメッセージを分散させます。
クライアント・アプリケーションは、このアクションを起動して、
<function>dtinfo</function>に、特定のデータ・セクションまたはトピックを表示させます。
ブラウザが実行中でなければ、ブラウザを起動させます。
これは、<literal>-sect</literal>オプション指定の
<command>dtinfo</command>コマンドを、コマンド行から起動するのと対応します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtLoadInfoLib</function></term>
<listitem>
<para><function>DtLoadInfoLib</function>アクションは、特定の、infolibをロードするために、ToolTalkメッセージを分散させます。
クライアント・アプリケーションは、このアクションを起動して、
<function>dtinfo</function>に、特定のインフォメーション・ライブラリをロードさせることができます。
ブラウザが実行中でなければ、ブラウザを起動させます。
これは、<literal>-l</literal>オプション指定の
<command>dtinfo</command>コマンドを、コマンド行から起動するのと対応します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtInfo_LoadInfoLib</function></term>
<listitem>
<para><function>DtInfo_LoadInfoLib</function>ToolTalk操作は、
指定されたinfolibのロードに使用されます。
クライアント・アプリケーションは、この要求を送ることで、
<function>dtinfo</function>に、特定のインフォメーション・ライブラリをロードさせることができます。
ブラウザが実行中でなければ、ブラウザを起動させます。
これは、<literal>-l</literal>オプション指定の
<command>dtinfo</command>コマンドを、コマンド行から起動するのと対応します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtInfo_ShowInfoAtLoc</function></term>
<listitem>
<para>クライアント・アプリケーションは、このプロセス宛てToolTalkメッセージを送ることで、<function>dtinfo</function>に、特定のデータ・セクションまたはトピックを表示させます。
ブラウザが実行中でなければ、ToolTalkはブラウザを起動させます。
これは、<literal>-sect</literal>オプション指定の
<command>dtinfo</command>コマンドを、コマンド行から起動することに対応します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtInfo_Quit</function></term>
<listitem>
<para>これは、<function>dtinfo</function>の状態にだけ関心のあるオブザーバーのための、プロセス宛てToolTalkメッセージです。
ブラウザはそれが正常に終了した時、このメッセージを表示します。
セッション単位のデスクトップの終了時には、このメッセージは表示されません。</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="PG.info.div.14">
<title id="PG.info.mkr.14">DtInfoデータベース・エンジンAPIの概要</title>
<indexterm><primary>dtinfo</primary>
<secondary>データベース・エンジンAPI</secondary></indexterm>
<para>本節では、DtInfoデータベース・エンジンのアプリケーション・プログラミング・インタフェースの要約を述べます。
DtInfoデータベース・エンジンは、DtInfo用オンライン・マニュアル・データへのアクセスを格納したり提供したりします。</para>
<sect2 id="PG.info.div.15">
<title id="PG.info.mkr.15">機能</title>
<variablelist>
<varlistentry><term><function>DtMmdbInit</function></term>
<listitem>
<para>アクセス・サービスを提供するデータベース・エンジンを用意して下さい。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbQuit</function></term>
<listitem>
<para>データベース・エンジンに割り当てられたメモリ・リソースを解放し、サービスの中止をエンジンに要請して下さい。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbOpenInfoLib</function></term>
<listitem>
<para>infolib記述子を獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbInfoLibGetInfo</function></term>
<listitem>
<para>infolibについての、記述情報を取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbInfoLibFreeInfo</function></term>
<listitem>
<para>infolib構造に配置された空き領域を解放します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbCloseInfoLib</function></term>
<listitem>
<para>これ以上infolibが必要ないことを表記します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbGetBookCaseByName</function></term>
<listitem>
<para>名前で識別されたブックケースの記述子を獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbGetBookCaseByIndex</function></term>
<listitem>
<para>索引で識別されたブックケースの記述子を獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbGetBookCaseByLoc</function></term>
<listitem>
<para>位置で識別されたブックケースの記述子を獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbGetBookCaseByLocs</function></term>
<listitem>
<para>ブックケース記述子のリストを獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbBookCaseGetInfo</function></term>
<listitem>
<para>ブックケースについての情報を取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbBookCaseFreeInfo</function></term>
<listitem>
<para>ブックケース情報構造に配置された空き領域を解放します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbSectionGetLoc</function></term>
<listitem>
<para>セクションのロケータを取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbSectionGetLongTitle</function></term>
<listitem>
<para>セクションの識別子が与えられたとき、セクションの長いタイトルを返します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbSectionGetShortTitle</function></term>
<listitem>
<para>セクションの短いタイトルを取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbSectionGetData</function></term>
<listitem>
<para>セクションのデータを取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbSectionGetDataSize</function></term>
<listitem>
<para>セクションのデータのバイト数を取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbSectionGetTocLoc</function></term>
<listitem>
<para>セクションの識別子が与えられたとき、そのTOCセクションのロケータを取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbSectionGetBookId</function></term>
<listitem>
<para>セクションの識別子が与えられたとき、このセクションが現われるブックの
DtInfoデータベース・オブジェクト識別子を取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbSectionGetStyleSheetId</function></term>
<listitem>
<para>セクションの識別子が与えられたとき、このセクションに適用可能なスタイルシートのDtInfoデータベース・オブジェクト識別子を取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbTocGetParentId</function></term>
<listitem>
<para>このセクションの親であるセクションの、DtInfoデータベース・オブジェクト識別子を取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbTocGetChildIds</function></term>
<listitem>
<para>子セクションのDtInfoデータベース・オブジェクト識別子のリストを取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbTocGetNumOfChildren</function></term>
<listitem>
<para>子セクションの数を取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbLocatorGetSectionLoc</function></term>
<listitem>
<para>セクション内の構成要素のロケータが与えられた時、セクションのロケータを取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbLocatorGetSectionObjectId</function></term>
<listitem>
<para>セクション内の構成要素のロケータが与えられた時、セクションのDtInfoデータベース・オブジェクト識別子を取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbGraphicGetData</function></term>
<listitem>
<para>グラフィック・オブジェクトのデータを取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbGraphicGetInfo</function></term>
<listitem>
<para>グラフィック・オブジェクトの情報を取得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbStylesheetGetName</function></term>
<listitem>
<para>スタイルシート・オブジェクトの名前を獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbStylesheetGetData</function></term>
<listitem>
<para>スタイルシート・オブジェクトのデータを獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbBookGetTocObjectId</function></term>
<listitem>
<para>TOCセクションのロケータを獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbBookGetShortTitle</function></term>
<listitem>
<para>ブックの短いタイトルを獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbBookGetLongTitle</function></term>
<listitem>
<para>ブックの長いタイトルを獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbBookGetSeqNum</function></term>
<listitem>
<para>ブックの一連番号を獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbBookGetLicense</function></term>
<listitem>
<para>ブックのライセンス項目を獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbBookGetTabList</function></term>
<listitem>
<para>ブックのタブ設定されたセクションのリストを獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbDlpGetPrevSectionId</function></term>
<listitem>
<para>このセクションの識別子が与えられた時、前のセクションのDtInfoデータベース・オブジェクト識別子を獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbDlpGetNextSectionId</function></term>
<listitem>
<para>次のセクションのDtInfoデータベース・オブジェクト識別子を獲得します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbFreeHandle</function></term>
<listitem>
<para>DtMmdbHandleで使用されたメモリ・リソースを解放します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbFreeHandleList</function></term>
<listitem>
<para>DtMmdbHandleによって使用されたメモリ・リソースを、そのハンドラに使用されたメモリ・リソースとともに解放します。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtMmdbFreeGraphicInfo</function></term>
<listitem>
<para>DtMmdbGraphicInfo構造で使用されたメモリを解放します。</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="PG.info.div.16">
<title id="PG.info.mkr.16">データ構造</title>
<indexterm><primary>dtinfo</primary>
<secondary>データベース・エンジンのデータ構造</secondary></indexterm>
<variablelist>
<varlistentry><term><structname role="typedef">DtMmdbInfoLib</structname></term>
<listitem>
<para>インフォメーション・ライブラリ(infolib)に関する情報を含んでいます。</para>
</listitem>
</varlistentry>
<varlistentry><term><structname role="typedef">DtMmdbBookCase</structname></term>
<listitem>
<para>ブックケースに関する情報を含んでいます。</para>
</listitem>
</varlistentry>
<varlistentry><term><structname role="typedef">DtMmdbHandle</structname></term>
<listitem>
<para>DtInfoオブジェクトの識別子に関する情報を含んでいます。</para>
</listitem>
</varlistentry>
<varlistentry><term><structname role="typedef">DtMmdbInfoRequest</structname></term>
<listitem>
<para>DtInfoデータベース・エンジンから情報を取得する要求を記述します。</para>
</listitem>
</varlistentry>
<varlistentry><term><structname role="typedef">DtMmdbGraphicInfo</structname></term>
<listitem>
<para>グラフィック・オブジェクトの各種機能を記述します。</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
</chapter>
<!-- $XConsortium: ch11.sgm /main/5 1996/09/08 19:37:42 rws $ -->
<!-- (c) Copyright 1996 Digital Equipment Corporation. -->
<!-- (c) Copyright 1996 Hewlett-Packard Company. -->
<!-- (c) Copyright 1996 International Business Machines Corp. -->
<!-- (c) Copyright 1996 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1996 Novell, Inc. -->
<!-- (c) Copyright 1996 FUJITSU LIMITED. -->
<!-- (c) Copyright 1996 Hitachi. -->

View File

@@ -0,0 +1,306 @@
<!-- $XConsortium: ch12.sgm /main/6 1996/09/08 19:37:51 rws $ -->
<!-- (c) Copyright 1996 Digital Equipment Corporation. -->
<!-- (c) Copyright 1996 Hewlett-Packard Company. -->
<!-- (c) Copyright 1996 International Business Machines Corp. -->
<!-- (c) Copyright 1996 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1996 Novell, Inc. -->
<!-- (c) Copyright 1996 FUJITSU LIMITED. -->
<!-- (c) Copyright 1996 Hitachi. -->
<chapter id="PG.print.div.1">
<title id="PG.print.mkr.1">CDE印刷のウィジェットとAPI</title>
<para><indexterm><primary>印刷</primary>
<secondary>一般情報</secondary></indexterm>
CDEユーザは、一般的に、一連のダイアログを介してファイルをプリントします。
最初のファイルはたとえばファイルをプリントするプルダウン・メニューを選択することで初期化されます。
この章では、主にXプリントを行なうアプリケーションに使用されるCDEnextが提供するダイアログ・セットを示します。
</para>
<itemizedlist>
<listitem>
<para>初期プリント・ダイアログは、<function>DtPrintSetupBox</function>ウィジェットとして提供されます。
このウィジェットは、一般的なプリント・オプションのセット、アプリケーションに固有なプリント・オプションのセット、および、プリント操作を開始したり、取り消したりする下部のコマンド・ボタンのセットからなっています。
またそれは、プリント・ダイアログ・マネージャ(PDM)やヘルプ・ダイアログを伴います。
</para>
</listitem>
<listitem>
<para><function>DtPrinterSelectionDialog</function>でXプリンタを選択します。
また、<function>DtPrintSetupBox</function>ウィジェットを介してアクセス可能です。</para>
</listitem>
<listitem>
<para>追加のプリンタ情報獲得ダイアログである
<function>DtPrinterInfoDialog</function>は、
<function>DtPrintSetupBox</function>または
<function>DtPrinterSelectionDialog</function>を介してアクセス可能です。
</para>
</listitem>
</itemizedlist>
<para>ユーザが、プリントするファイルを選択できる、ファイル選択ダイアログ
(<function>DtPrintSetupBox</function>を介してアクセス可能)もあります。
これらすべてのサブ・ダイアログは<function>DtPrintSetupBox</function>ウィジェットの一部と考えられるので、それらに外部APIはありません。
</para>
<para>しかし、<function>DtPrintSetupBox</function>は主にXプリントのために設計されています。
またプリントするどのCDEnextアプリケーションでも使用できる、一般的なアプリケーション・プリント・ダイアログとして使用できるようにも、設計されています。
<function>DtPrintSetupBox</function>はまた、追加プリンタやスプーラ固有のXプリント設定ダイアログを提供するプリント・ダイアログ・マネージャとの単純統合もできるように設計されています。
</para>
<para>本章の残りの節では、DtPrint簡易関数、DtPrintダイアログ・マネージャ、および印刷ウィジェットとヘルプの統合方法について示します。
</para>
<sect1 id="PG.print.div.2">
<title id="PG.print.mkr.2">DtPrint関数</title>
<indexterm><primary>印刷</primary>
<secondary>dtprint関数</secondary></indexterm>
<indexterm><primary>dtprint関数</primary></indexterm>
<para>この節では、DtPrint関数の概要を述べます。
<Filename>/proj/cde/examples/dtprint</Filename>ディレクトリに
使用法を示したコード例があります。
<variablelist>
<varlistentry><term><function>DtPrintSetupBox</function></term>
<listitem>
<para><function>DtPrintSetupBox</function>はウィジェットで、アプリケーションからの印刷に先立って、各種オプション設定用に使用される典型的な初期ウインドウです。
このウィジェットは、Xプリント・サービスを利用するアプリケーションが使用できるように主として設計されています。
しかし、ウィジェット・インタフェースはまた、ほかの印刷方法を使っているアプリケーションでも使用できるよう柔軟に設計されてもいます。
</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtCreatePrintSetupBox</function></term>
<listitem>
<para><function>DtCreatePrintSetupBox</function>は、
<function>DtPrintSetupBox</function>ウィジェットの管理されていないインスタンスを作成し、そのウィジェットIDを返す簡易関数です。
</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtCreatePrintSetupDialog</function></term>
<listitem>
<para><function>DtCreatePrintSetupDialog</function>は、
<function>DtPrintSetupBox</function>ウィジェットを持つダイアログのインスタンスを作成し、<function>DtPrintSetupBox</function>ウィジェットのIDを返す簡易関数です。</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtPrintFillSetupData</function></term>
<listitem>
<para><function>DtPrintFillSetupData</function>は、
<function>DtPrintSetupBox</function>との直接的会話型以外の状況で(たとえば、ツールバー上の[簡易印刷]ボタンなど)、Xプリント・ジョブを初期化するためのXプリンタとの接続を獲得するために使用されます。
このプリンタ接続情報は、既存の<function>DtPrintSetupBox</function>ウィジェットのインスタンスから獲得できます。
また、もし<function>DtPrintSetupBox</function>ウィジェットのインスタンスが無効な場合、<function>DtPrintFillSetupData</function>では、新しいXプリンタとの接続を提供できます。
</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtPrintCopySetupData</function></term>
<listitem>
<para><function>DtPrintCopySetupData</function>は、
<function>DtPrintSetupData</function>構造をコピーするために使用されます。
ターゲットの要素は、ソースの対応する要素と異なっている場合だけ更新されます。
割り当てられたメモリをポイントする要素について、
<function>DtPrintCopySetupData</function>は、ターゲットの更新された要素に対して、新しいメモリを割り当てます。
ターゲットの既存の要素は解放されます。
<function>DtPrintSetupData</function>構造中のすべての要素は、
<function>DtPrintFreeSetupData</function>を呼び出すことで解放できます。
</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtPrintFreeSetupData</function></term>
<listitem>
<para><function>DtPrintSetupData</function>構造の要素がポイントするメモリを解放します。
</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtPrintResetConnection</function></term>
<listitem>
<para><function>DtPrintResetConnection</function>は、
<function>DtPrintSetupBox</function>ウィジェットが提供する簡易関数です。
そのウィジェットは、アプリケーションがウィジェットに命じて、Xプリント・サーバ接続の管理を中止させることができます。
モード・パラメタは、ウィジェットに命じてプリント接続をクローズしたり、それをクローズしないで単に接続の制御を放棄するために含まれます。
</para>
<para><function>DtPrintResetConnection</function>は、プリント処理を実行する子プロセスをフォークするアプリケーションで使用されることを意図しています。
フォークを実行した直後、親プロセスはそのXプリント・サーバ接続をクローズし、ビデオXサーバとの接続を保存します。
一方、フォークされた子はそのビデオXサーバとの接続をクローズし、Xプリント・サーバ接続でのプリント処理を実行します。
</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtPrintSetupProc</function></term>
<listitem>
<para><function>DtPrintSetupProc</function>は、
<function>DtPrintSetupBox</function>ウィジェットの手続きリソース用型定義です。
</para>
</listitem>
</varlistentry>
<varlistentry><term><function>DtPrinterSelectionDialog</function></term>
<listitem>
<para><function>DtPrinterSelectionDialog</function>によって、クライアント・サーバ用の(サーバがXp拡張子をサポートしている場合に提供される)プリンタの完成したリストから、ユーザはXプリンタを選択することができます。
加えて、<systemitem class="resource">XpServerList</systemitem>リソース、または、<systemitem class="environvar">XPSERVERLIST</systemitem>環境変数で示される各サーバも、同様に選択することができます。
ユーザは、一般的に、一つのプリンタを選択し、[OK]ボタンを押して、選択されたプリンタを呼び出し側に返します。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect1>
<sect1 id="PG.print.div.3">
<title id="PG.print.mkr.3">プリント・ダイアログ・マネージャ</title>
<indexterm><primary>印刷</primary>
<secondary>プリント・ダイアログ・マネージャ</secondary></indexterm>
<indexterm><primary>プリント・ダイアログ・マネージャ</primary></indexterm>
<para>プリント・ダイアログ・マネージャ(PDM)は、Xプリント・サーバとXプリント・アプリケーションとを切り離します。
それらは、プリンタ固有またはスプーラ固有のGUIを設定します。
アプリケーションではそれらGUI自身を理解したり、表示したりできます。
しかし、新しいPDMを提供することで新しいプリンタやスプーラをサポートできるように、PDMへのタスクの負荷を軽くすることをおすすめします。
でなければ、すべてのアプリケーションを変更する必要があります。
</para>
<para>この節では、PDM選択プロトコルを使用する、PDMのCDEnext実装を説明します。
CDEnext実装は、初期的にプロトコルと結びつけられている、プリント・ダイアログ・マネージャ・デーモン(PDMD)が、実行可能である(<command>dtpdmd</command>)ことが必要です。
次に、アプリケーションに代わってどのPDMが必要か、また起動させるかを決定します。
CDEnext内では、実行可能な<command>dtpdm</command>は汎用PDMであり、<command>dtpdmd</command>が起動できます。
</para>
<para>プリンタ・ベンダは、以下の手法の一つを選んで、新しいGUIを取り入れます。
</para>
<itemizedlist>
<listitem>
<para>PDM選択プロトコルに適合する、ベンダ自身のPDM実装を開発します。
</para>
</listitem>
<listitem>
<para><command>dtpdmd</command>で起動できるPDMを開発します。
これは、おすすめの手法です。
</para>
</listitem>
<listitem>
<para>あるいは、新しく共用または動的なライブラリを、<command>dtpdmd</command>に統合します。
これは、ベンダに依存する手法です。
</para>
</listitem>
</itemizedlist>
<para>実行可能な<command>dtpdm</command>は、いくつもの異なったプリンタにそれぞれ適合するダイアログを用意できるような、適当な汎用プリント・ダイアログ・マネージャを実装しています。
しかし、HP DeskJet 1600Cに基づくPCL、と、Sun SPARCprinter 2に基づくPostscript、の二つの参照プリンタの要求には、特に調整されます。
<command>dtpdm</command>は、プリンタ設定ダイアログ上に表示するオプションを、限られた量だけ自動的に構成するために、特定のプリンタの属性を使用します。
<command>dtpdm</command>のジョブ設定ダイアログは、lpスプーラで使用するよう設計されています。
</para>
<para>実行可能な<command>dtpdmd</command>は、PDM起動メカニズムを実装しています。
PDM選択プロトコルは、PDMの選択と起動という、二つの階層を持つメカニズムです。
また、セキュリティ関係は、<command>dtpdmd</command>で処理されます。
その結果、<command>dtpdmd</command>から呼び出されるPDMは、GUIを表示する最小で単一なタスクになります。
</para>
<sect2 id="PG.print.div.4">
<title id="PG.print.mkr.4">Dtプリント・ダイアログ・マネージャ・デーモンdtpdmd</title>
<indexterm><primary>印刷</primary>
<secondary>dtprintダイアログ・マネージャ・デーモン</secondary></indexterm>
<indexterm><primary>dtpdmd</primary></indexterm>
<para><command>dtpdmd</command>は、永続的なデーモン・プロセスで、PDMからのクライアントの要求を受け取り、ある検索ルールを使用し、それから、要求に応えるために適切なPDMを起動します。
PDMが終了すると、制御は<command>dtpdmd</command>に戻ります。
代わって、<command>dtpdmd</command>は、クライアントに最終的なステータスを示します。
</para>
<para><command>dtpdmd</command>は、PDMと通信するためにPDMD/PDMプロトコルを使用します。
PDMに通信するには、標準化されたコマンド行を経由して行ないます。
PDMから通信を受けるには、標準化された終了コードを経由して行ないます。
</para>
</sect2>
<sect2 id="PG.print.div.5">
<title id="PG.print.mkr.5">Dtプリント・ダイアログ・マネージャ</title>
<indexterm><primary>印刷</primary>
<secondary>dtprintダイアログ・マネージャ</secondary></indexterm>
<indexterm><primary>dtpdm</primary></indexterm>
<para>このダイアログ・マネージャは、プリント・サーバとは別のプロセスであり、
印刷アプリケーションに代わって、プリンタ固有のGUIを提供します。
アプリケーションの要求で、<command>dtpdm</command>は、プリンタ固有またはジョブ固有のオプションをユーザが設定できるよう、ユーザのディスプレイに、プリンタ固有のダイアログ・セットを表示します。
設定ダイアログはアプリケーションの一部として現われるため、
実際には<command>dtpdm</command>プログラムがアプリケーションに代わってこのダイアログを管理します。
適用可能なメッセージ・カタログを持つすべてのロケール中に、ダイアログを提供することは可能です。
</para>
<para><command>dtpdm</command>は、<function>XmNotebook</function>ウィジェットを持つダイアログを表示します。
このノートブック・ウィジェットには、二つのタブがあります。
一つはプリンタ設定ボックス用、もう一つはジョブ設定ボックス用です。
多様な印刷オプションが構成できるよう、それぞれのボックスは制御します。
<command>dtpdm</command>ダイアログにはまた、三つのボタンがあります。
ボタンのラベルは、[了解]、[取消し]、および、[ヘルプ]です。
[了解]ボタンが起動されると、ダイアログは取り消され、新たに構成された印刷オプションを現在のプリント・コンテキストに(<function>XpSetAttributes</function>を経由して)設定します。
[取消し]ボタンが起動されると、ダイアログは取り消され、プリント・コンテキストには何の変化もありません。
</para>
</sect2>
</sect1>
<sect1 id="PG.print.div.6">
<title>CDE印刷ウィジェット用ヘルプ</title>
<indexterm><primary>印刷</primary>
<secondary>ヘルプの統合</secondary></indexterm>
<para><function>DtPrintSetupBox</function>ウィジェットは、そのサブダイアログに対して、組み込みのサポートを提供します。
つまり、これらのサブダイアログの一つで、ユーザが[ヘルプ]ボタンをクリックすると、関連するヘルプ・テキストを持つヘルプ・ダイアログを表示します。
この目的のために使用されるヘルプ・ボリュームと位置IDは、次のとおりです。
</para>
<itemizedlist>
<listitem>
<para>プリンタ情報HelpVolume = <literal>LibDtPrint</literal>, LocationId = <literal>PrinterInfo</literal>
</para>
</listitem>
<listitem>
<para>プリンタ選択HelpVolume = <literal>LibDtPrint</literal>, LocationId = <literal>SelectPrinter</literal>
</para>
</listitem>
<listitem>
<para>ファイル選択HelpVolume = <literal>LibDtPrint</literal>, LocationId = <literal>SelectFile</literal>
</para>
</listitem>
</itemizedlist>
<para>しかし、メイン・ダイアログに対しては、ユーザが[ヘルプ]ボタンを押しても、ヘルプ・ダイアログは自動的には表示されません。
しかしながら、<function>DtPrintSetupBox</function>が提供するフックによって、アプリケーション・ライタは簡単に、一般的で、アプリケーションに固有なヘルプを供給できます。
これらのフックには次のものがあります。
</para>
<itemizedlist>
<listitem>
<para>一般的な印刷オプション用で、一つまたは複数の位置IDを持つ、
共有の<function>DtPrintSetupBox</function>ヘルプ・ボリューム。
</para>
</listitem>
<listitem>
<para>アプリケーションによって<function>DtPrintSetupBox</function>上にインストールされた、いくつかの<function>XmNhelpCallback</function>がコールされることを可能にする、<function>DtPrintSetupBox</function>[ヘルプ]ボタン上にインストールされた起動コールバック。
</para>
</listitem>
</itemizedlist>
<para><function>DtPrintSetupBox</function>用のヘルプをアプリケーションに統合するには、以下のようにして下さい。
</para>
<itemizedlist>
<listitem>
<para>トピックに関係したヘルプを含むヘルプ・ボリュームを指定してください。
ここで、アプリケーション固有の印刷オプションがないことを確認すれば、
<function>DtPrintSetupBox</function>で指定された共有のヘルプ・ボリュームだけで充分です。
さもなければ、アプリケーションのヘルプ・ボリュームの作成者は、
<function>DtPrintSetupBox</function>ボリュームとの内部的なリンクを指定する必要があります。
たとえば、カレンダ・マネージャのヘルプ・ボリュームが次のようだとします。
</para>
<programlisting>
Calendar Print Setup Dialog Box
-------------------------------
<symbol role="variable">some graphic</symbol>
Report Type Choose to print Day View, Week View, Month View, or
Year View, plus Appointment List or To Do List.
From/To The dates for which you want to print
calendar data. With the From and To SpinBox,
you can select ...
See Also:
* Generic Print options <symbol role="variable">link1</symbol>
* To Print Your Appointment List <symbol role="variable">link2</symbol>
* To Print Your To Do List <symbol role="variable">link3</symbol>
</programlisting>
<para>ここで<symbol role="variable">link1</symbol>は、
共有の<function>DtPrintSetupBox</function>ヘルプ・ボリュームとのリンクです。
</para>
</listitem>
<listitem>
<para>印刷に関係するアプリケーションのヘルプ・ボリューム中での位置をマークする、位置IDのセットを定義してください。
どこまで詳細にIDを作るか(たとえば、プリント設定ダイアログ用に一つ、プリント設定ダイアログ中の各プリント・オプション用に一つ、またはその他の編成用)を決定するのはユーザの責任です。
位置IDが詳細になればなるほど、ヘルプはより特定されることになります。
この場合の、ヘルプは、ヘルプを必要とする項目のユーザによる選択を可能にするヘルプ・システムをサポートする場合に表示されるものです。
</para>
</listitem>
<listitem>
<para><function>DtPrintSetupBox</function>の
<systemitem class="resource">XmNhelpCallback</systemitem>リソースが追加されるコールバックを定義してください。
このコールバックは、<systemitem class="resource">DtNhelpVolume</systemitem>および<systemitem class="resource">DtNlocationId</systemitem>リソースを適切に設定する、<function>DtHelpDialogWidget</function>または
<function>DtHelpQuickDialogWidget</function>を表示できます。
</para>
</listitem>
</itemizedlist>
</sect1>
</chapter>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,28 @@
cp ~/stage1/valmovts.cdr ./valmovts.cdr
cp ~/stage1/valmovss.cdr ./valmovss.cdr
cp ~/stage1/valmovms.cdr ./valmovms.cdr
cp ~/stage1/valcopts.cdr ./valcopts.cdr
cp ~/stage1/valcopss.cdr ./valcopss.cdr
cp ~/stage1/valcopms.cdr ./valcopms.cdr
cp ~/stage1/vallnkts.cdr ./vallnkts.cdr
cp ~/stage1/vallnkss.cdr ./vallnkss.cdr
cp ~/stage1/vallnkms.cdr ./vallnkms.cdr
cp ~/stage1/invmovts.cdr ./invmovts.cdr
cp ~/stage1/invmovss.cdr ./invmovss.cdr
cp ~/stage1/invmovms.cdr ./invmovms.cdr
cp ~/stage1/invcopts.cdr ./invcopts.cdr
cp ~/stage1/invcopss.cdr ./invcopss.cdr
cp ~/stage1/invcopms.cdr ./invcopms.cdr
cp ~/stage1/invlnkts.cdr ./invlnkts.cdr
cp ~/stage1/invlnkss.cdr ./invlnkss.cdr
cp ~/stage1/invlnkms.cdr ./invlnkms.cdr
cp ~/stage1/basdrdr.cdr ./basdrdr.cdr
cp ~/stage1/optdrdr.cdr ./optdrdr.cdr
cp ~/stage1/spnbxwid.cdr ./spnbxwid.cdr
cp ~/stage1/txtflwid.cdr ./txtflwid.cdr
cp ~/stage1/mnbutwid.cdr ./mnbutwid.cdr
cp ~/stage1/lstbxwid.cdr ./lstbxwid.cdr
cp ~/stage1/poscal.cdr ./poscal.cdr
cp ~/stage1/compcal.cdr ./compcal.cdr
cp ~/stage1/noprint.cdr ./noprint.cdr

View File

@@ -0,0 +1,24 @@
<!-- $XConsortium: part1.sgm /main/2 1996/08/17 18:30:34 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Title Id="PG.prtI.mkr.1">基本的な統合方法</Title>
<PartIntro>
<Para>第1章では、基本的な統合方法および印刷機能について説明します。</Para>
<InformalTable Id="PG.prtI.itbl.1" Frame="All">
<TGroup Cols="1">
<ColSpec Colname="1" Colwidth="4.0 in">
<TBody>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Basic Application Integration3'-->
<XRef Role="JumpText" Linkend="PG.basc1.mkr.1"></Para></Entry>
</Row>
</TBody>
</TGroup>
</InformalTable>
</PartIntro>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->

View File

@@ -0,0 +1,55 @@
<!-- $XConsortium: part2.sgm /main/4 1996/08/20 14:12:24 cdedoc $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Title Id="PG.prt2.mkr.1">推奨する統合方法</Title>
<PartIntro>
<Para>第2章から第5章では、次の推奨する統合作業を実行する方法を説明します。
:</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>標準フォントの別名を使用して、アプリケーションがデスクトップ準拠システム上で最も近いフォントを使用するようにする。
</Para>
</ListItem>
<ListItem>
<Para>アプリケーションからエラー・メッセージを表示する。</Para>
</ListItem>
<ListItem>
<Para>セッション・マネージャと統合して、ログアウト時のアプリケーションの状態を保存する。
</Para>
</ListItem>
<ListItem>
<Para><Emphasis>既存の機能</Emphasis>の直接操作アクセラレー
タとして、アプリケーションの中でドラッグ&ドロップを実現する。
</Para>
<InformalTable Id="PG.prt2.itbl.1" Frame="All">
<TGroup Cols="1">
<ColSpec Colname="1" Colwidth="4.0 in">
<TBody>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Integrating Fonts17'-->
<XRef Role="JumpText" Linkend="PG.fonts.mkr.1"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Displaying Errors from Your Application25'-->
<XRef Role="JumpText" Linkend="PG.msgs.mkr.1"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Integrating with Session Manager29'-->
<XRef Role="JumpText" Linkend="PG.smgr.mkr.1"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Integrating with Drag and Drop33'-->
<XRef Role="JumpText" Linkend="PG.dndPG.mkr.1"></Para></Entry>
</Row>
</TBody>
</TGroup>
</InformalTable>
</ListItem>
</ItemizedList>
</PartIntro>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->

View File

@@ -0,0 +1,65 @@
<!-- $XConsortium: part3.sgm /main/4 1996/08/20 14:12:33 cdedoc $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Title Id="PG.prt3.mkr.1">オプションの統合方法</Title>
<PartIntro>
<Para>第6章から第10章では、次のオプションの統合方法の作業を実行する方法について説明します。
:</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>ワークスペース・マネージャと統合し、アプリケーションがセッションの開始時に各セッションのワークスペースの位置を判断できるようにする。
</Para>
</ListItem>
<ListItem>
<Para>CDEカスタム・ウィジェットを使用する。</Para>
</ListItem>
<ListItem>
<Para>アプリケーションの内部からアクションを呼び出す。</Para>
</ListItem>
<ListItem>
<Para>データ型データベースにアクセスする。</Para>
</ListItem>
<ListItem>
<Para>カレンダのAPIにアクセスする。</Para>
</ListItem>
<ListItem>
<Para>インフォメーション・マネージャ APIにアクセスする。</Para>
</ListItem>
<ListItem>
<Para>プリンティング・ウィジェットと APIにアクセスする。</Para>
<InformalTable Id="PG.prt3.itbl.1" Frame="All">
<TGroup Cols="1">
<ColSpec Colname="1" Colwidth="4.0 in">
<TBody>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Integrating with the Workspace Manager63'-->
<XRef Role="JumpText" Linkend="PG.wsmgr.mkr.1"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Common Desktop Environment Motif Widgets69'-->
<XRef Role="JumpText" Linkend="PG.widgs.mkr.1"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Invoking Actions from Applications109'-->
<XRef Role="JumpText" Linkend="PG.aIII.mkr.1"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Accessing the Data-Typing Database123'-->
<XRef Role="JumpText" Linkend="PG.datat.mkr.1"></Para></Entry>
</Row>
<Row Rowsep="1">
<Entry><Para><!--Original XRef content: 'Integrating with Calendar139'-->
<XRef Role="JumpText" Linkend="PG.calmg.mkr.1"></Para></Entry>
</Row>
</TBody>
</TGroup>
</InformalTable>
</ListItem>
</ItemizedList>
</PartIntro>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->

View File

@@ -0,0 +1,337 @@
<!-- Fragment document type declaration subset:
ArborText, Inc., 1988-1995, v.4001
<!DOCTYPE DOCBOOK [
<!ENTITY PG.BIntg.fig.1 SYSTEM "./progGuide/graphics/NoPrint.eps" NDATA eps>
<!ENTITY PG.BIntg.fig.2 SYSTEM "./progGuide/graphics/package.eps" NDATA eps>
<!ENTITY PG.BIntg.fig.3 SYSTEM "./progGuide/graphics/approot.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.1 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.1.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.2 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.2.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.3 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.3.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.4 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.4.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.5 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.5.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.6 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.6.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.7 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.7.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.8 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.8.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.9 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.9.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.10 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.10.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.11 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.11.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.12 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.12.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.13 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.13.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.14 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.14.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.15 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.15.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.16 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.16.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.17 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.17.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.18 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.18.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.19 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.19.eps" NDATA eps>
<!ENTITY PG.dndPG.fig.20 SYSTEM "./progGuide/graphics/PG.dndPG.iFrame.20.eps" NDATA eps>
<!ENTITY PG.widgs.fig.1 SYSTEM "./progGuide/graphics/PG.widgs.iFrame.1.eps" NDATA eps>
<!ENTITY PG.widgs.fig.2 SYSTEM "./progGuide/graphics/ComboBox.rs" NDATA eps>
<!ENTITY PG.widgs.fig.3 SYSTEM "./progGuide/graphics/MenuButton2.rs" NDATA eps>
<!ENTITY PG.calmg.fig.1 SYSTEM "./progGuide/graphics/PG.calmg.iFrame.1.eps" NDATA eps>
<!ENTITY PG.calmg.fig.2 SYSTEM "./progGuide/graphics/PG.calmg.iFrame.2.eps" NDATA eps>
<!ENTITY PG.basc1.fig.1 SYSTEM "./progGuide/graphics/NoPrint.eps" NDATA eps>
<!ENTITY PG.basic.fig.1 SYSTEM "./progGuide/graphics/NoPrint.eps" NDATA eps>
<!ENTITY PG.basic.fig.2 SYSTEM "./progGuide/graphics/package.eps" NDATA eps>
<!ENTITY PG.basic.fig.3 SYSTEM "./progGuide/graphics/approot.eps" NDATA eps>
<!ENTITY Copyr SYSTEM "./progGuide/copyright.sgm">
<!ENTITY prtI SYSTEM "./progGuide/part1.sgm">
<!ENTITY basc1 SYSTEM "./progGuide/ch01.sgm">
<!ENTITY prt2 SYSTEM "./progGuide/part2.sgm">
<!ENTITY fonts SYSTEM "./progGuide/ch02.sgm">
<!ENTITY msgs SYSTEM "./progGuide/ch03.sgm">
<!ENTITY smgr SYSTEM "./progGuide/ch04.sgm">
<!ENTITY dndPG SYSTEM "./progGuide/ch05.sgm">
<!ENTITY prt3 SYSTEM "./progGuide/part3.sgm">
<!ENTITY wsmgr SYSTEM "./progGuide/ch06.sgm">
<!ENTITY widgs SYSTEM "./progGuide/ch07.sgm">
<!ENTITY aIII SYSTEM "./progGuide/ch08.sgm">
<!ENTITY datat SYSTEM "./progGuide/ch09.sgm">
<!ENTITY calmg SYSTEM "./progGuide/ch10.sgm">
<!ENTITY gloss SYSTEM "./progGuide/glossary.sgm">
]>
-->
<!-- $XConsortium: preface.sgm /main/1 1996/12/17 06:21:18 cde-hit $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<preface id="PG.Pref.div.1">
<title>はじめに</title>
<sect1 id="PG.Pref.div.2">
<title>対象読者</title>
<para>このマニュアルは、既存のアプリケーションの共通デスクトップ環境(CDE)への統合、またはCDEの機能を使用する新しいアプリケーションの開発に関心があるプログラマを対象としています。
このマニュアルは、 CDE 開発環境を説明するものであり、
Motif&reg;、 X、 UNIX&reg;、またはCプログラミングの知識があることを前提としています。</para>
</sect1>
<sect1 id="PG.Pref.div.3">
<title>このマニュアルを読む前に</title>
<para><emphasis>共通デスクトップ環境 プログラマーズ・ガイド</emphasis>
は、プログラミング情報を集めたものです。CDEへのアプリケーションの統合を開始する前に、
<!--Original XRef content: '&xd2;Related Books'--><xref role="SectionTitle"
linkend="PG.Pref.mkr.1">の節にリストされているマニュアルをお読みください。</para>
<para><emphasis>共通デスクトップ環境 プログラマ概要</emphasis>
は、CDEの説明と、プログラミング環境を紹介しています。
</para>
</sect1>
<sect1 id="PG.Pref.div.4">
<title>このマニュアルの構成</title>
<para><emphasis>共通デスクトップ環境 プログラマーズ・ガイド</emphasis>
は、2部構成になっています。各部に、共通デスクトップ環境の各要素の詳しい説明、概念図、各要素の具体的な使い方の説明、コーディング例があります。
</para>
<para><emphasis role="Lead-in">第1部 &ndash;</emphasis> <!--Original XRef
content: '&xd2;Basic Integration'--><xref role="SectionTitleLead-in" linkend="PG.prtI.mkr.1">は、アプリケーション・レベルと印刷レベルの登録方法を説明します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;1, &xd2;Basic Application
Integration'--><xref role="ChapNumAndTitleLead-in" linkend="PG.basc1.mkr.1">
は、既存のアプリケーションの CDEへの基本的な統合に必要な手順を説明します。
</para>
<para><emphasis role="Lead-in">第2部 &ndash;</emphasis> <!--Original XRef
content: '&xd2;Recommended Integration'--><xref role="SectionTitleLead-in"
linkend="PG.prt2.mkr.1">は、既存のアプリケーションを共通デスクトップ環境に統合する方法を説明します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;2, &xd2;Integrating Fonts'--><xref
role="ChapNumAndTitleLead-in" linkend="PG.fonts.mkr.1">は、一般的な標準フォントの記述を使用して、CDE準拠システム上でアプリケーションに最も近いフォントを使用する方法を説明します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;3, &xd2;Displaying Errors
from Your Application'--><xref role="ChapNumAndTitleLead-in" linkend="PG.msgs.mkr.1">は、情報とエラー・メッセージを表示するための一般的なモデルを説明します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;4, &xd2;Integrating with Session
Manager'--><xref role="ChapNumAndTitleLead-in" linkend="PG.smgr.mkr.1">は、
ICCMセッション管理プロトコルを説明し、セッション・マネージャとのアプリケーションの統合の例を示します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;5, &xd2;Integrating with Drag
and Drop'--><xref role="ChapNumAndTitleLead-in" linkend="PG.dndPG.mkr.1">
ドラッグ&ドロップのユーザ・モデル、新しいドラッグ&ドロップのアプリケーション・プログラム・インタフェース(API)、およびドラッグ&ドロップの使い方を説明します。
</para>
<para><emphasis role="Lead-in">第3部 &ndash;</emphasis> <!--Original XRef
content: '&xd2;Optional Integration'--><xref role="SectionTitleLead-in" linkend="PG.prt3.mkr.1">は、新しいセッション・マネージャおよびドラッグ&ドロップと統合する方法を説明します。また、ロケールがログイン・マネージャ、ウィンドウ・マネージャ、および端末エミュレータに与える影響についても説明します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;6, &xd2;Integrating with the
Workspace Manager'--><xref role="ChapNumAndTitleLead-in" linkend="PG.wsmgr.mkr.1">は、アプリケーションを特殊な方法でワークスペース・マネージャと統合する方法を説明します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;7, &xd2;Common Desktop E nvironment
Motif Widgets'--><xref role="ChapNumAndTitleLead-in" linkend="PG.widgs.mkr.1">は、CDEの一部として提供されるカスタム・ウィジェットの使い方を説明します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;8, &xd2;Invoking Actions from
Applications'--><xref role="ChapNumAndTitleLead-in" linkend="PG.aIII.mkr.1">は、
アプリケーションの中でアクションを作成する方法を説明します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;9, &xd2;Accessing the Data-Typing
Database'--><xref role="ChapNumAndTitleLead-in" linkend="PG.datat.mkr.1">は、
データ型関数とデータ型データベースの使い方を説明します。
</para>
<para><!--Original XRef content: 'Chapter&numsp;10, &xd2;Integrating with
Calendar'--><xref role="ChapNumAndTitleLead-in" linkend="PG.calmg.mkr.1">は、
カレンダ APIについて、関数、データ構造、カレンダ属性、およびエントリ属性などを説明します。カレンダ APIの使い方も説明します。
</para>
<para>11章は、アプリケーションを <command>dtinfo</command>オンライン・マニュアル・ブラウザに統合する方法について説明します。
;この章はまた、自分のブラウザを書くために使う DtInfoデータベース・エンジンAPIを要約します。
</para>
<para>12章は、 CDEプリンティング・ウィジェットとAPIを説明します。
</para>
<para><emphasis role="Lead-in">用語集</emphasis>はこのマニュアルで使われている語句とそのリストです。
</para>
</sect1>
<sect1 id="PG.Pref.div.5">
<title id="PG.Pref.mkr.1">関連文書</title>
<para>CDEへのアプリケーションの統合を開始する前に、マニュアル・セットの他のマニュアルも読んでください。
付属マニュアルのリストについては、 <!--Original
XRef content: '&xd2;Development
Environment Documentation'--><xref role="SectionTitle" linkend="PG.Pref.mkr.2">
を参照してください。</para>
<para>実行環境マニュアル・セットは、次のものからなります。:<indexterm>
<primary>マニュアル・セット</primary><secondary>実行</secondary></indexterm><indexterm>
<primary>実行</primary><secondary>マニュアル・セット</secondary></indexterm></para>
<itemizedlist remap="Bullet1"><listitem><para><emphasis>共通デスクトップ環境
ユーザーズ・ガイド</emphasis></para>
</listitem><listitem><para><emphasis>共通デスクトップ環境 上級
ユーザおよびシステム管理者ガイド</emphasis></para>
</listitem><listitem><para>オンライン・ヘルプ・ボリューム</para>
</listitem></itemizedlist>
<note>
<para><emphasis>上級ユーザおよびシステム管理者ガイド</emphasis>
には、アプリケーションをデスクトップに統合する際に役立つ情報が含まれています。
</para>
</note>
<para>カレンダAPIとスケジュールAPIの詳細については、X.400 API Associationから<emphasis>XAPIA規格</emphasis>の最新版を入手してください。
住所は下記のとおりです。
The address is X.400 API Association, 800 El Camino Real, Mountain
View, California, 94043.</para>
<sect2 id="PG.Pref.div.6">
<title id="PG.Pref.mkr.2">開発環境マニュアル
</title>
<para>この節では、開発者マニュアル・セットの各マニュアル&mdash;<emphasis>プログラマーズ・ガイド</emphasis>&mdash;を除く)概要を示します。
<emphasis>プログラマーズ・ガイド</emphasis>の他に、開発環境用のマニュアル・セットには次のマニュアルが含まれています。
:<indexterm><primary>マニュアル・セット
</primary><secondary>開発環境</secondary></indexterm></para>
<itemizedlist remap="Bullet1"><listitem><para><emphasis>
CDE/Motif スタイルガイドおよび認証チェックリスト</emphasis></para>
</listitem><listitem><para><emphasis>共通デスクトップ環境 アプリケーション
・ビルダ ユーザーズ・ガイド</emphasis></para>
</listitem><listitem><para><emphasis>共通デスクトップ環境 プログラマ概要
</emphasis></para>
</listitem><listitem><para><emphasis>共通デスクトップ環境 ヘルプ・システム設計者および
プログラマのためのガイド</emphasis></para>
</listitem><listitem><para><emphasis>共通デスクトップ環境 ToolTalk メッセージの概要
</emphasis></para>
</listitem><listitem><para><emphasis>共通デスクトップ環境 国際化対応
プログラマーズ・ガイド</emphasis></para>
</listitem><listitem><para><emphasis>共通デスクトップ環境 デスクトップKorn
Shellユーザーズ・ガイド</emphasis></para>
</listitem><listitem><para><emphasis>共通デスクトップ環境 用語集</emphasis>
</para>
</listitem><listitem><para>オンライン・マニュアル・ページ</para>
</listitem></itemizedlist>
<sect3 id="PG.Pref.div.7">
<title>共通デスクトップ環境 プログラマ概要</title>
<para> <emphasis>共通デスクトップ環境 プログラマ概要</emphasis>
は2部構成になっています。第1部には、実行時と開発環境の両方に関するハイレベルの情報など、共通デスクトップ環境アーキテクチャの概要が含まれています。
第2部には、アプリケーションを開発する前に知っておくべき情報と、開発環境のコンポーネントの説明があります。
</para>
<para> <emphasis>共通デスクトップ環境 プログラマ概要</emphasis>
は、共通デスクトップ環境の開発環境と開発者マニュアル・セットの概要を示すものです。アプリケーションの設計と開発を始める前に、まずこのマニュアルを読んでください。
</para>
</sect3>
<sect3 id="PG.Pref.div.8">
<title>CDE/Motif スタイルガイドおよび認証チェックリスト</title>
<para><emphasis>CDE/Motif スタイルガイドおよび認証チェックリスト
</emphasis>は、アプリケーション設計のスタイルのガイドラインと、共通デスクトップ環境のアプリケーション・レベルの認定の要件を説明します。
これらの要件は、Motifバージョン1.2の要件に共通デスクトップ環境固有の要件を追加したものです。
</para>
<para>チェックリストでは、モデル・キーボードの形式を使用して、キーについて説明します。チェックリストは、英語ロケールで左から右へ書かれる言語を対象としたアプリケーションを設計することを前提としています。
キーボード入力を示す箇所では、Motifのモデル・キーボードの文字でキーが示されています。
マウス・ボタンは、マウスのボタンの数に依存しない動作を示すために、仮想ボタン名称を使用して説明されています。
</para>
<para>このマニュアルは、アプリケーション設計者が一貫性のあるアプリケーションを開発し、アプリケーション内の動作に一貫性をもたせるために役立つ情報を提供します。
</para>
</sect3>
<sect3 id="PG.Pref.div.9">
<title>共通デスクトップ環境 アプリケーション・ビルダ ユーザーズ・ガイド</title>
<para> 共通デスクトップ環境の<emphasis>アプリケーション・ビルダ</emphasis>は、共通デスクトップ環境アプリケーションを開発するための対話型ツールです。
このツールは、アプリケーション・グラフィカル・ユーザ・インタフェース(GUI)の構築と、デスクトップの多くの便利なデスクトップ・サービス(ヘルプ、ToolTalk、およびドラッグドロップなど)の組み込みとを容易にする機能を提供します。
<emphasis>共通デスクトップ環境 アプリケーション・ビルダ ユーザーズ・ガイド
</emphasis>では、パレットから&ldquo;オブジェクト&rdquo;をドラッグ&ドロップしてインタフェースを作成する方法を説明します。
また、インタフェース内のオブジェクト間の接続方法、アプリケーション・フレームワーク・エディタを使用してデスクトップ・サービスとの統合を簡単にする方法、Cコードの生成方法、およびアプリケーション・ビルダ出力にアプリケーション・コードを追加して最終的なアプリケーションを生成する方法についても説明しています。
</para>
</sect3>
<sect3 id="PG.Pref.div.10">
<title>共通デスクトップ環境 ヘルプ・システム設計者およびプログラマのためのガイド
</title>
<para> <emphasis>共通デスクトップ環境 ヘルプ・システム設計者およびプログラマのためのガイド
</emphasis>は、アプリケーション・ソフトウェアのためのオンライン・ヘルプの開発方法について説明しています。
ヘルプ・トピックの作成方法と、オンライン・ヘルプをMotifアプリケーションに統合する方法が述べられています。
</para>
<para>このマニュアルの対象読者は、次のとおりです。:</para>
<itemizedlist remap="Bullet1"><listitem><para>オンライン・ヘルプ情報の設計、作成、および表示する設計者
</para>
</listitem><listitem><para>完全に統合されたヘルプ機能を提供するアプリケーション・ソフトウェアを作成する開発者
</para>
</listitem></itemizedlist>
<para>このマニュアルは、4部構成になっています。第1部では、アプリケーションのヘルプを設計するために設計者と開発者とが協力して行う役割について説明しています。
第2部は、オンライン・ヘルプを構成および記述する設計者に必要な情報を説明しています。
第3部は、ヘルプ・システムのアプリケーション・プログラマのツールキットを説明しています。第4部は、国際化対応環境向けのオンライン・ヘルプの作成について、設計者とプログラマに必要な情報を説明しています。
</para>
</sect3>
<sect3 id="PG.Pref.div.11">
<title>共通デスクトップ環境 ToolTalkメッセージの概要</title>
<para><emphasis>共通デスクトップ環境 ToolTalkメッセージの概要</emphasis> では、メディア交換およびデスクトップ・サービスのメッセージ・セットの規則に準拠したアプリケーションを作成するための便利なルーチンとして提供されるToolTalkコンポーネント、コマンド、およびエラー・メッセージについて説明しています。
このマニュアルは、ToolTalk&reg;サービスを使用して他のアプリケーションと相互運用するアプリケーションを作成または保守する開発者のためのマニュアルです。
</para>
<para> <emphasis>ToolTalkメッセージの概要</emphasis>では、一般的なToolTalkの機能については説明<symbol role="Variable">していません。</symbol> ToolTalkサービスの詳しい説明は、
<emphasis>ToolTalkサービス: An Inter-Operability
Solution</emphasis>を参照してください。ToolTalkをより簡単に使用するには、
<emphasis>ToolTalk and Open Protocols: Inter-Application Communication</emphasis>を参照してください。</para>
</sect3>
<sect3 id="PG.Pref.div.12">
<title>共通デスクトップ環境 国際化対応プログラマーズ・ガイド</title>
<para> <emphasis>共通デスクトップ環境 国際化対応プログラマーズ・ガイド
</emphasis> は、アプリケーションを簡単にローカライズして、さまざまな言語と文化的規則を一貫したユーザ・インタフェースでサポートできるようにする、アプリケーションの国際化対応について説明しています。
</para>
<para>特に、次の情報を提供しています。:</para>
<itemizedlist remap="Bullet1"><listitem><para>開発者に対し、世界中で使用できるようなアプリケーションを書くためのガイドラインとヒントを提供しています。
</para>
</listitem><listitem><para>デスクトップのさまざまな階層にまたがる国際化トピックの全体像を提供しています。
</para>
</listitem><listitem><para>参考資料および詳しい記述のあるマニュアルを示しています。一般的な文献を参照する場合もあります。
</para>
</listitem></itemizedlist>
<para>このマニュアルは、既存の参考資料または概念的なドキュメントの説明をそのまま掲載するのでなく、特定の国際化トピックに関するガイドラインと規則を説明するものです。
国際化トピックに焦点を置くものであり、オープン・ソフトウェア環境の中の特定のコンポーネントや階層について説明したものではありません。
</para>
</sect3>
<sect3 id="PG.Pref.div.13">
<title>共通デスクトップ環境 デスクトップKorn Shellユーザーズ・ガイド</title>
<para> <emphasis>共通デスクトップ環境 デスクトップKorn Shellユーザーズ・ガイド
</emphasis>では、デスクトップKorn Shell(<command>dtksh</command>)スクリプトで Motif アプリケーションを作成する方法を説明しています。
開発者が作業を始めるにあたって必要な基本的な情報に加え、徐々に複雑になるスクリプトの例を示しています。
</para>
<para>このマニュアルは、特定の作業に適したシェル形式のスクリプト環境を探している開発者を対象としています。
KornShellプログラミング、Motif、Xtイントリンシクスの知識と、Xlibについてのある程度の知識があることを前提としています。
</para>
</sect3>
<sect3 id="PG.Pref.div.14">
<title>共通デスクトップ環境 用語集</title>
<para><emphasis>共通デスクトップ環境 用語集</emphasis>は、共通デスクトップ環境で使用する用語の包括的なリストです。
この用語集は、デスクトップのすべてのユーザにとって、ソースおよび参照の基本となります。この用語集の読者は、&mdash;エンドユーザ、開発者、翻訳者&mdash;まで多岐にわたるため、読者や、用語の由来や、グラフィカル・ユーザ・インタフェースでその用語を使用する共通デスクトップ環境コンポーネントについての情報も、用語定義の書式に含まれています。
</para>
</sect3>
</sect2>
</sect1>
<sect1 id="PG.Pref.div.15">
<title>表記上の規則</title>
<para>このマニュアルは、DocBook文書型定義(DTD)を使用したSGML(Structured Generalized Mark-up Language)で記述されています。
次の表に、このマニュアルで使用する表記上の規則を示します。
</para>
<table id="PG.Pref.tbl.1" frame="Topbot">
<title>表記上の規則</title>
<tgroup cols="3" colsep="0" rowsep="0">
<colspec colwidth="1.65in">
<colspec colwidth="2.63in">
<colspec colwidth="2.92in">
<thead>
<row>
<entry align="left" valign="bottom"><para><literal>文字または記号</literal></para></entry>
<entry align="left" valign="bottom"><para><literal>意味</literal></para></entry>
<entry align="left" valign="bottom"><para><literal>例</literal></para></entry></row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><para><command>AaBbCc123</command></para></entry>
<entry align="left" valign="top"><para>コマンドの名前</para></entry>
<entry align="left" valign="top"><para>ファイルをリストするために<command>ls</command>コマンドを使います。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><literal>AaBbCc123</literal></para></entry>
<entry align="left" valign="top"><para>コマンド・オプションの名前</para></entry>
<entry align="left" valign="top"><para>すべてのファイルをリストするために<command>ls</command> <literal>&minus;a</literal>
を使います。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><symbol role="Variable">AaBbCc123</symbol></para></entry>
<entry align="left" valign="top"><para>コマンド行プレイスホルダ:
実際の名前または値で置き換えます。</para></entry>
<entry align="left" valign="top"><para>ファイルを削除するには、<command>rm</command> <symbol role="Variable">filename</symbol>を入力します。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><filename>AaBbCc123</filename></para></entry>
<entry align="left" valign="top"><para>ファイルとディレクトリの名前
</para></entry>
<entry align="left" valign="top"><para><filename>.login</filename>
ファイルを編集します。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><emphasis>AaBbCc123</emphasis></para></entry>
<entry align="left" valign="top"><para>ブック・タイトル、新しい語または条件、強調する語を示します。
</para></entry>
<entry align="left" valign="top"><para><emphasis>ユーザーズ・ガイド
</emphasis>の6章を読んでください。
これらは、<emphasis>クラス</emphasis>と呼ばれています。
これをするために、rootでなければ <emphasis>いけません。</emphasis> </para></entry>
</row></tbody></tgroup></table>
</sect1>
</preface>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 09:54:57-->
<?Pub *0000023383>