建立資料類型定義的方法有兩種:
使用「建立動作」工具。使用「建立動作」是涵蓋在 第 11章, 使用建立動作來建立動作與資料類型。
藉由人工建立資料類型定義。
人工建立資料類型需要您編輯資料庫檔案。
本章描述如何人工建立資料類型定義。
有關資料類型的簡介,請參閱 第 10章, 動作與資料類型簡介 。
有關資料類型定義的參考資訊,請參閱 the dtddsfile(4) 線上援助頁。
人工建立資料類型可以讓您使用所有建立於資料類型定義語法中的能力。
如果您想要使用這些資料類型的功能,您就必須人工建立資料類型:
以位置(路徑)為基礎的資料類型
指定與「開啟」及「列印」以外的資料類型有關聯的動作的能力
多重名稱、型樣或相同資料類型的內容條件—例如,以名為 *.abc 或 *.def
以連結為基礎的資料分類
資料類型定義是由兩種不同的資料庫定義所構成的:
每項 DATA_ATTRIBUTE
定義至少要有一項 DATA_ATTRIBUTES
定義; DATA_ATTRIBUTES
定義可以有與其有關聯的多重 DATA_CRITERIA
。
例如,您可以建立描述 PostScript 在「檔案管理者」中的外觀與行為的 PostScript 檔案的屬性定義。然後,您可以為 PostScript 資料類型建立兩項不同的條件— 一項以檔案名稱為基礎,而另一項以檔案內容為基礎。
有關更多的資訊,請參閱 定義資料類型的資料條件。
本節描述如何建立資料類型配置檔案。
包含資料類型定義的配置檔案的要求為:
檔案必須使用命名慣例 name .dt
檔案必須位於資料庫搜尋路徑上。預設搜尋路徑為:
個人資料類型—language /.dt/types/
整個系統的資料類型—/etc/dt/appconfig/types/language
內建資料類型—/usr/dt/appconfig/types/language。您不應使用此目錄。
有關修改資料庫搜尋路徑的資訊,請參閱 設定搜尋路徑的值。
開啟現存資料庫檔案或建立新檔案。
有關更多的資訊,請參閱前節資料類型的配置檔案。
使用此語法定義資料類型的資料屬性:
DATA_ATTRIBUTES data_type_name { ICON image_name DESCRIPTION字串 attribute_field attribute_field … }
其中:
data_type_name—給予此資料類型的唯一名稱。
image_name—圖示檔案的檔案名稱或路徑。 使用基本名稱於此檔案。例如,對於圖示檔案 myimage.m.pm 與 myimage.t.pm,請使用 myimage。
attribute_field—定義資料類型的外觀或行為的欄位。
字串—字元字串。 內容將會是資料類型的關於項目輔助說明。
請參閱 建立個人動作與資料類型的範例。
使用此語法定義資料類型的資料條件:
DATA_CRITERIA criteria_name { DATA_ATTRIBUTES_NAME data_type_name criteria_field criteria_field … }
其中:
criteria_name—此條件定義的唯一名稱
data_type_name—用於 DATA_ATTRIBUTES
定義中的名稱
criteria_field—用於定義指派檔案至此資料類型的條件的欄位
請參閱 定義資料類型的資料條件。
儲存資料庫檔案。
建立資料類型的圖示。
有關更多的資訊,請參閱 指定用於資料類型的圖示影像。
如果有需要,請建立列出於屬性定義的 ACTION(動作) 欄位中的動作。
連按兩下桌面工具應用程式群組中的「重新載入動作」以重新載入資料庫。
假定您的系統包含名為 xgif 的應用程式,此應用程式會顯示 GIF 圖片。一般而言,您藉由執行如下來執行程式:
xgif 檔案名稱
您想要能夠以數種方法顯示 GIF 圖片:
藉由連按兩下 GIF 資料檔案
藉由選擇資料檔案以及從「所選項目」功能表選擇應用程式
開啟新檔案 language /.dt/types/GifViewer.dt 以編輯。
鍵入資料類型定義:
DATA_ATTRIBUTES Gif { DESCRIPTION Gif image file. ICON GifIcon ACTIONS View } DATA_CRITERIA Gif_Criteria { DATA_ATTRIBUTES_NAME Gif NAME_PATTERN *.gif }
鍵入 GifViewer 動作的動作定義:
ACTION GifViewer { EXEC_STRING xgif %(File)Arg_1"Gif file to view:" WINDOW_TYPE NO_STDIO DESCRIPTION Double-click or drop a file to \ start the Gif viewer. }
既然定義不包括 ICON 欄位,動作將會使用系統的預設圖示。
鍵入以下對映動作以將 GifViewer 動作連接至列於資料類型定義中的「查看」動作。使用ARG_TYPE 欄位以限制此查看動作為 Gif 類型的檔案。
ACTION View { ARG_TYPE Gif TYPE MAP MAP_ACTION GifViewer }
儲存檔案。
連按兩下桌面工具應用程式群組中的「重新載入動作」以重新讀取資料庫。
DATA_ATTRIBUTES 定義定義資料類型的外觀與行為。其指定資料類型的名稱,並提供能力以指定:
檔案管理者圖示 (ICON 欄位)
「所選項目」功能表的連按兩下行為與內容(ACTION 欄位)
使用 ICON 欄位以指定「檔案管理者」中所使用的圖示。如果您未指定圖示影像,「檔案管理者」便只會顯示標籤。
基本檔案名稱是包含圖示影像的檔案名稱,減去檔案名稱大小(m 與 t)與影像類型(bm 與 pm)的字尾。 例如,如果檔案名稱為 GameIcon.m.pm 與 GameIcon.t.pm,請使用 GameIcon。
如果您使用基本檔案名稱,圖示檔案必須放在圖示搜尋路徑上的目錄中:
個人圖示: language /.dt/icons
整個系統的圖示:/etc/dt/appconfig/icons/language
到圖示檔案的絕對路徑,包括完整的檔案名稱。
唯有當圖示檔案不在圖示搜尋路徑上時才應使用絕對路徑。 例如,如果圖示檔案 GameIcon.m.pm 是放在不在圖示搜尋路徑上的目錄 /doc/projects 中,ICON(圖示) 欄位的值會是 /doc/projects/GameIcon.m.pm。
表 13–1 列出您應該建立的圖示大小與相應的檔案名稱。
像素的大小 |
點陣圖名稱 |
像素對映名稱 |
---|---|---|
32 乘 32 |
name.m.bm |
name.m.pm |
16 乘 16 |
name.t.bm |
name.t.pm |
使資料類型與動作有關聯的方法有兩種:
動作可以使用動作定義的 ARG_TYPE欄位來限制為指定的資料類型。
例如,以下資料類型定義會建立由您的系統管理者使用命名慣例 *.rm 所建立的特殊 “ 讀我”檔案的資料類型。
DATA_ATTRIBUTES SysReadmeFile { ICON SysReadMe ACTIONS Open,Respond } DATA_CRITERIA SysReadmeFileCriteria { NAME_PATTERN *.rm DATA_ATTRIBUTES_NAME SysReadmeFile }
檔案的特殊「回應」動作定義於下。其開啟「文字編輯程式」中檔案的可寫入副本。當儲存檔案及結束「文字編輯程式」時,檔案會郵寄給系統管理者(郵件地址 sysadmin@utd)。
ACTION Respond { ARG_TYPE SysReadmeFile EXEC_STRING /bin/sh -c 'cp%Arg _1% $HOME/readme.temp;\ chmod +w $HOME/readme.temp; \ dtpad $HOME/readme.temp; \ cat $HOME/readme.temp \ cat $HOME/readme.temp | \ /usr/bin/mailx sysadmin@utd; \ rm $HOME/readme.temp' WINDOW_TYPE NO_STDIO }
如果檔案是隱形的資料類型,它絕不會出現在「檔案管理者」中。
使用 DATA_ATTRIBUTES
定義中的 PROPERTIES 欄位來指定將隱藏的物件類型:
PROPERTIES invisible
表 13–2 顯示主要由應用程式設計者所使用的 DATA_ATTRIBUTES
欄位。它們會指定當使用者執行各種不同的桌上管理系統活動時,檔案的行為要如何。
有關更多的資訊,請參閱 共用桌上管理系統環境程式設計者指南,其為開發者環境文件的一部分。
表 13–2 DATA_ATTRIBUTES 欄位及說明
欄位 |
說明 |
---|---|
用於如目錄的容器。 當檔案移動至此資料類型的容器時,指定要執行的動作。 |
|
用於如目錄的容器。 當檔案複製到此資料類型的容器時,指定要執行的動作。 |
|
當檔案連結至此資料類型的檔案時,指定要執行的動作。 |
|
指定此資料類型的檔案包含可以顯示在文字方塊中的文字。 |
|
指定相應的 ToolTalk 媒體類型。 |
|
指定相應的 MIME 類型。 |
|
指定相應的 X400 類型。 |
DATA_CRITERIA
定義會定義用於將物件類型指派給檔案或目錄的條件。
您可以使用 表 13–3 中所示的物件類型的條件。
表 13–3 DATA_CRITERIA 條件與說明
條件 |
說明 |
---|---|
檔案名稱 | |
檔案位置 | |
檔案內容 | |
檔案模式 | |
類型是以物件連結的檔案為基礎。 |
您可以使用一項以上的資料類型條件。但是,您不應在相同的資料類型中使用 NAME_PATTERN 與 PATH_PATTERN 條件。
使用 NAME_PATTERN 欄位來指定命名需求。欄位值可包括下列通配符號:
?—符合任何單一字元
[cc…]—符合括弧中所附的任何字元(c)
[c–c ]—符合範圍中的任一字元 c 到 c
以下資料類型定義建立了以檔案名稱為基礎的資料類型。檔案名稱必須以 QS 開始,以 .doc 結尾。
DATA_ATTRIBUTES QS_Doc { DESCRIPTION This file contains a document for the QS project. ICON Word_Doc ACTIONS Open } DATA_CRITERIA QS_Doc_Criteria { NAME_PATTERN QS*.doc DATA_ATTRIBUTES_NAME QS_Doc }
以下的定義建立名為 Demo_n 其 n 為 0 到 9。
DATA_ATTRIBUTES Demo_directory { DESCRIPTION This is a directory. Double-click to open it. ICON Demo ACTIONS OpenInPlace,OpenNewView } DATA_CRITERIA Demo_directory_criteria { NAME_PATTERN Demo_[0-9] MODE d DATA_ATTRIBUTES_NAME Demo_directory }
使用 PATH_PATTERN 欄位來指定路徑。您可以使用與 NAME_PATTERN相同的通配符號。
例如,以下的資料類型使用以路徑為基礎的條件。
DATA_ATTRIBUTES Project_Graphics { DESCRIPTION Graphics file for the QS project. Double-click the \ icon to see the graphic. ICON QSgraphics } DATA_CRITERIA Project_Graphics_Criteria { DATA_ATTRIBUTES_NAME Project_Graphics PATH_PATTERN */projects/QS/graphics/* }
如果要建立同時以檔案名稱與位置兩者為基礎的資料類型,請將名稱包含於 PATH_PATTERN 值中。 您無法在相同的條件定義中同時使用 NAME_PATTERN 與PATH_PATTERN。
定義如下的 QS_Source_Files 資料類型應用於所有名為 appn .c 的檔案,其中 n= 1 到 9,位於 */projects/QS 的子目錄中。
DATA_ATTRIBUTES QS_Source_Files { … } DATA_CRITERIA QS_Source_Files_Criteria { PATH_PATTERN */projects/QS/*/app[1-9].c DATA_ATTRIBUTES_NAME QS_Source_Files }
以下資料類型應用於目錄 /doc/project1 中名為 chnn。xxx 其中 n 為 0 到 9,而 xxx 是任何三個字元的檔案名稱字尾。
DATA_ATTRIBUTES ChapterFiles { DESCRIPTION Chapter file for the project document. ICON chapter ACTIONS Edit,Print } DATA_CRITERIA Chapter_Criteria { PATH_PATTERN /doc/project1/ch[0-9][0-9].??? DATA_ATTRIBUTES_NAME ChapterFiles }
模式條件通常用於以名稱為基礎、以位置為基礎或以內容為基礎的資料類型的組合中。它們允許您將資料類型限制為檔案或目錄,或指定所需的讀取、寫入與執行許可權。
MODE(模式) 欄位可包括邏輯運算子(表 13–4)與字元(表 13–5)。
表 13–4 模式欄位邏輯運算子與說明
運算子 |
說明 |
---|---|
! | |
& | |
| |
表 13–5 模式欄位字元與說明
字元 |
說明 |
---|---|
資料類型只應用於檔案 |
|
資料類型只應用於目錄 |
|
r |
檔案可由任何使用者讀取 |
檔案可由任何使用者寫入 |
|
檔案可由任何使用者執行 |
|
檔案為連結 |
特定模式的預設值為模式沒有關係。
下列模式欄位限制如下所示的資料類型:
f&!w—唯讀檔案
!w—唯讀檔案及目錄
f&x—可執行檔
f&r&x—同時可寫入與可執行的檔案
x|!w—可執行或唯讀的檔案
以下資料類型定義建立了唯讀且不可執行的檔案的資料類型,其檔案名稱遵循命名慣例*.doc。這種定義假定資料類型的「查看」動作已定義了。
DATA_ATTRIBUTES ReadOnlyDocument { ICON read_only DESCRIPTION This document is not writable. Double- \ clicking runs your editor with a \ read-only copy of the file. ACTIONS View } DATA_CRITERIA ReadOnlyDocument_Criteria { NAME_PATTERN *.doc MODE !d&!x&!w DATA_ATTRIBUTES_NAME ReadOnlyDocument }
使用 CONTENT 欄位以指定以檔案內容為基礎的資料類型。內容型資料類型可以在以名稱或位置為基礎的資料類型組合中使用。
類型可以以檔案的字串或數值內容為基礎。檔案中的第一個位元組為數字 0。
對於檔案的數字內容,請使用此語法:
CONTENT starting_byte 位元組 數目 CONTENT starting_byte 短 數目 CONTENT starting_byte 長 數目
對於目錄的內容,使用此語法:
CONTENT 0 檔案名稱 "file_name"
使用八進位(前導 o)與十六進位(前導 oX)數字的標準 C 記號。
使用以內容為基礎的資料類型將會導致較慢的系統效能。在可能之處使用以名稱與位置為基礎的類型來代替。
例如,以下的資料類型 Writable_Wingz 應用至具有包含字串 WNGZ 於檔案開始之處的寫入許可權的所有檔案。
DATA_ATTRIBUTES Writable_Wingz { … } DATA_CRITERIA Writable_Wingz_Criteria { CONTENT 0 string WNGZ MODE w&!d DATA_ATTRIBUTES_NAME Writable_Wingz }
您可以建立具有數項獨立條件的資料類型—也就是說,如果檔案符合條件之一(或兩者),就會被指派至資料類型。
建立新的「前方面板」的 DATA_ATTRIBUTES
定義。
使用 DATA_ATTRIBUTES_NAME欄位將每項條件連接至相同的 DATA_ATTRIBUTES
定義。
例如,下列定義會建立 Mif 資料類型。類型是以名稱或內容為基礎。
DATA_ATTRIBUTES Mif { ICON Frame ACTION_LIST Open,Print } DATA_CRITERIA Mif_Name_Criteria { DATA_ATTRIBUTES_NAME Mif NAME_PATTERN *.mif } DATA_CRITERIA Mif_Content_Criteria { DATA_ATTRIBUTES_NAME Mif CONTENT 1 string MIFFile }
資料類型的搜尋路徑包括語言相依的位置。桌上管理系統使用 LANG 的值來決定搜尋資料類型的位置。
本土化的資料類型定義必須放在動作搜尋路徑沿途的正確語言相依目錄中。
預設搜尋路徑為:
個人動作:HomeDirectory /.dt/types
整個系統的動作:/etc/dt/appconfig/types/language
內建動作:/usr/dt/appconfig/types/language