* Muy importante
+ Importante
- Menos importante

-------
Worklog
-------

Dom 08-06-03

+ INPUTLINE: Ignorar pulsacin de ALT+Letra 
- INPUTLINE: Ctrl+C, Ctrl+X, Ctrl+V y portapapeles
+ MENU: Permitir ejecutar hooks al activar opciones
+ TABLE/LIST: "clipping" a nivel de columna 
- TABLE/LIST: Funcionalidad addline 
+ BUTTON: Responder a la letra precedida por &
- TOOLBAR: Alineacin izquierda/derecha/centro
- TOOLBAR: Capturar ALT+Letra globalmente y lanzar el men correspondiente

Lun 09-06-03

+ Drop-down control (usando pop-up control)
+ General: CONTROL_INFO (WIDTH, HEIGHT, etc)
- Menu shadow (like a window)
+ WINDOW: Ventanas modales
+ Message Box (en el propio Fenix; ver GUI.INC)
- CONTROL_RESIZE
+ MENU: Navegacin por teclado (letra -> buscar & u opcin que empiece)
- TOOLBAR/MENU: navegacin con teclado izquierda/derecha (!)
+ TABLE/LIST: TABLE_REMOVELINE(S), TABLE_MOVELINE(S), TABLE_SELECT[ED]

Mar 10-06-03

- TABLE/LIST: columna bitmap (array de ints para bitmap_get en lugar de strings)
+ TABLE/LIST: opcin de hacer click en columnas
+ TABLE/LIST: opcin de ordenar el contenido automticamente o al hacer ese clic
- Tooltips (no son controles)

Lun 16-06-03

- TABLE/LIST: modo "preview" para mostrar miniaturas
- WINDOW: guardar datos definidos por el usuario (una cadena? un entero?)
- WINDOW: "Window type string" libre, para el usuario

Mar 17-06-03

- TABLE/LIST: adaptar ancho de columnas al control automticamente
- Iconos de herramientas generales (para ventana FPG)
- Ventana FPG con visor de MAP y cuadro de dilogo de opciones (parcial)
- TOOL: two state buttons (checkbox o radio)
- General: Permitir detectar doble-clic (as como otras acciones diversas)

Mie 18-06-03

- Drag & Drop support

Jue 19-06-03

- TABLE/LIST: Soporte de selecciones mltiples en modo normal
- TABLE/LIST: tecla -> lleva a la entrada siguiente que empiece por ella

Vie 20-06-03

- FPG: Reconvertido el TEST.PRG en un FPG.PRG con la IMAGE.DLL
- Opciones adicionales al FPG (carga de MAPs, borrar mltiples, etc)

Jue 03-07-03

- Soporte clipboard (COPY_TEXT/GRAPH, PASTE_TEXT/GRAPH) a falta de
  puntos de control y datos adicionales del mapa

Lun 07-07-03

- Esqueleto de editor grfico

Mar 08-07-03

- Edicin de puntos de control en editor grfico (integrado en utilidad FPG)

Lun 21-07-03

- Men principal adaptable al tipo de ventana actual

---------
POR HACER
---------


Bugs:

- INPUTLINE: Revisar mays dcha + movimiento del cursor
- WINDOW: Requiere test intensivo del algoritmo de redimensionamiento
- El profiler mete datos imposibles cuando se ejecuta el TEST.PRG
- DROPDOWN: Queda pulsado en ocasiones tras hacer la seleccin
- MENU: saltar las opciones deshabilitadas al desplazar los cursores
- Falta poder redimensionar ventanas por la izquierda
- Revisin general de ENTER/LEAVE, parece que falle ej. botones de sistema

Features de la utilidad FPG:

- Propiedades de mltiples ficheros dentro de un FPG
- Portapapeles: copiar, cortar y pegar grficos (simple y mltiples)
- Opcin de cargar la paleta de un grfico nuevo o mezclarla con la actual
- Men contextual en mapas dentro de un FPG (duplicar, borrar...?)

Features de la GUI.DLL:

- Soporte de portapapeles grfico, para poder copiar y pegar bitmaps
- TABLE/LIST: redimensionamiento de columna no debe mover scroll vertical
- TABLE/LIST: revisin general del modo preview, especialmente con multiselect
- WINDOW: men contextual con opciones de abrir/cerrar/maximizar/etc
+ WINDOW: al redimensionar, evitar colisin entre controles
- MENU: Grficos a la izquierda de las opciones
- MENU: Teclas de acceso rpido a la derecha de las opciones
- MENU: MENU_RENAME, MENU_REMOVE, MENU_MOVE
- General: los procesos lanzados por BUTTON, MENU_ACTION, etc, deberan
	recibir algn parmetro (texto del botn/accin, id del control, etc)
- Opciones generales para no dibujar sombras p.ej.
- WINDOW: mover foco al principio tras HIDE/SHOW (?)
- INPUTLINE: Undo

Desplazadas hasta nuevas versiones:

- TABLE/LIST: columnas ocultables
- TABLE/LIST: men contextual para mostrar/ocultar columnas
- TABLE/LIST: columnas unidas (para poder hacer bitmap + texto en 1 columna)
- TABLE/LIST: columnas editables (usar un INPUT embebido?)
- General: permitir aadir seales a los controles (onchange, onclick, etc)
- Multipage (pseudo-contenedor) para ofrecer varias vistas o similar)
- Barras de scroll de tipo "fixed"

Grficos:

- Iconos para cada fichero
- Iconos para cuadros de mensaje
- Iconos para herramientas (aadir, borrar, herramientas de edicin bitmap...)

Cuadros de dilogo:

- Seleccin de color (paleta/grid)

Nuevos controles:

- Progress bar
- Split view
- Spin Buttons
- Combo boxes (usar container con un input + un tool)
- Tree Control (usar una extensin de TABLE)
- Directory List (TABLE o TREE)
- Editor multi-lnea
- Color grid

Future features:

- Ventanas con caching de contenido en un bitmap
- Ventanas translcidas realmente (gr_text_put con alpha!)
- Navegacin por teclas de cursor adems de TAB/SHIFT-TAB
- Icono de ventana
- Dibujo de controles temificable con rutinas made in the user
- Controles deshabilitados (checkboxes, botones, inputs...)

------------------------------------------------------------------------
Descripcin del funcionamiento del nuevo algoritmo de redimensionamiento
------------------------------------------------------------------------

La idea bsica consiste en la creacin de lneas de tensin. Una lnea
de tensin une dos controles cercanos, o bien un control con uno de los
bordes de la ventana, de manera que establece una relacin de distancia
inamovible.

Las lneas de tensin crean una relacin de dependencia, de manera
que se establecen series de lneas. Por ejemplo, una lnea fuerza un
control a unirse al borde inferior de la ventana, pero otra lnea
fuerza al control a no separarse de otro control, el cual a su vez
est unido al borde superior de la ventana. Al desplazar el borde
inferior, las lneas deben permanecer estticas, por lo que al menos
uno de estos dos controles debe variar de tamao. La rutina debe ser
lo bastante inteligente como para distribuir el cambio de tamao
entre ambos controles de forma ptima.

El funcionamiento en lneas generales del algoritmo de redimensionado 
de una ventana es:

- Buscar todas las lneas en contacto con el borde desplazado

- Por cada lnea encontrada, establecer una serie de lneas entre
  los controles relacionados. Por cada control del que parten
  dos o ms lneas adicionales, crear una nueva serie entera.

- Por cada control, crear un array de valores con el tamao
  asignado actualmente.

- Ordenar las series por orden de prioridad. Las series con ms
  limitaciones de tamao entre los controles van primero.

- Por cada serie, repartir el valor de desplazamiento total entre
  los controles redimensionados. Si un control ya tiene un valor
  elegido de tamao, dividir lo que queda entre resto.

- Recorrer cada serie desplazando los controles que aparecen
  en ella a sus nuevas posiciones.

Actualmente las series de lneas (paths) no se ordenan, sino que el
programa coge una cualquiera.
