1. 知识库
  2. 驱动程序 UI XML

驱动程序 UI XML

驱动程序设置/动态用户界面

目标和用途

每个驱动程序和工作流组件都包含一个 XML 脚本。 这描述了仪表板或 RIP 应用程序(前端)中的用户界面。

前端使用此 XML 构建用户界面 (UI),以便用户可以更改设置。 此 UI 具有各种元素,例如复选框、弹出窗口、组框等。

当然,我们必须确保我们:

  • 在 UI 中显示当前设置
  • 根据 UI 中的更改更改当前设置

但除此之外,我们还必须:

  • 指示前端应在 UI 中使用哪些默认值
  • 如果特定设置是由 PrinterProfile 预先确定的,则禁用它们
  • 使用警告符号将无效组合标记为关闭设置
  • 生成一个用户可读的字符串,显示所有设置(通过文本飞行)

XML 为用户生成 UI 元素,从而可以更改设置。 当用户关闭对话框时,设置会被放入结果 XML。

可能的 UI 元素是:

  • 弹出窗口
    • 物品
  • 查看
  • 收音机
  • 编辑
  • 标签
  • 图片
  • 按钮
  • 团体
  • 泰布集团
    • 标签

所有 UI 元素都有一些可能的属性以及一个值。

可能的属性:

  • ID(如果需要引用)
  • 标签(他们在 UI 中的名字)
  • selected(当前选中的 ITEM 的 ID)

部分

XML 通常具有以下结构:

  • 用户界面
      • 对象
    • 图片
用户界面

该节点可以包含 1 个或多个 PAGE 节点和全局 IMAGES 列表。

PAGE 节点包含 1 个组件的所有用户界面元素。 驱动程序将仅代表 1 页。 PAGE 节点用于构建带有标题条的设置对话框(请参阅 Editor 中的 Preferences 或 RIP 中的QueueManual? )。

属性 描述
*ID 页面编号
标签 页面标题
图片 图像 ID
图片

图像列表包含可通过其 ID 引用的全局可用图像列表。 有关更多信息,请参阅对象部分中的图像。

每个 IMAGE 标签都具有以下强制性属性:

属性 描述
*ID 页面编号

标签的值包含 PSD 格式的图像的十六进制编码数据。

对象

所有用户界面对象标签都没有 XML 值。 这意味着任何对象都可以有子对象,例如 UI 操作。

所有用户界面 ID 的名称中不得包含空格。

一般属性(可选):

属性 描述
宽度 对象的固定宽度(以像素为单位)
高度 对象的固定高度(以像素为单位)
标签 对象的跳位顺序
图片 图片ID,在LABEL前面放一张图片
弹出窗口

此 UI 元素指定从中选择一项的项目列表。 它的项目属于“ITEM”类型,它们有两个属性( ID 和 label )和一个值。 ID 用于引用它们,标签是 UI 中显示的文本,值是放入结果 XML 中的内容。

属性 描述
*ID 商品编号
标签 弹出菜单标题
价值 默认选中项的ID
物品

ITEM 属性(弹出菜单项):

属性 描述
*ID 商品编号
*标签 项目标题
*价值 项目的直接价值
查看

此 UI 元素向用户显示一个复选框。

它的项目属于“CHECK”类型,它们有两个属性( ID 和 label )和一个值。

ID 用于引用它们,LABEL 是设置摘要文本中显示的文本,当指向队列(FlyBy/Tooltip)时显示,值是放入结果 XML 的内容。

属性 描述
*ID 商品编号
标签 复选框控件标题
价值 “ON”或“OFF”,指定复选框/检查组在创建时启用或禁用。 当一个复选框节点包含子节点时,它将成为一个带有复选标签的组。
收音机

此 UI 元素指定一个项目列表(这些可以是单选按钮,也可以使用弹出窗口),从中选择一个。 它的项目属于“ITEM”类型,它们有两个属性( ID 和 label ),外加一个值。 ID 用于引用它们,标签是 UI 中显示的文本,值是放入结果 XML 中的内容。

属性 描述
*ID 商品编号
标签 无线电控制标题
价值 “ON”或“OFF”,指定在创建时启用或禁用单选按钮/单选组。 当单选按钮包含子项时,它将成为一个组,将通过其前面的单选按钮启用或禁用。
滑块

向用户呈现一个 UI 元素(可以是滑块,但也可以是文本字段),该元素具有用户可以选择的最小值和最大值。

属性“ID”用于引用它们,属性“label”是 UI 中显示的文本,值是放入结果 XML 的内容。

属性 描述
*ID 商品编号
标签 滑块控件标题
最小 滑块的最小值。 未指定时使用 0。
最大限度 滑块的最大值。 如果未指定,则使用 100。
箭头 “开”或“关”,显示或隐藏向上/向下箭头。 如果未指定,则使用“ON”。
滑块 ‘ON’ 或 ‘OFF’,显示或隐藏实际的滑块控件。 默认为关闭
类型 “整数”、“单位”、“百分比”或“角度”。 这表示值的滑块单位。 如果未指定,则使用“INTEGER”。
价值 初始滑块值。 如果未指定,则使用 MIN + MAX 的一半。
输入

用户会看到一个 UI 元素(可以是编辑框或滑块),该元素具有最小值和最大值。 当用户输入超出范围的值时,应禁用对话框的 OK 按钮。

属性“ID”用于引用它们,属性“label”是 UI 中显示的文本,值是放入结果 XML 的内容。

属性 描述
*ID 商品编号
标签 编辑框标题
最小 编辑框的最小值。
最大限度 编辑框的最大值。
类型 “文本”、“整数”、“单位”、“百分比”或“角度”。 这表示值的编辑单位。 如果未指定,则使用“TEXT”。
只读 ‘ON’ 或 ‘OFF’,如果不存在,默认值为 ‘OFF’,控件是可编辑的
价值 初始编辑框值或内容。
文本区域

用于输入文本或显示文本的空闲区域(只读)。 这可以是多行编辑字段。

属性 描述
*ID 商品编号
标签 编辑框标题
只读 ‘ON’ 或 ‘OFF’,指定文本区域将设置为只读还是可编辑。 未设置时假定为可编辑。
价值 初始编辑框值或内容。
按钮

按钮 UI 元素创建一个按钮。

属性 描述
*ID 商品编号
标签 按钮标题
文件夹

表示文件夹或文件选择器按钮。 此按钮将显示一个文件夹或文件选择器,它将远程浏览指定节点的计算机。 因此,这种类型只能与计算机绑定节点一起使用。

属性 描述
*ID 商品编号
标签 按钮标题
类型 ‘FILE’ 或 ‘FOLDER’,指定浏览器是否选择文件或文件夹。
筛选 浏览器的可选过滤器
价值 默认路径
图片

此 UI 元素用于将图像放入 UI。

它的属性“标签”决定使用哪个图像。 当值为空时,将在 IMAGES 列表中搜索图像。

属性 描述
*ID 商品编号
*标签 图片名称,全局图片列表中的ID
团体

这个 UI 元素在一个框架中表示 GROUP 中的元素,表明它们属于一起。

属性 描述
*ID 商品编号
标签 组框的标题
泰布集团

此 UI 元素是一个包含多个选项卡的选项卡式组,其中可以包含多个 UI 元素。 TABGROUP 需要封装最少 1 个 TAB 元素。

属性 描述
*ID 商品编号
价值 默认选定选项卡的 ID。
标签

tab 元素表示 TABGROUP 中的选项卡,并包含多个其他 UI 元素。

属性 描述
*ID 商品编号
标签 选项卡的标题

布局

布局定义了其子元素在用户界面中的放置方式。 定义了三种类型的布局:水平、垂直和网格布局。 布局没有 ID,因此它们在用户界面属性方面是透明的。 它们可以插入 XML 文件中的任何位置,并且可以包含其他布局作为子布局。 不使用布局时,系统默认使用垂直布局。 定义复杂布局的最常见方法是使用垂直和水平布局,如下例所示,将两个复选框放在第一行,一个放在一行,另外三个放在另一行:

<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>
水平的
属性 描述
对齐 (选修的) 定义子元素如何对齐。 可能的值是 JUSTIFY、CENTER、LEFT、RIGHT

水平布局会将其所有子元素放在 UI 中的同一行。

对齐(默认):界面元素将占据整个宽度。 中心:将在子元素的左侧和右侧添加一个空白空间(它将位于中间并根据需要增长)。 左:添加到右侧的空白区域。 右:左侧添加了空白区域。 看起来很明显,但值得一提!

垂直的
属性 描述
对齐 (选修的) 定义子元素如何对齐。 可能的值是 JUSTIFY、CENTER、LEFT、RIGHT

垂直布局会将其所有子元素置于另一个之下。

网格

网格布局使用类似于 HTML 表格的表格来放置元素。 GRID标签通知系统网格布局开始。 实际结构由另外两个标签决定: ROWCELL 。 ROW 标签指示新的元素行开始。 CELL 标签定义表格中单元格的内容。

属性 描述
科尔斯潘 (可选)定义当前单元格将跨越多少列
行跨度 (可选)定义当前单元格将跨越多少行

行动

在 XML 中,我们还可以定义涉及 UI 元素的操作。 通过向其添加CONDITION子节点,在受此操作控制的对象级别定义操作。 条件指令由三个项目组成,这些项目定义了动作和执行该动作的条件。

标记条件

属性 描述
*状态 指定将对对象执行的操作
*财产 将被评估的属性的名称
*价值 财产的价值

UI 有一个属性系统。 这使用户能够处理在同一 XML 中定义的任何 UI 控件的值(如果组件有多个页面,也可以在不同的页面上)。 属性名称是一个用点分隔的字符串,其中包含从页面元素到预期元素的所有元素的名称。 最后一个字符串是该控件的实际属性。

有几个控件属性:

价值 上面定义中指定的控件的实际值
可见的 如果控件可见,则为 ON,否则为 OFF
无形的 如果控件不可见,则为 ON,否则为 OFF
启用 如果控制启用,则为 ON,否则为 OFF
禁用 如果控件被禁用,则为 ON,否则为 OFF
选择 将返回 POPUP 的选定 ITEM 的 ID 而不是实际值(将返回其他类型控件的值)

状态告诉当运行时返回的属性值等于条件中指定的值时应该执行什么操作。 可能的行动:

可见的 仅当满足条件时才会显示控件
无形的 当条件满足时控件将被隐藏
启用 仅当满足条件时才会启用控件
禁用 当条件满足时,控件将被禁用
价值 控件的值会得到属性的值。 用于在编辑控件中显示某些内容。 CONDITION 值被忽略。
选择 用于 POPUP:POPUP 将选择等于属性运行时值的项目。 CONDITION 值被忽略。

在下面的示例中,名为“Edit1”的文本编辑控件仅在选中“check1”复选框时才会启用,而“Group2”中的编辑控件“Edit1”(注意我们如何使用相同的 ID,只要它们有不同的父母)将显示文件夹按钮“Folder1”(所选路径)的值。

<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>
设置系统

UI Host 系统提供了加载和保存界面设置的可能性。 如果 UI 对象已经显示(在加载设置时),那么它们将自动显示新加载的设置。

设置保存在 XML 文件中。 目标是保持这些设置文件干净、小巧且易于人类阅读,因此应用以下规则:

  • 不保留值的对象(如 STATIC)不会在设置文件中保存任何内容。
  • 对象将其值保存为以该对象的 ID 命名的标记的值。
<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>

生成设置:

<Group1> 
    <TextEdit>test text</TextEdit>
</Group1>
<check2>OFF</check2>
<r2>ON</r2>
  • UI 的树形结构保持不变。
  • 没有能够生成设置的对象的组根本不会被保存。 (上面的第2组)
  • 仅当检查组被选中时才会保存检查组。 如果在上面的示例中,检查组“check”的值为 ON,则设置将包含:
<check>
   <TextEdit2>test text</TextEdit2>
</check>
  • 单选按钮只保存活动对象,在我们的例子中是 r2。
例子

一个示例 xml:MARKER 1

此 XML 生成此 UI:

ui_example_1

填写默认值。

ui_example_2

单击媒体弹出窗口时,其项目变为可见。 在示例中,UI 的实现将“(!)”放在所有选项后面,这导致驱动程序设置无效。 如果用户在此弹出窗口中选择“普通纸”,则设置将无效(并且确定按钮将被重影)

在这个实现中,冲突的设置用它们前面的符号来标识:

ui_example_3

用户可以通过更改 DPI 或媒体设置来纠正此错误设置。

要了解哪些设置存在冲突,XML 包含 CONSTRAINS。

约束

CONSTRAINS 表中的项目称为“CONSTRAIN”并且具有成对出现的属性:

IDx 和 SEL_ID_x,其中 x 是一个数字。

当当前选择与 CONSTRAIN 匹配时(所有元素都具有 CONSTRAIN 的值),则该组合无效。 在示例中,该行具有:

ID1=”DPI” SEL_ID_1=”DPI_720″ ID2=”媒体” SEL_ID_2=”Media_Plain”

表示当元素“DPI”设置为“DPI_720”且元素“Media”设置为“Media_Plain”时,设置无效。 (这种 DPI 和 MEDIA 的组合)

容器字符串

当 UI 元素具有属性 containerString 时,该元素的结果 XML 中的条目不应直接是 ITEM 值。 相反,containerString 的“$#”序列应替换为所选 ITEM 的值,并且应在结果 XML 中输入结果字符串。

例子:

containerString=”加热器=$# $#”

ITEM value = “123” 比结果 XML 应该包含 “HEATERS=123 123″。

结果 XML

结果 XML(当前设置的缩写版本)由元素 ID 和所选 ITEM 的值组成。 如果存在属性 containerString,则使用此字符串,其中 $# 替换为所选 ITEM 的值。 使用标签“DS”代替“DynamicUI”。 标记 2

XML 模式

XML 可以匹配的 XML Schema 位于http://www.aurelon.com/XML/Driver_Settings.xsd

XDS 也可以从这里下载:Driver_Settings.xsd。

例子

驱动程序设置(来自驱动程序)
<?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>
驱动程序设置结果(给驱动程序)
<?xml version="1.0" encoding="UTF-8" ?>
<DS>
    <DPI>slightly better</DPI>
    <Media>4000</Media>
    <Cutter>CUT</Cutter>
</DS>