(57)【要約】【課題】  特定の項目が設定不可となった理由を表示する機能を、理由検知の漏れ等を起こすことなく実現し、開発者の作業工数や人為的ミスの低減が可能なユーザインタフェース制御装置および方法を提供すること。【解決手段】  設定データ間に生じる不整合を回避するためのルールがコンフリクト処理ルール記述ファイル(301)に記述される。このコンフリクト処理ルール記述ファイル(301)には、特定のコンフリクト処理ルールの適用後、所定の設定項目の状態を直接変更不可とするよう指示するための命令が記述される。これに加えて、その命令によって前記直接変更不可とされた理由を示す識別子も記述することが可能である。推論エンジン(302)はこのコンフリクト処理ルール記述ファイル(301)を参照し、入力設定値がいずれかのコンフリクト処理ルールの適用対象となったときに当該ルールを適用する。【選択図】  図３
2011238269.tif 000002
【特許請求の範囲】
【請求項１】
印刷装置で印刷処理する印刷データを生成する際に表示されるユーザインタフェースを介して特定の設定項目に対して特定の設定値の入力を受け付ける設定手段と、
前記ユーザインタフェースを介して第１の設定値が入力された場合に、既に設定されていた特定の設定値を前記第１の設定値により競合を生じない第２の設定値とすることで、競合を解消する競合解消手段と、
前記ユーザインタフェースを介して前記第１の設定値が入力され、前記第１の設定値が有効とされた場合に、前記第１の設定値と競合する設定値の設定を不能とするため、前記競合解消手段によって競合が解消された後の前記第２の設定値を元の特定の設定値に戻せなくするとともに、前記競合解消手段によって競合が解消された後の前記第２の設定値がユーザに識別できるようユーザインタフェースの表示を制御する第１表示制御手段と、
を有することを特徴とする制御装置。
【請求項２】
前記第２の設定値を元の特定の設定値に戻せない理由を示すメッセージの表示を制御する第２表示制御手段を更に有することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記第１表示制御手段は、前記理由を示すメッセージの表示の指示を可能とするマークの前記ユーザインタフェース上での表示を制御し、
前記第２表示制御手段は、ユーザからの前記表示されたマークに対応した指示に応答して、前記理由を示すメッセージの表示を制御する
ことを特徴とする請求項２に記載の制御装置。
【請求項４】
前記理由が複数ある場合には、１つの理由を選択する選択手段を更に有し、
前記第２表示制御手段は、前記選択手段により選択された前記１つの理由を示すメッセージの表示を制御する
ことを特徴とする請求項２又は３に記載の制御装置。
【請求項５】
前記第２表示制御手段は、前記理由を示すメッセージとして、前記第１の設定値の情報を含むメッセージの表示を制御することを特徴とする請求項２乃至４のいずれか１項に記載の制御装置。
【請求項６】
前記競合解消手段は、既にコレート印刷を無効にする設定値が設定されていた状態で、前記第１の設定値として製本印刷を有効にする設定値が入力された場合に、前記第２の設定値をコレート印刷を有効にする設定値とすることで競合を解消することを特徴とする請求項１乃至５のいずれか１項に記載の制御装置。
【請求項７】
前記ユーザインタフェースは、前記印刷装置に対して送信される印刷データを生成するプリンタドライバの機能として提供されるユーザインタフェースであることを特徴とする請求項１乃至６のいずれか１項に記載の制御装置。
【請求項８】
印刷装置における制御方法であって、
前記印刷装置で印刷処理する印刷データを生成する際に表示されるユーザインタフェースを介して特定の設定項目に対して特定の設定値の入力を受け付ける設定工程と、
前記ユーザインタフェースを介して第１の設定値が入力された場合に、既に設定されていた特定の設定値を前記第１の設定値により競合を生じない第２の設定値とすることで、競合を解消する競合解消工程と、
前記ユーザインタフェースを介して前記第１の設定値が入力され、前記第１の設定値が有効とされた場合に、前記第１の設定値と競合する設定値の設定を不能とするため、前記競合解消工程で競合が解消された後の前記第２の設定値を元の特定の設定値に戻せなくするとともに、前記競合解消工程で競合が解消された後の前記第２の設定値がユーザに識別できるようユーザインタフェースの表示を制御する第１表示制御工程と、
を有することを特徴とする制御方法。
【請求項９】
コンピュータを、
印刷装置で印刷処理する印刷データを生成する際にプリンタドライバの機能として表示されるユーザインタフェースを介して特定の設定項目に対して特定の設定値の入力を受け付ける設定手段、
前記ユーザインタフェースを介して第１の設定値が入力された場合に、既に設定されていた特定の設定値を前記第１の設定値により競合を生じない第２の設定値とすることで、競合を解消する競合解消手段、
前記ユーザインタフェースを介して前記第１の設定値が入力され、前記第１の設定値が有効とされた場合に、前記第１の設定値と競合する設定値の設定を不能とするため、前記競合解消手段によって競合が解消された後の前記第２の設定値を元の特定の設定値に戻せなくするとともに、前記競合解消手段によって競合が解消された後の前記第２の設定値がユーザに識別できるようユーザインタフェースの表示を制御する第１表示制御手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザインタフェースを介して入力される設定データの間に生じる不整合を回避するための制御装置および方法に関する。
【背景技術】
【０００２】
ユーザインタフェース（以下、「ＵＩ」ともいう。）を介してユーザから複数の設定値の入力を受け付け、それらの設定値に基づき制御される機器は、数多くある。ホストコンピュータに接続され、そのホストコンピュータにおいて設定された情報に基づき画像形成処理を行う画像形成システム（プリンタシステム）はその一例である。プリンタシステムのホストコンピュータは一般に、印刷動作を制御するいわゆるプリンタドライバ、およびユーザからの印刷設定等を受け付けるＵＩを含む印刷処理関連プログラムを有する。
【０００３】
印刷処理関連プログラムは、ＵＩを介してユーザから設定値の入力を受け付ける度に、それまでに設定された複数の設定値の中で関連する設定値の値との関係を評価し、設定値間の不整合（コンフリクト）がないかどうかを判別する。コンフリクトの例としては、記録媒体としてセットされたＯＨＰシートに対して両面印刷を行わせるような設定等のユーザにとって不都合と予想される設定や、プリンタに不可能な動作を行わせるような設定等がある。
【０００４】
コンフリクトがあった場合には、それを回避するためのコンフリクト処理を実施する必要がある。
【０００５】
従来より、コンフリクト処理が必要となる複数の設定値の条件（コンフリクト処理ルール）を一覧としてまとめてファイル等に保存しておき、このファイルをコンフリクト処理用プログラムに読み込ませることで、コンフリクト処理を行うものがある。かかる方式は、コンフリクト処理用プログラムが特定の設定値に依存することなく汎用的に利用できるという点で優れている。
【０００６】
ところで、コンフリクト処理によっては、データ構造体中の設定値の変更のみならず、ＵＩのコントロール（以下、単に「コントロール」ともいう。）上の設定値の変更、コントロールをグレイアウト（設定項目を薄いグレイで表示すること）して当該項目は（マウス等によって）直接変更することができないことをユーザに知らしめる処理等を行うものもある。
【０００７】
このような処理を含むコンフリクト処理により、他の項目に依存して利用できなくなったコントロールは、上記したようにグレイアウトされることで直接変更できないことが分かるようになっている。しかし、直接変更できなくなった原因（すなわち、依存関係のある他の項目）が、複数のシートやダイアログボックスのうち別のシートまたはダイアログボックスにあるような場合には、ユーザにはその原因が分かりにくい。この問題を解消するために、グレイアウトされたコントロールの付近に、当該コントロールが直接変更できない理由を含むメッセージを表示するものもある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２７６０１０号公報
【特許文献２】特開平１１−１２６１２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、従来、上記したような、コントロールがグレイアウトされて直接変更できない理由を表示するためには、コンフリクト処理の記述とは別に、理由検知専用のプログラムを作成する必要があった。理由検知を正確に行うためには、グレイアウトするための処理の各々に対応する理由検知処理のプログラムコードを必要とする。そして、このプログラムコードの作成には手間がかかるだけでなく、グレイアウト処理の追加／変更に伴って理由検知処理の漏れや食い違いが出やすいという問題があった。
【００１０】
また、例えば、特定のデバイスオプション（例えばステープル用のフィニッシャ）が装着されていないと当該コントロールが使用できず、なおかつ、他の項目とも排他関係にある等、当該コントロールがグレイアウトされる理由が複数存在する場合もある。そのような場合には、理由検知処理がさらに複雑になり、プログラムの作成に関する上記の問題はより顕著なものとなる。
【００１１】
本発明はこのような問題点に鑑みてなされたものである。すなわち、ユーザインタフェースにおいて特定の項目が設定不可となった理由を表示する機能を、理由検知の漏れや食い違いを起こすことなく実現し、これによって開発者の作業工数や人為的ミスを低減することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一側面によれば、印刷装置で印刷処理する印刷データを生成する際に表示されるユーザインタフェースを介して特定の設定項目に対して特定の設定値の入力を受け付ける設定手段と、前記ユーザインタフェースを介して第１の設定値が入力された場合に、既に設定されていた特定の設定値を前記第１の設定値により競合を生じない第２の設定値とすることで、競合を解消する競合解消手段と、前記ユーザインタフェースを介して前記第１の設定値が入力され、前記第１の設定値が有効とされた場合に、前記第１の設定値と競合する設定値の設定を不能とするため、前記競合解消手段によって競合が解消された後の前記第２の設定値を元の特定の設定値に戻せなくするとともに、前記競合解消手段によって競合が解消された後の前記第２の設定値がユーザに識別できるようユーザインタフェースの表示を制御する第１表示制御手段とを有することを特徴とする制御装置が提供される。
【発明の効果】
【００１３】
本発明によれば、ユーザインタフェースにおいて特定の項目が設定不可となった理由を表示する機能を、理由検知の漏れや食い違いを起こすことなく実現でき、これによって開発者の作業工数や人為的ミスを低減することができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態に係る印刷処理システムのブロック構成図である。
【図２】実施形態におけるＲＡＭ２のメモリマップを示す図である。
【図３】実施形態におけるプリンタドライバＵＩ制御モジュールの概略構成図である。
【図４】実施形態におけるプリンタドライバＵＩ制御モジュールで扱われるデータの関連を説明する模式図である。
【図５】実施形態におけるプリンタドライバＵＩ制御モジュールの処理を示すフローチャートである。
【図６】実施形態におけるコンフリクト処理ルール記述ファイルの一例を示す図である。
【図７】実施形態における内部構造体の一例を示す図である。
【図８】実施形態におけるプリンタドライバＵＩによる印刷設定画面の一例を示す図である。
【図９】実施形態におけるプリンタドライバＵＩによる印刷設定画面の一例を示す図である。
【図１０】実施形態におけるプリンタドライバＵＩによる印刷設定画面の一例を示す図である。
【図１１】実施形態における状態変数リストの一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、本発明の実施に有利な具体例を示すにすぎない。また、以下の実施形態の中で説明されている特徴の組み合わせの全てが本発明の課題解決手段として必須のものであるとは限らない。
【００１６】
（ハードウェア構成）
図１は本発明の一実施形態を示す印刷処理システムのブロック構成図である。印刷処理システムは、ホストコンピュータ３０００と、プリンタ１５００より構成される。
【００１７】
ホストコンピュータ３０００において、１はシステムバス４に接続される各デバイスを総括的に制御するＣＰＵ、２はＣＰＵ１の主メモリ、ワークエリア等として機能するＲＡＭである。３は各種プログラム、データを格納するＲＯＭであって、各種フォントを記憶するフォントＲＯＭ３ａ、ブートプログラムやＢＩＯＳ等を記憶するプログラムＲＯＭ３ｂ、および各種データを記憶するデータＲＯＭ３ｃに区分けして構成されている。
【００１８】
５はキーボードコントローラ（ＫＢＣ）で、キーボード９や不図示のポインティングデバイス（マウス）からのキー入力を制御する。６はＣＲＴコントローラ（ＣＲＴＣ）であり、ＣＲＴディスプレイ（ＣＲＴ）１０の表示を制御する。
【００１９】
外部メモリ１１（ディスクコントローラ（ＤＫＣ）７によりアクセス制御される）は、ハードディスク（ＨＤ）やフロッピー(登録商標)ディスク（ＦＤ）（登録商標）等である。ここには、図示の如く、オペレーティングシステムプログラム（以下ＯＳ）２０５をはじめ各種アプリケーション（例えば、図形、イメージ、文字、表等が混在した文書処理を行う文書処理アプリケーションプログラム）２０１が記憶される。さらに、印刷処理関連プログラム２０４、ユーザファイル、編集ファイル等も記憶される。印刷処理関連プログラム２０４は、ページ記述言語を用いて記述される印刷データを生成するプログラムであって、同系列の複数のプリンタに対して共通に利用されうる。また、プリンタ制御コマンド生成モジュール（以下「プリンタドライバ」という）２０４１、プリンタドライバＵＩ制御モジュール２０４２を含む。
【００２０】
８はプリンタコントローラ（ＰＲＴＣ）であり、双方向性インタフェース２１を介してプリンタ１５００に接続され、プリンタ１５００との通信制御処理を行う。
【００２１】
外部メモリ１１に記憶されたアプリケーションは、ＲＡＭ２にロードされてＣＰＵ１により実行されることになる。また、ＣＰＵ１は、例えばＲＡＭ２へのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのWYSIWYG（What you see is What you get）を可能としている。さらに、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷設定設定画面（プリンタドライバＵＩ制御モジュール２０４２により制御される）を開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバ２０４１に対する印刷処理の設定を行うことができる。
【００２２】
プリンタ１５００において、１２はプリンタ１５００の全体を制御するＣＰＵである。１９はＣＰＵ１２の主メモリ、ワークエリア等として機能するとともに、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられるＲＡＭである。これは、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。１３はＲＯＭであり、各種フォントを記憶するフォントＲＯＭ１３ａ、制御プログラム等を記憶するプログラムＲＯＭ１３ｂ、および各種データを記憶するデータＲＯＭ１３ｃより構成される。
【００２３】
外部メモリ１４（メモリコントローラ（ＭＣ）２０によりアクセスを制御される）は、オプションとして接続されるハードディスク（ＨＤ）、フレキシブルディスク（ＦＤ）、ＩＣカード等である。ここにはフォントデータ、エミュレーションプログラム、フォームデータ等が記憶される。ハードディスク等の外部メモリ１４が接続されていない場合には、ＲＯＭ１３のデータＲＯＭ１３ｃに、ホストコンピュータ３０００で利用される情報等を記憶することになる。なお、外部メモリ１４は１個に限らず、複数備えるものであってもよく、例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていてもよい。
【００２４】
操作部１５０１にはユーザからの操作を受け付ける操作パネルが設けられ、その操作パネルには操作のためのスイッチおよびＬＥＤ表示器等が配されている（図示は省略）。また、図示しないＮＶＲＡＭを有し、操作パネル１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００２５】
プリンタＣＰＵ１２は、ＲＯＭ１３のプログラムＲＯＭ１３ｂに記憶された制御プログラム等に基づき、印刷部インタフェース１６を介してシステムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。また、ＣＰＵ１２は入力部１８を介してホストコンピュータ３０００との通信処理が可能となっており、プリンタ１５００内の情報等をホストコンピュータ３０００に通知可能に構成されている。
【００２６】
（ソフトウェア構成）
図２は、所定のアプリケーションおよびプリンタ１５００を制御対象とする印刷処理関連プログラムを起動して、ホストコンピュータ３０００上のＲＡＭ２にロードされた状態のＲＡＭ２のメモリマップを示している。ＲＡＭ２には、図示の如く、ＢＩＯＳ２０６、ＯＳ２０５をはじめ、アプリケーション２０１、印刷処理関連プログラム２０４、および関連データ２０３がロードされており、さらに空きメモリ領域２０２も確保されている。これにより、アプリケーション２０１および印刷処理関連プログラム２０４は実行可能状態にある。
【００２７】
印刷処理関連プログラム２０４におけるプリンタドライバＵＩ制御モジュール２０４２は、ユーザによる印刷設定指令に応じてＣＲＴ１０に印刷設定画面を表示しユーザからの設定を可能にする。
【００２８】
図８に、ＵＩとしての印刷設定画面の表示例を示す。同図において、[Print Style]欄８０は、印刷レイアウトを指定する欄であり、ユーザは例えば、片面印刷（1-Sided Printing）８０１、両面印刷（2-Sided Printing）８０２、および製本印刷（Booklet Printing）８０３のコントロールうちの、いずれかに対応するラジオボタンをマウスでクリックすることで指定することができる。
【００２９】
[Finishing]欄８１は、印刷済み記録媒体の出力順序および仕上げについて指定する欄であり、ユーザは例えば、以下のいずれかから指定可能となっている。
【００３０】
[Collate] ８１１
部単位印刷。Ｎページの文書をＭ部印刷する場合に、第１ページ、第２ページ、…、第Ｎページの順に１枚ずつ出力し、これをＭ回繰り返す。
【００３１】
[Group] ８１２
ページ単位印刷。Ｎページの文書をＭ部印刷する場合に、第１ページをＭ枚、第２ページをＭ枚、…、第ＮページをＭ枚、の順に出力する。
【００３２】
[Staple] ８１３
ステープル仕上げ。上記[Collate] ８１１と同様に部単位で出力し、仕上げとして各部ごとにステープラで止める。
【００３３】
なお、本明細書では、上記したようなユーザ設定可能項目を「プリンタ機能」または単に「機能」ともよぶ。この他にも多くのプリンタ機能を有するが、説明を簡単にするため省略する。
【００３４】
ここで、「コンフリクト」は、プリンタドライバＵＩ制御モジュール２０４２により、以下詳細に説明するコンフリクト処理として回避されるように設計される。「コンフリクト」とは、ユーザにとって不都合と思われる設定の組み合わせ、意味のない設定の組み合わせ、すなわち設定値間の不整合をいう。
【００３５】
図３は、実施形態における印刷処理関連プログラム２０４のプリンタドライバＵＩ制御モジュール２０４２の概略構成を示している。３０３は、各モジュール間のデータの受け渡しやデータの更新等を管理してコンフリクト処理を統括するコンフリクトマネージャである。３０６が、上記した印刷設定画面表示制御を行い、本プリンタドライバＵＩ制御モジュール２０４２におけるメインプログラムとしてのプリンタドライバＵＩである。３０１は、後述する記述形式で記述される不整合回避戦略を示すコンフリクト処理ルールを列記したコンフリクト処理ルール記述ファイルである。３０２は、コンフリクト処理ルール記述ファイル３０１をロードして、入力された設定値に対してコンフリクト処理ルールを適用し、各機能の状態を推論する推論エンジンである。３０４は、各プリンタ機能の状態をリスト形式で表示する状態変数リストであり、ユーザからの入力およびコンフリクト処理ルール記述ファイル３０１の内容に基づき更新されうる。３０５は、プリンタドライバＵＩ３０６が提供する画面表示の基になる帳票としての内部構造体であり、状態変数リスト３０４と連動して各プリンタ機能の状態を所定の形式で表示する。
【００３６】
その後に、プリンタドライバＵＩ３０６を介してユーザからの設定情報を受け取ったコンフリクトマネージャ３０３は、コンフリクト処理ルール記述ファイル３０１を参照する。このことは、図示の如くコンフリクト処理ルール記述ファイル３０１からコンフリクトマネージャ３０３に向かう矢印で、「R(Read)」として表示されている。参照の結果、設定情報がコンフリクト処理ルールに適合する場合、コンフリクト処理が適用される。そうして、コンフリクトマネージャ３０３は、状態変数リスト３０４および内部構造体３０５を更新してプリンタドライバＵＩ３０６に反映させる。この更新作業は、図示の如くコンフリクトマネージャ３０３は、状態変数リスト３０４および内部構造体３０５とは各々双方向矢印で結ばれ、「R/W (Read/Write)」として表示されている。
【００３７】
図４は、図３に示した各モジュールで扱われるデータの関連を説明する模式図である。図４において、コンフリクト処理ルール記述ファイル３０１は、推論エンジン３０２にインクルード（ロード）されたかたちで参照される。このコンフリクト処理ルール記述ファイル３０１はコンフリクトマネージャ３０３にも参照され、状態変数リスト３０４はコンフリクト処理ルールに従った内容を有することになる。また、内部構造体３０５と状態変数リスト３０４とは先に述べたとおり連動表示されるものであるから、互いにマッピングされる関係にある。そしてこの状態がプリンタドライバＵＩ３０６の制御によってユーザに見えるかたちで表現される。
【００３８】
状態変数リスト３０４について具体的に説明すると、同図に示すように、各プリンタ機能（同図中「キー」の欄A, B, C,...）毎に、状態値をはじめ、例えば、対応するコントロールの利用可否情報、利用不可の場合の理由（無効理由）情報、ＵＩ更新の要否情報等が記述される。
【００３９】
内部構造体３０５は、各プリンタ機能の状態を例えば、
データ型  機能名メンバ  状態メンバ
の構文で表し、プリンタ機能名A, B, C に対応する機能名メンバをそれぞれ cA, cB, cC のように表現する。そして、各機能に対する状態メンバは、状態変数リスト３０４における状態値がマッピングされている。
【００４０】
（コンフリクト処理ルールの記述形式）
次に、コンフリクト処理ルール記述ファイル３０１について説明する。
【００４１】
各ルールは、論理（ロジック）を用いて数学的に形式化される。述語は、
プリンタ機能名（引数）
の形で記述される。引数としては、ON/OFFの他、数値が入る場合もある（例えば、印刷部数等）。左辺には「プリンタ機能名（引数）」を、右辺には左辺が成り立つための論理条件を記述し、記号「←」で関係づける。例えば、
A(ON) ← B(ON).
は、「プリンタ機能Bの状態がONのときは、プリンタ機能Aの状態をONとする」という意味のルールになる。
【００４２】
また、式中の記号「,」は論理「かつ（AND）」の意味で用いられる。例えば、「プリンタ機能Bの状態がON、かつ、プリンタ機能Cの状態がOFFのときに、プリンタ機能Aの状態をONとする」というルールは、
A(ON) ←B(ON), C(OFF).
と記述される。
【００４３】
さらに、コンフリクト処理ルール記述ファイル３０１の中には、プリンタドライバＵＩ３０６を更新するための処理を記述することが可能である。推論エンジン３０２がその記述を解釈した時点で、コンフリクトマネージャ３０３の状態変数リスト３０４を介して、プリンタドライバＵＩ３０６の更新処理を直接行うことが可能になっている。
【００４４】
例えば、ＵＩ更新の処理として{disable}セットの記述を追加することにより、該当項目のコントロールをdisableする処理（グレイアウト表示するとともに設定不可の状態にする処理）を指示することができる。
【００４５】
また、{disable}セットの後に{Reason(X)}セットの記述を追加すると、disableとなった理由を表示するための理由識別子Xに応じたメッセージを表示させることが可能になる（詳細は後述する）。
【００４６】
次に、図８に表示されたプリンタ機能を例に、コンフリクト処理ルールに記述される機能名の具体例を示す。図８に示した[Collate] ８１１に対応する部単位印刷機能、[Group] ８１２に対応するページ単位印刷機能、および[Staple] ８１３に対応するステープル仕上げ機能の機能名はそれぞれ、Collate()、Group()、およびStaple()で示され、引数はONまたはOFFとなる。また、[PrintStyle]欄８０に対応する印刷レイアウト機能は、Layout()で示され、引数は、1-Sided、2-Sided、Bookletのいずれかである。
【００４７】
この他、ＵＩとは直接関連しない機能（例えば、特定のオプションの装着状態、セットされている記録用紙の種類等の属性を示す環境情報）を定義することができる。例えば、上記ステープル仕上げ機能に関連して、デバイスオプションとしてのステープル用フィニッシャが装着されているか否かを示すFinisher()を使用できる。引数はONまたはOFFであり、ONのときはフィニッシャが装着されている状態を示し、OFFのときは未装着の状態を示す。
【００４８】
また、セットされた記録用紙がステープル可能な紙であるか否かを示すStaplablePaper()が使用可能である。引数はONまたはOFFであり、ONのときはステープル可能な用紙がセットされている状態を示し、OFFのときはステープル可能な用紙がセットされていない状態を示す。
【００４９】
なお、上記した機能名はあくまでプリンタという制御対象に対する例であって、制御対象に応じてその他の機能名が定義することができることはいうまでもない。
【００５０】
図６は、以上の例に従って記述されたコンフリクト処理ルール記述ファイル３０１の一例である。
【００５１】
(1)は、フィニッシャが装着されていないときにはStaple(OFF)、すなわちステープル仕上げ不可、とするルールである。後続行には{disable}が記述されているので、このルールが適用されると、コントロール[Staple]８１３はグレイアウトされることになる。また、次の行には、{Reason(NO_FINISHER)}が記述されている。ここで、理由識別子NO_FINISHERは、フィニッシャが装着されていないことを示すものである。
【００５２】
(2)は、ステープル可能な記録用紙がセットされていないときはStaple(OFF)とするルールである。ここでも(1)と同様、後続行には{disable}が記述されているので、このルールが適用されると、コントロール[Staple]８１３はグレイアウトされることになる。また、次の行には、ステープル不可能な用紙がセットされていることを示すINVALID_PAPERを理由識別子に有する{Reason(INVALID_PAPER)}セットが記述されている。
【００５３】
(3)は、[Booklet Printing]８０３がチェックされたことでLayout(BOOKLET)となったときは、Staple(OFF)とするルールである。ここでも同様に、このルールが適用されると、{disable}の記述によってコントロール[Staple]８１３はグレイアウトされることになる。また、次の行には、適合しないプリントスタイル（レイアウト）が指定されていることを示すINVALID_LAYOUTを理由識別子に有する{Reason(INVALID_LAYOUT)}セットが記述されている。
【００５４】
(4)は、記録媒体としてＯＨＰシートがセットされたときは、Staple(OFF)とするルールである。このルールが適用されると、{disable}の記述によってコントロール[Staple]８１３はグレイアウトされる。また、次の行には、適合しない用紙タイプが指定されていることを示すINVALID_PAPERTYPEを理由識別子に有する{Reason(INVALID_PAPERTYPE)}セットが記述されている。
【００５５】
(5)は、[Collate] ８１１がチェックされたことでCollate(ON)となったときにStaple(OFF)とするルール、(6)は、[Group] ８１２がチェックされたことでGroup(ON)となったときにStaple(OFF)とするルールである。
【００５６】
(7)は、[Booklet Printing]８０３がチェックされたことでLayout(BOOKLET)となったときにCollate(ON)とするルールである。このルールが適用されると、次の行の{disable}の記述によってコントロール[collate]８１１がグレイアウトされる。
【００５７】
(8)は、[Booklet Printing]８０３がチェックされたことでLayout(BOOKLET)となったときにGroup(OFF)とするルールである。このルールが適用されると、次の行の{disable}の記述によってコントロール[Group]８１２がグレイアウトされる。
【００５８】
このように、各機能の状態によって適用されるルールが記述されている。
【００５９】
（プリンタドライバＵＩ制御モジュール２０４２の処理の内容）
以下、図５のフローチャートを用いて、コンフリクト処理を含むプリンタドライバＵＩ制御モジュール２０４２の処理について、詳しく説明する。
【００６０】
プリンタドライバＵＩ制御モジュール２０４２の処理は、ユーザがキーボードコントローラＫＢＣ５等を用いて、印刷設定画面を開く指示をすることで始まる。ユーザが印刷設定画面を開くよう指示すると、上記したとおり、ＯＳ２０５の管理の下、ＲＡＭ２に印刷処理関連プログラム２０４がロードされる。
【００６１】
印刷処理関連プログラム２０４がＲＡＭ２にロードされると、まず、印刷設定画面を開くための初期化処理を行う。この初期化処理として推論エンジン３０２は、コンフリクト処理ルール記述ファイル３０１をコンフリクトマネージャ３０３を介して、ＲＡＭ２に読み込む（ステップＳ５０１）。
【００６２】
続いて、コンフリクトマネージャ３０３が利用する状態変数リスト３０４を作成する（ステップＳ５０３）。
【００６３】
コンフリクト処理ルール記述ファイル３０１に記述されるすべてのプリンタ機能名は、コンフリクトマネージャ３０３の内部にインクルードされた状態変数リスト３０４にそれぞれ、状態変数を持っている。この状態変数の値は、プリンタドライバＵＩ３０６で使用される内部構造体３０５の対応するメンバの値と連動している。各プリンタ機能名の状態変数の初期値は、その内部構造体３０５のメンバの値となる。
【００６４】
例えば、図４において、内部構造体３０５に記述されているint cAの初期値は０であるから、それに対応する状態変数リスト３０４におけるプリンタ機能Aの値はOFFとなっている。したがって、状態変数リスト３０４におけるプリンタ機能Aの状態の初期値はOFFとなる。同様に、プリンタ機能名Bの初期値はON、プリンタ機能名Cの初期値はOFFとなる。すなわち、
A    OFF
B    ON
C    OFF
となる。
【００６５】
その後、推論エンジン３０２は、コンフリクト処理ルール記述ファイル３０１を参照することでコンフリクトチェックの推論を行う。例えば、図４に示すように、コンフリクト処理ルール記述ファイル３０１に記述されている、
A(ON) ← B(ON), C(OFF).
が成立した場合、推論エンジン３０２は、状態変数リスト３０４中のプリンタ機能Aの状態変数値を、初期値OFFからONに変更する。すなわち、
A    ON
B    ON
C    OFF
となる。このように状態変数リスト３０４が初期化される。また、状態変数リスト３０４中の他の項目（コントロールの表示／非表示情報等）も同様に初期化される。
【００６６】
コンフリクトチェックの推論が終了した後、コンフリクトマネージャ３０３は、変更された状態変数の値を内部構造体３０５の対応するメンバ int cAに反映させる。すなわち、int cA は上記ルールが成立したことによって０から１に変更されることになる。
【００６７】
具体的に、図８に示したＵＩを開く際の初期化処理を例にとって説明する。図７は、図８のＵＩに対する内部構造体の一例を示している。同図から分かるように、例えば機能名メンバLayout、Collate、Group、およびStapleに対応する状態メンバは各々、1Sided、０、１、および０となっている。この状態から、図６に示したコンフリクト処理ルール記述ファイル３０１を参照してコンフリクトチェックを行う。内部構造体の内容が図７に示す状態である場合には、図６に示したコンフリクト処理ルール記述ファイル３０１のうち、いずれのルールも適用される場合はない。つまり、上記機能名の状態変数値は、ステップＳ５０３の初期化による初期値として、次のようになる。
Collate  OFF
Group    ON
Staple  OFF
Layout  1-Sided
【００６８】
続いて、ＵＩのオープンのために必要とされるその他の初期化処理を行い、図８に例示したようなＵＩをオープンする（ステップＳ５０４）。この場合、状態変数リスト３０４を参照して、設定値に応じた値を表示したり、コントロールの利用可否情報に応じた処理（able/disableの変更）等を行うことになる。
【００６９】
ＵＩとしての印刷設定画面がオープンされた後は、ＯＳより送られてくるイベントを取得し、そのイベントに対する処理を行う（ステップＳ５０５）。
【００７０】
次に、ステップＳ５０５で取得したイベントが、ユーザが印刷設定画面上の設定項目を変更したイベントであるか否かの判別を行う（ステップＳ５０６）。ここで、取得したイベントがユーザによる設定変更要求であった場合には、ステップＳ５０７に進み、コンフリクト処理ルール記述ファイル３０１を参照してコンフリクト処理ルールを適用する。
【００７１】
取得したイベントがユーザによる設定変更要求であった場合の一例として、図８に示す[Print Style]欄８０における、片面印刷（1-Sided Printing）８０１から製本印刷（Booklet Printing）８０３に変更するものであった場合について説明する。ここでは、ステープル仕上げが可能なフィニッシャが装着され、用紙サイズおよび用紙タイプがステープル可能なものがセットされているものとする。
【００７２】
プリンタ機能名Collate、Group、Staple、Layoutの状態変数の設定変更要求前における値は、図７に示した状態、すなわち、以下のようになっていた。
Collate  OFF
Group  ON
Staple  OFF
Layout  1-Sided
【００７３】
ユーザの変更要求がLayoutを１−SidedからBookletに変更するものであるので、Layoutの状態変数の内容が変更されて、各プリンタ機能名の状態変数の値は次のようになる。
Collate  OFF
Group  ON
Staple  OFF
Layout  Booklet
【００７４】
すると、プリンタドライバＵＩ３０６はコンフリクトマネージャ３０３をコールし、続いて推論エンジン３０２がコールされて、コンフリクト処理ルール記述ファイル３０１を参照してLayoutを起点としたコンフリクトチェックが始まる。
【００７５】
推論エンジン３０２は、コンフリクト処理ルール記述ファイル３０１の各ルールの適用／不適用をチェックしていく。上記したとおり、この例ではステープル仕上げが可能なフィニッシャが装着され、用紙サイズおよび用紙タイプがステープル可能なものがセットされているので、ルール(1)、(2)が適用されることはない。
【００７６】
ルール(3)は適用されることになるから、StapleはOFFのままコントロールはdisable、すなわちグレイアウト表示によって設定不可の状態にされる。さらに、上記したように、グレイアウトされた理由として不適合なプリントスタイルが指定されていることを示すINVALID_LAYOUTがセットされる。
【００７７】
ルール（4)、(5)、(6)は適用されないが、ルール(7)、(8)が適用され、Collateの値はOFFからONへ、Groupの値はONからOFFへ変更され、次のように各コントロールはdisableとなる。
Collate  ON (disable)
Group  OFF (disable)
Staple  OFF (disable, Reason=INVALID_LAYOUT)
Layout  BOOKLET
【００７８】
また、同じコントロールをグレイアウトするものではあるがその理由が相違するルールが、重複して適用されうる場合もある。この場合、あらかじめ定めた優先順位が高い理由が採用される。実施形態では、コンフリクト処理ルール記述ファイル３０１に先に記述されたルールほど優先度が高いと定めておく。
【００７９】
例えば、上記した例に続いて、ステープル仕上げ不可能なサイズの用紙がセットされた場合を考える。この場合、ルール(3)とともに、ルール(2)が適用されることになる。実施形態によれば、優先順位の高いルール(2)を採用して、グレイアウトされた理由としては、不適合な記録用紙がセットされていることを示すINVALID_PAPERがセットされることになる。すなわち、各コントロールの状態は、次のようになる。
Collate  ON (disable)
Group  OFF (disable)
Staple  OFF (disable, Reason=INVALID_PAPER)
Layout  BOOKLET
【００８０】
以上で、ステップＳ５０７の、推論エンジン３０２でのコンフリクト処理ルールの適用が終了する。
【００８１】
コンフリクトマネージャ３０３は、上記ステップＳ５０７のコンフリクト処理ルールの適用結果に基づき状態変数リスト３０４を更新する（ステップＳ５０８）。すなわち、状態変数リストは図１１に示すようになる。図１１において、機能Stapleの状態がOFF、そのコントロールがdisableとなるとともに、その理由識別子INVALID_PAPERが記録されていることが分かる。
【００８２】
続いて、内部構造体３０５を更新する（ステップＳ５０９）。具体的には、状態変数リスト３０４中のＵＩ更新情報が「要（yes）」となっているコントロールについてはＵＩの更新処理を行い、その後ＵＩ更新情報は「不要（no）」に変更される。上記の例では、Layoutが1-Sided PrintingからBooklet Printingに設定が変更されたことで、CollateがOFFからONへ、GroupがONからOFFへと変更され、Collate, Group, Staple がそれぞれdisableとなり、図８のＵＩは図９に示すとおりに更新される。
【００８３】
また、図９に示すように、コントロールがグレイアウトされた場合には、そのことを知らせるためのコンフリクトマーク９１が表示される（詳細は後述する）。ステップＳ５０９の後はステップＳ５０５に戻って処理を繰り返す。
【００８４】
ステップＳ５０６において、ステップＳ５０５で取得したイベントがユーザが印刷設定画面上の設定項目を変更したイベントではなかったときは、ステップＳ５１２に進み、グレイアウトの理由表示のイベントであるかを判別する。このイベントは、例えばコンフリクトマーク９１がクリックされたときやコンフリクトマーク９１上にマウスカーソルが重なったときなどに発生する。
【００８５】
このイベントが発生した場合は、ステップＳ５１３に進み、プリンタドライバＵＩ３０６は状態変数リスト３０４から該当するコントロールの無効理由情報を参照し、そこに登録されている識別子に対応する処理を行う。例えば、図１０に示すようなコメントメッセージ９２を表示することができる。いずれかのキーを押下したりマウスカーソルを移動するなどによりイベントが解除されると、メッセージは消え、ステップＳ５０５に戻って処理を繰り返す。
【００８６】
ステップＳ５１２の判別の結果、理由表示イベントではなかった場合には、ステップＳ５１４に進み、プリンタドライバＵＩのクローズ要求かどうかの判別を行う。クローズ要求であった場合には、状態変数の設定で内部構造体を更新し（ステップＳ５１５）、所定の終了処理を行い、プリンタドライバＵＩをクローズして、すべての処理を終了する（ステップＳ５１６）。一方、クローズ要求ではなかった場合には、ステップＳ５０５に戻って処理を繰り返す。
【００８７】
以上の処理は、プリンタドライバＵＩがクローズされるまで、繰り返し実行される。プリンタドライバＵＩがクローズされると処理は終了し、印刷処理関連プログラム２０４の処理も終了し、ＲＡＭ２からはＯＳ２０５の機能により消去される。
【００８８】
以上説明した実施形態によれば、コンフリクト処理ルール記述ファイルに、コンフリクト処理ルールの適用によってコントロールをdisableして当該コントロールをグレイアウトする場合にはその理由を記述することを可能である。これにより、グレイアウトされた理由情報の管理を容易にすることができるようになった。このため、理由検知のための専用プログラムコードを追加する煩わしさや、条件の漏れや食い違いを生ずるケースから解放され、品質の高い理由表示処理を実現することができる。
【００８９】
さらに他の発明によれば、理由表示処理をプリンタドライバUIからコンフリクトマネージャに移すことで両者の間で理由識別子の同期を取る必要がなくなり、その結果独立性が向上し、生産性が高くメンテナンス性に優れるという効果がある。
【００９０】
（他の実施形態）
上述した実施形態では、ステップＳ５１３の理由コメントの表示はプリンタドライバＵＩ３０６が行うようにしたが、コンフリクトマネージャ３０３が行うようにすることもできる。すなわち、コンフリクトマネージャ３０３の内部に文字列リソースを持ち、理由表示イベント発生時にはコンフリクトマネージャ３０３を呼び出し、そこで状態変数の理由属性を参照して該当するメッセージを表示するようにしてもよい。
【００９１】
また、ステップＳ５０７では、最も優先順位の高い理由をひとつだけ保持しているが、該当する理由をすべて保持し、ステップＳ５１３にてすべて表示するようにしてもよい。
【００９２】
また、ステップＳ５０７では、ルールの記述順序によって優先順位を定めるようにしたが、もちろんこれに限定されるものではなく、別の基準を設けてもよい。状態値を変更するルールのみを適用することで、最新の理由を保持すると共に効率化を図ることもできる。
【００９３】
なお、上述した実施形態では、プリンタ装置に対して、コンフリクト処理を含むＵＩ制御を行う例について説明した。しかし本発明は、プリンタ装置に限らず、ディジタルカメラ、ディジタルレコーダ、イメージスキャナ等の周辺装置、制御機器の他、モデムやルータといったネットワーク関連機器にも適用可能であることはいうまでもない。これらの複数の機器から構成されるシステムに適用することも可能である。
【００９４】
以上、本発明の実施形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００９５】
なお、本発明は、前述した実施形態の各機能を実現するプログラムを、システムまたは装置に直接または遠隔から供給し、そのシステムまたは装置に含まれるコンピュータがその供給されたプログラムコードを読み出して実行することによっても達成される。
【００９６】
従って、本発明の機能・処理をコンピュータで実現するために、そのコンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【００９７】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００９８】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【００９９】
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネットのホームページからダウンロードしてもよい。すなわち、ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードする形態も考えられる。つまり、本発明の機能・処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明の構成要件となる場合がある。
【０１００】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。
【０１０１】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
【０１０２】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
【図１】
2011238269.tif 000003
【図２】
2011238269.tif 000004
【図３】
2011238269.tif 000005
【図４】
2011238269.tif 000006
【図５】
2011238269.tif 000007
【図６】
2011238269.tif 000008
【図７】
2011238269.tif 000009
【図８】
2011238269.tif 000010
【図９】
2011238269.tif 000011
【図１０】
2011238269.tif 000012
【図１１】
2011238269.tif 000013