이 절에서는 제어도구를 정의하기 위한 일반적인 절차와 다양한 유형의 제어도구를 작성하는 방법을 설명합니다.
제어도구가 PUSH_ACTION 및/또는 DROP_ACTION을 가질 경우, 해당 활동 정의를 작성합니다. 이러한 활동이 바로 사용자가 제어도구를 누르거나 제어도구로 파일을 끌어 놓을 때 실행되는 활동입니다.
제어도구에 대한 아이콘 이미지 파일을 작성하십시오.
아이콘 크기, 이름, 위치 등에 관한 내용은 223 페이지의 "아이콘 이미지 파일"을 참조하십시오.
새로운 프론트 패널 환경설정 파일을 다음 위치에 작성하십시오.
시스템 전체: /etc/dt/appconfig/types/language/*.fp
개인: HomeDirectory/.dt/types/*.fp
파일에서 제어도구를 정의하십시오.
파일을 저장하십시오.
작업 공간 메뉴의 윈도우에서 작업 공간 관리자 재시작을 선택하십시오.
다음 필드를 사용하여 제어도구의 동작을 정의하십시오.
TYPE: icon으로 설정
PUSH_ACTION: 실행할 활동의 이름을 지정합니다.
예를 들어, 응용프로그램 서브패널에 놓일 다음과 같은 제어도구는 사용자가 가지고 있는 게임을 실행합니다.
CONTROL Ball { TYPE icon CONTAINER_NAME PerAppsSubpanel CONTAINER_TYPE SUBPANEL ICON ball PUSH_ACTION RunBallGame HELP_STRING "게임을 시작하려면 이 제어도구를 선택하십시오." }
다음 제어도구는 스위치의 왼쪽 상단에 놓입니다. 이 제어도구는 CutDisp라는 활동을 실행합니다.
CONTROL StartCutDisp { TYPE icon CONTAINER_NAME Switch CONTAINER_TYPE SWITCH POSITION_HINTS first ICON cutdisp HELP_STRING "cutdisp를 실행하려면 이 제어도구를 선택하십시오." PUSH_ACTION CutDisp }
다음 필드를 사용하여 제어도구의 동작을 정의하십시오.
TYPE: file로 설정
PUSH_ACTION: Open으로 설정
파일의 데이터 유형에 열기 활동이 정의되어 있어야 합니다.
예를 들어, 다음 제어도구는 기본 패널의 오른쪽 끝에 놓이게 됩니다. 이 제어도구는 데이터 파일 /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 "Ellen의 전화번호 목록을 표시하려면 이 제어도구를 누르십시오." 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 }
다음 필드를 사용하여 제어도구의 동작을 정의하십시오.
TYPE: 다음 값 중에서 하나를 지정하십시오.
icon-제어도구에 대한 PUSH_ACTION 및 DROP_ACTION을 지정하려면 이 유형을 사용합니다.
file-제어 도구를 선택했을 때 파일 관리자에서 파일 아이콘을 두 번 누른 것과 같은 동작을 수행하도록 하려면 이 유형을 사용합니다.
MONITOR_TYPE: 이미지 변경시키는 조건을 설명합니다. 다음 값 중 하나를 사용합니다.
mail-정보가 파일에 추가될 때 제어도구의 모양이 변경됩니다.
file-지정된 파일이 비어 있지 않으면 제어도구의 모양이 변경됩니다.
예를 들어, 다음 제어도구는 익명의 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: 제어도구에 대한 클라이언트 이름을 지정합니다.
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: 시작할 클라이언트를 지정합니다.
CLIENT_NAME의 값이 응용 프로그램의 최상위 윈도우에 있는 WM_CLASS 특성의 첫번째 문자열(res_name)과 일치해야 합니다. 자세한 내용은 xprop(1) 매뉴얼 페이지를 참조하십시오.
작업 공간 메뉴의 윈도우에서 작업 공간 관리자 재시작을 선택하십시오.
터미널 터미널 에뮬레이터 명령행에서 클라이언트를 시작하십시오.
예를 들어, 다음 제어도구는 30 x 20 픽셀 로드 측정기를 표시합니다..
CONTROL LoadMeter { TYPE client CONTAINER_NAME Top CONTAINER_TYPE BOX CLIENT_NAME xload CLIENT_GEOMETRY 30x20 }
클라이언트가 세션 사이에 저장되고 복구되지 않을 경우, 사용자가 눌렀을 때 클라이언트를 시작하는 제어도구를 구성할 수도 있습니다. 예를 들어, 다음과 같은 행을 정의에 추가하여 xload 를 시작하는 LoadMeter 제어도구를 구성할 수 있습니다.
PUSH_ACTION StartXload
그리고 다음과 같은 활동을 작성합니다.
ACTION StartXload { WINDOW_TYPE NO_STDIO EXEC_STRING /usr/contrib/bin/X11/xload }
제어도구를 누르거나 제어도구에 객체를 끌어 놓을 때 사용될 일련의 애니메이션을 추가할 수 있습니다.
일련의 애니메이션을 가지려면 제어도구가 다음의 조건을 만족해야 합니다.
icon 유형이어야 합니다.
PUSH_ACTION 또는 DROP_ACTION을 가지고 있어야 합니다.
ANIMATION 구성요소를 사용하여 일련의 애니메이션을 지정하십시오.
ANIMATION animation_name { ANIMATION icon1 [milisecond_delay] ANIMATION icon2 [milisecond_delay] ... }
여기서 icon1, icon 2 등은 아이콘의 이름이고, 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