![]() |
![]() |
![]() |
Personalizando Filer48 |
![]() |
Introducción |
Filer48 es completamente personalizable, puedes correr tus propios programas desde Filer48, y también puedes usar todas las Funciones internas, además, cada programa puede tener su propia tecla de acceso rápido; esto es logrado utilizando un Menu personal que despliega etiquetas para cada uno de tus programas. Si presionasdentro de Filer48, el programa intentará localizar el archivo F48.CST, este archivo es usado para crear tu menu personal.
![]() |
Estructura de F48.CST |
Este archivo es una lista que especifica los elementos del menu y las teclas de acceso rápido. Esta lista contiene una sublista por cada elemento del menu. Cada sublista puede contener desde 3 hasta 5 argumentos. Puedes usar una sublista vacia como separador.
La estructura general es asi:
{
{
Elemento_Nombre
Elemento_Lugar
Elemento_Accion
[ Programa_Personal ]
[ Tecla_AccesoRapido ]
}
{
...
}
...
}
Cada argumento de la sublista se describe a continuación.
![]() |
Elemento_Nombre |
Este argumento especifica lo que será desplegado en la etiqueta del menu. Puede ser una String, un Grob 21 x 8 o un programa que al ser evaluado regrese una String o un Grob 21 x 8.
![]() |
Elemento_Lugar |
Este argumento te permite controlar cuando se ejecutará la acción asociada a esta etiqueta. Este puede ser un número hex o un bint. Existen 5 posibles valores, los cuales se listan en la siguiente tabla.
Valor | Constante | Significado |
0 | fEverywhere | La acción se puede correr en todos lados (VAR, PORT, BACKUP, LIB) |
1 | fVar | La acción sólo correrá si el usuario explora HOME o alguna de sus carpetas. |
2 | fNoLib | La acción no correrá si el usuario explora una librería. |
3 | fNoBackup | La acción no correrá si el usuario explora un Backup dentro de un puerto. |
4 | fHomePort | La acción sólo correrá en la raíz de los puertos. |
5 | fVar&HomePort | La accion correra en HOME y en la raiz de los puertos. |
![]() |
NOTA: La columna Constante lista el nombre de una constante que deberias usar cuando programes, estas constantes estan definidas en el archivo Filer48.h incluido en la carpeta Custom. |
![]() |
Elemento_Acción |
Este argumento define que pasará cuando el usuario presione la tecla correspondiente a esa etiqueta del menu o la tecla de acceso rápido. Puede ser un número hex o un bint Es posible llamar una Función interna de Filer48, o definir una propia. La siguiente tabla lista todas las llamadas internas disponibles, para estos valores no es necesario incluir un programa dentro de la sublista:
Valor | Constante | Accion |
0 | cQUIT | Sale del Filer. |
1 | cSORT | Muestra un dialogo con opciones para ordenar los objetos. |
2 | cSELECT | Muestra un dialogo con opciones para seleccionar los objetos. |
3 | cVIEW | Visualiza el objeto en el visor mas adecuado. |
4 | cTREE | Muestra el arbol de carpetas. |
5 | cUp | Mueve el cursor hacia arriba. |
6 | cMaxUp | Mueve el cursor al primer objeto. |
7 | cDown | Mueve el cursor hacia abajo. |
8 | cMaxDown | Mueve el cursor al ultimo objeto. |
9 | cSelect | Selecciona el objeto actual. |
10 | cUpDir | Ir a la carpeta padre. |
11 | cDownDir | Visita la carpeta actual. |
12 | cPreviousMenu | Muestra pagina anterior del menu. |
13 | cNextMenu | Muestra pagina siguiente del menu. |
14 | cEVAL | Ejecuta el objeto actual. |
15 | cChangeHeader | Cambia la linea del encabezado. |
24 | cChangeMode | Cambia el modo del Filer. |
25 | cEDIT | Edita el objeto actual. |
26 | cCOPY | Copia los objetos seleccionados. |
27 | cMOVE | Mueve los objetos seleccionados. |
28 | cRCL | Recupera los objetos seleccionados a la pila. |
29 | cPURGE | Elimina los objetos seleccionados. |
30 | cRENAME | Renombra el objeto actual. |
31 | cNewObject | Mustra un dialogo con opciones para crear un nuevo objeto. |
32 | cORDER | Reordena las variables en la carpeta actual. |
33 | cZIP | Si BZ esta presente muestra un dialogo con opciones para comprimir el objeto actual. |
34 | cLINK | Muestra un dialogo con opciones para enviar/recibir variables. |
35 | cCustom | Cambia el menu actual con la lista almacenada en la variable F48.CST |
36 | cPageUp | Desplaza el Filer una ventana arriba. |
37 | cPageDown | Desplaza el Filer una ventana abajo. |
Para ejecutar un programa personal, el Elemento_Acción deberá de encontrarse en el rango 16-23. Cada uno de estos siete valores especifica lo que habrá en la pila y cómo tu programa será ejecutado.
La siguiente tabla lista la forma de cada llamada:
Valor | Constante | Descripcion |
16 | cPathOnly | Recupera sólo el path. 1: Path |
17 | cSingleObject | Recupera el nombre y el contenido del objeto actual. 3: Path 2: Objeto 1: Nombre |
18 | cMultipleObjects | Equivalente al anterior, pero maneja los objetos seleccionados. 2n+2: Path ... 5: Objeto 2 4: Nombre 2 3: Objeto 1 2: Nombre 1 1: Número de objetos (número real) |
19 | cProgramLoop | El programa es llamado una vez por cada objeto seleccionado. Cada vez lo siguiente estará en la pila antes de ejecutar el programa. 3: Path 2: Objeto 1: Nombre |
20 | cSingleName | Recupera sólo el nombre del objeto actual. 2: Path 1: Nombre |
21 | cMultipleNames | Recupera todos los nombres seleccionados. n+2: Path ... 3: Nombre 2 2: Nombre 1 1: Número de nombres (número real) |
22 | cStrSingle | Recupera el objeto actual en una String de direcciones. 2: Path 1: String |
23 | cStrMultiple | Recupera los objetos seleccionados en una String de direcciones. 2: Path 1: String |
Cuando el programa es llamado sobre una libreria en la raíz de algún puerto, el nombre será el número de la librería como un real
La string regresada por Filer48 es una lista de direcciones. Sólo la puedes utilizar desde Lenguaje Ensamblador.
La string es como sigue:
02A2C Tamaño DirNombre1 DirObjeto1 DirNombre2 DirObjeto2...
Cada dirección ocupa 5 Nibbles.
![]() |
Programa_Personal |
Cuando utilices un programa personal, este argumento debe contener dicho programa. Hay algunas caracteristicas adicionales que pueden ser utiles:
1 | Si corres el programa desde VAR, tu programa iniciara en la carpeta explorada actualmente. |
2 | Un programa solo puede ser ejecutado sobre objetos existentes. |
3 | Si quieres salir de Filer48 luego de correr tu programa, debes dejar TakeOver en la pila, ejemplo: { "QUIT" fEverywhere cPathOnly :: DROP ' TakeOver ; } |
![]() |
Tecla_AccesoRápido |
Utiliza este argumento para asignar un programa a una tecla de la HP. Este argumento puede ser un número hex o un bint en la forma # axx, donde a es 1 o 0, queriendo decir con alpha o sin alpha respectivamente. xx es el código de la tecla, opcionalmente le puedes sumar #40 para el Shift Izquierdo o #C0 para el Shift Derecho.
Por ejemplo, si quieres asignar un programa a: Shift_Izquierdo + MTH, el número deberá ser # 47h: donde #07 representa la tecla MTH, y #40 para el Shift Izquierdo.
![]() |
NOTA: Para las llamadas Internas éste argumento deberá ser el cuarto dentro de la sublista y para las llamadas Personales deberá ser el quinto argumento. Porfavor revisa todos los ejemplos incluídos en la carpeta Custom. |
![]() |
Advertencia: Para ahorrar memoria, utilicé apuntadores para llevar la pista de los objetos dentro del Filer, así que si modificas la estructura de las carpetas en tus programas (usando, STO, PURGE, etc) entonces NUNCA uses la llamada 19 porque la HP se colgará. Y si eres un buen programador con experiencia, puedes utilizar las llamadas 22 y 23. |