Ajustes del conductor / IU dinámica
Objetivo y uso
Cada controlador y componente del flujo de trabajo contiene un script XML. Describe la interfaz de usuario en la aplicación Dashboard o RIP (Front-end).
El front-end utiliza este XML para construir una interfaz de usuario (UI), para que los usuarios puedan cambiar la configuración. Esta interfaz de usuario tiene varios elementos, como casillas de verificación, ventanas emergentes, cuadros de grupo, etc.
Por supuesto, tenemos que asegurarnos:
- Mostrar la configuración actual en la interfaz de usuario
- Cambiar la configuración actual según los cambios en la interfaz de usuario
Pero además, tenemos que hacerlo:
- indicar al front-end qué valores por defecto deben utilizarse en la interfaz de usuario
- desactivar ajustes específicos si están predeterminados por el PrinterProfile
- marcar las combinaciones no válidas con un símbolo de advertencia
- generar una cadena legible para el usuario, que muestre todos los ajustes ( para los textos fly by )
El XML genera elementos de interfaz para el usuario, que permiten cambiar la configuración. Cuando el usuario cierra un diálogo, los ajustes se ponen en un XML de resultados.
Los posibles elementos de la interfaz de usuario son:
- POPUP
- PUNTO
- CHECK
- RADIO
- EDITAR
- ETIQUETA
- IMAGEN
- BOTÓN
- GRUPO
- TABGROUP
- TAB
Todos los elementos de la interfaz de usuario tienen algunos atributos posibles, junto con un valor.
Posibles atributos:
- ID ( si es necesario referenciarlos )
- label ( su nombre en la UI )
- selected ( el ID del ITEM que está actualmente seleccionado )
Secciones
El XML suele tener la siguiente estructura:
- UI
- PÁGINA
- Objetos
- IMÁGENES
- PÁGINA
UI
Este nodo puede contener 1 o más nodos PAGE y la lista global IMAGES.
PÁGINA
Un nodo PAGE contiene todos los elementos de la interfaz de usuario de 1 componente. Un conductor representará sólo 1 página. Los nodos PAGE se utilizan para construir un diálogo de configuración con una franja de cabecera (ver Preferencias en el Editor o QueueManual? en RIP).
Atributo | Descripción |
---|---|
*ID | ID de página |
ETIQUETA | Título de la página |
IMAGEN | ID de la imagen |
IMÁGENES
La lista de imágenes contiene la lista de imágenes disponibles globalmente a las que se puede hacer referencia por su ID. Ver para más información IMAGEN en las secciones de OBJETOS.
Cada etiqueta IMAGE tiene los siguientes atributos obligatorios:
Atributo | Descripción |
---|---|
*ID | ID de página |
El valor de la etiqueta contiene los datos codificados en hexadecimal de la imagen en formato PSD.
Objetos
Todas las etiquetas de los objetos de la interfaz de usuario no tienen valores XML. Esto significa que cualquier objeto puede tener hijos, como las acciones de UI.
Todos los ID de interfaz de usuario no deben tener espacios vacíos en sus nombres.
Atributos generales (opcional):
Atributo | Descripción |
---|---|
ANCHO | La anchura fija del objeto en píxeles |
ALTURA | La altura fija del objeto en píxeles |
TAB | El orden de las pestañas del objeto |
IMAGEN | ID de imagen, coloque una imagen delante de la ETIQUETA |
POPUP
Este elemento de la interfaz de usuario denomina una lista de elementos de los que se selecciona uno. Sus elementos son del tipo «ITEM» y tienen dos atributos ( ID y etiqueta ) y un valor. El ID se utiliza para referenciarlas, la etiqueta es el texto que se muestra en la UI, el valor es lo que se pone en el XML de resultados.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Título del menú emergente |
valor | ID del elemento seleccionado por defecto |
PUNTO
Atributos ITEM (elementos del menú de la ventana emergente):
Atributo | Descripción |
---|---|
*ID | ID del artículo |
*ETIQUETA | Título del artículo |
*valor | Valor directo del artículo |
CHECK
Este elemento de interfaz de usuario presenta una casilla de verificación al usuario.
Sus elementos son de tipo «CHECK» y tienen dos atributos ( ID y etiqueta ) y un valor.
El ID se utiliza para referenciarlas, la ETIQUETA es el texto que se muestra en el resumen de la configuración que se muestra cuando se apunta a una cola (FlyBy/Tooltip), el valor es lo que se pone en el XML de resultados.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Título del control de la casilla de verificación |
valor | ON» o «OFF», especifica que la casilla de verificación/grupo de verificación está activada o desactivada en la creación. Cuando un nodo de casilla de verificación contiene hijos, se convierte en un grupo con una etiqueta de verificación. |
RADIO
Este elemento de la interfaz de usuario denomina una lista de elementos, (pueden ser botones de radio, o también se puede utilizar una ventana emergente), de los cuales se selecciona uno. Sus elementos son del tipo «ITEM» y tienen dos atributos ( ID y etiqueta ), además de un valor. El ID se utiliza para referenciarlas, la etiqueta es el texto que se muestra en la UI, el valor es lo que se pone en el XML de resultados.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Título de radiocontrol |
valor | ON» o «OFF», especifica que el botón de radio/grupo de radio está activado o desactivado en la creación. Cuando un botón de radio contenga hijos, se convertirá en un grupo que se activará o desactivará mediante un botón de radio situado delante de él. |
SLIDER
Al usuario se le presenta un elemento de la interfaz de usuario (puede ser un deslizador, pero podría ser un campo de texto), que tiene un valor mínimo y máximo entre los que el usuario puede elegir.
El atributo «ID» se utiliza para referenciarlas, el atributo «label» es el texto que se muestra en la UI, el valor es lo que se pone en el XML de resultado.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Título del control deslizante |
MIN | Valor mínimo del deslizador. Si no se especifica, se utiliza 0. |
MAX | Valor máximo del deslizador. Cuando no se especifica se utiliza 100. |
FLECHAS | ON’ o ‘OFF’, mostrar u ocultar las flechas arriba/abajo. Si no se especifica, se utiliza «ON». |
SLIDER | ‘ON’ o ‘OFF’, mostrar u ocultar el control deslizante real. Por defecto es OFF |
TIPO | INTEGRO’, ‘UNIDADES’, ‘PORCENTAJE’ o ‘ÁNGULO’. Representa la unidad de valor del deslizador. Si no se especifica, se utiliza «INTEGER». |
valor | Valor inicial del deslizador. Cuando no se especifica se utiliza la mitad de MIN + MAX. |
ENTRADA
Al usuario se le presenta un elemento de interfaz de usuario ( puede ser un cuadro de edición, o un deslizador ), que tiene un valor mínimo y máximo . Cuando el usuario introduce un valor fuera del rango, el botón OK del cuadro de diálogo debe estar desactivado.
El atributo «ID» se utiliza para referenciarlas, el atributo «label» es el texto que se muestra en la UI, el valor es lo que se pone en el XML de resultado.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Editar el título de la caja |
MIN | Valor mínimo de la caja de edición. |
MAX | Valor máximo de la caja de edición. |
TIPO | TEXTO», «INTEGRO», «UNIDADES», «PORCENTAJE» o «ÁNGULO». Representa la unidad de valor de la edición. Si no se especifica, se utiliza «TEXTO». |
READONLY | ON» o «OFF», el valor por defecto si no está presente es «OFF», el control es editable |
valor | Valor o contenido inicial de la caja de edición. |
TEXTAREA
Área libre para introducir texto o para mostrarlo (sólo lectura). Puede ser un campo de edición multilínea.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Editar el título de la caja |
READONLY | ON» o «OFF», especifica si el área de texto se establecerá como de sólo lectura o editable. Cuando no se establece se asume que es editable. |
valor | Valor o contenido inicial de la caja de edición. |
BOTÓN
El elemento UI de botón crea un botón pulsador.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Título del botón |
FOLDERBTN
Representa un botón de selección de carpetas o archivos. Este botón presentará un selector de carpetas o archivos que buscará remotamente el ordenador que el nodo especificó. Por lo tanto, este tipo sólo puede utilizarse con nodos vinculados a un ordenador.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Título del botón |
TIPO | ‘FILE’ o ‘FOLDER’, especifica si el navegador selecciona archivos o carpetas. |
FILTRO | Filtro opcional para el navegador |
valor | Ruta por defecto |
IMAGEN
Este elemento de la interfaz de usuario se utiliza para poner una imagen en la interfaz de usuario.
Su atributo «LABEL» determina la imagen a utilizar. Cuando el valor está vacío se busca la imagen en la lista de IMÁGENES.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
*ETIQUETA | Nombre de la imagen, el ID de la lista global de imágenes |
GRUPO
Este elemento de la interfaz de usuario representa los elementos del GRUPO en un marco, mostrando que están juntos.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Título del marco del grupo |
TABGROUP
Este elemento de interfaz de usuario es un grupo de pestañas que comprende varias pestañas, que pueden contener varios elementos de interfaz de usuario. El TABGROUP debe encapsular un mínimo de 1 elemento TAB.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
valor | El ID de la pestaña seleccionada por defecto. |
TAB
El elemento pestaña representa la pestaña en un TABGROUP y contiene otros múltiples elementos de la UI.
Atributo | Descripción |
---|---|
*ID | ID del artículo |
ETIQUETA | Título de la ficha |
LAYOUT
Los diseños definen cómo se colocan sus elementos hijos en la interfaz de usuario. Se definen tres tipos de disposiciones: horizontal, vertical y de cuadrícula. Los diseños no tienen un ID, por lo que son transparentes en cuanto a las propiedades de la interfaz de usuario. Pueden insertarse en cualquier punto del archivo XML y pueden contener otros diseños como hijos. Cuando no se utiliza ninguna disposición, el sistema utiliza por defecto disposiciones verticales. La forma más común de definir diseños complejos es utilizar diseños verticales y horizontales como en el siguiente ejemplo que coloca dos casillas de verificación en la primera línea, una en una sola línea y otras tres en otra línea:
<UI> <PAGE ID="page1" LABEL="Page One"> <VERTICAL> <HORIZONTAL> <CHECK ID="check1" LABEL="Check1"></CHECK> <CHECK ID="check2" LABEL="Check2"></CHECK> </HORIZONTAL> <CHECK ID="check3" LABEL="Check1"></CHECK> <HORIZONTAL> <CHECK ID="check4" LABEL="Check4"></CHECK> <CHECK ID="check5" LABEL="Check5"></CHECK> <CHECK ID="check6" LABEL="Check6"></CHECK> </HORIZONTAL> </VERTICAL> </PAGE> </UI>
HORIZONTAL
Atributo | Descripción |
---|---|
ALINEAR | (Opcional) Define cómo se alinean los elementos hijos. Los valores posibles son JUSTIFY, CENTER, LEFT, RIGHT |
Un diseño horizontal colocará todos sus elementos hijos en la misma línea en la UI.
Justificar ( por defecto ): los elementos de la interfaz ocuparán todo el ancho. Centro: se añadirá un espacio vacío tanto a la izquierda como a la derecha de los elementos hijos (que se situarán en el centro y crecerán según sea necesario). Izquierda: espacio vacío añadido a la derecha. Derecha: espacio vacío añadido a la izquierda. Parece obvio, pero vale la pena mencionarlo.
VERTICAL
Atributo | Descripción |
---|---|
ALINEAR | (Opcional) Define cómo se alinean los elementos hijos. Los valores posibles son JUSTIFY, CENTER, LEFT, RIGHT |
Un diseño vertical colocará todos sus elementos hijos uno debajo de otro.
GRID
Un diseño de cuadrícula utiliza una tabla similar a la de HTML para colocar los elementos. La etiqueta GRID informa al sistema de que se inicia un diseño de cuadrícula. La estructura real está determinada por otras dos etiquetas: FILA y CELDA. La etiqueta ROW indica que comienza una nueva línea de elementos. La etiqueta CELL define el contenido de una celda de la tabla.
Atributo | Descripción |
---|---|
colspan | (Opcional) Define cuántas columnas abarcará la celda actual |
rowspan | (Opcional) Define cuántas filas abarcará la celda actual |
Acciones
En el XML también podemos definir acciones que involucren a los elementos de la UI. Una acción se define a nivel de un objeto que es controlado por esta acción, añadiendo un nodo hijo de CONDITION a la misma. Una directiva de condición se compone de tres elementos que definen la acción y la condición en la que se realiza dicha acción.
Etiqueta CONDICIÓN
Atributo | Descripción |
---|---|
*Estado | Especifica la acción que se realizará sobre el objeto |
*propiedad | El nombre de la propiedad que se evaluará |
*valor | El valor de la propiedad |
La interfaz de usuario tiene un sistema de propiedades. Esto ofrece a los usuarios la posibilidad de dirigirse al valor de cualquier control de interfaz de usuario definido en el mismo XML (en diferentes páginas también, si el componente tiene más de una página). Un nombre de propiedad es una cadena separada por puntos que contiene los nombres de todos los elementos desde el elemento de la página hasta el elemento previsto. La última cadena es la propiedad real de ese control.
Hay varias propiedades de control:
valor | El valor real del control tal y como se especifica en las definiciones |
---|---|
visible | ON si el control es visible, OFF en caso contrario |
invisible | ON si el control es invisible, OFF en caso contrario |
habilitado | ON si el control está activado, OFF en caso contrario |
discapacitados | ON si el control está desactivado, OFF en caso contrario |
selección | Devolverá el ID del ITEM seleccionado de un POPUP en lugar del valor actual ( devolverá el valor para otros tipos de controles ) |
El estado indica qué acción debe realizarse cuando el valor de la propiedad devuelto durante el tiempo de ejecución es igual al valor especificado en la condición. Posibles acciones:
visible | el control se mostrará sólo cuando se cumpla la condición |
---|---|
invisible | el control se ocultará cuando se cumpla la condición |
habilitado | el control se activará sólo cuando se cumpla la condición |
discapacitados | el control se desactivará cuando se cumpla la condición |
valor | el valor del control obtendrá el valor de la propiedad. Útil para mostrar algo en un control de edición. El valor de CONDITION se ignora. |
selección | utilizado para el POPUP: el POPUP seleccionará el elemento que sea igual al valor en tiempo de ejecución de la propiedad. El valor de CONDITION se ignora. |
En el siguiente ejemplo, el control de edición de texto llamado «Edit1» se habilitará sólo cuando la casilla de verificación «check1» esté marcada, mientras que el control de edición «Edit1» del «Grupo2» ( fíjese en que podemos utilizar el mismo ID siempre que tengan diferentes padres ) mostrará el valor del botón de carpeta «Folder1» ( la ruta seleccionada ).
<PAGE ID="Page"> <GROUP ID="Group" LABEL="Group"> <CHECK ID="check1" LABEL="Check"></CHECK> <INPUT ID="Edit1"> <CONDITION state="enabled" property="Page.Group.check1.value" value="ON"> </INPUT> <FOLDERBTN ID="Folder1" value="C:\"></FOLDERBTN> </GROUP> <GROUP ID="Group2" LABEL="Group"> <INPUT ID="Edit1"> <CONDITION state="value" property="Page.Group2.Folder1.value" value=""> </INPUT> </GROUP> </PAGE>
Sistema de configuración
El sistema UI Host ofrece la posibilidad de cargar y guardar los ajustes de la interfaz. Si los objetos de la interfaz de usuario ya se muestran (al cargar la configuración), entonces mostrarán automáticamente la nueva configuración cargada.
Los ajustes se guardan en un archivo XML. El objetivo es mantener estos archivos de configuración limpios, pequeños y fáciles de leer por los humanos, por lo que se aplican las siguientes reglas:
- Los objetos que no guardan valores, como un STATIC, no guardarán nada en el archivo de configuración.
- Un objeto guarda su valor como el valor de una etiqueta nombrada con el ID de ese objeto.
<PAGE> <GROUP ID="Group1"> <INPUT ID="TextEdit1" value="test text"></INPUT> </GROUP> <GROUP ID="Group2"> <STATIC ID="static1" LABEL="Text"></STATIC> </GROUP> <CHECK ID="check" value="OFF"> <INPUT ID="TextEdit2" value="test text"></INPUT> </CHECK> <CHECK ID="check2" value="OFF"> <RADIO ID="r1" value="OFF">
<RADIO ID="r2" value="ON">
</PAGE>
genera los ajustes:
<Group1> <TextEdit>test text</TextEdit> </Group1> <check2>OFF</check2> <r2>ON</r2>
- Se mantiene la estructura de árbol de la interfaz de usuario.
- Los grupos que no tienen objetos capaces de generar ajustes no se guardan en absoluto. ( Grupo2 anterior )
- Los grupos de control se guardarán sólo si están marcados. Si en el ejemplo anterior el grupo de comprobación «check» tuviera el valor ON, la configuración contendría:
<check> <TextEdit2>test text</TextEdit2> </check>
- Los botones de radio sólo guardan el objeto activo, r2 en nuestro caso.
Ejemplo
Un ejemplo xml: MARCADOR 1
Este XML da lugar a esta interfaz de usuario:
Los valores por defecto se rellenan.
Cuando se hace clic en la ventana emergente de los medios de comunicación, sus elementos se hacen visibles. En el ejemplo, la implementación de la interfaz de usuario pone » (!)» detrás de todas las opciones, lo que resulta en una configuración de controlador no válida. Si el usuario selecciona «Papel normal» en esta ventana emergente, los ajustes no serán válidos ( y el botón OK aparecerá fantasma )
En esta aplicación, los ajustes conflictivos se identifican con los símbolos que aparecen delante de ellos:
El usuario puede corregir esta configuración defectuosa cambiando la configuración de DPI o de medios.
Para saber qué ajustes están en conflicto, el XML contiene CONSTRAINS.
CONSTRAINS
Los elementos de una tabla CONSTRAIN se denominan «CONSTRAIN» y tienen atributos que vienen en pares:
IDx y SEL_ID_x, donde la x es un número.
Cuando la selección actual coincide con una CONSTRAIN ( todos los elementos tienen los valores de una CONSTRAIN ) entonces la combinación no es válida. En el ejemplo la línea con:
ID1=»DPI» SEL_ID_1=»DPI_720″ ID2=»Medios de comunicación» SEL_ID_2=»Medios de comunicación_Plain»
significa que cuando el elemento «DPI» está ajustado a =»DPI_720″ y el elemento =»Media» está ajustado a =»Media_Plain» los ajustes no son válidos. ( esta combinación de DPI y MEDIA )
containerString
Cuando un elemento de la interfaz de usuario tiene el atributo containerString, la entrada en el XML resultante para este elemento no debe ser el valor ITEM directamente. En su lugar, las secuencias «$#» del containerString deben sustituirse por el valor del ITEM elegido, y la cadena resultante debe introducirse en el XML resultante.
ejemplo:
containerString=»HEATERS=$# $#»
ITEM = «123» entonces el XML resultante debería contener «HEATERS=123 123».
Resultado XML
El XML resultante ( la versión abreviada de la configuración actual ) está compuesto por los elementos ID y el valor del ITEM seleccionado. Si el atributo containerString está presente, se utiliza esta cadena con los $# sustituidos por el valor del ITEM seleccionado. En lugar de «DynamicUI» se utiliza la etiqueta «DS». MARCADOR 2
Esquema XML
El esquema XML con el que se puede comparar el XML se encuentra en http://www.aurelon.com/XML/Driver_Settings.xsd
El XDS también puede descargarse desde aquí: Driver_Settings.xsd.
Ejemplo
Ajustes del conductor (del conductor)
<?xml version="1.0" encoding="UTF-8" ?> <DriverSettings> <POPUP ID="DPI" label="DPI:" selected="DPI_720"> <ITEM ID="DPI_360" label="360x360">360</ITEM> <ITEM ID="DPI_360_720" label="360x720">slightly better</ITEM> <ITEM ID="DPI_720" label="Higest possible">720</ITEM> </POPUP> <POPUP ID="Media" label="Media:" selected="Media_Canvas"> <ITEM ID="Media_Plain" label="Plain paper">1010</ITEM> <ITEM ID="Media_Canvas" label="Canvas">4000</ITEM> <ITEM ID="Media_Coated" label="Coated Paper">1100</ITEM> </POPUP> <CHECKBOX ID="Cutter" label="Cutter" selected="Cutter_On" changable="true"> <CHECK ID="Cutter_Off" label="Off">NOCUT</CHECK> <CHECK ID="Cutter_On" label="On">CUT</CHECK> </CHECKBOX> <CONSTRAINS> <CONSTRAIN ID1="DPI" SEL_ID_1="DPI_720" ID2="Media" SEL_ID_2="Media_Plain"/> <CONSTRAIN ID1="DPI" SEL_ID_1="DPI_360_720" ID2="Media" SEL_ID_2="Media_Plain" ID3="Cutter" SEL_ID_3="Cutter_On"/> </CONSTRAINS> </DriverSettings>
Resultado de la configuración del conductor (al conductor)
<?xml version="1.0" encoding="UTF-8" ?> <DS> <DPI>slightly better</DPI> <Media>4000</Media> <Cutter>CUT</Cutter> </DS>