ドライバー設定 / ダイナミックUI
目的・用途
各ドライバとワークフローコンポーネントには、XMLスクリプトが含まれます。 DashboardまたはRIPアプリケーション(フロントエンド)でのユーザーインターフェイスについて説明します。
フロントエンドは、このXMLを利用してユーザーインターフェース(UI)を構築し、ユーザーが設定を変更できるようにする。 このUIには、チェックボックス、ポップアップ、グループボックスなど、さまざまな要素があります。
もちろん、私たちは確認しなければなりません。
- 現在の設定をUIに表示する
- UIの変更に応じて現在の設定を変更する
でも、それに加えて、私たちは
- UIでどのデフォルト値を使用するかをフロントエンドに指示する。
- PrinterProfileであらかじめ設定されている場合は、特定の設定を無効にする。
- 無効な組み合わせの設定を警告記号でマークする
- すべての設定を示す、ユーザーが読める文字列を生成する(フライ・バイ・テキスト用)。
このXMLは、ユーザー向けにUI要素を生成し、設定の変更を可能にする。 ユーザーがダイアログを閉じたときに、設定内容が結果XMLに格納されます。
考えられるUI要素は以下の通りです。
- ポップアップ
- ITEM
- CHECK
- ラヂオ
- エディテージ
- レーベル
- IMAGE
- BUTTON
- グループ
- タブグループ
- TAB
すべてのUI要素には、値とともにいくつかの可能な属性があります。
可能な属性
- ID(参照する必要がある場合)
- ラベル (UIでの名前)
- selected ( 現在選択されているITEMのID )
セクション
XMLは、通常、以下のような構造をしている。
- ユーアイ
- ページ
- 対象物
- 画像
- ページ
ユーアイ
このノードには、1つ以上のPAGEノードとグローバルIMAGESリストを含めることができます。
ページ
PAGE ノードは、1 つのコンポーネントのすべてのユーザーインターフェイス要素を保持する。 ドライバーは1ページのみ表示されます。 PAGEノードは、ヘッダーストリップを持つ設定ダイアログを構築するために使用されます(EditorのPreferencesまたはRIPのQueueManual?を参照してください)。
アトリビュート | 商品説明 |
---|---|
*ID | ページID |
レーベル | ページタイトル |
IMAGE | 画像ID |
画像
画像リストには、グローバルに利用可能な画像のリストが含まれ、そのIDで参照することができる。 詳しくは、OBJECTSセクションのIMAGEをご覧ください。
各 IMAGE タグは、以下の属性を必須とする。
アトリビュート | 商品説明 |
---|---|
*ID | ページID |
タグの値には、PSD 形式の画像の 16 進数符号化されたデータが含まれる。
対象物
すべてのユーザインタフェースオブジェクトのタグは、XML 値を持たない。 つまり、UIアクションのように、どんなオブジェクトでも子供を持つことができるのです。
すべてのユーザーインターフェースIDの名前に空白があってはならない。
一般的な属性(オプション)。
アトリビュート | 商品説明 |
---|---|
幅 | オブジェクトの固定幅をピクセル単位で指定します。 |
高さ | オブジェクトの固定高さ(ピクセル単位 |
TAB | オブジェクトのタブ順序 |
IMAGE | 画像ID、LABELの前に画像を配置する |
ポップアップ
選択された項目のリストを表すUI要素である。 その項目は “ITEM “タイプで、2つの属性(ID、ラベル)と値を持つ。 IDはそれらを参照するためのもの、ラベルはUIに表示されるテキスト、値は結果のXMLに入れられるものです。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | ポップアップメニューのタイトル |
価値 | デフォルトの選択項目のID |
ITEM
ITEM Attributes(ポップアップのメニュー項目)。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
*LABEL | 項目名 |
*値 | 項目に対する直接価値 |
CHECK
ユーザーにチェックボックスを提示するUI要素です。
その項目は “CHECK “タイプで、2つの属性(ID、ラベル)と値を持っています。
IDはそれらを参照するために使用され、LABELはキューをポイントしたときに表示される設定概要テキスト(FlyBy/Tooltip)、値は結果XMLに入れられるものです。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | チェックボックスコントロールのタイトル |
価値 | ‘ON’ または ‘OFF’ は、チェックボックス/チェックグループが作成時に有効または無効になることを指定します。 チェックボックスノードが子供を含むと、チェックラベルを持つグループとなります。 |
ラヂオ
このUI要素は項目のリスト(これらはラジオボタン、またはポップアップを使用することができます)を表し、そこから1つを選択することができます。 アイテムは “ITEM “タイプで、2つの属性(ID、ラベル)と値を持っています。 IDはそれらを参照するためのもの、ラベルはUIに表示されるテキスト、値は結果のXMLに入れられるものです。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | ラジコンタイトル |
価値 | ‘ON’ または ‘OFF’ は、作成時にラジオボタン/ラジオグループの有効/無効を指定する。 ラジオボタンが子供を含む場合、それはグループとなり、その前にあるラジオボタンによって有効または無効にされます。 |
スライダー
ユーザーには、ユーザーが選択できる最小値と最大値を持つUI要素(これはスライダーの場合もありますが、テキストフィールドの場合もあります)が提示されます。
ID “という属性で参照し、”label “という属性でUIに表示されるテキスト、”value “という属性で結果のXMLに入れられるものです。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | スライダーコントロールのタイトル |
ミニ | スライダーの最小値。 指定しない場合は0を使用する。 |
マックス | スライダーの最大値。 指定しない場合は100を使用する。 |
ARROWS | ‘ON’または’OFF’で、上下の矢印を表示または非表示にします。 指定がない場合は、「ON」を使用する。 |
スライダー | ‘ON’ または ‘OFF’ で、実際のスライダーコントロールの表示/非表示を設定します。 デフォルトはOFF |
TYPE | ‘INTEGER’, ‘UNITS’, ‘PERCENTAGE’ または ‘ANGLE’ のいずれかです。 価値のあるスライダーの単位を表します。 指定がない場合は、「INTEGER」が使用される。 |
価値 | スライダーの初期値。 指定がない場合は,MIN+MAXの半分を使用する。 |
INPUT
ユーザーには、最小値と最大値を持つUI要素(エディットボックスやスライダーなど)が表示されます。 ユーザーが範囲外の値を入力した場合、ダイアログのOKボタンを無効化すること。
ID “という属性で参照し、”label “という属性でUIに表示されるテキスト、”value “という属性で結果のXMLに入れられるものです。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | エディットボックスのタイトル |
ミニ | エディットボックスの最小値。 |
マックス | エディットボックスの最大値。 |
TYPE | ‘TEXT’, ‘INTEGER’, ‘UNITS’, ‘PERCENTAGE’ または ‘ANGLE’ のいずれかです。 価値の編集単位を表します。 指定がない場合は「TEXT」が使用される。 |
READONLY | ON’ または ‘OFF’、存在しない場合のデフォルト値は ‘OFF’、コントロールは編集可 |
価値 | エディットボックスの初期値または内容。 |
テクスチャエリア
テキストを入力したり、テキストを表示するためのフリーエリア(読み取り専用)です。 複数行の編集フィールドにすることができます。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | エディットボックスのタイトル |
READONLY | ‘ON’ または ‘OFF’ は、テキストエリアを読み取り専用にするか編集可能にするかを指定します。 設定されていない場合は、編集可能であるものとする。 |
価値 | エディットボックスの初期値または内容。 |
BUTTON
button UI 要素は、プッシュボタンを作成します。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | ボタンタイトル |
フォルダーBTN
フォルダやファイルの選択ボタンを表す。 このボタンを押すと、ノードが指定したコンピュータをリモートでブラウズするフォルダまたはファイルセレクタが表示されます。 そのため、このタイプはコンピュータに接続されたノードにのみ使用することができます。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | ボタンタイトル |
TYPE | FILE’ または ‘FOLDER’ は、ブラウザがファイルまたはフォルダを選択するかどうかを指定します。 |
フィルター | ブラウザ用オプションフィルター |
価値 | デフォルトのパス |
IMAGE
UIに画像を入れるためのUI要素です。
属性 “LABEL “によって、使用する画像を決定する。 値が空の場合、画像はIMAGESリストで検索されます。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
*LABEL | 画像名、グローバル画像リストからのID |
グループ
GROUP内の要素を枠で囲んで表現し、それらが一体となっていることを示すUI要素です。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | グループ枠のタイトル |
タブグループ
このUI要素は、複数のタブで構成されるタブグループであり、複数のUI要素を含むことができる。 TABGROUP は、最小限の 1 つの TAB 要素をカプセル化することが要求される。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
価値 | デフォルトで選択されているタブのID。 |
TAB
タブ要素は TABGROUP 内のタブを表し、他の複数の UI 要素を保持する。
アトリビュート | 商品説明 |
---|---|
*ID | アイテムID |
レーベル | タブのタイトル |
レイアウト
レイアウトは、その子要素がユーザーインターフェースにどのように配置されるかを定義します。 レイアウトは、水平、垂直、グリッドの3種類が定義されています。 レイアウトはIDを持たないので、ユーザーインターフェイスのプロパティとしては透過的です。 レイアウトはXMLファイル内の任意の位置に挿入でき、他のレイアウトを子として含むことができます。 レイアウトを使用しない場合、デフォルトで縦長レイアウトを使用します。 複雑なレイアウトを定義する最も一般的な方法は、次のサンプルのように、縦と横のレイアウトを使用することです。このサンプルでは、2つのチェックボックスを最初の行に、1つを1行に、他の3つを別の行に配置します。
<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
アトリビュート | 商品説明 |
---|---|
ALIGN | (オプション) 子要素の整列方法を定義する。 設定可能な値は、JUSTIFY、CENTER、LEFT、RIGHTです。 |
水平レイアウトでは、すべての子要素がUI上の同じ行に配置されます。
両端揃え(デフォルト):インターフェイス要素の幅を全て使用します。 中央:子要素の左と右の両方に、空のスペースが追加されます(中央に位置し、必要に応じて拡大されます)。 左:右側に空いたスペースを追加。 右:左側に追加された空のスペース。 当たり前のようですが、特筆すべきことです
縦型
アトリビュート | 商品説明 |
---|---|
ALIGN | (オプション) 子要素の整列方法を定義する。 設定可能な値は、JUSTIFY、CENTER、LEFT、RIGHTです。 |
垂直レイアウトでは、すべての子要素が他の子要素の下に配置されます。
グリッド
グリッドレイアウトは、HTMLのテーブルに似たテーブルを使用して要素を配置するものです。 GRIDタグは、グリッドレイアウトの開始をシステムに通知するものである。 実際の構造は、他の2つのタグによって決定される。ROWと CELLです。 ROWタグは、新しい行の要素を開始することを指示する。 CELL タグは、表中のセルの内容を定義する。
アトリビュート | 商品説明 |
---|---|
コルスパン | (オプション) 現在のセルが何列のスパンになるかを定義します。 |
ロースパン | (オプション) 現在のセルが何行に及ぶかを定義します。 |
アクション
また、XMLでは、UI要素に関わるアクションを定義することができます。 アクションは、このアクションによって制御されるオブジェクトのレベルで、CONDITIONの子ノードを追加することによって定義されます。 条件指令は、動作とその動作が行われる条件を定義する3つの項目で構成される。
タグCONDITION
アトリビュート | 商品説明 |
---|---|
*状態 | オブジェクトに対して実行されるアクションを指定する |
* プロパティ | 評価されるプロパティの名前 |
*値 | プロパティの値 |
UIには、プロパティシステムがあります。 これにより、ユーザーは同じXMLで定義された任意のUIコントロールの値を(コンポーネントが複数のページを持つ場合は、異なるページ上でも)アドレス指定できるようになります。 プロパティ名は、ページ要素から目的要素までの全ての要素名をドット区切りで記述した文字列である。 最後の文字列は、そのコントロールの実際のプロパティです。
いくつかの制御プロパティがあります。
価値 | 上記の定義で規定されたコントロールの実測値 |
---|---|
目に見える | コントロールが表示されている場合はON、そうでない場合はOFF |
瞑瞑 | コントロールが不可視の場合はON、それ以外の場合はOFF |
使用可能 | 制御が有効な場合はON、そうでない場合はOFF |
使用禁止 | 制御不能の場合はON、それ以外の場合はOFF |
選択 | POPUPの選択された項目の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の一例です。マーカー1
このXMLの結果、このようなUIになります。
デフォルト値が記入されています。
メディアポップアップがクリックされると、その項目が表示されます。 この例では、UIの実装がすべての選択肢の後ろに” (!) “を付けているため、ドライバの設定が無効になっています。 このポップアップで “Plain Paper “を選択すると、設定が無効になります(OKボタンがゴースト表示されます)。
この実装では、矛盾する設定は、その前にある記号で識別されます。
この不具合は、DPIまたはメディアの設定を変更することで修正することができます。
どのような設定が競合しているかを知るために、XMLにはCONSTRAINSが含まれています。
コンストレインズ
CONSTRAINSテーブルの項目は “CONSTRAIN “と呼ばれ、2つ1組の属性を持っている。
IDxとSEL_ID_xがあり、xは数字です。
現在の選択が制約に一致する場合(すべての要素が制約の値を持つ場合)、その組み合わせは無効である。 例では、withの行。
ID1=”DPI” SEL_ID_1=”DPI_720″ ID2=”Media” SEL_ID_2=”Media_Plain”。
は、要素 “DPI” が =”DPI_720″ に設定され、要素 =”Media” が =”Media_Plain” に設定されている場合、その設定が無効であることを意味します。 (このDPIとMEDIAの組み合わせは)。
コンテナストリング
UI Element が containerString 属性を持つ場合、この要素の結果 XML のエントリは、直接 ITEM の値であってはならない。 代わりに、containerStringの”$#”シーケンスを、選択したITEMの値で置き換え、結果の文字列を結果のXMLに入力する必要があります。
の例です。
containerString=”HEATERS=$# $#”
ITEM value = “123” であれば、結果のXMLは “HEATERS=123 123” であるべきである。
結果 XML
結果XML(現在の設定の短縮版)は、要素IDおよび選択されたITEMの値で構成されます。 containerString属性が存在する場合、$#を選択されたITEMの値に置き換えたこの文字列が使用される。 DynamicUI “の代わりに “DS “というラベルが使用されています。 マーカー2
XMLスキーマ
XML をマッチングさせることができる XML スキーマは、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>