Mercurial > kinput2.yaz
annotate lib/Ruby.c @ 16:598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 08 Mar 2010 20:38:17 +0900 |
parents | |
children |
rev | line source |
---|---|
16
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1 /* |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2 * Copyright (c) 1990 Software Research Associates, Inc. |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
3 * |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
4 * Permission to use, copy, modify, and distribute this software and its |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
5 * documentation for any purpose and without fee is hereby granted, provided |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
6 * that the above copyright notice appear in all copies and that both that |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
7 * copyright notice and this permission notice appear in supporting |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
8 * documentation, and that the name of Software Research Associates not be |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
9 * used in advertising or publicity pertaining to distribution of the |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
10 * software without specific, written prior permission. Software Research |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
11 * Associates makes no representations about the suitability of this software |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
12 * for any purpose. It is provided "as is" without express or implied |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
13 * warranty. |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
14 * |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
15 * Author: Makoto Ishisone, Software Research Associates, Inc., Japan |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
16 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
17 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
18 /* Copyright 1991 NEC Corporation, Tokyo, Japan. |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
19 * |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
20 * Permission to use, copy, modify, and distribute this software and its |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
21 * documentation for any purpose and without fee is hereby granted, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
22 * provided that the above copyright notice appear in all copies and that |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
23 * both that copyright notice and this permission notice appear in |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
24 * supporting documentation, and that the name of NEC Corporation |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
25 * not be used in advertising or publicity pertaining to distribution |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
26 * of the software without specific, written prior permission. NEC |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
27 * Corporation makes no representations about the suitability of this |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
28 * software for any purpose. It is provided "as is" without express |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
29 * or implied warranty. |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
30 * |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
31 * NEC CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
32 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
33 * NO EVENT SHALL NEC CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
34 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
35 * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
36 * OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
37 * PERFORMANCE OF THIS SOFTWARE. |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
38 * |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
39 * Author: Akira Kon, NEC Corporation. (kon@d1.bs2.mt.nec.co.jp) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
40 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
41 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
42 /* Copyright 2003 Hiroyuki Komatsu <komatsu@taiyaki.org> (Ruby.c) */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
43 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
44 /* 直さなければならないところ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
45 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
46 ・Destroy が呼ばれないので CloseUIContext できない。 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
47 ・モード領域の大きさ。(これは他のファイルだろうな) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
48 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
49 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
50 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
51 #ifndef lint |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
52 static char *rcsid = "$Id: Ruby.c,v 1.2 2003/06/10 02:11:23 komatsu Exp $"; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
53 #endif |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
54 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
55 #include <X11/IntrinsicP.h> |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
56 #include <X11/StringDefs.h> |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
57 #include <X11/Xmu/Atoms.h> |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
58 #define XK_KATAKANA |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
59 #include <X11/keysym.h> |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
60 #if XtSpecificationRelease > 4 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
61 #include <X11/Xfuncs.h> |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
62 #endif |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
63 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
64 #include "RubyP.h" |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
65 #include "DebugPrint.h" |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
66 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
67 #define wchar_t wchar |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
68 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
69 #include "ruby-c.h" |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
70 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
71 static XtResource resources[] = { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
72 #define offset(field) XtOffset(RubyObject, ruby.field) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
73 { XtNrubyhost, XtCRubyhost, XtRString, sizeof(String), |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
74 offset(rubyhost), XtRString, NULL }, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
75 { XtNrubyfile, XtCRubyfile, XtRString, sizeof(String), |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
76 offset(rubyfile), XtRString, NULL }, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
77 { XtNsendReturnByString, XtCSendReturnByString, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
78 XtRBoolean, sizeof(Boolean), |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
79 offset(sendReturnByString), XtRBoolean, False }, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
80 #undef offset |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
81 }; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
82 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
83 static void ClassInitialize(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
84 static void Initialize(), Destroy(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
85 static Boolean SetValues(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
86 static int InputEvent(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
87 static ICString *GetMode(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
88 static int CursorPos(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
89 static int NumSegments(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
90 static ICString *GetSegment(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
91 static int CompareSegment(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
92 static ICString *GetItemList(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
93 static int SelectItem(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
94 static int ConvertedString(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
95 static int ClearConversion(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
96 static int GetTriggerKeys(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
97 static int PreeditString(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
98 static int StatusString(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
99 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
100 static void convend(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
101 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
102 #if 1 /* KC_SETLISTCALLBACK */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
103 static void openSelection(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
104 #define SELECTION_SET 0 /* SelectionStart をしても良いと言う情報を設定する */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
105 #define SELECTION_DO 1 /* 実際に SelectionStart を開始する */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
106 #else /* !KC_SETLISTCALLBACK */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
107 #define openSelection(x, y, z) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
108 #endif /* !KC_SETLISTCALLBACK */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
109 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
110 static ICString *GetAuxSegments(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
111 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
112 RubyClassRec rubyClassRec = { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
113 { /* object fields */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
114 /* superclass */ (WidgetClass) &inputConvClassRec, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
115 /* class_name */ "Ruby", |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
116 /* widget_size */ sizeof(RubyRec), |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
117 /* class_initialize */ ClassInitialize, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
118 /* class_part_initialize */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
119 /* class_inited */ FALSE, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
120 /* initialize */ Initialize, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
121 /* initialize_hook */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
122 /* obj1 */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
123 /* obj2 */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
124 /* obj3 */ 0, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
125 /* resources */ resources, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
126 /* num_resources */ XtNumber(resources), |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
127 /* xrm_class */ NULLQUARK, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
128 /* obj4 */ FALSE, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
129 /* obj5 */ FALSE, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
130 /* obj6 */ FALSE, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
131 /* obj7 */ FALSE, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
132 /* destroy */ Destroy, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
133 /* obj8 */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
134 /* obj9 */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
135 /* set_values */ SetValues, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
136 /* set_values_hook */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
137 /* obj10 */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
138 /* get_values_hook */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
139 /* obj11 */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
140 /* version */ XtVersion, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
141 /* callback_private */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
142 /* obj12 */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
143 /* obj13 */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
144 /* obj14 */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
145 /* extension */ NULL |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
146 }, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
147 { /* inputConv fields */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
148 /* InputEvent */ InputEvent, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
149 /* GetMode */ GetMode, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
150 /* CursorPos */ CursorPos, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
151 /* NumSegments */ NumSegments, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
152 /* GetSegment */ GetSegment, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
153 /* CompareSegment */ CompareSegment, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
154 /* GetItemList */ GetItemList, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
155 /* SelectItem */ SelectItem, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
156 /* GetConvertedString */ ConvertedString, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
157 /* ClearConversion */ ClearConversion, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
158 /* GetAuxSegments */ GetAuxSegments, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
159 /* SupportMultipleObjects */ True, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
160 /* GetTriggerKeys */ GetTriggerKeys, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
161 /* num_trigger_keys */ 0, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
162 /* trigger_keys */ NULL, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
163 /* GetPreeditString */ PreeditString, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
164 /* GetStatusString */ StatusString, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
165 /* NoMoreObjects */ False, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
166 }, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
167 { /* ruby fields */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
168 /* foo */ 0, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
169 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
170 }; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
171 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
172 WidgetClass rubyObjectClass = (WidgetClass)&rubyClassRec; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
173 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
174 static void fix(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
175 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
176 static ICString *SymbolList; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
177 static int NumSymbols; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
178 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
179 static void addObject(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
180 static void deleteObject(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
181 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
182 static Display *displaybell = (Display *)0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
183 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
184 static void rubyEUCtoICString(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
185 static void rubyEUCArraytoICStringArray(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
186 static void rubySelectionEvent(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
187 static void rubySelectionDisplay(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
188 static void rubyDialogDisplay(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
189 static void rubyDisplayPreEdit(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
190 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
191 typedef struct { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
192 ICString *array; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
193 int length; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
194 } ICStringArray; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
195 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
196 static ICString *ruby_tmp_seg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
197 static ICStringArray *ruby_cand_list; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
198 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
199 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
200 ClassInitialize() |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
201 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
202 ruby_init(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
203 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
204 ruby_tmp_seg = XtMalloc(sizeof(ICString)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
205 ruby_tmp_seg->nchars = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
206 ruby_tmp_seg->nbytes = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
207 ruby_cand_list = XtMalloc(sizeof(ICStringArray)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
208 ruby_cand_list->length = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
209 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
210 ruby_eval("$LOAD_PATH.concat(eval(`ruby -e 'p $LOAD_PATH'`))"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
211 ruby_eval("$LOAD_PATH.uniq!"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
212 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
213 if (ruby_eval("ENV['KINPUT2_RUBY']") != Qnil) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
214 ruby_eval("require ENV['KINPUT2_RUBY']"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
215 } else { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
216 ruby_eval("require 'kinput2_default'"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
217 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
218 if (ruby_eval("global_variables.member?('$kanjiConv')") == Qfalse) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
219 fprintf(stderr, "Abort: KanjiConv was not initialized.\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
220 exit (-1); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
221 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
222 ruby_eval("kanjiConv = $kanjiConv"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
223 TRACE(("RubyObjectClass initialized\n")); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
224 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
225 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
226 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
227 InputEvent(w, event) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
228 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
229 XEvent *event; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
230 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
231 RubyObject obj = (RubyObject)w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
232 char key_buf[200]; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
233 KeySym keysym; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
234 int len, nbytes, functionalChar; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
235 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
236 /* KeyPress以外は捨てる */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
237 if (event->type != KeyPress /*&& event->type != KeyRelease*/) return 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
238 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
239 /* 取りあえず文字に直してしまう */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
240 key_buf[0] = '\0'; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
241 key_buf[1] = '\0'; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
242 key_buf[2] = '\0'; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
243 nbytes = XLookupString(event, key_buf, 20, &keysym, NULL); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
244 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
245 if (keysym == XK_space && (event->xkey.state & ShiftMask)) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
246 convend(obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
247 return 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
248 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
249 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
250 /* ベルを鳴らすディスプレイの設定 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
251 displaybell = XtDisplayOfObject((Widget)obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
252 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
253 /* かな漢字変換する */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
254 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
255 VALUE pass; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
256 printf ("key_buf: `%d'\n", key_buf[0]); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
257 printf ("strlen(key_buf): `%d'\n", strlen(key_buf)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
258 printf ("nbytes: `%d'\n", nbytes); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
259 pass = ruby_evalf ("kanjiConv.inputEvent(%d, %d, %d)", |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
260 key_buf[0], (int)keysym, (int)(event->xkey.state)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
261 printf ("Input: done\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
262 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
263 rubyDisplayPreEdit(obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
264 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
265 return NUM2INT(pass); /* 1: pass the key / 0: trap the key */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
266 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
267 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
268 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
269 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
270 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
271 rubyDialogDisplay(obj) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
272 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
273 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
274 ICAuxControlArg arg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
275 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
276 /* I'm not sure about Aux. */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
277 if (ruby_eval("kanjiConv.dialog.visible") == Qfalse) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
278 if (ruby_eval("kanjiConv.dialog.call_open") == Qtrue && |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
279 ruby_eval ("kanjiConv.dialog.text.length > 0") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
280 printf ("Dialog: open\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
281 arg.command = ICAuxStart; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
282 XtCallCallbackList((Widget)obj, obj->inputConv.auxcallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
283 (XtPointer)&arg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
284 ruby_eval("kanjiConv.dialog.open_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
285 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
286 } else { /* value_dialog_visible == true */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
287 if (ruby_eval("kanjiConv.dialog.call_close") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
288 printf ("Dialog: close\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
289 arg.command = ICAuxEnd; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
290 XtCallCallbackList((Widget)obj, obj->inputConv.auxcallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
291 (XtPointer)&arg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
292 ruby_eval("kanjiConv.dialog.close_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
293 printf ("Dialog: close...done\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
294 } else { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
295 arg.command = ICAuxChange; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
296 XtCallCallbackList((Widget)obj, obj->inputConv.auxcallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
297 (XtPointer)&arg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
298 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
299 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
300 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
301 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
302 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
303 rubySelectionEvent(obj) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
304 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
305 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
306 /*** Right ***/ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
307 if (ruby_eval("kanjiConv.selection.call_right") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
308 moveSelection(obj, ICMoveRight); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
309 ruby_eval("kanjiConv.selection.right_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
310 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
311 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
312 /*** Left ***/ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
313 if (ruby_eval("kanjiConv.selection.call_left") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
314 moveSelection(obj, ICMoveLeft); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
315 ruby_eval("kanjiConv.selection.left_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
316 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
317 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
318 /*** Down ***/ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
319 if (ruby_eval("kanjiConv.selection.call_down") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
320 moveSelection(obj, ICMoveDown); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
321 ruby_eval("kanjiConv.selection.down_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
322 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
323 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
324 /*** Up ***/ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
325 if (ruby_eval("kanjiConv.selection.call_up") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
326 moveSelection(obj, ICMoveUp); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
327 ruby_eval("kanjiConv.selection.up_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
328 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
329 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
330 /*** Beginning Line ***/ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
331 if (ruby_eval("kanjiConv.selection.call_line_beginning") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
332 moveSelection(obj, ICMoveLeftMost); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
333 ruby_eval("kanjiConv.selection.line_beginning_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
334 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
335 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
336 /*** End Line ***/ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
337 if (ruby_eval("kanjiConv.selection.call_line_end") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
338 moveSelection(obj, ICMoveRightMost); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
339 ruby_eval("kanjiConv.selection.line_end_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
340 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
341 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
342 /*** Get Index ***/ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
343 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
344 ICSelectionControlArg arg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
345 arg.command = ICSelectionGet; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
346 arg.u.current_item = -1; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
347 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
348 XtCallCallbackList((Widget)obj, obj->inputConv.selectioncallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
349 (XtPointer)&arg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
350 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
351 if (arg.u.current_item >= 0) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
352 ruby_evalf ("kanjiConv.set_cand_index (%d)", arg.u.current_item); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
353 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
354 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
355 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
356 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
357 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
358 moveSelection(obj, dir) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
359 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
360 int dir; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
361 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
362 ICSelectionControlArg arg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
363 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
364 arg.command = ICSelectionMove; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
365 arg.u.dir = dir; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
366 XtCallCallbackList((Widget)obj, obj->inputConv.selectioncallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
367 (XtPointer)&arg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
368 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
369 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
370 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
371 rubySelectionDisplay(obj) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
372 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
373 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
374 ICSelectionControlArg arg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
375 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
376 if (ruby_eval("kanjiConv.selection.call_open") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
377 printf ("Selection: open\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
378 arg.command = ICSelectionStart; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
379 arg.u.selection_kind = ICSelectionCandidates; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
380 XtCallCallbackList((Widget)obj, obj->inputConv.selectioncallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
381 (XtPointer)&arg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
382 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
383 /* set current item */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
384 arg.command = ICSelectionSet; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
385 arg.u.current_item = 0; /* INDEX of ITEM */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
386 XtCallCallbackList((Widget)obj, obj->inputConv.selectioncallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
387 (XtPointer)&arg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
388 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
389 ruby_eval("kanjiConv.selection.open_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
390 } else if (ruby_eval("kanjiConv.selection.call_close") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
391 printf ("Selection: close\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
392 arg.command = ICSelectionEnd; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
393 arg.u.current_item = -1; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
394 XtCallCallbackList((Widget)obj, obj->inputConv.selectioncallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
395 (XtPointer)&arg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
396 ruby_eval("kanjiConv.selection.close_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
397 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
398 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
399 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
400 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
401 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
402 rubyDisplayPreEdit(obj) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
403 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
404 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
405 Widget w = (Widget)obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
406 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
407 if (ruby_eval("kanjiConv.call_fix") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
408 fix(obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
409 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
410 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
411 /* 入力モードをチェックする */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
412 /* #if 0 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
413 /* if (ks->info & KanjiModeInfo) { */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
414 /* printf("modechangecallback\n"); */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
415 XtCallCallbackList(w, obj->inputConv.modechangecallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
416 (XtPointer)NULL); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
417 /* } */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
418 /* #endif */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
419 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
420 rubyDialogDisplay(obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
421 rubySelectionEvent(obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
422 rubySelectionDisplay(obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
423 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
424 XtCallCallbackList(w, obj->inputConv.textchangecallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
425 (XtPointer)NULL); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
426 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
427 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
428 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
429 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
430 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
431 static ICString * |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
432 GetMode(w) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
433 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
434 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
435 rubyEUCtoICString (ruby_eval ("kanjiConv.modeline"), ruby_tmp_seg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
436 ruby_tmp_seg->attr = ICAttrNormalString; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
437 return ruby_tmp_seg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
438 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
439 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
440 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
441 CursorPos(w, nsegp, ncharp) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
442 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
443 Cardinal *nsegp; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
444 Cardinal *ncharp; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
445 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
446 /* |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
447 return value : =0 corsor ON / =1 OFF |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
448 nseg: >0 segment index / =0 no segment |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
449 nchar: number of chars; 'テs' == 2 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
450 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
451 *ncharp = NUM2INT(ruby_eval("kanjiConv.input.cursor")); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
452 *nsegp = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
453 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
454 /* printf ("CursorPos: nseg=%d, nchar=%d\n", (int)*nsegp, (int)*ncharp); */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
455 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
456 return (*ncharp == 0) ? 1: 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
457 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
458 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
459 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
460 NumSegments(w) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
461 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
462 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
463 int num; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
464 printf ("NumSegments\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
465 num = NUM2INT(ruby_eval("kanjiConv.segment_length")); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
466 /* printf ("NumSegments: num=%d\n", num); */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
467 return num; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
468 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
469 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
470 static ICString * |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
471 GetSegment(w, n) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
472 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
473 Cardinal n; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
474 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
475 RubyObject obj = (RubyObject)w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
476 static ICString seg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
477 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
478 printf("GetSegment\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
479 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
480 rubyEUCtoICString (ruby_evalf ("kanjiConv.segment_word(%d)", n), |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
481 ruby_tmp_seg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
482 if (ruby_evalf("kanjiConv.segment_status(%d) == :highlight", n) == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
483 ruby_tmp_seg->attr = ICAttrConverted | ICAttrCurrentSegment; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
484 } else { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
485 ruby_tmp_seg->attr = ICAttrNotConverted; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
486 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
487 /* ICAttrConverted | ICAttrCurrentSegment : Inversion. */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
488 /* |= ICAttrChanged : Non-Underline. */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
489 return ruby_tmp_seg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
490 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
491 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
492 /* ARGSUSED */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
493 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
494 CompareSegment(w, seg1, seg2, n) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
495 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
496 ICString *seg1; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
497 ICString *seg2; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
498 Cardinal *n; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
499 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
500 wchar *p, *q; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
501 int len, nsame; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
502 int result = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
503 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
504 printf("CompareSegment\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
505 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
506 if (seg1->attr != seg2->attr) result |= ICAttrChanged; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
507 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
508 len = seg1->nchars > seg2->nchars ? seg2->nchars : seg1->nchars; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
509 nsame = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
510 p = (wchar *)seg1->data; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
511 q = (wchar *)seg2->data; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
512 while (nsame < len && *p++ == *q++) nsame++; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
513 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
514 if (nsame != len || len != seg1->nchars || len != seg2->nchars) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
515 result |= ICStringChanged; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
516 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
517 if (n) *n = nsame; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
518 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
519 return result; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
520 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
521 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
522 static ICString * |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
523 GetItemList(w, n) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
524 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
525 Cardinal *n; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
526 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
527 RubyObject obj = (RubyObject)w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
528 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
529 printf("GetItemList\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
530 rubyEUCArraytoICStringArray(ruby_eval("kanjiConv.cand_list"), |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
531 ruby_cand_list); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
532 *n = ruby_cand_list->length; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
533 return ruby_cand_list->array; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
534 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
535 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
536 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
537 SelectItem(w, n) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
538 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
539 int n; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
540 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
541 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
542 RubyObject obj = (RubyObject)w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
543 printf ("selectItem\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
544 ruby_evalf("kanjiConv.selection_fix (%d)", n); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
545 /* FIXME: Create new fix function in the feature. */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
546 fix (obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
547 XtCallCallbackList(w, obj->inputConv.textchangecallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
548 (XtPointer)NULL); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
549 return 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
550 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
551 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
552 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
553 ConvertedString(w, encoding, format, length, string) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
554 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
555 Atom *encoding; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
556 int *format; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
557 int *length; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
558 XtPointer *string; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
559 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
560 RubyObject obj = (RubyObject)w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
561 wchar *wbuf, *wp; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
562 int len, wlen; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
563 extern int convJWStoCT(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
564 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
565 /* メモリの解放は自動的に行われる. str を直接書き換えてはいけない. */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
566 unsigned char *str = STR2CSTR(ruby_eval("kanjiConv.value_fixed")); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
567 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
568 printf("ConvertedString\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
569 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
570 wbuf = XtMalloc((strlen(str) + 1) * sizeof(wchar)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
571 euc2wcs(str, strlen(str), wbuf); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
572 wlen = wstrlen(wbuf); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
573 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
574 /* |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
575 * Ruby オブジェクトは COMPOUND_TEXT エンコーディングしかサポートしない |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
576 * COMPOUND_TEXT に変換する |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
577 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
578 *encoding = XA_COMPOUND_TEXT(XtDisplayOfObject((Widget)obj)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
579 *format = 8; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
580 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
581 /* COMPOUND_TEXT は \r が送れないので \n に変換しておく */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
582 for (wp = wbuf; *wp != 0; wp++) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
583 if (*wp == '\r') *wp = '\n'; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
584 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
585 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
586 *length = len = convJWStoCT(wbuf, (unsigned char *)NULL, 0); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
587 *string = XtMalloc(len + 1); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
588 (void)convJWStoCT(wbuf, (unsigned char *)*string, 0); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
589 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
590 XtFree(wbuf); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
591 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
592 return 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
593 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
594 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
595 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
596 ClearConversion(w) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
597 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
598 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
599 ruby_eval ("kanjiConv.clear"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
600 return 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
601 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
602 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
603 static ICString * |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
604 GetAuxSegments(w, n, ns, nc) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
605 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
606 Cardinal *n, *ns, *nc; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
607 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
608 /* I'm not sure about this function's purpose. */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
609 /* n => ngseg ; number of segments (1 <= n <= 3). */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
610 /* ns => nseg ; index of reversed segment (0 or 1). */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
611 /* nc => nchar ; length of current segment??? */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
612 printf ("GetAuxSegments\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
613 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
614 if ((ruby_eval ("kanjiConv.dialog.visible") == Qtrue || |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
615 ruby_eval ("kanjiConv.dialog.call_open") == Qtrue) && |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
616 ruby_eval ("kanjiConv.dialog.text.length > 0") == Qtrue) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
617 if (n) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
618 *n = 1; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
619 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
620 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
621 if (ns) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
622 *ns = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
623 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
624 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
625 rubyEUCtoICString (ruby_eval ("kanjiConv.dialog.text"), |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
626 ruby_tmp_seg); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
627 ruby_tmp_seg->attr = ICAttrConverted; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
628 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
629 if (nc) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
630 *nc = ruby_tmp_seg->nchars; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
631 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
632 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
633 return ruby_tmp_seg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
634 } else { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
635 if (n) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
636 *n = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
637 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
638 if (ns) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
639 *ns = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
640 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
641 if (nc) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
642 *nc = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
643 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
644 return NULL; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
645 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
646 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
647 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
648 /* ARGSUSED */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
649 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
650 Initialize(req, new, args, num_args) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
651 Widget req; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
652 Widget new; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
653 ArgList args; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
654 Cardinal *num_args; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
655 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
656 RubyObject obj = (RubyObject)new; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
657 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
658 obj->ruby.selectionending = False; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
659 obj->ruby.textchanged = False; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
660 obj->ruby.symbollist = SymbolList; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
661 obj->ruby.numsymbols = NumSymbols; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
662 obj->ruby.cursymbol = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
663 obj->ruby.candlist = NULL; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
664 obj->ruby.candlistsize = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
665 obj->ruby.numcand = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
666 obj->ruby.lastTextLengthIsZero = False; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
667 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
668 addObject(obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
669 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
670 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
671 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
672 bell() |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
673 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
674 if (displaybell) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
675 XBell(displaybell, 0); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
676 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
677 return 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
678 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
679 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
680 static int nRubyContexts = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
681 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
682 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
683 Destroy(w) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
684 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
685 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
686 RubyObject obj = (RubyObject)w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
687 wchar buf[512]; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
688 int i; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
689 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
690 if (obj->ruby.candlist) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
691 for (i = 0 ; i < obj->ruby.candlistsize ; i++) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
692 if ((obj->ruby.candlist + i)->data) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
693 XtFree((obj->ruby.candlist + i)->data); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
694 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
695 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
696 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
697 XtFree((char *)obj->ruby.candlist); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
698 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
699 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
700 /* Ruby 用終了処理をここに書く */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
701 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
702 deleteObject(obj); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
703 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
704 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
705 static Boolean |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
706 SetValues(cur, req, wid, args, num_args) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
707 Widget cur; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
708 Widget req; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
709 Widget wid; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
710 ArgList args; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
711 Cardinal *num_args; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
712 /* ARGSUSED */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
713 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
714 RubyObject old = (RubyObject)cur; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
715 RubyObject new = (RubyObject)wid; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
716 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
717 return False; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
718 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
719 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
720 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
721 fix(obj) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
722 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
723 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
724 /* 確定の処理 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
725 XtCallCallbackList((Widget)obj, obj->inputConv.fixcallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
726 (XtPointer)NULL); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
727 ruby_eval("kanjiConv.fix_end"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
728 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
729 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
730 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
731 convend(obj) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
732 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
733 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
734 XtCallCallbackList((Widget)obj, obj->inputConv.endcallback, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
735 (XtPointer)NULL); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
736 ruby_eval("kanjiConv.reset"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
737 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
738 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
739 /* |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
740 * keeping list of objects |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
741 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
742 typedef struct _oblist_ { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
743 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
744 struct _oblist_ *next; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
745 } ObjRec; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
746 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
747 static ObjRec *ObjList = NULL; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
748 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
749 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
750 addObject(obj) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
751 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
752 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
753 ObjRec *objp = XtNew(ObjRec); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
754 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
755 objp->obj = obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
756 objp->next = ObjList; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
757 ObjList = objp; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
758 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
759 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
760 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
761 deleteObject(obj) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
762 RubyObject obj; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
763 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
764 ObjRec *objp, *objp0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
765 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
766 for (objp0 = NULL, objp = ObjList; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
767 objp != NULL; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
768 objp0 = objp, objp = objp->next) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
769 if (objp->obj == obj) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
770 if (objp0 == NULL) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
771 ObjList = objp->next; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
772 } else { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
773 objp0->next = objp->next; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
774 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
775 XtFree((char *)objp); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
776 return; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
777 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
778 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
779 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
780 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
781 /* ARGSUSED */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
782 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
783 GetTriggerKeys(w, keys_return) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
784 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
785 ICTriggerKey **keys_return; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
786 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
787 /* 何をする関数なのか不明 (komatsu) */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
788 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
789 *keys_return = NULL; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
790 return 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
791 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
792 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
793 /* ARGSUSED */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
794 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
795 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
796 /* |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
797 * int ICGetPreeditString(Widget object, int segn, int offset, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
798 * Atom *encoding, int *format, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
799 * int *length, XtPointer *string) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
800 * 変換途中の segn 番目の セグメントの offset 文字からのテキストを |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
801 * string に返す |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
802 * encoding には、テキストのエンコーディングを指定しておく |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
803 * ただしこれは単なるリクエストであって、変換オブジェクトは |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
804 * 別のエンコーディングで返してもよい |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
805 * encoding には実際のエンコーディングが返される |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
806 * 変換オブジェクトは少なくとも COMPOUND_TEXT エンコーディングは |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
807 * サポートしなくてはならない |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
808 * format には 8/16/32 のいずれか、length は string のエレメント数が |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
809 * それぞれ返される |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
810 * テキストの領域は malloc されているのでこの関数を呼んだ側で |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
811 * free しなければならない |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
812 * 変換テキストがない時やエラーの場合には -1、そうでなければ 0 が |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
813 * 関数の値として返される |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
814 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
815 /* まだ, 未検討 (komatsu) */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
816 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
817 PreeditString(w, segn, offset, encoding, format, length, string) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
818 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
819 int segn; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
820 int offset; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
821 Atom *encoding; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
822 int *format; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
823 int *length; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
824 XtPointer *string; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
825 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
826 RubyObject obj = (RubyObject)w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
827 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
828 return -1; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
829 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
830 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
831 /* ARGSUSED */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
832 static int |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
833 StatusString(w, encoding, format, length, string, nchars) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
834 Widget w; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
835 Atom *encoding; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
836 int *format; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
837 int *length; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
838 XtPointer *string; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
839 int *nchars; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
840 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
841 ICString *seg; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
842 wchar *wbuf, *wp; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
843 int len, wlen; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
844 extern int convJWStoCT(); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
845 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
846 printf("StatusString\n"); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
847 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
848 seg = GetMode(w); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
849 if (seg == NULL) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
850 *length = *nchars = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
851 return -1; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
852 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
853 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
854 wlen = seg->nchars; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
855 if (wlen <= 0) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
856 *length = *nchars = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
857 return -1; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
858 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
859 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
860 /* |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
861 * data に入っている変換テキストは null ターミネートされていないかも |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
862 * しれないので、まずコピーして null ターミネートする |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
863 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
864 wbuf = (wchar *)XtMalloc((wlen + 1) * sizeof(wchar)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
865 (void)bcopy(seg->data, (char *)wbuf, sizeof(wchar) * wlen); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
866 wbuf[wlen] = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
867 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
868 /* |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
869 * Ruby オブジェクトは COMPOUND_TEXT エンコーディングしかサポートしない |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
870 * COMPOUND_TEXT に変換する |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
871 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
872 *encoding = XA_COMPOUND_TEXT(XtDisplayOfObject(w)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
873 *format = 8; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
874 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
875 /* COMPOUND_TEXT は \r が送れないので \n に変換しておく */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
876 for (wp = wbuf; *wp != 0; wp++) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
877 if (*wp == '\r') *wp = '\n'; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
878 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
879 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
880 *length = len = convJWStoCT(wbuf, (unsigned char *)NULL, 0); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
881 *string = XtMalloc(len + 1); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
882 (void)convJWStoCT(wbuf, (unsigned char *)*string, 0); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
883 *nchars = seg->nchars; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
884 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
885 /* wbuf を free しておく */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
886 XtFree((char *)wbuf); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
887 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
888 return 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
889 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
890 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
891 /*** |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
892 ic_str->nbytes が 0 の場合 ic_str->data は自動的に確保 (XtMalloc) される. |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
893 0 以外の場合 ic_str->data は (XtRealloc) される. |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
894 */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
895 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
896 rubyEUCtoICString(ruby_str, ic_str) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
897 VALUE ruby_str; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
898 ICString *ic_str; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
899 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
900 unsigned char *euc_str; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
901 int euc_len; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
902 wchar *wc_str; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
903 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
904 /* printf("String_Len: %d\n", RSTRING(ruby_str)->len); */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
905 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
906 euc_str = STR2CSTR(ruby_str); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
907 euc_len = strlen(euc_str); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
908 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
909 if (ic_str->nbytes == 0) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
910 wc_str = (wchar *)XtMalloc((euc_len + 1) * sizeof(wchar)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
911 } else { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
912 wc_str = (wchar *)XtRealloc(ic_str->data, (euc_len + 1) * sizeof(wchar)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
913 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
914 euc2wcs(euc_str, euc_len, wc_str); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
915 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
916 ic_str->data = (char *)wc_str; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
917 ic_str->nchars = wstrlen(wc_str); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
918 ic_str->nbytes = (euc_len + 1) * sizeof(wchar); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
919 ic_str->attr = ICAttrNotConverted; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
920 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
921 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
922 static void |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
923 rubyEUCArraytoICStringArray(ruby_str_ary, ic_str_ary) |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
924 VALUE ruby_str_ary; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
925 ICStringArray *ic_str_ary; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
926 { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
927 VALUE ruby_str; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
928 int i, array_length; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
929 ICString ic_str; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
930 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
931 array_length = RARRAY(ruby_str_ary)->len; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
932 if ((ic_str_ary->length) < array_length) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
933 ic_str_ary->array = (ICString *)XtRealloc((char *)ic_str_ary->array, |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
934 array_length * sizeof(ICString)); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
935 for (i = ic_str_ary->length; i < array_length; i++) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
936 /* ic_str_ary->array[i] = (ICString *)XtMalloc(1 * sizeof(ICString)); */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
937 ic_str_ary->array[i].nbytes = 0; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
938 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
939 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
940 ic_str_ary->length = array_length; |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
941 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
942 /* printf("array_length: %d\n", array_length); */ |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
943 |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
944 for (i = 0; i < array_length; i++) { |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
945 rubyEUCtoICString(rb_ary_entry(ruby_str_ary, i), &(ic_str_ary->array[i])); |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
946 } |
598fcbe482b5
imported patch 19_kinput2-v3.1-ruby.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
947 } |