/* # skkinput (Simple Kana-Kanji Input)
 * Kinput.h --- Public Header file for KinputWidget
 * This file is part of skkinput.
 * Copyright (C) 1997
 * Takashi SAKAMOTO (sakamoto@yajima.kuis.kyoto-u.ac.jp)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with skkinput; see the file COPYING.  If not, write to
 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 */
#ifndef Kinput_h
#define Kinput_h
#include "commondef.h"
#include "kanji.h"

#define XtNenableKinput1		"enableKinput1"
#define XtCEnableKinput1		"EnableKinput1"

typedef struct _KinputRec	*KinputWidget ;
typedef struct _KinputClassRec	*KinputWidgetClass ;

extern WidgetClass kinputWidgetClass ;

/*
 * 変換クライアント管理構造体
 */
struct KinputClient {
  /* 管理に用いる情報。*/
  int probe ;
  /* これは XIM で利用する。XIM では、利用の予約をしてから後に利用開 *
   * 始要求がくる。予約した時点で何だか結構色々情報を交換するらしい。*
   * 利用中かどうかは probe が持ち、予約されているかどうかは reserve *
   * KIP では使わないと思う。あれは reserve == probe */
  int reserve ;

  /* 変換クライアントのウィンドウID */
  Window req_window ;
  Window focus_window ;
  /* 変換クライアントへの入力を奪うために利用されるウィンドウ */
  Window probe_window ;
  Window xevent_window ;
  /* kinput2 protocol で利用される ATOM (しかし..xim でまたここらあた */
  /* りを修正せにゃならんのか…ぞっとしないな) */
  Atom property ;
  Atom target ;
  Atom selection ;
  unsigned long attribute_mask ;

  /* 通信に用いているプロトコル */
  int protocol ;
  int window_style ;
  int event_select ;

  /* プロトコル・ウィジェット */
  Widget protocol_widget ;
  /* 変換窓を表示しているウィジェット */
  Widget skkinput ;

  /* skkinput widget が利用しているフォント(ただし、デフォルトのフォン*
   * トではない。これは over-the-spot が変換クライアントからの要求に  *
   * 従って用意したフォントである。*/
#if 1
  struct skkinputManagedFont	*fontset[ NUMBER_OF_CHARSET ] ;
#else
  XFontStruct	*fontset[ NUMBER_OF_CHARSET ] ;
#endif
  /* ウィンドウに付属するモード情報 */
  int chat_adapter, eggnl ;

  /* 次のクライアントへのポインタ。*/
  struct KinputClient *next ;
} ;

#endif
