本節描述定義控制的一般步驟,以及描述如何建立各種類型的控制。
如果控制將會有 PUSH_ACTION 及/或 DROP_ACTION,請建立動作定義。這些是當使用者按一下控制或於其上定位檔案時所執行的動作。
建立控制的圖示影像檔案。
有關圖示大小、名稱與位置的資訊,請參閱 圖示影像檔案。
建立新的「前方面板」配置檔案於:
整個系統的: /etc/dt/appconfig/types/language /*.fp
個人的: HomeDirectory /.dt/types/*.fp
將控制定義增加至檔案。
儲存檔案。
從「工作區」功能表選擇「重新啟動工作區管理者」。
使用這些欄位來定義控制的行為:
TYPE:設定為圖示
例如,將會放在「個人應用程式」輔助面板的以下控制會執行使用者已獲得的遊戲:
CONTROL Ball
{
TYPE icon
CONTAINER_NAME PersAppsSubpanel
CONTAINER_TYPE SUBPANEL
ICON ball
PUSH_ACTION RunBallGame
HELP_STRING "Choose this control to play Ball."
}
}
以下控制將會位於開關的左上角。它會啟動名為 CutDisp 的動作。
CONTROL StartCutDisp
{
TYPE icon
CONTAINER_NAME Switch
CONTAINER_TYPE SWITCH
POSITION_HINTS first
ICON cutdisp
HELP_STRING "Choose this control to run cutdisp."
PUSH_ACTION CutDisp
}
使用這些欄位來定義控制的行為:
TYPE:設定為檔案
PUSH_ACTION:設定為開啟
必須要有一個為檔案的資料類型定義的「開啟」動作。
例如,以下控制將會位於「主面板」的最右邊。它會啟動具有資料檔案 /users/ellen/PhoneList.txt 的「文字編輯程式」。 *.txt 檔案的「開啟」動作是預設動作資料庫的一部分。
CONTROL EditPhoneList
{
TYPE file
FILE_NAME /users/ellen/PhoneList.txt
CONTAINER_NAME Top
CONTAINER_TYPE BOX
POSITION_HINTS last
ICON PhoneBook
HELP_STRING "This control displays Ellen's phone list."
PUSH_ACTION Open
}
當使用者在控制上定位檔案時,使用 DROP_ACTION 欄位來指定執行的動作。動作必須要能夠接受檔案引數。
控制定義經常同時包括 PUSH_ACTION 與 DROP_ACTION 欄位。 您可以使用相同的動作於放入與定位動作。
例如,位於「個人應用程式」輔助面板中的以下控制執行取得檔案引數的 X 用戶端 xwud。
CONTROL Run_xwud
{
CONTAINER_NAME PerAppsSubpanel
CONTAINER_TYPE SUBPANEL
POSITION_HINTS 2
ICON XwudImage
PUSH_ACTION RunXwud
DROP_ACTION RunXwud
}
使用這些欄位來定義控制的行為:
例如,以下的控制尋找您期望使用匿名 ftp 將其傳輸至您的系統的名為 meetings(會議)的檔案。控制是放在「個人應用程式」輔助面板的頂端。
CONTROL MonitorCalendar
{
TYPE file
CONTAINER_NAME PersonalApps
CONTAINER_TYPE SUBPANEL
POSITION_HINTS first
FILE_NAME /users/ftp/meetings
MONITOR_TYPE file
ICON meetingsno
ALTERNATE_ICON meetingsyes
}
一個實例的控制會檢查由 PUSH_ACTION 啟動的程序是否已經執行。如果程序未執行,則執行 PUSH_ACTION。如果程序已經執行,視窗會移動至目前工作區中視窗堆疊的頂端。
使用這些欄位來定義控制的行為:
PUSH_RECALL:設定為 True。
CLIENT_NAME 的值必須符合應用程式頂層視窗上的 WM_CLASS 屬性中的第一個字串 (res_name)。有關更多的資訊,請參閱 xprop(1) 線上援助頁。
PUSH_ACTION:描述當使用者按一下控制時所執行的動作。
例如,以下控制執行其動作名為 MyEditor 的應用程式的一個實例。
CONTROL MyEditor
{
TYPE icon
CONTAINER_NAME Top
CONTAINER_TYPE BOX
POSITION_HINTS 15
PUSH_RECALL True
CLIENT_NAME BestEditor
PUSH_ACTION StartMyEditor
ICON MyEd
}
用戶端視窗控制是內含於「前方面板」中的應用程式視窗。例如,您可以藉由建立 xload 用戶端視窗控制將系統載入表放在「前方面板」中。
定義控制。
使用這些欄位來定義控制的行為:
TYPE:設定為 client。
CLIENT_NAME 的值必須符合應用程式頂層視窗上 WM_CLASS 屬性中的第一個字串(res_name)。有關更多的資訊,請參閱 xprop(1) 線上援助頁。
從「工作區」功能表選擇「重新啟動工作區管理者」。
從終端機模擬器指令行啟動用戶端。
例如,以下控制顯示 30\u00d720 的像素載入表。
CONTROL LoadMeter
{
TYPE client
CONTAINER_NAME Top
CONTAINER_TYPE BOX
CLIENT_NAME xload
CLIENT_GEOMETRY 30x20
}
如果在階段作業之間未儲存與回復用戶端,您可能會想要配置控制以在使用者按一下時啟動用戶端。例如,您可以藉由將下行增加至定義來配置 LoadMeter 控制以啟動 xload:
PUSH_ACTION StartXload
以及建立動作:
ACTION StartXload
{
WINDOW_TYPE NO_STDIO
EXEC_STRING /usr/contrib/bin/X11/xload
}
當使用者選擇控制或於其上定位物件時,您可以附加要使用的動畫順序。
為了要有動畫順序,控制必須:
為類型圖示
具有 PUSH_ACTION 或 DROP_ACTION
ANIMATION animation_name
{
ANIMATION icon1 [milisecond_delay]
ANIMATION icon2 [milisecond_delay]
…
}
其 icon1、icon2 等等是圖示的名稱,而 milisecond_delay 是以毫秒計算的動畫圖示之間的時間延遲。預設時間延遲為 200 毫秒。
增加 PUSH_ANIMATION 及/或 DROP_ANIMATION 欄位至控制定義。此值為 ANIMATION(動畫) 順序的名稱。
例如,下列各行使啟動 BestEditor 應用程式的控制成為動畫。圖示之間的時間延遲是 300 毫秒。範例假定您已建立圖示檔案 frame1、frame2 等等。
CONTROL BestEditor
{
…
PUSH_ANIMATION BestEdAnimation
…
}
ANIMATION BestEdAnimation
{
frame1 300
frame2
…
}
提供控制的輔助說明有兩種方法:
在控制定義中提供輔助說明字串。
當使用者呼叫控制的關於項目輔助說明時,輔助說明字串會顯示於輔助說明查看器中。輔助說明字串不得包括製作格式(例如標題)或連結。
如果要提供輔助說明字串,請在控制定義中指定它:
HELP_STRING help_string