** kinput2 で使われている widget class について **

kinput2 ではさまざまな widget を使用しています。このうち、今回 kinput2 
のために新たに開発した widget について、簡単に説明します。


* InputConv object
変換を行なうオブジェクトです。ただし実際に使われるのはこのサブクラスで、
InputConv そのものを XtCreateWidget() してはいけません。このクラスは他と
のインターフェイスを定義するために存在するメタ widget です。

* CcWnn object
InputConv オブジェクトのサブクラスで、入力文字変換に cconv、かな漢字変換
に Wnn を使用して変換を行ないます。

* ConvDisplay object
文字列の表示を行なうオブジェクトです。InputConv と同じくメタ widget なの
でCreate してはいけません。kinput2 では文字列の表示はすべてこの 
ConvDisplayのサブクラスのオブジェクトによって行なわれます。

* WcharDisplay object
ConvDisplay オブジェクトのサブクラスで、wchar 型の文字列データを表示しま
す。CcWnn と組み合わせると変換テキストを正しく表示できます。

* CandidatePanel widget
候補選択用の widget です。Athena の List widget みたいなものですが、文字
列のデータ型が ICString 型であるところが異なります。

* Canvas widget
一般的なお絵書き widget です。Core に expose と resize のコールバックを
つけただけの widget。kinput2 に限らずいろいろ使えるでしょう。
SeparateConversion のテキスト表示に使われています。

* ICLabel widget
モード表示用のラベル widget です。Athena の Label widget みたいなもので
すが文字列が ICString 型になっているところが違います。

* AdoptedShell widget
一見ただのシェル widget のように見えますが、実は XtNparentWindow という
リソースで親 window を指定できるというものです。元来 Xt は親ウィンドウを
変えられるようにはできていないので、ちょっと Xt をだましているという面も
あります。kinput2 以外にも応用できると思いますが、使う時にはちょっと注意
が必要でしょう。ツールキットについてそれなりの知識が必要です。

* CanvasShell widget
AdoptedShell widget に Canvas widget のように expose と resize のコール
バックをつけたものです。OverTheSpotConversion と OffTheSpotConversion の
テキスト表示に使われています。

* ConversionControl widget
入力スタイルを決定し、変換全体をコントロールするための widget です。これ
もメタ widget です。

* OverTheSpotConversion widget
ConversionControl のサブクラスで、over the spot (いわゆるその場変換) タ
イプの変換を実現するためのものです。

* OffTheSpotConversion widget
同じく ConversionControl のサブクラスで、off the spot タイプの変換を実現
するためのものです。これはクライアントウィンドウ上のある領域を変換専用領
域として使用する入力方法です。

* SeparateConversion widget
OffTheSpotConversion のサブクラスで、kinputのように 変換専用の別ウィンド
ウをつくってそこで入力を行なうタイプの変換を実現するためのものです。

* KinputProtocol widget
kinput2 とクライアントとの間の通信を担当する widget です。この通信はあら
かじめ決められたプロトコルによって行なわれますが、この widget はkinput 
プロトコルファミリーに属するプロトコルを扱います。kinput2 のために開発し
た kinput2 プロトコルは kinput の使用していたプロトコルと上位互換性を持
ちますが、その他にも kinput プロトコルから派生したプロトコルが存在します。
どれも結構似ているのでそれらすべてを扱う widget にしました。この widget 
は現在、

	+ kinput プロトコル
	+ kinput2 プロトコル 
	+ jinput プロトコル
	+ xlc プロトコル

をサポートしています。jinput プロトコルは松下のフロントエンド jinput が
使用するプロトコル、xlc はソニーのフロントエンド sjx が使用するプロトコ
ルで、ともに kinput プロトコルの上位互換です。

* XimpProtocol widget
これも KinputProtocol と同じく kinput2 とクライアントとの間の通信を
担当する widget です。この widget が扱うのは XIMP というプロトコルで、
これは富士通やソニー、Sun などが共同で定めたプロトコルです。

* ConversionManager widget
プロトコル widget と入力スタイル widget を結びつけるための widget です。
これにより kinput2 は複数のプロトコル、複数の入力スタイルをサポートでき
るようになっています。


最後に、これらの widget クラスのツリーをつけておきます。ただし括弧で括ら
れたものはツールキット Intrinsics の widget クラスです。


(Object)
    InputConv
	CcWnn
    ConvDisplay
	WcharDisplay
    (RectObj)
	(unnamed)
	    (Core)
		CandidatePanel
		Canvas
		ICLabel
		KinputProtocol
		XimpProtocol
		(Composite)
		    ConversionManager
		    (Shell)
			(OverrideShell)
			    AdoptedShell
				CanvasShell
			(WmShell)
			    (VendorShell)
				(TransientShell)
				    ConversionControl
					OverTheSpotConversion
					OffTheSpotConversion
					    SeparateConversion
