XToolKit

XToolKitは、 ボタン、プルダウンメニュ、テキストwindowなどのGUI要素を使用して GUI (Graphical User Interface)を作成するのを容易にするための 高レベルXwindowインターフェースである。 Xlibクラスとの大きな違いは、XToolKitがXserverから送られる Xeventと一致するユーザーが定義した対話ルーチンを呼び出し、 それらの対話指向windowパーツと一致した外観を提供することである。 XToolKitに含まれるクラスは、以下の継承構造を持っている。

          xwindow
               panel
                    menubar-panel
                    menu-panel
                    filepanel
                    textviewpanel
                    confirmpanel
               panel-item
                    button-item
                         menu-button-item
                         bitmap-button-item
                         menu-item
                    text-item
                    slider-item
                    choice-item
                    joystick-item
               canvas
               textwindow
                    buffertextwindow
                         scrolltextwindow
                    textedit
               scroll-bar
                    horizontal-scroll-bar

以下に示すxwindowクラスはXToolKitの5つの基本クラスである。 panel, panel-item, canvas, textWindowscroll-barmenubar-panelmenu-panelは、panelの下に定義される。 新しいアプリケーションwindowを作り、イベントの上でそれを実行させるための 基本的な方策は、以下の通りである。

  1. アプリケーションクラスの定義 アプリケーションクラスwindowは、 XToolKitの要素を置く能力を持つpanelのサブクラスとして 定義されなければならない。
  2. イベントハンドラの定義 アプリケーションクラスにおいて、 ボタンが押されたり、メニューアイテムが選択されたりしたときに 呼び出されるイベントハンドラを定義する。 イベントハンドラは、panel-itemの指定された引数を持つメソッドとして 定義すべきである。
  3. サブパネルの定義 もし、menubar-panelを使用するなら、 アプリケーションwindowの一番上におかれる。 したがって、:create-menubarによって最初に作成されなければ ならない。 同様に、menu-panelは、そのmenu-panelと関連する menu-button-itemより前に定義する必要がある。
  4. パネルアイテムの作成 button-item, text-item, slider-itemなどのようなパネルアイテムは、 (send-super :create-item class label object method)によって 作成することができる。 上記で定義されたイベントハンドラは、それぞれのパネルアイテムと 接続される。 これらの初期化手続きは、アプリケーションwindowクラスの :createメソッドの中で定義すべきである。 必要なときはいつでもイベント送信を停止するためのquitボタンを 定義することを忘れないこと。 どんなtextWindowcanvasも、:locate-itemメソッドを経由して アプリケーションwindowの中に置くことができる。
  5. window全体の作成 :createメッセージをアプリケーション クラスに送ることで、windowにXToolKitの要素を正しく置いたアプリケーション windowを作成する。
  6. イベント送信の実行 Xserverからイベントを受け、一致する windowに配るためには、window-main-loopを実行すること。 Solaris2上では、イベントを配るための異なったスレッドである window-main-threadで実行する。 window-main-threadでは、最上位レベルの対話が活きている。 window-main-threadを2回以上実行してはならない。



Subsections

2016-04-05