建立資料類型定義的方法有兩種:
使用「建立動作」工具。使用「建立動作」是涵蓋在 第 11章, 使用建立動作來建立動作與資料類型 中。
藉由人工建立資料類型定義。
人工建立資料類型需要您編輯資料庫檔案。
本章描述如何人工建立資料類型定義。
有關資料類型的簡介,請參閱 第 10章, 動作與資料類型簡介 。
有關資料類型定義的參考資訊,請參閱 the dtddsfile(4) 線上援助頁。
人工建立資料類型可以讓您使用所有建立於資料類型定義語法中的能力。
如果您想要使用這些資料類型的功能,您就必須人工建立資料類型:
以位置(路徑)為基礎的資料類型
指定與「開啟」及「列印」以外的資料類型有關聯的動作的能力
多重名稱、型樣或相同資料類型的內容條件-例如,以名為 *.abc 或 *.def
檔案為基礎的資料類型以連結為基礎的資料類型
資料類型定義是由兩種不同的資料庫定義所構成的:
每項 DATA_ATTRIBUTES
定義至少要有一項DATA_CRITERIA
定義;DATA_ATTRIBUTES
定義可以有與其有關聯的多重 DATA_CRITERIA
成對。
例如,您可以建立描述 PostScript 在「檔案管理者」中的外觀與行為的 PostScript 檔案的屬性定義。然後,您可以為 PostScript 資料類型建立兩項不同的條件- 一項以檔案名稱為基礎,而另一項以檔案內容為基礎。
有關更多的資訊,請參閱 "定義資料類型的資料條件"。
本節描述如何建立資料類型配置檔案。
包含資料類型定義的配置檔案的需求為:
檔案必須使用命名習慣用法 name.dt
檔案必須位於資料庫搜尋路徑上。內定搜尋路徑為:
個人資料類型-HomeDirectory/.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(動作) 欄位中的動作。
連按兩下 Desktop_Tools 應用程式群組中的「重新載入動作」以重新載入資料庫。
假定您的系統包含名為 xgif 的應用程式,此應用程式會顯示 GIF 圖片。一般而言,您藉由執行如下來執行程式:
xgif 檔案名稱
您想要能夠以數種方法顯示 GIF 圖片:
藉由連按兩下 GIF 資料檔案
藉由選擇資料檔案以及從「所選項目」功能表選擇應用程式
開啟新檔案 HomeDirectory/.dt/types/GifViewer.dt 以編輯。
鍵入資料類型定義:
DATA_ATTRIBUTES Gif { DESCRIPTION Gif影像檔案. ICON GifIcon ACTIONS View } DATA_CRITERIA Gif_Criteria { DATA_ATTRIBUTES_NAME Gif NAME_PATTERN *.gif }
鍵入 GifViewer 動作的動作定義:
ACTION GifViewer { EXEC_STRING xgif% (檔案)Arg_1"查看的 Gif 檔案:" WINDOW_TYPE NO_STDIO DESCRIPTION 連按兩下或定位檔案以 \ 啟動 Gif 查看器。 }
既然定義不包括 ICON(圖像) 欄位,動作將會使用系統的內定圖像。
鍵入以下對應動作以將 GifViewer 動作連接至列於資料類型定義中的「查看」動作。使用ARG_TYPE 欄位以限制此查看動作為 Gif 類型的檔案。
ACTION View { ARG_TYPE Gif TYPE MAP MAP_ACTION GifViewer }
儲存檔案。
連按兩下 Desktop_Tools 應用程式群組中的「重新載入動作」以重新讀取資料庫。
DATA_ATTRIBUTES
定義定義資料類型的外觀與行為。其指定資料類型的名稱,並提供能力以指定:
「檔案管理者」圖像(ICON(圖像) 欄位)
「所選項目」功能表的連按兩下行為與內容(ACTION(動作) 欄位)
使用 ICON(圖像) 欄位以指定「檔案管理者」中所使用的圖像。如果您未指定圖像影像,「檔案管理者」便只會顯示標籤。
基本檔案名稱是包含圖像影像的檔案名稱,減去檔案名稱大小(m 與 t)與影像類型(bm 與 pm)的字尾。例如,如果檔案名稱為 GameIcon.m.pm 與 GameIcon.t.pm,請使用 GameIcon。
如果您使用基本檔案名稱,圖像檔案必須放在圖像搜尋路徑上的目錄中:
個人圖像:HomeDirectory/.dt/icons
整個系統的圖像:/etc/dt/appconfig/icons/language
圖像檔案的絕對路徑,包括完整的檔案名稱。
只要圖像檔案不在圖像搜尋路徑上,您就只應該使用絕對路徑。例如,如果圖像檔案 GameIcon.m.pm 是放在不在圖像搜尋路徑上的目錄 /doc/projects 中,ICON(圖像) 欄位的值會是 /doc/projects/GameIcon.m.pm。
表 13-1 列出您應該建立的圖像大小與相等的檔案名稱。
像素的大小 |
位元映射名稱 |
圖素映射名稱 |
---|---|---|
32 乘 32 |
名稱.m.bm |
名稱.m.pm |
16 乘 16 |
名稱.t.bm |
名稱.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 此檔案包含 QS \ 計畫的文件。 ICO 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 此為目錄。 連按兩下以開啟。 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 QS 計畫的圖形檔案。連按兩下 \ 圖像來看圖形。 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 計畫文件的 章節檔案。 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 此 文件是不可寫入的。連按 \ 兩下以檔案的唯讀副本 \ 來執行您的編輯器。 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