Interfaz del conductor XML

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
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:

ui_example_1

Los valores por defecto se rellenan.

ui_example_2

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:

ui_example_3

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>