動作 與 資料類型 是整合應用程式與桌上管理系統功能強大的元件。它們提供建立啟動應用程式與操縱其資料檔案的使用者介面方法。
本章介紹動作與資料類型的觀念。其描述:
您為何可能會想要建立應用程式的動作與資料類型。
動作與資料類型彼此有何關聯。
動作與資料類型如何與桌上管理系統列印有關聯。
本手冊中有三章涵蓋了建立動作與資料類型的程序與規則。
第 11章, 使用建立動作來建立動作與資料類型 解釋如何使用桌上管理系統應用程式建立動作,來建立動作與資料類型。
您可以使用建立動作來建立大部分應用程式的動作與資料類型,而不需學習其定義的語法規則。
第 12章, 人工建立動作 以及 第 13章, 人工建立資料類型解釋如何藉由建立與編輯配置檔案來人工建立動作與資料類型。
當您想要使用建立動作不支援的進階功能時,您必須人工建立動作與資料類型。
動作是寫入做自動化桌上管理系統工作例如執行應用程式與開啟資料檔案的指令。動作的運作與應用程式巨集或程式設計功能很相像。每個動作都有一個用以執行動作的名稱。
一旦您定義了動作,就可以使用它來配接桌上管理系統使用者介面,以使得工作更容易執行。桌上管理系統提供附加使用者介面元件例如圖像、前方面板控制以及動作之功能表項目的能力。
例如,應用程式管理者中的 Desktop_Tools 應用程式群組包含啟動各種公用程式的圖像。
連按兩下時,這些圖像的每一個都會執行一個動作。例如,此為當使用者連按兩下標示 Xwd 顯示器的圖像時,執行的動作定義的一部分。配置檔案 /usr/dt/appconfig/types/language/xclients.dt 中定義的動作為:
ACTION Xwud { LABEL Xwd Display TYPE COMMAND EXEC_STRING /usr/bin/X11/xwud -noclick -in \ %(File)Arg_1"Xwd File To Display:"% ... }
當使用者連按兩下圖像時,會執行動作的 EXEC_STRING 中的指令。
前方面板也使用動作。例如,此為個人應用程式子面板中標為終端機的控制定義部分。配置檔案 /usr/dt/appconfig/types/language/dtwm.fp 中定義控制為:
CONTROL Term { ICON Fpterm LABEL Terminal PUSH_ACTION Dtterm ... }
當使用者按一下控制時,PUSH_ACTION 欄位會指定執行的動作-在此情況中,動作名為 Dtterm。
其它動作常見的用法是在功能表中。資料檔案在其檔案管理者中的「所選項目」功能表中通常會有動作。例如,XWD 檔案(具有名稱以 .xwd 或.wd 結尾的檔案)有藉由執行 Xwud 動作來顯示螢幕影像的開啟動作。
XWD 檔案的資料類型定義中指定了「所選項目」功能表中的動作。定義位於配置檔案 /usr/dt/appconfig/types/language/xclients.dt 中。
DATA_ATTRIBUTES XWD { ACTIONS Open,Print ICON Dtxwd ...
}
XWD 資料類型和與其有關聯的開啟與列印動作在 "資料類型如何將資料檔案連接至動作" 中都有解釋。
試想 Desktop_Tools 應用程式群組中的 Xwd 顯示器圖像。連按兩下此圖像來執行 X 客戶機 xwud。然而,此圖像並不直接代表實際的 xwud 可執行 /usr/bin/X11/xwud。
標示 Xwd 顯示器的圖像出現在應用程式群組中是因為該目錄中有一個名為 Xwud 的檔案(請參閱 圖 10-3)。此檔案代表具有相同名稱-Xwud 的隱藏的動作。在動作定義中,動作名稱是跟隨著 動作 關鍵字的名稱:
ACTION Xwud { LABEL Xwd Display TYPE COMMAND WINDOW_TYPE NO_STDIO EXEC_STRING /usr/bin/X11/xwud -noclick -in \ %(File)Arg_1"Xwd File To Display:"% DESCRIPTION The Xwd Display (Xwud) XwdDisplay action \ displays an xwd file that was created using the \ Xwd Capture (Xwd) action. It uses \ the xwud command. }
此檔案稱為 動作檔案 是因為其代表動作。當檔案是具有與動作相同名稱的可執行檔案時,則為動作檔案。其圖像在應用程式管理者(或檔案管理者)中稱為 動作圖像 或 應用程式圖像,因為連按兩下就會啟動應用程式。
當應用程式管理者檢查到可執行的檔案時,它會仔細檢查動作資料庫來看看是否有任何名稱符合檔案名稱的動作。如果找到符合的,應用程式管理者就知道此檔案是動作檔案。
動作檔案的內容是無關的;動作檔案通常包含描述其桌上管理系統功能的註釋。
動作檔案 與 動作定義檔案 是不同的。動作檔案 是具有與動作名稱相同的檔案。它是用於建立檔案管理者或應用程式管理者中的 應用程式圖像。動作定義檔案 是包含動作定義的名為 name.dt 的檔案。
一旦桌上管理系統決定一個檔案是動作檔案,隱藏的動作定義是用於定義動作檔案的外觀與行為。
EXEC_STRING 欄位指定應用程式圖像的行為。在 Xwd 顯示器圖像的情況中,EXEC_STRING 會指定動作圖像執行具有特定指令行引數的 xwud X 客戶機。
標籤 欄位指定應用程式圖像的標籤。
說明 欄位描述於使用者要求「關於項目」輔助說明時所顯示的文字。
Xwud 應用程式圖像使用動作的內定圖像影像,因為其動作定義不包含 圖像 欄位以指定不同的影像。
相對之下,標示為壓縮檔案的圖像使用不同的圖像影像,因為其隱藏的動作定義包含 圖像 欄位:
例如:
ACTION Compress { LABEL Compress File ICON Dtcmprs ... }
Xwud 動作稱為 指令 動作,因為其定義包含要執行的指令(EXEC_STRING)。動作定義中的 類型 欄位定義動作類型。
剛開始時,Xwd 顯示器圖像出現在 Desktop_Tools 應用程式群組中。但是,您可以在任何您有寫入許可權的目錄中建立動作圖像的其它副本。只要 Xwud 動作定義是資料庫的一部分,任何您所建立名為 Xwud 的可執行檔案將會是代表該動作的動作檔案,而且其在檔案管理者或應用程式管理者中的圖像可以用以執行動作。
指令的 引數 通常是指令在其上發生作用的東西,通常是一個檔案。可以寫入動作以接受檔案引數。
Missing..
EXEC_STRING /usr/bin/X11/xwud -noclick -in \ %(File)Arg_1"Xwd File To Display:"%
名詞 Arg 代表 引數這個字。 語法 Arg_1 表示第一個引數,而 (檔案) 表示動作將引數當作是檔案。
對使用者而言,要提供檔案引數最容易的方法就是在應用程式圖像上定位資料檔案。桌上管理系統決定定位檔案的路徑,並將它放在% symbols間的文字以取代這部份的指令行(%(檔案)Arg_1"Xwd欲顯示的檔案:"%)。因此,執行的指令為:
/usr/bin/X11/xwud -noclick -in file_path
當使用者連按兩下應用程式圖像時,桌上管理系統會從 EXEC_STRING 決定檔案引數是需要的,並顯示提示使用者輸入檔案名稱或路徑的對話框。在 Xwud 動作的例子中,提示符號為:
欲做顯示的 Xwd 檔案:
由使用者所供應的檔案名稱或路徑作為檔案引數使用。
除了啟動應用程式之外,動作還用於整個桌上管理系統以建立功能於:
前方面板
前方面板控制的定義包括,指定當使用者按一下控制或在其上定位檔案時,所執行的動作欄位。有關更多的資訊,請參閱 "定義前方面板控制"。
功能表
視窗與工作區功能表定義的語法,允許您指定由功能表項目執行的動作。有關更多的資訊,請參閱 "工作區管理者功能表" 與 dtwmrc(4) 線上援助頁。
應用程式之間的通信
應用程式可以設計來使用稱為 ToolTalk 訊息(TT_MSG)的特殊類型動作以傳送與接收資訊。在桌上管理系統的設計者環境文件中描述了 TT_MSG 動作。
當使用者建立新的資料檔案時,檔案管理者中的檔案圖像外觀與行為會依據使用者所建立的資料檔案類型而改變。此種建立檔案與目錄的自訂外觀與行為的能力是由桌上管理系統的資料鍵入機制所提供的。
資料類型是在桌上管理系統資料庫內定義的結構。例如,此為 XWD 資料類型的定義。定義是在配置檔案 /usr/dt/appconfig/types/language/xclients.dt 中:
DATA_ATTRIBUTES XWD { ACTION Open, Print ICON Dtxwd NAME_TEMPLATE %s.xwd MIME_TYPE 應用程式/八個一組的串流 SUNV3_TYPE xwd-file DESCRIPTION 此檔案包含圖形影像於 XWD \ 格式中。 這些檔案的建立一般是藉由 \ 使用XwdCapture做視窗快照 \ 動作。其資料類型名為 XWD. XWD 檔案 \ 名稱是以 `.xwd' 或 `.wd' 結尾。 }
DATA_CRITERIA XWD1 { DATA_ATTRIBUTES_NAME XWD MODE f NAME_PATTERN *.xwd } DATA_CRITERIA XWD2 { DATA_ATTRIBUTES_NAME XWD MODE f NAME_PATTERN *.wd }
每種資料類型定義都有兩部分:
DATA_ATTRIBUTES-描述資料類型的外觀與行為。
DATA_CRITERIA-指定將檔案分類為屬於該資料類型的規則(命名或內容)。
DATA_ATTRIBUTES_NAME 欄位將條件連接至屬性。
可以有 DATA_ATTRIBUTE 的多重 DATA_CRITERIA。例如,XWD 資料類型有兩項指定兩項不同命名條件(NAME_PATTERN)-名稱以 .xwd 或 .wd 結尾。
試想 XWD 資料類型。使用者藉由給予檔案一個或兩個檔案名稱的字尾(副檔名)來建立 XWD 類型的檔案:.xwd 或 .wd。桌上管理系統使用該檔案名稱為指派檔案為該類型的 條件。
XWD 資料類型供應該資料類型的每個檔案:
輔助使用者認出資料檔案的唯一圖像影像。
告訴您有關資料類型的關於項目輔助說明。
包含動作開啟與列印的檔案管理者中自訂的「所選項目」功能表。XWD 檔案的開啟動作執行 Xwud 動作。
檔案管理者中的「所選項目」功能表只有在選擇檔案或目錄時才是作用中的。「所選項目」功能表底部的指令視資料類型而定。例如,如果選擇 XWD 檔案,「所選項目」功能表就包括開啟與列印項目。
資料類型定義中的 動作 欄位指定增加至資料類型的「所選項目」功能表底部的指令。
DATA_ATTRIBUTES XWD { ACTIONS Open,Print ... }
「所選項目」功能表的內容是視資料類型而定。然而,許多不同的資料類型都提供開啟動作-也就是說,當您選擇檔案管理者中該特殊資料類型的檔案並顯示「所選項目」功能表時,您會看到開啟指令。
開啟動作通常執行與資料檔案有關聯的應用程式。例如,開啟 XWD 檔案執行 Xwud 動作,這個動作會換過來執行 xwud X 客戶機以顯示螢幕影像。換言之,對於 XWD 資料類型而言,開啟動作與 Xwud 動作是同義的。同樣地,開啟資料類型文字檔案(TEXTFILE)的檔案會執行文字編輯器,而開啟 BM (位元映射)或 PM(圖素映射)檔案則會執行圖像編輯器。
建立各種執行不同事物的開啟動作能力,會使用動作定義的兩項功能:
這是為XWD 資料類型對應開啟動作至 Xwud 動作的動作定義。其位於資料庫配置檔案/usr/dt/appconfig/types/C/xclients.dt 中。
ACTION Open { LABEL Open ARG_TYPE XWD TYPE MAP MAP_ACTION Xwud }
類型 欄位指定此為對應動作;MAP_ACTION 欄位指定此動作執行 Xwud 動作。ARG_TYPE 欄位指定此動作只應用於其資料類型是 XWD 的檔案。
比較開啟動作的前定義與出現在資料庫檔案 /usr/dt/appconfig/types/C/dt.dt 中的下一個定義。
ACTION Open { LABEL Open ARG_TYPE BM TYPE MAP MAP_ACTION Dticon }
此定義應用於資料類型(ARG_TYPE)BM(位元映射檔案)的檔案。定義對應開啟動作至執行圖像編輯器的 Dticon 動作。
資料類型的連按兩下行為是由 動作 欄位中第一項登錄所定義的。例如,對於 XWD 資料類型而言,連按兩下的行為就是執行開啟動作,此動作會反過來執行 Xwud 動作。
當使用者在動作圖像上定位資料檔案時,系統會使用該資料檔案作為動作的引數來執行動作(請參閱 "動作如何使用資料檔案作為引數")。
例如,當 XWD 資料檔案定位於 Xwd 顯示器圖像上時,Xwud 動作會使用資料檔案引數來執行。此動作會執行具有該資料檔案的 xwud X 客戶機。
桌上管理系統列印提供這些列印資料檔案的方法:
如果有的話,使用檔案管理者「所選項目」功能表中的列印指令。
在桌上管理系統印表機定位區域(列印管理者中的前方面板印表機控制或印表機圖像)上定位資料檔案。
除了桌上管理系統列印之外,許多應用程式都提供從應用程式內列印的方法。
桌上管理系統列印使用名為列印的動作。就像開啟一樣,列印是用於許多不同類型的資料的動作名稱。因此,列印動作使用動作對應與 ARG_TYPE 欄位來自訂每種資料類型的列印。
例如,此為 XWD 資料類型的列印動作。定義位於/usr/dt/appconfig/types/language/xclients.dt 中:
ACTION Print { LABEL Print ARG_TYPE XWD TYPE MAP MAP_ACTION NoPrint }
此專用於 XWD 檔案的列印動作對應至無列印動作。無列印是/usr/dt/appconfig/types/language/dt.dt 中所定義的特殊動作。無列印動作顯示對話框,告訴使用者此資料類型無法列印。
比較 XWD 列印動作與以下 PCL 檔案的列印動作:
ACTION Print { LABEL Print ARG_TYPE PCL TYPE MAP MAP_ACTION PrintRaw }
配置檔案 /usr/dt/appconfig/types/language/print.dt 中所定義的列印原始動作包含列印 PCL 檔案的指令行。
ACTION PrintRaw { TYPE COMMAND WINDOW_TYPE NO_STDIO EXEC_STRING /usr/dt/bin/dtlp -w% (File)Arg_1% }