(57)【特許請求の範囲】
【請求項１】
プリンタドライバに入力された設定情報の不整合を回避するために前記プリンタドライバのユーザインタフェースを制御するユーザインタフェース制御装置であって、
前記ユーザインタフェースに表示される複数の入力部を介して設定情報を入力する入力手段と、
前記入力手段により入力された設定情報に対してコンフリクト処理ルールを適用して不整合を検出する検出手段と、
前記検出手段による前記不整合の検出に基づいて、前記プリンタドライバのユーザインタフェースのうち前記不整合が検出された設定情報に関連する部分を更新指示する更新情報が前記プリンタドライバのユーザインタフェースプログラムに対して通知されるのに応じて、前記更新情報によって更新指示される前記複数の入力部のうちの少なくとも１つの入力部の表示を入力不能に更新する更新手段と、
を有することを特徴とするユーザインタフェース制御装置。
【請求項２】
プリンタドライバのユーザインタフェースプログラムと、前記プリンタドライバに入力された設定情報の不整合を回避するためのコンフリクトマネージャプログラムとを搭載し、前記プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置であって、
前記コンフリクトマネージャプログラムを実行して、前記プリンタドライバに入力される設定情報の不整合を検出する検出手段と、
前記検出手段により前記設定情報の不整合が検出され、前記プリンタドライバのユーザインタフェースの更新が必要になった場合に、前記プリンタドライバのユーザインタフェースのうち前記不整合が検出された設定情報に関連する部分を更新指示する更新情報を前記ユーザインタフェースプログラムに対して通知する通知手段と、
前記ユーザインタフェースプログラムを実行して、前記通知手段により通知された前記更新情報に従って、前記プリンタドライバのユーザインタフェースの表示のうち前記不整合が検出された設定情報に関連する部分をを更新する更新手段と、
を有することを特徴とする情報処理装置。
【請求項３】
前記検出手段は、製本印刷、コレート印刷、及びステープル設定のうちの少なくとも１つの設定が前記プリンタドライバに入力された場合に、当該入力された設定とその他の設定との不整合を検出することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置であって、
前記プリンタドライバに対して設定情報が入力されたことに応答して、前記設定情報の不整合を検出する検出手段と、
前記検出手段により前記不整合が検出されたことに応答して、前記プリンタドライバのユーザインタフェースのうち前記不整合が検出された設定情報に関連する部分を更新指示する更新情報がプリンタドライバのユーザインタフェースプログラムに対して通知されるのに応じて、前記プリンタドライバのユーザインタフェースプログラムと前記更新情報とを用いて、前記プリンタドライバのユーザインタフェースの表示のうち前記不整合が検出された設定情報に関連する部分を更新し、さらに、前記不整合の理由を表示する表示手段と、
を有することを特徴とする情報処理装置。
【請求項５】
前記表示手段は、前記プリンタドライバに製本印刷が入力されている場合は、コレート印刷の設定をできないように前記プリンタドライバのユーザインタフェースを表示するとともに、製本印刷が設定されているためにコレート印刷の設定はできない旨のメッセージを表示することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
プリンタドライバに入力された設定情報の不整合を回避するために前記プリンタドライバのユーザインタフェースを制御するユーザインタフェース制御方法であって、
前記ユーザインタフェースに表示される複数の入力部を介して設定情報を入力する入力工程と、
前記入力工程で入力された設定情報に対してコンフリクト処理ルールを適用して不整合を検出する検出工程と、
前記検出工程での前記不整合の検出に基づいて、前記プリンタドライバのユーザインタフェースのうち前記不整合が検出された設定情報に関連する部分を更新指示する更新情報が前記プリンタドライバのユーザインタフェースプログラムに対して通知されるのに応じて、前記更新情報によって更新指示される前記複数の入力部のうちの少なくとも１つの入力部の表示を入力不能に更新する更新工程と、
を有することを特徴とするユーザインタフェース制御方法。
【請求項７】
プリンタドライバのユーザインタフェースプログラムと、前記プリンタドライバに入力された設定情報の不整合を回避するためのコンフリクトマネージャプログラムとを搭載し、前記プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置の制御方法であって、
前記コンフリクトマネージャプログラムを実行して、前記プリンタドライバに入力される設定情報の不整合を検出する検出工程と、
前記検出工程で前記設定情報の不整合が検出され、前記プリンタドライバのユーザインタフェースの更新が必要になった場合に、前記プリンタドライバのユーザインタフェースのうち前記不整合が検出された設定情報に関連する部分を更新指示する更新情報を前記ユーザインタフェースプログラムに対して通知する通知工程と、
前記ユーザインタフェースプログラムを実行して、前記通知工程で通知された前記更新情報に従って、前記プリンタドライバのユーザインタフェースの表示のうち前記不整合が検出された設定情報に関連する部分をを更新する更新工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項８】
前記検出工程は、製本印刷、コレート印刷、及びステープル設定のうちの少なくとも１つの設定が前記プリンタドライバに入力された場合に、当該入力された設定とその他の設定との不整合を検出することを特徴とする請求項７に記載の情報処理装置の制御方法。
【請求項９】
プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置の制御方法であって、
前記プリンタドライバに対して設定情報が入力されたことに応答して、前記設定情報の不整合を検出する検出工程と、
前記検出工程で前記不整合が検出されたことに応答して、前記プリンタドライバのユーザインタフェースのうち前記不整合が検出された設定情報に関連する部分を更新指示する更新情報がプリンタドライバのユーザインタフェースプログラムに対して通知されるのに応じて、前記プリンタドライバのユーザインタフェースプログラムと前記更新情報とを用いて、前記プリンタドライバのユーザインタフェースの表示のうち前記不整合が検出された設定情報に関連する部分を更新し、さらに、前記不整合の理由を表示する表示工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項１０】
前記表示工程は、前記プリンタドライバに製本印刷が入力されている場合は、コレート印刷の設定をできないように前記プリンタドライバのユーザインタフェースを表示するとともに、製本印刷が設定されているためにコレート印刷の設定はできない旨のメッセージを表示することを特徴とする請求項９に記載の情報処理装置の制御方法。
【請求項１１】
プリンタドライバに入力された設定情報の不整合を回避するために前記プリンタドライバのユーザインタフェースを制御するための制御プログラムを格納した記憶媒体であって、前記制御プログラムは、
前記ユーザインタフェースに表示される複数の入力部を介して設定情報を入力する入力工程のコードと、
前記入力工程で入力された設定情報に対してコンフリクト処理ルールを適用して不整合を検出する検出工程のコードと、
前記検出工程での前記不整合の検出に基づいて、前記プリンタドライバのユーザインタフェースのうち前記不整合が検出された設定情報に関連する部分を更新指示する更新情報が前記プリンタドライバのユーザインタフェースプログラムに対して通知されるのに応じて、前記更新情報によって更新指示される前記複数の入力部のうちの少なくとも１つの入力部の表示を入力不能に更新する更新工程のコードと、
を有することを特徴とする記憶媒体。
【請求項１２】
プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置によって実行される制御プログラムを格納した記憶媒体であって、
前記制御プログラムは、
前記プリンタドライバのユーザインタフェースプログラムと、
前記プリンタドライバに入力された設定情報の不整合を回避するためのコンフリクトマネージャプログラムと、
を有し、
前記コンフリクトマネージャプログラムは、
前記プリンタドライバに入力される設定情報の不整合を検出する検出工程のコードと、
前記検出工程で前記設定情報の不整合が検出され、前記プリンタドライバのユーザインタフェースの更新が必要になった場合に、前記プリンタドライバのユーザインタフェースのうち前記不整合が検出された設定情報に関連する部分を更新指示する更新情報を前記ユーザインタフェースプログラムに対して通知する通知工程のコードと、
を含み、
前記ユーザインタフェースプログラムは、
前記通知工程で通知された前記更新情報に従って、前記プリンタドライバのユーザインタフェースの表示のうち前記不整合が検出された設定情報に関連する部分をを更新する更新工程のコード、
を含むことを特徴とする記憶媒体。
【請求項１３】
プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置によって実行される制御プログラムを格納した記憶媒体であって、前記制御プログラムは、
前記プリンタドライバに対して設定情報が入力されたことに応答して、前記設定情報の不整合を検出する検出工程のコードと、
前記検出工程で前記不整合が検出されたことに応答して、前記プリンタドライバのユーザインタフェースのうち前記不整合が検出された設定情報に関連する部分を更新指示する更新情報がプリンタドライバのユーザインタフェースプログラムに対して通知されるのに応じて、前記プリンタドライバのユーザインタフェースプログラムと前記更新情報とを用いて、前記プリンタドライバのユーザインタフェースの表示のうち前記不整合が検出された設定情報に関連する部分を更新し、さらに、前記不整合の理由を表示する表示工程のコードと、
を有することを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ユーザインタフェースを介して入力される所定の制御対象に対する設定データの間に生じる不整合を回避するユーザインタフェース制御装置および方法ならびに記憶媒体に関する。
【０００２】
【従来の技術】
ユーザインタフェース（以下、「ＵＩ」ともいう。）を介してユーザから複数の設定値の入力を受け付け、それらの設定値に基づき制御される機器が知られている。ホストコンピュータに接続され、そのホストコンピュータにおいて設定された情報に基づき画像形成処理を行う画像形成システム（プリンタシステム）はその一例である。プリンタシステムのホストコンピュータは一般に、印刷動作を制御するいわゆるプリンタドライバ、およびユーザからの印刷設定等を受け付けるＵＩを含む印刷処理関連プログラムを有する。
【０００３】
印刷処理関連プログラムは、ＵＩを介してユーザから設定値の入力を受け付ける度に、それまでに設定された複数の設定値の中で関連する設定値の値との関係を評価し、設定値間の不整合（コンフリクト）がないかどうかを判別する。コンフリクトの例としては、記録媒体としてセットされたＯＨＰシートに対して両面印刷を行わせるような設定といったユーザにとって不都合と予想される設定や、プリンタに不可能な動作を行わせるような設定等がある。
【０００４】
コンフリクトがあった場合には、それを回避するためのコンフリクト処理を実施する必要がある。
【０００５】
従来より、コンフリクト処理が必要となる複数の設定値の条件（コンフリクト処理ルール）を一覧としてまとめてファイル等に保存しておき、このファイルをコンフリクト処理用プログラムに読み込ませることで、コンフリクト処理を行うものがある。コンフリクト処理によっては、データ構造体中の設定値の変更、さらにはＵＩのコントロール上の設定値の変更、コントロールのグレイアウト（設定項目を薄いグレイで表示することで当該項目については設定不可であることを通知する）処理等を行うものもある。かかる方式は、コンフリクト処理用プログラムが特定の設定値に依存することなく汎用的に利用できるという点で優れている。
【０００６】
コンフリクト処理用のプログラムにおいて、コンフリクト処理を統括するコンフリクトマネージャは一般に、コンフリクト処理ルールを汎用的に利用できるようにメインプログラムから独立して高いメンテナンス性を持つように設計されており、それによってコンフリクトマネージャは、メインプログラムからはブラックボックスとして見えることになる。
【０００７】
【発明が解決しようとする課題】
しかしながら実際には、メインプログラムでＵＩの更新処理を行ったり、コンフリクト処理に関与しない特定の設定値の変更に伴いＵＩの更新処理が必要になる場合もある。従来このような場合、メインプログラムは、該当する項目のみに絞った処理を行うことはできず、ある範囲全体をリフレッシュすることになるため、メインプログラムの処理効率が悪いという問題があった。
【０００８】
メインプログラムとコンフリクトマネージャとの仲立ちとなるデータ構造体の差分から判断することもできるが、この方法でも効率が悪い。そのうえコントロールのグレイアウトや表示/非表示の変更もされるような場合には、それらの抽出そのものが困難であったり、さらに効率が悪くなる場合が多いという問題があった。
【０００９】
本発明は上記の問題点に鑑みてなされたもので、コンフリクト処理用プログラムにおけるメインプログラムとコンフリクトマネージャとの独立性を保ったまま、コンフリクト処理によって変更された項目の情報のみを両者間で受け渡し可能とすることで、メインプログラムの処理効率を向上させるユーザインタフェース制御装置および方法ならびに記憶媒体を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、例えば本発明のユーザインタフェース制御装置は、以下の構成を備える。すなわち、
プリンタドライバに入力された設定情報の不整合を回避するために前記プリンタドライバのユーザインタフェースを制御するユーザインタフェース制御装置であって、
前記ユーザインタフェースに表示される複数の入力部を介して設定情報を入力する入力手段と、
前記入力手段により入力された設定情報に対してコンフリクト処理ルールを適用して不整合を検出する検出手段と、
前記検出手段による前記不整合の検出に基づいて、前記複数の入力部のうちの少なくとも１つの入力部の表示を入力不能に更新する更新手段と、
を有することを特徴とする。
【００１１】
【発明の実施の形態】
（ハードウェア構成）
図１は本発明の一実施形態を示す印刷処理システムのブロック構成図である。印刷処理システムは、ホストコンピュータ３０００と、プリンタ１５００より構成される。
【００１２】
ホストコンピュータ３０００において、１はシステムバス４に接続される各デバイスを総括的に制御するＣＰＵ、２はＣＰＵ１の主メモリ、ワークエリア等として機能するＲＡＭである。３は各種プログラム、データを格納するＲＯＭであって、各種フォントを記憶するフォントＲＯＭ３ａ、ブートプログラムやＢＩＯＳ等を記憶するプログラムＲＯＭ３ｂ、および各種データを記憶するデータＲＯＭ３ｃに区分けして構成されている。
【００１３】
５はキーボードコントローラ（ＫＢＣ）で、キーボード９や不図示のポインティングデバイス（マウス）からのキー入力を制御する。６はＣＲＴコントローラ（ＣＲＴＣ）であり、ＣＲＴディスプレイ（ＣＲＴ）１０の表示を制御する。
【００１４】
外部メモリ１１（ディスクコントローラ（ＤＫＣ）７によりアクセス制御される）は、ハードディスク（ＨＤ）やフロッピーディスク（ＦＤ）等であり、図示の如く、オペレーティングシステムプログラム（以下ＯＳ）２０５をはじめ各種アプリケーション（例えば、図形、イメージ、文字、表等が混在した文書処理を行う文書処理アプリケーションプログラム）２０１、印刷処理関連プログラム２０４を記憶する他、ユーザファイル、編集ファイル等も記憶する。印刷処理関連プログラム２０４は、ページ記述言語を用いて記述される印刷データを生成するプログラムであって、同系列の複数のプリンタに対して共通に利用されうる。また、プリンタ制御コマンド生成モジュール（以下「プリンタドライバ」という）２０４１、プリンタドライバＵＩ制御モジュール２０４２を含む。
【００１５】
８はプリンタコントローラ（ＰＲＴＣ）であり、双方向性インタフェース２１を介してプリンタ１５００に接続され、プリンタ１５００との通信制御処理を行う。
【００１６】
外部メモリ１１に記憶されたアプリケーションは、ＲＡＭ２にロードされてＣＰＵ１により実行されることになる。また、ＣＰＵ１は、例えばＲＡＭ２へのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのWYSIWYG（What you see is What you get）を可能としている。さらに、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷設定設定画面（プリンタドライバＵＩ制御モジュール２０４２により制御される）を開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバ２０４１に対する印刷処理の設定を行うことができる。
【００１７】
プリンタ１５００において、１２はプリンタ１５００の全体を制御するＣＰＵである。１９はＣＰＵ１２の主メモリ、ワークエリア等として機能するとともに、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられるＲＡＭであり、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。１３はＲＯＭであり、各種フォントを記憶するフォントＲＯＭ１３ａ、制御プログラム等を記憶するプログラムＲＯＭ１３ｂ、および各種データを記憶するデータＲＯＭ１３ｃより構成される。
【００１８】
外部メモリ１４（メモリコントローラ（ＭＣ）２０によりアクセスを制御される）は、オプションとして接続されるハードディスク（ＨＤ）、フロッピーディスク（ＦＤ）、ＩＣカード等であり、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。ハードディスク等の外部メモリ１４が接続されていない場合には、ＲＯＭ１３のデータＲＯＭ１３ｃに、ホストコンピュータ３０００で利用される情報等を記憶することになる。なお、外部メモリ１４は１個に限らず、複数備えるものであってもよく、例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていてもよい。
【００１９】
操作部１５０１にはユーザからの操作を受け付ける操作パネルが設けられ、その操作パネルには操作のためのスイッチおよびＬＥＤ表示器等が配されている（図示は省略）。また、図示しないＮＶＲＡＭを有し、操作パネル１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００２０】
プリンタＣＰＵ１２は、ＲＯＭ１３のプログラムＲＯＭ１３ｂに記憶された制御プログラム等に基づき、印刷部インタフェース１６を介してシステムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。また、ＣＰＵ１２は入力部１８を介してホストコンピュータ３０００との通信処理が可能となっており、プリンタ１５００内の情報等をホストコンピュータ３０００に通知可能に構成されている。
【００２１】
（ソフトウェア構成）
図２は、所定のアプリケーションおよび印刷処理関連プログラムを起動して、ホストコンピュータ３０００上のＲＡＭ２にロードされた状態のＲＡＭ２のメモリマップを示している。ＲＡＭ２には、図示の如く、ＢＩＯＳ２０６、ＯＳ２０５をはじめ、アプリケーション２０１、印刷処理関連プログラム２０４、および関連データ２０３がロードされており、さらに空きメモリ領域２０２も確保されている。これにより、アプリケーション２０１および印刷処理関連プログラム２０４は実行可能状態にある。
【００２２】
印刷処理関連プログラム２０４におけるプリンタドライバＵＩ制御モジュール２０４２は、ユーザによる印刷設定指令に応じてＣＲＴ１０に印刷設定画面を表示しユーザからの設定を可能にする。
【００２３】
図７に、印刷設定画面の表示例を示す。同図において、[Print Style]欄８０は、印刷レイアウトを指定する欄であり、ユーザは例えば、片面印刷（1-Sided Printing）８０１、両面印刷（2-Sided Printing）８０２、および製本印刷（Booklet Printing）８０３のうちのいずれかをマウスでクリックすることで指定することができる。
【００２４】
[Finishing]欄８１は、印刷済み記録媒体の出力順序および仕上げについて指定する欄であり、ユーザは例えば、以下のいずれかから指定可能となっている。
【００２５】
[Collate] ８１１
部単位印刷。Ｎページの文書をＭ部印刷する場合に、第１ページ、第２ページ、…、第Ｎページの順に１枚ずつ出力し、これをＭ回繰り返す。
【００２６】
[Group] ８１２
ページ単位印刷。Ｎページの文書をＭ部印刷する場合に、第１ページをＭ枚、第２ページをＭ枚、…、第ＮページをＭ枚、の順に出力する。
【００２７】
[Staple] ８１３
ステープル仕上げ。上記[Collate] ８１１と同様に部単位で出力し、仕上げとして各部ごとにステープラで止める。
【００２８】
なお、本明細書では、上記したようなユーザ設定可能項目を「プリンタ機能」または単に「機能」とよぶ。この他にも多くのプリンタ機能を有するが、説明を簡単にするため省略する。
【００２９】
ここで、ユーザにとって不都合と思われる設定の組み合わせ、意味のない設定の組み合わせ、すなわち設定値間の不整合（コンフリクト）は、プリンタドライバＵＩ制御モジュール２０４２により、以下詳細に説明するコンフリクト処理として回避されるように設計される。例えば、図示においては、印刷レイアウトとして片面印刷（1-Sided Printing）８０１が指定されているが、この場合には、[Finishing]欄８１の[Staple] ８１３はグレイアウト表示され、指定できないようになる。また、図８に示すように、印刷レイアウトとして製本印刷（Booklet Printing）８０３が指定されたときには、[Finishing]欄８１のすべてがグレイアウト表示され、指定できないようにされる。上記した例はごく簡単な例示であって、実際に想定されるコンフリクトはかなりの数にのぼるであろう。以下、コンフリクト処理の詳細を説明する。
【００３０】
図３は、実施形態における印刷処理関連プログラム２０４のプリンタドライバＵＩ制御モジュール２０４２の概略構成を示している。３０３は、各モジュール間のデータの受け渡しやデータの更新等を管理してコンフリクト処理を統括するコンフリクトマネージャである。３０６が、上記した印刷設定画面表示制御を行い、本プリンタドライバＵＩ制御モジュール２０４２におけるメインプログラムとしてのプリンタドライバＵＩである。３０１は、後述する記述形式で記述される不整合回避戦略を示すコンフリクト処理ルールを列記したコンフリクト処理ルール記述ファイルである。３０２は、コンフリクト処理ルール記述ファイル３０１をロードして、入力された設定値に対してコンフリクト処理ルールを適用し、各機能の状態を推論する推論エンジン、３０４は、各プリンタ機能の状態をリスト形式で表示する状態変数リストであり、ユーザからの入力およびコンフリクト処理ルール記述ファイル３０１の内容に基づき更新されうる。３０５は、プリンタドライバＵＩ３０６が提供する画面表示の基になる帳票としての内部構造体であり、状態変数リスト３０４と連動して各プリンタ機能の状態を所定の形式で表示する。
【００３１】
その後に、プリンタドライバＵＩ３０６を介してユーザからの設定情報を受け取ったコンフリクトマネージャ３０３は、コンフリクト処理ルール記述ファイル３０１を参照する。このことは、図示の如くコンフリクト処理ルール記述ファイル３０１からコンフリクトマネージャ３０３に向かう矢印で、「R(Read)」として表示されている。参照の結果、設定情報がコンフリクト処理ルールに適合する場合、コンフリクト処理が適用される。そうして、コンフリクトマネージャ３０３は、状態変数リスト３０４および内部構造体３０５を更新してプリンタドライバＵＩ３０６に反映させる。この更新作業は、図示の如くコンフリクトマネージャ３０３は、状態変数リスト３０４および内部構造体３０５とは各々双方向矢印で結ばれ、「R/W (Read/Write)」として表示されている。
【００３２】
図４は、図３に示した各モジュールで扱われるデータの関連を説明する模式図である。図４において、コンフリクト処理ルール記述ファイル３０１は、推論エンジン３０２にインクルード（ロード）されたかたちで参照され、さらに新たなルールが追記される。このコンフリクト処理ルール記述ファイル３０１は、コンフリクトマネージャ３０３にも参照され、それを受けて状態変数リスト３０４が変更されることになる。また、内部構造体３０５と状態変数リスト３０４とは先に述べたとおり連動表示されるものであるから、互いにマッピングされる関係にある。そしてこの状態がプリンタドライバＵＩ３０６の制御によってユーザに見えるかたちで表現される。
【００３３】
内部構造体３０５は、プリンタ機能名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する処理（グレイアウト表示するとともに設定不可の状態にする処理）を指示することができる。
【００３８】
図６は、以上の例に従って記述されている。図７に表示されたプリンタ機能を例にとると、図７に示した[Collate] ８１１に対応する部単位印刷機能、[Group] ８１２に対応するページ単位印刷機能、および[Staple] ８１３に対応するステープル仕上げ機能はそれぞれ、Collate()、Group()、およびStaple()で示され、引数はONまたはOFFとなる。また、[PrintStyle]欄８０に対応する印刷レイアウト機能は、Layout()で示され、引数は、1-Sided、2-Sided、Bookletのいずれかである。
【００３９】
図６の(1)は、ユーザにより[Collate] ８１１をチェックされたことでCollate(ON)となったときは、Staple(OFF)とするルールを表す。(2)は、Group(ON)となったときは、同じくStaple(OFF)とするルールである。
【００４０】
また、(3)以降の各行の次の行には、ＵＩ更新の処理として{disable}の記述が追加されている。この記述により、各行のルールを適用後に該当項目のコントロールがdisableされることになる。
【００４１】
（プリンタドライバＵＩ制御モジュール２０４２の処理の内容）
以下、図５のフローチャートを用いて、コンフリクト処理を含むプリンタドライバＵＩ制御モジュール２０４２の処理について、詳しく説明する。
【００４２】
プリンタドライバＵＩ制御モジュール２０４２の処理は、ユーザがキーボードコントローラＫＢＣ５等を用いて、印刷設定画面を開く指示をすることで始まる。ユーザが印刷設定画面を開くよう指示すると、上記したとおり、ＯＳ２０５の管理の下、ＲＡＭ２に印刷処理関連プログラム２０４がロードされる。
【００４３】
印刷処理関連プログラム２０４がＲＡＭ２にロードされると、まず、印刷設定画面を開くための初期化処理として、推論エンジン３０２は、コンフリクト処理ルール記述ファイル３０１をコンフリクトマネージャ３０３を介して、ＲＡＭ２に読み込む（ステップＳ５０１）。
【００４４】
続いて、コンフリクトマネージャ３０３が利用する状態変数リスト３０４を作成する。（ステップＳ５０３）。
【００４５】
コンフリクト処理ルール記述ファイル３０１に記述されるすべてのプリンタ機能名は、コンフリクトマネージャ３０３の内部にインクルードされた状態変数リスト３０４にそれぞれ、状態変数を持っている。この状態変数の値は、プリンタドライバＵＩ３０６で使用される内部構造体３０５の対応するメンバの値と連動している。各プリンタ機能名の状態変数の初期値は、その内部構造体３０５のメンバの値となる。
【００４６】
例えば、図４において、内部構造体３０５に記述されている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 は上記ルールが成立したことによって０から１に変更される。
【００４９】
続いて、印刷設定画面のオープンのために必要とされるその他の初期化処理を行い、図７に例示したような印刷設定画面をオープンする（ステップＳ５０４）。
【００５０】
印刷設定画面がオープンされた後は、ＯＳより送られてくるイベントを取得し、そのイベントに対する処理を行う（ステップＳ５０５）。
【００５１】
次に、ステップＳ５０５にて取得したイベントが、ユーザが印刷設定画面上の設定項目を変更したイベントであるか否かの判別を行い（ステップ５０６）、印刷設定画面上の設定項目を変更するイベントではなかった場合には、ステップＳ５１５に進み、印刷設定画面のクローズ要求か否かの判別を行う。クローズ要求であった場合には、ステップＳ５１６に進み、終了処理を行い、印刷設定画面をクローズして、すべての処理を終了する。一方、ステップＳ５１５での判別の結果、クローズ要求ではなかった場合は、ステップＳ５０５に戻り、処理を繰り返す。
【００５２】
ステップＳ５０６で、ステップＳ５０５で取得したイベントがユーザによる設定変更要求であった場合には、ステップＳ５０７に進み、構築したコンフリクト処理ルールを適用する。
【００５３】
取得したイベントがユーザによる設定変更要求であった場合の一例として、図７に示す[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の状態変数が更新され、続いて推論エンジン３０２がコールされて、コンフリクト処理ルールの適用が始まる。まず、推論エンジン３０２内の各プリンタ機能名が状態変数リストの各メンバの持つ値で初期化される。続いて、図６の(5)が適用され、StapleはOFFのままコントロールはdisable、すなわちグレイアウト表示されるとともに設定不可の状態にされる。同様に、同図の(7)、(8)が適用され、Collateの値はOFFからONへ、Groupの値はONからOFFへ変更された後に、各コントロールはdisableとなる。
Collate  ON (disable)
Group  OFF (disable)
Staple  OFF (disable)
Layout  BOOKLET
【００５８】
以上で推論エンジン３０２でのコンフリクト処理ルールの適用が終了する。
【００５９】
コンフリクトマネージャ３０３は、上記ステップＳ５０７のコンフリクト処理ルールを適用結果に基づき状態変数リストを更新し（ステップＳ５０８）、内部構造体３０５を更新する（ステップＳ５０９）。更新された箇所はプリンタドライバＵＩ３０６に通知される（ステップＳ５１０）。通知の方法としては、例えば、内部構造体３０５に更新を示すフラグを立てる、更新を示すビットフラグまたは構造体を別途用意して返す、変更箇所を示す識別子のリストを返す、プリンタドライバＵＩ３０６からの問い合わせに対して応答する、などいくつかの方法が考えられる。
【００６０】
続いて、プリンタドライバＵＩ３０６が内部構造体３０５のメンバの値を参照して、ＵＩの更新が必要かどうかの判別を行う（ステップＳ５１１）。ＵＩの更新の必要がない場合には、ステップＳ５０５に戻り、処理を繰り返す。ＵＩの更新が必要な場合には、ＵＩの更新を行ったうえで（ステップＳ５１２）、ステップＳ５０５に戻り、処理を繰り返すことになる。上記の例では、Layoutが１−Sided PrintingからBooklet Printingに設定が変更されたことにより、CollateがOFFからONへ、GroupがONからOFFへと変化するとともにCollate, Group, Staple がdisableにされるので、印刷設定画面は、図７に示した状態から図８に示す状態に更新される。
【００６１】
ここで、ＵＩの更新はコンフリクトマネージャ３０３が行ってもよいし、メインプログラムであるプリンタドライバＵＩ３０６が行ってもよい。そのため、ステップＳ５１０の変更箇所の通知はステップＳ５１２のＵＩ更新後になる場合もある。プリンタドライバＵＩ３０６が変更箇所情報を知ることで、プリンタドライバＵＩ３０６で更新処理を行う場合には、該当するコントロールのみに絞った更新処理を行うことが可能になる。また、コンフリクトマネージャ３０３で更新処理を行う場合には、プリンタドライバＵＩ３０６は、当該箇所の変更に伴うコンフリクト処理以外の関連処理のみを専ら行うことができるため、全体の処理効率が向上することになる。
【００６２】
以上の処理は、印刷設定画面がクローズされるまで、繰り返し実行される。印刷設定画面がクローズされると処理は終了し、印刷処理関連プログラム２０４の処理も終了し、ＲＡＭ２からはＯＳ２０５の機能により消去される。
【００６３】
また、上記した処理において、ステップＳ５１０ないしＳ５１２において、プリンタドライバＵＩ３０６は、どのコントロールを変更し、その結果、どのコントロールが影響を受けたのかを知ることができるため、コントロールをdisableにする条件を掌握することで、図９に示すようにコントロールが利用不可となっている理由を表示させることも可能である。
【００６４】
【他の実施形態】
なお、上述した実施形態では、プリンタ装置に対して、コンフリクト処理を含むＵＩ制御を行う例について説明したが、本発明は、プリンタ装置に限らず、ディジタルカメラ、ディジタルレコーダ、イメージスキャナ等の周辺装置、制御機器の他、モデムやルータといったネットワーク関連機器にも適用可能であることはいうまでもない。これらの複数の機器から構成されるシステムに適用することも可能である。
【００６５】
上述したように、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００６６】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００６７】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した図５のフローチャートに対応するプログラムコードが格納されることになる。
【００６８】
以上説明したように、本発明の一側面によれば、入力された設定情報に対してコンフリクト処理ルールを適用して不整合を検出し、その不整合の検出に基づいて、前記複数の入力部のうちの少なくとも１つの入力部の表示を入力不能に更新することができる。
また、本発明の別の側面によれば、プリンタドライバのユーザインタフェースプログラムと、前記プリンタドライバに入力された設定情報の不整合を回避するためのコンフリクトマネージャプログラムとを搭載し、前記プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置において、前記プリンタドライバに入力される情報の不整合を検出する処理と、前記設定情報の不整合が検出された場合に、当該不整合を検出した旨を前記ユーザインタフェースプログラムに通知する処理がコンフリクトマネージャプログラムによって実行される一方、通知された通知内容に従って、前記プリンタドライバのユーザインタフェースの表示を更新する処理がユーザインタフェースプログラムによって実行されるので、これにより、プリンタドライバのプログラムの処理効率を向上させることができる。
また、本発明の更に別の側面によれば、プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置において、プリンタドライバに対して設定情報が入力されたことに応答して設定情報の不整合を検出し、この不整合が検出されたことに応答して、前記プリンタドライバのユーザインタフェースプログラムを実行して前記不整合の理由を表示することができる。
【図面の簡単な説明】
【図１】実施形態に係る印刷処理システムのブロック構成図である。
【図２】実施形態におけるＲＡＭ２のメモリマップを示す図である。
【図３】実施形態におけるプリンタドライバＵＩ制御モジュールの概略構成図である。
【図４】実施形態におけるプリンタドライバＵＩ制御モジュールで扱われるデータの関連を説明する模式図である。
【図５】実施形態におけるプリンタドライバＵＩ制御モジュールの処理を示すフローチャートである。
【図６】実施形態におけるコンフリクト処理ルールの一例を示す図である。
【図７】実施形態における印刷設定画面の一例を示す図である。
【図８】実施形態における印刷設定画面の一例を示す図である。
【図９】実施形態における印刷設定画面の一例を示す図である。
【図１】
0003833067.tif 000002
【図２】
0003833067.tif 000003
【図３】
0003833067.tif 000004
【図４】
0003833067.tif 000005
【図５】
0003833067.tif 000006
【図６】
0003833067.tif 000007
【図７】
0003833067.tif 000008
【図８】
0003833067.tif 000009
【図９】
0003833067.tif 000010