El usuario puede crear controles personales soltando iconos en los controles Instalar icono.
A pesar de que esto facilita las tareas de personalización, las funciones que proporciona constituyen sólo una parte de las capacidades de los controles del Panel frontal. Por ejemplo, un control creado mediante los controles Instalar icono no puede:
Poseer animación
Mostrar una ventana de cliente
Cambiar de aspecto cuando se produce un evento (por ejemplo, al recibir correo nuevo)
Esta sección describe cómo crear controles del Panel frontal manualmente.
Para obtener información de referencia acerca de la sintaxis de los controles del Panel frontal, consulte la página del comando man dtfpfile(4X).
La estructura de la definición de un control del Panel frontal es:
CONTROL nombre_control { TYPE tipo_control CONTAINER_NAME valor CONTAINER_TYPE valor otros campos que definen el aspecto y el comportamiento }
El campo TYPE de la definición del control especifica el comportamiento básico del control.
Comportamiento del control
El control ejecutará un acción determinada cuando el usuario haga clic o suelte un archivo sobre él.
Espacio reservado utilizado para ajustar el espaciado de los controles.
Indicador luminoso de espera. El control parpadea (conmuta imágenes) cuando se invoca una acción.
Una ventana de cliente en el Panel frontal.
Reloj.
Muestra la fecha actual.
Representa un archivo. Al elegir el control se ejecuta la acción predeterminada para el archivo.
En esta sección se describen los pasos generales para definir un control y el procedimiento para crear diversos tipos de controles.
Si el control debe tener PUSH_ACTION y/o DROP_ACTION, cree las definiciones de las acciones: éstas son las acciones que se ejecutan cuando el usuario hace clic en el control o suelta un archivo sobre él.
Cree los archivos de imagen de icono para el control.
Para obtener información sobre los tamaños, nombres y ubicaciones de los iconos, véase "Archivos de imagen de iconos" .
Cree un nuevo archivo de configuración del Panel frontal en:
Accesible en el sistema: /etc/dt/appconfig/types/idioma/*.fp
Personal: DirectorioInicio/.dt/types/*.fp
Agregue al archivo la definición del control.
Guarde el archivo.
Elija Reiniciar Gestor de área de trabajo en el menú Área de trabajo.
Utilice los siguientes campos para definir el comportamiento del control:
TYPE: Establecido en icon
PUSH_ACTION: Especifica el nombre de la acción que se ha de ejecutar
Por ejemplo, el siguiente control, que se colocará en el subpanel Aplicaciones personales, ejecuta un juego obtenido por el usuario:
CONTROL Ball { TYPE icon CONTAINER_NAME PersAppsSubpanel CONTAINER_TYPE SUBPANEL ICON ball PUSH_ACTION RunBallGame HELP_STRING 'Elija este control para jugar a pelota.' }
El siguiente control se ubicará en la esquina superior izquierda del conmutador. Inicia una acción llamada CutDisp.
CONTROL StartCutDisp { TYPE icon CONTAINER_NAME Switch CONTAINER_TYPE SWITCH POSITION_HINTS first ICON cutdisp HELP_STRING 'Elija este control para ejecutar cutdisp.' PUSH_ACTION CutDisp }
Utilice los siguientes campos para definir el comportamiento del control:
TYPE: Establecido en file
PUSH_ACTION: Establecido en Abrir
Se debe haber definido una acción Abrir para el tipo de datos del archivo.
Por ejemplo, el siguiente control se ubicará en el extremo derecho del Panel principal. Inicia el Editor de textos con el archivo de datos /users/elena/ListaTeléfonos.txt. La acción Abrir para los archivos *.txt forma parte de la base de datos de acciones predeterminada.
CONTROL EditPhoneList { TYPE file FILE_NAME /users/elena/ListaTeléfonos.txt CONTAINER_NAME Top CONTAINER_TYPE BOX POSITION_HINTS last ICON PhoneBook HELP_STRING 'Este control muestra la lista de teléfonos de Elena.' PUSH_ACTION Open }
Utilice el campo DROP_ACTION para especificar la acción que se ejecuta cuando el usuario suelta un archivo sobre el control. La acción debe ser capaz de aceptar un argumento de archivo.
Normalmente, una definición de control incluye un campo PUSH_ACTION y un campo DROP_ACTION. Puede utilizar la misma acción para las acciones de pulsar y soltar.
Por ejemplo, el siguiente control, ubicado en el subpanel Aplicaciones personales, ejecuta el cliente X xwud, que acepta un argumento de archivo.
CONTROL Run_xwud { CONTAINER_NAME PerAppsSubpanel CONTAINER_TYPE SUBPANEL POSITION_HINTS 2 ICON XwudImage PUSH_ACTION RunXwud DROP_ACTION RunXwud }
Utilice los siguientes campos para definir el comportamiento del control:
TYPE: especifique uno de los siguientes valores:
icon: utilice este tipo si desea especificar PUSH_ACTION y/o DROP_ACTION para el control.
file: utilice este tipo si quiere que, al elegir el control, éste se comporte igual que el archivo cuando se hace doble clic en el icono del archivo en el Gestor de archivos.
ICON y ALTERNATE_ICON: Describen las imágenes utilizadas para indicar los estados no modificado y modificado del archivo supervisado.
MONITOR_TYPE: Describe las condiciones que provocan el cambio de la imagen. Utilice uno de los valores siguientes:
mail: el control cambiará de aspecto cuando se agregue información al archivo.
file: el control cambiará cuando el archivo especificado deje de estar vacío.
FILE_NAME: Especifica el archivo que se va a supervisar.
Por ejemplo, el siguiente control busca si existe un archivo llamado meetings, que espera que le sea transferido a su sistema mediante ftp anónimo. El control se ubica en la parte superior del subpanel Aplicaciones personales.
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 }
Un control de caso único comprueba si el proceso iniciado por PUSH_ACTION ya se está ejecutando. En caso negativo, se ejecuta PUSH_ACTION; en caso afirmativo, la ventana se mueve a la parte superior de la pila de ventanas del área de trabajo actual.
Utilice los siguientes campos para definir el comportamiento del control:
PUSH_RECALL: Establecido en True.
CLIENT_NAME: Especifica al control el nombre del cliente.
El valor de CLIENT_NAME debe coincidir con la primera cadena de caracteres (res_name) de la propiedad WM_CLASS de la ventana de nivel superior de la aplicación. Para más información, véase la página del comando man xprop(1).
PUSH_ACTION: Describe la acción que se ejecuta cuando el usuario pulsa el control.
Por ejemplo, el siguiente control ejecuta una aplicación cuya acción se llama MiEditor.
CONTROL MyEditor { TYPE icon CONTAINER_NAME Top CONTAINER_TYPE BOX POSITION_HINTS 15 PUSH_RECALL True CLIENT_NAME BestEditor PUSH_ACTION StartMyEditor ICON MyEd }
Un control de ventana de cliente es una ventana de aplicación incorporada al Panel frontal. Por ejemplo, puede colocar un medidor de carga del sistema en el Panel frontal creando un control de ventana de cliente xload.
Defina el control.
Utilice los siguientes campos para definir el comportamiento del control:
TYPE: Establecido en client.
CLIENT_NAME: Especifica el cliente que se va a ejecutar.
El valor de CLIENT_NAME debe coincidir con la primera cadena de caracteres (res_name) de la propiedad WM_CLASS de la ventana de nivel superior de la aplicación. Para más información, véase la página del comando man xprop(1).
Elija Reiniciar Gestor de área de trabajo en el menú Área de trabajo.
Inicie el cliente desde una línea de comandos del emulador de terminal.
Por ejemplo, el siguiente control muestra un medidor de carga de 30 x 20 píxels.
CONTROL LoadMeter { TYPE client CONTAINER_NAME Top CONTAINER_TYPE BOX CLIENT_NAME xload CLIENT_GEOMETRY 30x20 }
Si el cliente no se guarda y se restaura entre sesiones, es aconsejable configurar el control para que inicie el cliente cuando el usuario haga clic en él. Por ejemplo, puede configurar el control LoadMeter para que inicie xload agregando la línea siguiente a la definición:
PUSH_ACTION StartXload
y creando la acción:
ACTION StartXload { WINDOW_TYPE NO_STDIO EXEC_STRING /usr/contrib/bin/X11/xload }
Puede agregar una secuencia de animación para utilizarla cuando el usuario elija el control o suelte un objeto sobre él.
Para que un control pueda contener una secuencia de animación debe:
Ser de tipo icon
Incluir PUSH_ACTION o DROP_ACTION
Especifique la secuencia de animación mediante el componente ANIMATION:
ANIMATION nombre_animación { ANIMATION icono1 [retardo_milisegundos] ANIMATION icono2 [retardo_milisegundos] ... }
donde icono1, icono 2, etc., son los nombres de los iconos y retardo_milisegundos es el retardo temporal en milisegundos entre los iconos de la animación. El retardo temporal predeterminado es de 200 milisegundos.
Agregue los campos PUSH_ANIMATION y/o DROP_ANIMATION a la definición del control. El valor es el nombre de la secuencia ANIMATION.
Por ejemplo, las líneas siguientes dotan de animación a un control que inicia la aplicación MejorEditor. El retraso temporal entre iconos es de 300 milisegundos. En el ejemplo se supone que se han creado los archivos de icono cuadro1, cuadro2, etc.
CONTROL BestEditor { ... PUSH_ANIMATION BestEdAnimation ... }
ANIMATION BestEdAnimation { frame1 300 frame2 ... }
Existen dos procedimientos para proporcionar ayuda para un control:
Presentar una cadena de ayuda en la definición del control.
La cadena de ayuda se muestra en el visor de ayuda cuando el usuario invoca la ayuda sobre el tema para el control. La cadena de ayuda no puede incluir formato (por ejemplo, títulos) ni enlaces.
Para proporcionar una cadena de ayuda, especifíquela en la definición del control:
HELP_STRING cadena_ayuda
Especificar un tema de ayuda en un volumen de ayuda registrado
Un tema de ayuda es información creada con todas las posibilidades del sistema de ayuda. La creación de un tema de ayuda requiere el uso del Help Developer's Kit del escritorio.
Para proporcionar un tema de ayuda, especifique el volumen de ayuda y el ID del tema en la definición del control:
HELP_VOLUME nombre_volumen_ayuda HELP_TOPIC id_tema