Mercurial > kinput2.yaz
comparison lib/Xatoklib/aux.c @ 0:92745d501b9a
initial import from kinput2-v3.1
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 08 Mar 2010 04:44:30 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:92745d501b9a |
---|---|
1 /* | |
2 * Copyright 1999 Justsystem Corporation, Japan. | |
3 * | |
4 * Permission to use, copy, modify, and distribute this software and its | |
5 * documentation for any purpose and without fee is hereby granted, | |
6 * provided that the above copyright notice appear in all copies and that | |
7 * both that copyright notice and this permission notice appear in | |
8 * supporting documentation, and that the name of Justsystem Corporation | |
9 * not be used in advertising or publicity pertaining to distribution | |
10 * of the software without specific, written prior permission. Justsystem | |
11 * Corporation makes no representations about the suitability of this | |
12 * software for any purpose. It is provided "as is" without express | |
13 * or implied warranty. | |
14 * | |
15 * Author: Atsushi Irisawa | |
16 */ | |
17 #ifndef lint | |
18 static char rcsid[] = "$Id: aux.c,v 1.3 1999/08/24 09:05:25 ishisone Exp $" ; | |
19 #endif /* !lint */ | |
20 | |
21 #include <stdio.h> | |
22 #include <X11/IntrinsicP.h> | |
23 #include <X11/StringDefs.h> | |
24 #include <X11/Xmu/Atoms.h> | |
25 #include <X11/keysym.h> | |
26 | |
27 #include <Xatoklib.h> | |
28 | |
29 | |
30 /* Page */ | |
31 /* | |
32 * [$B4X?tL>(B] | |
33 * wordStartFunc( ) | |
34 * [$BI=Bj(B] | |
35 * $BC18lEPO?%a%K%e!<$N=i4|2==hM}(B | |
36 * [$B8F=P7A<0(B] | |
37 * int wordStartFunc( _XatokRecPtr acomm ) | |
38 * | |
39 * [$B0z?t(B] | |
40 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
41 * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
42 * | |
43 * [$BJV$jCM(B] | |
44 * 1 : $B>o$K#1(B | |
45 * | |
46 * [$B;HMQ4X?t(B] | |
47 * $B$J$7(B | |
48 * [$B5!G=(B] | |
49 * $BC18lEPO?%a%K%e!<$rI=<($9$k0Y$K!"%G!<%?$N=i4|2=$r9T$J$&!#(B | |
50 */ | |
51 int wordStartFunc(acomm) | |
52 _XatokRecPtr acomm; | |
53 { | |
54 | |
55 #ifdef ATOK_DEBUG | |
56 printf( "\303\261\270\354\305\320\317\277\263\253\273\317\n"/*=$BC18lEPO?3+;O(B\n=*/ ) ; | |
57 #endif /* ATOK_DEBUG */ | |
58 bzero( acomm->word_str, sizeof( acomm->word_str )) ; | |
59 bzero( acomm->word_yomi, sizeof( acomm->word_yomi )) ; | |
60 acomm->word_strLen = 0 ; | |
61 acomm->word_yomiLen = 0 ; | |
62 acomm->word_mode = W_WORD ; | |
63 | |
64 return 1 ; | |
65 } | |
66 | |
67 /* Page */ | |
68 /* | |
69 * [$B4X?tL>(B] | |
70 * wordFunc( ) | |
71 * [$BI=Bj(B] | |
72 * $BC18lEPO?;~$N%$%Y%s%H=hM}(B | |
73 * [$B8F=P7A<0(B] | |
74 * int wordFunc( _XatokRecPtr acomm, menuAux *mAux, | |
75 * WORD *aajcode, int *op ) | |
76 * | |
77 * [$B0z?t(B] | |
78 * $B7?(B : $BL>(B $B>N(B : I/O : $B@b(B $BL@(B | |
79 * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
80 * menuAux : *mAux : i : $B8=:_I=<($7$F$$$k(BMENU | |
81 * WORD : *aajcode : i/o : $BF~NO$5$l$?J8;z(B | |
82 * int : *op : o : MENU OPERATION | |
83 * | |
84 * | |
85 * [$BJV$jCM(B] | |
86 * 0 : key $BF~NO$r%(%s%8%s$KAw$i$J$$!#(B | |
87 * 1 : key$BF~NO$r%(%s%8%s$KAw$k!#(B | |
88 * | |
89 * [$B;HMQ4X?t(B] | |
90 * atokModeSet( ) | |
91 * atokWordRegister( ) | |
92 * atokWordStyleList( ) | |
93 * [$B5!G=(B] | |
94 * $BC18lEPO?MQ$N(BAUX WINDOW$BI=<(;~$N%$%Y%s%H4IM}$r9T$J$&!#(B | |
95 * $BC18lEPO?;~$O!"C18lI=5-F~NO!"FI$_F~NO!"IJ;lA*Br!"=hM}3NG'(B | |
96 * $B=hM}7k2LI=<($N%b!<%I$,B8:_$9$k!#(B | |
97 * $B3F%b!<%I$K$*$$$F!"F~NO$G$-$kJ8;zBN7O$r@_Dj$9$k!#(B | |
98 * CTR$B%-!<$J$I$N@)8f%-!<$NA`:n$b9T$J$&!#(B | |
99 */ | |
100 int wordFunc(acomm, mAux, aajcode, op) | |
101 _XatokRecPtr acomm; | |
102 menuAux *mAux; | |
103 WORD *aajcode; | |
104 int *op; | |
105 { | |
106 ATOKDEHINSTR *hptr ; | |
107 char euc[BUFSIZ] ; | |
108 int i ; | |
109 int pgMax = CAND_ROWS * CAND_COLS ; | |
110 int status ; | |
111 | |
112 char *pp ; | |
113 #ifdef ATOK_DEBUG | |
114 printf( "WORD FUNC OK (%x) word_mode (%d)\n", *aajcode, acomm->word_mode ) ; | |
115 printf( "word_strLen %d, word_yomiLen %d\n", | |
116 acomm->word_strLen, acomm->word_yomiLen ) ; | |
117 #endif /* ATOK_DEBUG */ | |
118 if ( *aajcode == CTR_H ) *aajcode = BS ; | |
119 | |
120 /* | |
121 * $BL$3NDjJ8;z$,L5$$;~$K@)8f%-!<$rF~NO$5$l$?>l9g$K$O(B | |
122 * $B%*%Z%l!<%7%g%s$rL58z$K$9$k!#(B | |
123 */ | |
124 if ( !acomm->echoLen && | |
125 (( *aajcode & CTRL ) || *aajcode == DEL )) { | |
126 return 0 ; | |
127 } | |
128 /* | |
129 * $BC18lEPO?<B;\Cf$K(B $B%3!<%IF~NO$J$I$N#A#U#X%&%#%s%I%&$O(B | |
130 * $BI=<($G$-$J$$$N$G%*%Z%l!<%7%g%s$rL58z$K$9$k!#(B | |
131 */ | |
132 if ( *aajcode == F10 ) { | |
133 return 0 ; | |
134 } | |
135 /* | |
136 * $BC18lF~NO;~$N#O#P(B | |
137 */ | |
138 if ( acomm->word_mode == W_WORD ) { | |
139 if ( *aajcode == CR && acomm->echoLen == 0 ) { | |
140 if ( acomm->word_strLen ) { | |
141 atokModeSet( acomm, IME_PRV_SETKOTEMODE, 0x0001 ) ; | |
142 acomm->word_mode <<= 1 ; | |
143 return 0 ; | |
144 } | |
145 return 0 ; | |
146 } | |
147 else if ( *aajcode == BS && !acomm->echoLen ) { | |
148 if ( acomm->word_strLen ) { | |
149 acomm->word_strLen-- ; | |
150 } | |
151 else { | |
152 *op = OP_CANCEL ; | |
153 } | |
154 return 0 ; | |
155 } | |
156 | |
157 else if ( *aajcode == EESC ) { | |
158 if ( !( acomm->convStatus & M_CAND )) { /* 616 */ | |
159 *op = OP_CANCEL ; | |
160 } | |
161 /* | |
162 * $BL$3NDjJ8;zNs$,$"$k;~$O!"L$3NDj%P%C%U%!$r%/%j%"$9$k(B | |
163 */ | |
164 if ( acomm->echoLen ) { | |
165 acomm->echoLen = 0 ; | |
166 *aajcode = EESC ; | |
167 return 1 ; | |
168 } | |
169 return 0 ; | |
170 } | |
171 else if ((( *aajcode & CTRL ) && !acomm->echoLen ) | |
172 || *aajcode == TAB ){ | |
173 return 0 ; | |
174 } | |
175 return 1 ; | |
176 } | |
177 /* | |
178 * $BFI$_F~NO;~$N(BOP | |
179 */ | |
180 else if ( acomm->word_mode == W_YOMI ) { | |
181 if ( *aajcode == CR && acomm->echoLen == 0 ) { | |
182 if ( acomm->word_yomiLen ) { | |
183 atokModeSet( acomm, IME_PRV_SETKOTEMODE, 0x0000 ) ; | |
184 acomm->word_mode <<= 1 ; | |
185 acomm->convStatus |= M_CAND ; | |
186 atokWordStyleList( acomm ) ; | |
187 *aajcode = XFER ; | |
188 return 0 ; | |
189 } | |
190 return 0 ; | |
191 } | |
192 else if ( *aajcode == BS && !acomm->echoLen ) { | |
193 if ( acomm->word_yomiLen ) { | |
194 acomm->word_yomiLen-- ; | |
195 } | |
196 else { | |
197 atokModeSet( acomm, IME_PRV_SETKOTEMODE, 0x0000 ) ; | |
198 acomm->word_mode >>= 1 ; | |
199 } | |
200 return 0 ; | |
201 } | |
202 else if ((( *aajcode & CTRL ) && !acomm->echoLen ) | |
203 || *aajcode == TAB ){ | |
204 return 0 ; | |
205 } | |
206 else if ( *aajcode == EESC ) { | |
207 atokModeSet( acomm, IME_PRV_SETKOTEMODE, 0x0000 ) ; | |
208 /* acomm->word_mode >>= 1 ; */ | |
209 *op = OP_CANCEL ; | |
210 return 0 ; | |
211 } | |
212 return 1 ; | |
213 } | |
214 /* | |
215 * $BIJ;l$rA*BrCf$N(BOP | |
216 */ | |
217 else if ( acomm->word_mode == W_HINSHI ) { | |
218 if ( *aajcode > '0' && *aajcode <= '9' ) { | |
219 acomm->kohoPos = *aajcode - '1' ; | |
220 *aajcode = CR ; | |
221 } | |
222 if ( *aajcode == CR ) { | |
223 acomm->word_hinshi = acomm->kohoCurPage * pgMax + acomm->kohoPos + 1 ; | |
224 acomm->word_mode <<= 1 ; | |
225 } | |
226 else if ( *aajcode == CTR_G || | |
227 *aajcode == EESC ) { | |
228 acomm->word_mode >>= 1 ; | |
229 } | |
230 return 0 ; | |
231 } | |
232 /* | |
233 * $BEPO?3NG'$N%@%$%"%m%0I=<(Cf$N(BOP | |
234 */ | |
235 else if ( acomm->word_mode == W_YORN ) { | |
236 if ( *aajcode == 'y' || *aajcode == 'Y' ) { | |
237 acomm->word_str[acomm->word_strLen] = 0x00 ; | |
238 acomm->word_str[acomm->word_strLen+1] = 0x00 ; | |
239 | |
240 acomm->wordStatus = atokWordRegister( | |
241 acomm, | |
242 acomm->word_str, | |
243 acomm->word_strLen, | |
244 acomm->word_yomi, | |
245 acomm->word_yomiLen, | |
246 acomm->word_hinshi ) ; | |
247 acomm->word_mode <<= 1 ; | |
248 /* *op = OP_CANCEL ; */ | |
249 } | |
250 else if ( *aajcode == 'n' || *aajcode == 'N' || *aajcode == BS ) { | |
251 atokWordStyleList( acomm ) ; | |
252 acomm->convStatus |= M_CAND ; | |
253 acomm->word_mode >>= 1 ; | |
254 *aajcode = XFER ; | |
255 } | |
256 else if ( *aajcode == EESC ) { | |
257 acomm->word_mode = 0 ; | |
258 *op = OP_CANCEL ; | |
259 } | |
260 return 0 ; | |
261 } | |
262 /* | |
263 * $BEPO?7k2LI=<(Cf$N(BOP | |
264 */ | |
265 else if ( acomm->word_mode == W_RESULT ) { | |
266 if ( *aajcode == CR || *aajcode == EESC ) { | |
267 acomm->word_mode = 0 ; | |
268 *op = OP_CANCEL ; | |
269 } | |
270 return 0 ; | |
271 } | |
272 return 0 ; | |
273 | |
274 #ifdef ATOK_DEBUG | |
275 printf( "WORD STR [%s]\n", pp ) ; | |
276 #endif /* ATOK_DEBUG */ | |
277 } | |
278 | |
279 /* Page */ | |
280 /* | |
281 * [$B4X?tL>(B] | |
282 * wordEndFunc( ) | |
283 * [$BI=Bj(B] | |
284 * $BC18lEPO?%a%K%e!<$N8e=hM}(B | |
285 * [$B8F=P7A<0(B] | |
286 * int wordEndFunc( _XatokRecPtr acomm ) | |
287 * | |
288 * [$B0z?t(B] | |
289 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
290 * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
291 * | |
292 * [$BJV$jCM(B] | |
293 * 1 : $B>o$K#1(B | |
294 * | |
295 * [$B;HMQ4X?t(B] | |
296 * $B$J$7(B | |
297 * [$B5!G=(B] | |
298 * $BC18lEPO?%a%K%e!<$r:o=|$9$k0Y$K!"%G!<%?$N8e=hM}$r9T$J$&!#(B | |
299 * | |
300 */ | |
301 int wordEndFunc(acomm) | |
302 _XatokRecPtr acomm; | |
303 { | |
304 | |
305 /* printf( "wordEndFunc\n" ) ; */ | |
306 return 1 ; | |
307 } | |
308 /* | |
309 * Str | |
310 * $BC18lEPO?(B : $BC18l(B [XXXXX] $BFI$_(B [XXXX] $BIJ;l(B : | |
311 */ | |
312 /* Page */ | |
313 /* | |
314 * [$B4X?tL>(B] | |
315 * wordStringFunc( ) | |
316 * [$BI=Bj(B] | |
317 * $BC18lEPO?%a%K%e!<$NJ8;zNs:n@.(B | |
318 * [$B8F=P7A<0(B] | |
319 * int wordStringFunc( _XatokRecPtr acomm, menuAux *mAux, | |
320 * wchar *echoStr, int *echoLen, int *revLen, | |
321 * int *revPos ) | |
322 * | |
323 * [$B0z?t(B] | |
324 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
325 * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
326 * menuAux : *mAux : i : $B8=:_$N(B MENU CLASS | |
327 * wchar : *echoStr: o : $BI=<(J8;zNs3JG<NN0h(B | |
328 * int : *echoLen : o : $BI=<(J8;zNs$ND9$5(B | |
329 * int : *revLen : o : $BI=<(J8;zNs$NH?E>$ND9$5(B | |
330 * int : *revPos : o : $BI=<(J8;z%F%k$NH?E>$N3+;O0LCV(B | |
331 * | |
332 * [$BJV$jCM(B] | |
333 * $BI=<(J8;zNs$ND9$5(B | |
334 * | |
335 * [$B;HMQ4X?t(B] | |
336 * euc2wcs( ) | |
337 * s2e( ) | |
338 * [$B5!G=(B] | |
339 * $BC18lEPO?%a%K%e!<$rI=<(;~$NI=<(MQ$NJ8;zNs$r:n@.$9$k!#(B | |
340 * $BI=5-F~NO;~$O!"I=5-3NDjJ8;zNs$HL$3NDjJ8;zNs!"(B | |
341 * $B$h$_F~NO;~$O!"I=5-3NDjJ8;zNs$H!"$h$_3NDjJ8;zNs!"$h$_L$3NDjJ8;zNs(B | |
342 * $BIJ;lA*Br;~$O!"FI$_F~NO;~$HF1$8!"(B | |
343 * $BEPO?3NG';~$O!"I=5-3NDjJ8;zNs(B,$B$h$_J8;zNs!"IJ;l(B | |
344 * $BEPO?40N;;~$O!"%9%F!<%?%9J8;zNs(B | |
345 * $B$r:n@.$9$k!#(B | |
346 */ | |
347 int wordStringFunc(acomm, mAux, echoStr, echoLen, revLen, revPos) | |
348 _XatokRecPtr acomm; | |
349 menuAux *mAux; | |
350 wchar *echoStr; | |
351 int *echoLen; | |
352 int *revLen; | |
353 int *revPos; | |
354 { | |
355 char tbuf[BUFSIZ*2] ; | |
356 int len ; | |
357 int n ; | |
358 int i, j, k, es ; | |
359 char *ep ; | |
360 int status ; | |
361 int c ; | |
362 | |
363 *revPos = 0 ; | |
364 *revLen = 0 ; | |
365 | |
366 ep = tbuf ; | |
367 if ( mAux->str ) { | |
368 strcpy( ep, mAux->str ) ; | |
369 ep += strlen( ep ) ; | |
370 } | |
371 #ifdef ATOK_DEBUG | |
372 printf( "WORD MODE %d\n", acomm->word_mode ); | |
373 printf( " \303\261\270\354 [%s"/*= $BC18l(B [%s=*/, acomm->word_str ) ; | |
374 printf( "\303\261\270\354\263\316\304\352\272\321\312\270\273\372\316\363(%d) [%s]\n"/*=$BC18l3NDj:QJ8;zNs(B(%d) [%s]\n=*/, acomm->word_strLen, acomm->word_str ) ; | |
375 printf( "\303\261\270\354 \263\316\304\352\244\267\244\277\312\270\273\372\316\363(%d) [%s]\n"/*=$BC18l(B $B3NDj$7$?J8;zNs(B(%d) [%s]\n=*/, acomm->wlen, acomm->wbuf ) ; | |
376 printf( "\303\261\270\354 \314\244\263\316\304\352\312\270\273\372\316\363[%s]\n"/*=$BC18l(B $BL$3NDjJ8;zNs(B[%s]\n=*/, acomm->echoStr ) ; | |
377 for( i = 0 ; i < acomm->echoLen ; i++ ) { | |
378 printf( "%x ", acomm->echoStr[i] ) ; | |
379 } | |
380 printf( "\n" ); | |
381 #endif /* ATOK_DEBUG */ | |
382 | |
383 | |
384 /* | |
385 * $BC18lEPO?$N%,%$%I$r@_Dj(B | |
386 */ | |
387 sprintf( ep, " \303\261\270\354 ["/*= $BC18l(B [=*/ ) ; | |
388 es = strlen( tbuf ) ; | |
389 len = euc2wcs( tbuf, es, echoStr ) ; | |
390 for( i = 0 ; i < acomm->word_strLen ; i++ ) { | |
391 echoStr[len++] = acomm->word_str[i] ; | |
392 } | |
393 /* | |
394 * $BC18lF~NOCf$NI=<((B | |
395 */ | |
396 if ( acomm->word_mode == W_WORD ) { | |
397 /* | |
398 * $B:#2s$NF~NO$G3NDj$7$?J8;zNs$,$"$k>l9g$K$O!"(B | |
399 * $B3NDjC18lJ8;zNs$H$7$F@_Dj$9$k!#(B | |
400 */ | |
401 for( i = 0 ; i < acomm->wlen ; i++ ) { | |
402 if ( acomm->word_strLen+i >= WORD_HYOKI_MAX ) { | |
403 /* printf( "$BC18l$,$J$,$9$.$k!#(B(%d)\n", i ) ; */ | |
404 break ; | |
405 } | |
406 acomm->word_str[acomm->word_strLen+i] = acomm->wbuf[i] ; | |
407 echoStr[len++] = acomm->word_str[acomm->word_strLen+i] ; | |
408 /* printf( "0x%x ", acomm->wbuf[i] ) ; */ | |
409 } | |
410 /* printf( "\n" ) ; */ | |
411 acomm->word_strLen += i ; | |
412 acomm->word_str[acomm->word_strLen] = 0x00 ; | |
413 /* | |
414 * $BL$3NDjJ8;zNs$r@_Dj(B | |
415 */ | |
416 if ( acomm->echoLen > 0 ) { | |
417 *revPos = len + acomm->revPos ; | |
418 *revLen = acomm->revLen ; | |
419 for( i = 0 ; i < acomm->echoLen ; i++ ) { | |
420 echoStr[len++] = acomm->echoStr[i] ; | |
421 } | |
422 } | |
423 else { | |
424 *revPos = len ; | |
425 *revLen = 1 ; | |
426 } | |
427 } | |
428 n = euc2wcs( "]", 1, &echoStr[len] ) ; | |
429 len += n ; | |
430 *echoLen = len ; | |
431 if ( acomm->word_mode < W_YOMI ) { | |
432 return ; | |
433 } | |
434 sprintf( tbuf, " \306\311\244\337 ["/*= $BFI$_(B [=*/ ) ; | |
435 es = strlen( tbuf ) ; | |
436 n = euc2wcs( tbuf, es, &echoStr[len] ) ; | |
437 len += n ; | |
438 | |
439 /* | |
440 * $B$h$_$N$J$,$5$O(B $B4A;z$H(BANK$B$G$O(B $BF1$8$G$"$k!#(B | |
441 */ | |
442 for( i = 0 ; i < acomm->word_yomiLen ; i++ ) { | |
443 echoStr[len++] = acomm->word_yomi[i] ; | |
444 } | |
445 if ( acomm->word_mode == W_YOMI ) { | |
446 /* | |
447 * $B:#2s$NF~NO$G3NDj$7$?J8;zNs$,$"$k>l9g$K$O!"(B | |
448 * $B3NDjC18lJ8;zNs$H$7$F@_Dj$9$k!#(B | |
449 */ | |
450 for( i = 0 ; i < acomm->wlen ; i++ ) { | |
451 if ( acomm->word_yomiLen+i >= WORD_YOMI_MAX ) { | |
452 /* printf( "$B$h$_$,$J$,$9$.$k!#(B(%d)\n", i ) ; */ | |
453 break ; | |
454 } | |
455 acomm->word_yomi[acomm->word_yomiLen+i] = acomm->wbuf[i] ; | |
456 echoStr[len++] = acomm->word_yomi[acomm->word_yomiLen+i] ; | |
457 } | |
458 acomm->word_yomiLen += i ; | |
459 /* | |
460 * $BL$3NDjJ8;zNs$r@_Dj(B | |
461 */ | |
462 if ( acomm->echoLen > 0 ) { | |
463 *revPos = len + acomm->revPos ; | |
464 *revLen = acomm->revLen ; | |
465 for( i = 0 ; i < acomm->echoLen ; i++ ) { | |
466 echoStr[len++] = acomm->echoStr[i] ; | |
467 } | |
468 } | |
469 else { | |
470 *revPos = len ; | |
471 *revLen = 1 ; | |
472 } | |
473 } | |
474 | |
475 n = euc2wcs( "]", 1, &echoStr[len] ) ; | |
476 len += n ; | |
477 | |
478 *echoLen = len ; | |
479 if ( acomm->word_mode < W_HINSHI ) { | |
480 return len ; | |
481 } | |
482 if ( acomm->word_mode > W_HINSHI ) { | |
483 sprintf( tbuf, " \311\312\273\354 ["/*= $BIJ;l(B [=*/ ) ; | |
484 es = strlen( tbuf ) ; | |
485 n = euc2wcs( tbuf, es, &echoStr[len] ) ; | |
486 len += n ; | |
487 | |
488 s2e( acomm->hinsiPtr[acomm->word_hinshi-1].szHinsiStr, | |
489 strlen( acomm->hinsiPtr[acomm->word_hinshi-1].szHinsiStr ), | |
490 tbuf, sizeof( tbuf )) ; | |
491 | |
492 es = strlen( tbuf ) ; | |
493 n = euc2wcs( tbuf, es, &echoStr[len] ) ; | |
494 len += n ; | |
495 | |
496 sprintf( tbuf, "] \244\350\244\355\244\267\244\244\244\307\244\271\244\253 [y/n]"/*=] $B$h$m$7$$$G$9$+(B [y/n]=*/, tbuf ) ; | |
497 es = strlen( tbuf ) ; | |
498 n = euc2wcs( tbuf, es, &echoStr[len] ) ; | |
499 len += n ; | |
500 | |
501 *revPos = len - 1 ; | |
502 *revLen = 1 ; | |
503 } | |
504 if ( acomm->word_mode == W_RESULT ) { | |
505 switch( acomm->wordStatus ) { | |
506 case 0 : | |
507 sprintf( tbuf, "\305\320\317\277\275\252\316\273\244\267\244\336\244\267\244\277\241\243"/*=$BEPO?=*N;$7$^$7$?!#(B=*/ ) ; | |
508 break ; | |
509 case 1 : | |
510 sprintf( tbuf, "\244\263\244\316\306\311\244\337\244\307\244\317\244\263\244\354\260\312\276\345\305\320\317\277\244\307\244\255\244\336\244\273\244\363\241\243"/*=$B$3$NFI$_$G$O$3$l0J>eEPO?$G$-$^$;$s!#(B=*/ ) ; | |
511 break ; | |
512 case 2 : | |
513 sprintf( tbuf, "\244\263\244\354\260\312\276\345\305\320\317\277\244\307\244\255\244\336\244\273\244\363\241\243"/*=$B$3$l0J>eEPO?$G$-$^$;$s!#(B=*/ ) ; | |
514 break ; | |
515 case 3 : | |
516 sprintf( tbuf, "\274\255\275\361\300\337\304\352\244\254\311\324\305\254\300\332\244\307\244\271\241\243"/*=$B<-=q@_Dj$,ITE,@Z$G$9!#(B=*/ ) ; | |
517 break ; | |
518 case 4 : | |
519 sprintf( tbuf, "\303\261\270\354\244\313\311\324\305\254\300\332\244\312\312\270\273\372\244\254\264\336\244\336\244\354\244\306\244\244\244\336\244\271\241\243"/*=$BC18l$KITE,@Z$JJ8;z$,4^$^$l$F$$$^$9!#(B=*/ ) ; | |
520 break ; | |
521 case 5 : | |
522 sprintf( tbuf, "\305\320\317\277\244\307\244\255\244\336\244\273\244\363\241\243"/*=$BEPO?$G$-$^$;$s!#(B=*/ ) ; | |
523 break ; | |
524 case 6 : | |
525 sprintf( tbuf, "\306\311\244\337\244\313\311\324\305\254\300\332\244\312\312\270\273\372\244\254\264\336\244\336\244\354\244\306\244\244\244\336\244\271\241\243"/*=$BFI$_$KITE,@Z$JJ8;z$,4^$^$l$F$$$^$9!#(B=*/ ) ; | |
526 break ; | |
527 case 7 : | |
528 sprintf( tbuf, "\264\373\244\313\305\320\317\277\244\265\244\354\244\306\244\244\244\336\244\271\241\243"/*=$B4{$KEPO?$5$l$F$$$^$9!#(B=*/ ) ; | |
529 break ; | |
530 default: | |
531 sprintf( tbuf, "\303\261\270\354\305\320\317\277\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243"/*=$BC18lEPO?$K<:GT$7$^$7$?!#(B=*/ ) ; | |
532 break; | |
533 } | |
534 strcat( tbuf, " " ) ; | |
535 es = strlen( tbuf ) ; | |
536 n = euc2wcs( tbuf, es, echoStr ) ; | |
537 len = n ; | |
538 *revPos = len - 1 ; | |
539 *revLen = 1 ; | |
540 } | |
541 *echoLen = len ; | |
542 | |
543 #ifdef ATOK_DEBUG | |
544 printf( "\303\261\270\354 EUC STR [%s]\n"/*=$BC18l(B EUC STR [%s]\n=*/, tbuf ) ; | |
545 #endif /* ATOK_DEBUG */ | |
546 return len ; | |
547 } | |
548 | |
549 | |
550 #define OFF 0 | |
551 #define ON 1 | |
552 #define itemSize( item ) sizeof( item ) / sizeof( item[0] ) | |
553 | |
554 /* | |
555 * $BC18lEPO?(B | |
556 */ | |
557 menuItem auxWordRegItem[] = { | |
558 { CTR_G, OFF, OP_CANCEL, NULL, NULL, NULL } | |
559 } ; | |
560 menuAux auxWordRegMenu[] = { | |
561 M_WORD, -1, | |
562 wordStartFunc, | |
563 wordFunc, | |
564 NULL, | |
565 wordStringFunc, | |
566 "\303\261\270\354\305\320\317\277\241\247"/*=$BC18lEPO?!'(B=*/, NULL, | |
567 auxWordRegItem, itemSize( auxWordRegItem ) | |
568 } ; | |
569 | |
570 #define REVERSE printf( "\033[7m" ) | |
571 #define NORMAL printf( "\033[m" ) | |
572 | |
573 menuAux *getMenuInstance( ) | |
574 { | |
575 return auxWordRegMenu ; | |
576 } | |
577 | |
578 /* Page */ | |
579 /* | |
580 * [$B4X?tL>(B] | |
581 * menuPrevOn( ) | |
582 * [$BI=Bj(B] | |
583 * $B%a%K%e!<9`L\$N0\F0(B | |
584 * [$B8F=P7A<0(B] | |
585 * int menuPrevOn( int cur, int mode, menuAux *mAux ) | |
586 * | |
587 * [$B0z?t(B] | |
588 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
589 * int : cur : i : $B8=:_$N9`L\(B | |
590 * int : mode : i : $B0\F0%b!<%I(B | |
591 * menuAux : *mAux : i : $B8=:_$N%a%K%e!<%G!<%?(B | |
592 * | |
593 * [$BJV$jCM(B] | |
594 * $B0\F08e$N9`L\HV9f(B | |
595 * | |
596 * [$B;HMQ4X?t(B] | |
597 * $B$J$7(B | |
598 * [$B5!G=(B] | |
599 * mode $B$,#0$N;~$O!"8=:_A*Br$5$l$F$$$k9`L\$h$j#1$DA0$N(B | |
600 * $BA*Br2DG=$J9`L\$rC5$9!#(B | |
601 * mode $B$,#1$N;~$O!"8=:_$N%a%K%e!<$G#1HV8e$m$NA*Br2DG=$J(B | |
602 * $B9`L\$rC5$9!#(B | |
603 * $BA*Br2DG=$J9`L\$H$O(Bitem $B$N(B mode $B$,(BON$B$N;~$G$"$k!#(B | |
604 */ | |
605 int menuPrevOn(cur, mode, mAux) | |
606 int cur; | |
607 int mode; | |
608 menuAux *mAux; | |
609 { | |
610 register menuItem *item ; | |
611 int last = -1 ; | |
612 int target = -1 ; | |
613 int i ; | |
614 | |
615 item = &( mAux->items[mAux->nitems-1] ) ; | |
616 for( i = mAux->nitems - 1 ; i >= 0 ; i-- ) { | |
617 #ifdef ATOK_DEBUG | |
618 printf( "item->mode = (%s) %s\n", | |
619 item->itemStr ? item->itemStr : "NULL", | |
620 item->mode == ON ? "ON" : "OFF" ) ; | |
621 #endif /* ATOK_DEBUG */ | |
622 if ( item->mode == ON ) { | |
623 if ( last == -1 ) { | |
624 last = i ; | |
625 if ( mode ) { | |
626 /* printf( "LAST FOUND %d\n", last ); */ | |
627 return last ; | |
628 } | |
629 } | |
630 if ( target == -1 && i < cur ) { | |
631 target = i ; | |
632 } | |
633 } | |
634 item-- ; | |
635 } | |
636 if ( target == -1 ) { | |
637 target = last ; | |
638 } | |
639 | |
640 return target ; | |
641 } | |
642 | |
643 /* Page */ | |
644 /* | |
645 * [$B4X?tL>(B] | |
646 * menuNextOn( ) | |
647 * [$BI=Bj(B] | |
648 * $B%a%K%e!<9`L\$N0\F0(B | |
649 * [$B8F=P7A<0(B] | |
650 * int menuNextOn( int cur, int mode, menuAux *mAux ) | |
651 * | |
652 * [$B0z?t(B] | |
653 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
654 * int : cur : i : $B8=:_$N9`L\(B | |
655 * int : mode : i : $B0\F0%b!<%I(B | |
656 * menuAux : *mAux : i : $B8=:_$N%a%K%e!<%G!<%?(B | |
657 * | |
658 * [$BJV$jCM(B] | |
659 * $B0\F08e$N9`L\HV9f(B | |
660 * | |
661 * [$B;HMQ4X?t(B] | |
662 * $B$J$7(B | |
663 * [$B5!G=(B] | |
664 * mode $B$,#0$N;~$O!"8=:_A*Br$5$l$F$$$k9`L\$h$j#1$D8e$m$N(B | |
665 * $BA*Br2DG=$J9`L\$rC5$9!#(B | |
666 * mode $B$,#1$N;~$O!"8=:_$N%a%K%e!<$G@hF,$NA*Br2DG=$J(B | |
667 * $B9`L\$rC5$9!#(B | |
668 * $BA*Br2DG=$J9`L\$H$O(Bitem $B$N(B mode $B$,(BON$B$N;~$G$"$k!#(B | |
669 */ | |
670 int menuNextOn(cur, mode, mAux) | |
671 int cur; | |
672 int mode; | |
673 menuAux *mAux; | |
674 { | |
675 register menuItem *item ; | |
676 int first = -1 ; | |
677 int target = -1 ; | |
678 int i ; | |
679 | |
680 item = mAux->items ; | |
681 for( i = 0 ; i < mAux->nitems ; i++ ) { | |
682 if ( item->mode == ON ) { | |
683 if ( first == -1 ) { | |
684 first = i ; | |
685 if ( mode ) { | |
686 return first ; | |
687 } | |
688 } | |
689 if ( target == -1 && i > cur ) { | |
690 target = i ; | |
691 } | |
692 } | |
693 item++ ; | |
694 } | |
695 if ( target == -1 ) { | |
696 target = first ; | |
697 } | |
698 | |
699 return target ; | |
700 } | |
701 | |
702 /* Page */ | |
703 /* | |
704 * [$B4X?tL>(B] | |
705 * menuKey( ) | |
706 * [$BI=Bj(B] | |
707 * $B%a%K%e!<FbM-8z%-!<$N%A%'%C%/(B | |
708 * [$B8F=P7A<0(B] | |
709 * int menuKey( menuAux *mAux, WORD key, int *cur ) | |
710 * | |
711 * [$B0z?t(B] | |
712 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
713 * menuAux : *mAux : i : $B8=:_$N%a%K%e!<%G!<%?(B | |
714 * WORD : key : i : $BF~NO$5$l$?%-!<(B | |
715 * int : *cur : o : $BA*Br$5$l$?9`L\(B | |
716 * | |
717 * [$BJV$jCM(B] | |
718 * 0 : $B9`L\$OA*Br$5$l$F$$$J$$!#(B | |
719 * $B$=$NB>(B: $BA*Br$5$l$?9`L\$N%"%I%l%9(B | |
720 * | |
721 * [$B;HMQ4X?t(B] | |
722 * $B$J$7(B | |
723 * [$B5!G=(B] | |
724 * $B;XDj$5$l$?%-!<$,!"(B $B8=:_I=<($7$F$$$k%a%K%e!<$h$j!"(B | |
725 * $B9`L\$rA*Br$9$k$?$a$NM-8z%-!<$+%A%'%C%/$7!"(B | |
726 * $BM-8z%-!<N)$C$?>l9g$K$O!"9`L\$,A*Br$5$l$?J*$H$7!"(B | |
727 * $B$=$N9`L\HV9f$r@_Dj$7!"9`L\$N%"%I%l%9$rJV$9!#(B | |
728 */ | |
729 menuItem *menuKey(mAux, key, cur) | |
730 menuAux *mAux; | |
731 WORD key; | |
732 int *cur; | |
733 { | |
734 register menuItem *item ; | |
735 register int i ; | |
736 | |
737 *cur = 0 ; | |
738 item = mAux->items ; | |
739 for ( i = 0 ; i < mAux->nitems ; i++ ) { | |
740 /* | |
741 printf( "Check Keys for '%s'\n", | |
742 item->itemStr ? item->itemStr : "NULL" ) ; | |
743 */ | |
744 if ( item->key == key ) { | |
745 /* printf( "found\n" ) ; */ | |
746 *cur = i ; | |
747 return item ; | |
748 } | |
749 item++ ; | |
750 } | |
751 /* printf( "not found\n" ) ; */ | |
752 return ( menuItem * )NULL ; | |
753 } | |
754 | |
755 /* Page */ | |
756 /* | |
757 * [$B4X?tL>(B] | |
758 * MenuCtrl( ) | |
759 * [$BI=Bj(B] | |
760 * $B%a%K%e!<I=<(;~$N%$%Y%s%H%3%s%H%m!<%k(B | |
761 * [$B8F=P7A<0(B] | |
762 * int MenuCtrl( _XatokRecPtr acomm, menuAux **curMenu, | |
763 * WORD *aajcode, int op, int *length ) | |
764 * [$B0z?t(B] | |
765 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
766 * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
767 * menuAux : **curMenu : i/o : $B8=:_$N%a%K%e!<%G!<%?(B | |
768 * WORD : *aajcode : i/o : $BF~NO$5$l$?(BAAJCODE | |
769 * int : op : i : $B3+;O%U%!%s%/%7%g%s$N8F$S=P$7(B | |
770 * int : *length : o : $BF~NOJ8;zNs$ND9$5(B | |
771 * | |
772 * [$BJV$jCM(B] | |
773 * 0 : $B%a%K%e!<$NJQ99L5$7(B | |
774 * 1 : $B%a%K%e!<=hM}%-%c%s%;%k(B | |
775 * 2 : $B%a%K%e!<A*Br9`L\$N=hM}7hDj(B | |
776 * | |
777 * [$B;HMQ4X?t(B] | |
778 * menuAux->startProc( ) | |
779 * menuAux->defaultProc( ) | |
780 * menuAux->endProc( ) | |
781 * menuNextOn( ) | |
782 * menuPrevOn( ) | |
783 * [$B5!G=(B] | |
784 * AUX$B%&%#%s%I%&$K%a%K%e!<$,I=<($5$l$F$$$k;~$N(B | |
785 * $B%$%Y%s%H4IM}$r9T$J$&!#(B | |
786 * $B%$%Y%s%H$K$h$j!"I=<($7$F$$$k%a%K%e!<%G!<%?$N(B | |
787 * $B@ZBX$($d!"(BAUX$B%&%#%s%I%&$N=*N;$r9T$J$&!#(B | |
788 */ | |
789 int MenuCtrl(acomm, curMenu, aajcode, op, length) | |
790 _XatokRecPtr acomm; | |
791 menuAux **curMenu; | |
792 WORD *aajcode; | |
793 int op; | |
794 int *length; | |
795 { | |
796 | |
797 menuItem *target ; | |
798 menuItem sel ; | |
799 int newNbr ; | |
800 int changes =-1 ; | |
801 int cur ; | |
802 | |
803 *length = 0 ; | |
804 if ( op ) { /* Start Proc */ | |
805 if (( *curMenu )->startProc ) { | |
806 ( *curMenu )->startProc( acomm ) ; | |
807 } | |
808 return ; | |
809 } | |
810 | |
811 target = menuKey( *curMenu, *aajcode, &newNbr ) ; | |
812 /* | |
813 * $B>e0L$G(BDEFAULT PROC$B$r<B9T$9$k!#(B | |
814 */ | |
815 if ( !target ) { | |
816 #ifdef ATOK_DEBUG | |
817 printf( "AUX DEFAULT FUNC\n" ) ; | |
818 #endif /* ATOK_DEBUG */ | |
819 | |
820 if (( *curMenu )->defaultProc ) { | |
821 sel.op = 0 ; | |
822 *length = ( *curMenu )->defaultProc( acomm, *curMenu, aajcode, &sel.op ) ; | |
823 if ( sel.op ) { | |
824 target = &sel ; | |
825 goto menu_op ; | |
826 } | |
827 #ifdef ATOK_DEBUG | |
828 printf( "\274\302\271\324\n"/*=$B<B9T(B\n=*/ ) ; | |
829 #endif /* ATOK_DEBUG */ | |
830 } | |
831 else { | |
832 #ifdef ATOK_DEBUG | |
833 printf( "\244\312\244\267\n"/*=$B$J$7(B\n=*/ ) ; | |
834 #endif /* ATOK_DEBUG */ | |
835 } | |
836 return -1 ; | |
837 } | |
838 /* | |
839 * $BI=<($7$F$$$k%a%K%e!<$h$j!"A*Br$7$F$$$k$b$N$,JQ$o$C$?!#(B | |
840 */ | |
841 menu_op : | |
842 switch( target->op ) { | |
843 case OP_NEXT : | |
844 ( *curMenu )->cur = menuNextOn(( *curMenu )->cur, 0, *curMenu ) ; | |
845 changes = 0 ; | |
846 break ; | |
847 case OP_FIRST : | |
848 ( *curMenu )->cur = menuNextOn(( *curMenu )->cur, 1, *curMenu ) ; | |
849 changes = 0 ; | |
850 break ; | |
851 case OP_PREV : | |
852 ( *curMenu )->cur = menuPrevOn(( *curMenu )->cur, 0, *curMenu ) ; | |
853 changes = 0 ; | |
854 break ; | |
855 case OP_LAST : | |
856 ( *curMenu )->cur = menuPrevOn(( *curMenu )->cur, 1, *curMenu ) ; | |
857 changes = 0 ; | |
858 break ; | |
859 case OP_SPEC : | |
860 /* | |
861 * $B;XDj$7$?HV9f(B | |
862 */ | |
863 ( *curMenu )->cur = newNbr ; | |
864 changes = 0 ; | |
865 break ; | |
866 case OP_CANCEL : | |
867 /* | |
868 * $B%-%c%s%;%k$,2!$5$l$?$N$G>e0L%a%K%e!<$X(B | |
869 */ | |
870 if (( *curMenu )->endProc ) { | |
871 ( *curMenu )->endProc( acomm ) ; | |
872 } | |
873 *curMenu = ( *curMenu )->parent ; | |
874 if ( *curMenu ) { | |
875 if (( *curMenu )->startProc ) { | |
876 ( *curMenu )->startProc( acomm ) ; | |
877 } | |
878 } | |
879 changes = 1 ; | |
880 break ; | |
881 case OP_SELECT : | |
882 /* | |
883 * $B7hDj%-!<$,2!$5$l$?$N$G=hM}<B9T(B | |
884 * $B2<0L%a%K%e!<$,$"$l$P!"%a%K%e!<JQ99(B | |
885 */ | |
886 cur = ( *curMenu )->cur ; | |
887 if (( *curMenu )->items[cur].child ) { | |
888 ( *curMenu )->items[cur].child->parent = ( *curMenu ) ; | |
889 *curMenu = ( *curMenu )->items[cur].child ; | |
890 if (( *curMenu )->startProc ) { | |
891 ( *curMenu )->startProc( acomm, *aajcode ) ; | |
892 } | |
893 } | |
894 changes = 2 ; | |
895 break ; | |
896 default : | |
897 changes = 0 ; | |
898 break ; | |
899 } | |
900 | |
901 return changes ; | |
902 } | |
903 | |
904 | |
905 /* Page */ | |
906 /* | |
907 * [$B4X?tL>(B] | |
908 * auxMenuCopy( ) | |
909 * [$BI=Bj(B] | |
910 * $B%a%K%e!<%G!<%?$N%3%T!<(B | |
911 * [$B8F=P7A<0(B] | |
912 * menuAux *auxMenuCopy( menuAux *orgAux ) | |
913 * | |
914 * [$B0z?t(B] | |
915 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
916 * menuAux : *orgAux : i : $B%3%T!<85%a%K%e!<%G!<%?(B | |
917 * | |
918 * [$BJV$jCM(B] | |
919 * $B%3%T!<$7$?%a%K%e!<%G!<%?(B | |
920 * | |
921 * [$B;HMQ4X?t(B] | |
922 * auxMenuCopy( ) | |
923 * [$B5!G=(B] | |
924 * $B;XDj$5$l$?%a%K%e!<%G!<%?$r?75,%P%C%U%!$K%3%T!<$7$F(B | |
925 * $B$=$N%"%I%l%9$rJV$9!#(B | |
926 */ | |
927 menuAux *auxMenuCopy(orgAux) | |
928 menuAux *orgAux; | |
929 { | |
930 menuItem *item ; | |
931 int nitem ; | |
932 int i ; | |
933 menuAux *newAux ; | |
934 | |
935 newAux = ( menuAux * )malloc( sizeof( menuAux )) ; | |
936 if ( !newAux ) return 0 ; | |
937 | |
938 memcpy(( char * )newAux, ( char * )orgAux, sizeof( menuAux )) ; | |
939 | |
940 item = ( menuItem * )malloc( sizeof( menuItem ) * orgAux->nitems ) ; | |
941 newAux->items = item ; | |
942 for( i = 0 ; i < orgAux->nitems ; i++ ) { | |
943 memcpy(( char * )item, ( char * )&orgAux->items[i], | |
944 sizeof( menuItem )) ; | |
945 if ( item->child ) { | |
946 item->child = auxMenuCopy( item->child ) ; | |
947 } | |
948 item++ ; | |
949 } | |
950 return newAux ; | |
951 } | |
952 | |
953 /* Page */ | |
954 /* | |
955 * [$B4X?tL>(B] | |
956 * auxMenuString( ) | |
957 * [$BI=Bj(B] | |
958 * $B%a%K%e!<I=<(MQJ8;zNs$N:n@.(B | |
959 * [$B8F=P7A<0(B] | |
960 * int auxMenuString( _XatokRecPtr acomm, menuAux *mAux, | |
961 * wchar *echoStr, int *echoLen, int *revLen, | |
962 * int *revPos ) | |
963 * | |
964 * [$B0z?t(B] | |
965 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
966 * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
967 * menuAux : *mAux : i : $B8=:_$N(B MENU CLASS | |
968 * wchar : *echoStr: o : $BI=<(J8;zNs3JG<NN0h(B | |
969 * int : *echoLen : o : $BI=<(J8;zNs$ND9$5(B | |
970 * | |
971 * [$BJV$jCM(B] | |
972 * $BI=<(J8;zNs$ND9$5(B | |
973 * | |
974 * [$B;HMQ4X?t(B] | |
975 * menuAux->stringProc( ) | |
976 * euc2wcs( ) | |
977 * [$B5!G=(B] | |
978 * $B%a%K%e!<$KI=<($9$k$?$a$NJ8;zNs$r:n@.$9$k!#(B | |
979 * $B8=:_I=<($7$F$$$k%a%K%e!<$KJ8;zNs$r:n@.$9$k$?$a$N(B | |
980 * $B4X?t(B(menuAux->stirngProc)$B$,;XDj$5$l$F$$$k>l9g$K$O!"(B | |
981 * $B$=$N4X?t$r8F$S=P$7$F!"J8;zNs$r:n@.$9$k!#(B | |
982 */ | |
983 int auxMenuString(acomm, mAux, echoStr, echoLen, revLen, revPos) | |
984 _XatokRecPtr acomm; | |
985 menuAux *mAux; | |
986 wchar *echoStr; | |
987 int *echoLen; | |
988 int *revLen; | |
989 int *revPos; | |
990 { | |
991 register menuItem *item ; | |
992 char tbuf[BUFSIZ*2] ; | |
993 int len ; | |
994 int i, es ; | |
995 char *ep ; | |
996 int status ; | |
997 | |
998 item = mAux->items ; | |
999 | |
1000 *revPos = 0 ; | |
1001 *revLen = 0 ; | |
1002 len = 0 ; | |
1003 bzero( tbuf, sizeof( tbuf )) ; | |
1004 | |
1005 #ifdef ATOK_DEBUG | |
1006 printf( "AUX ADDR (STR) 0x%x\n", mAux ) ; | |
1007 #endif /* ATOK_DEBUG */ | |
1008 if ( mAux->stringProc ) { | |
1009 #ifdef ATOK_DEBUG | |
1010 printf( "STRING PROC\n" ) ; | |
1011 #endif /* ATOK_DEBUG */ | |
1012 len = ( mAux->stringProc )( acomm, mAux, | |
1013 echoStr, echoLen, revLen, revPos ) ; | |
1014 return len ; | |
1015 } | |
1016 ep = tbuf ; | |
1017 if ( mAux->str ) { | |
1018 strcpy( ep, mAux->str ) ; | |
1019 ep += strlen( ep ) ; | |
1020 } | |
1021 | |
1022 #ifdef ATOK_DEBUG | |
1023 printf( "auxMenuString START(%d)\n", mAux->nitems ) ; | |
1024 #endif /* ATOK_DEBUG */ | |
1025 | |
1026 for( i = 0 ; i < mAux->nitems ; i++ ) { | |
1027 | |
1028 #ifdef ATOK_DEBUG | |
1029 printf( "ITEMS %s\n", item->itemStr ? item->itemStr : "NULL" ) ; | |
1030 #endif /* ATOK_DEBUG */ | |
1031 if ( item->mode == ON ) { | |
1032 if ( mAux->cur == i ) { | |
1033 es = strlen( tbuf ) ; | |
1034 *revPos = euc2wcs( tbuf, es, echoStr ) ; | |
1035 #ifdef ATOK_DEBUG | |
1036 printf( "SET ECHO POS %d\n", *revPos ) ; | |
1037 #endif /* ATOK_DEBUG */ | |
1038 | |
1039 len += *revPos ; | |
1040 es = strlen( item->numStr ) ; | |
1041 | |
1042 *revLen = euc2wcs( item->numStr, es, | |
1043 &echoStr[*revPos] ) ; | |
1044 len += *revLen ; | |
1045 #ifdef ATOK_DEBUG | |
1046 printf( "SET ECHO LEN %d\n", *revLen ) ; | |
1047 #endif /* ATOK_DEBUG */ | |
1048 ep = tbuf ; | |
1049 sprintf( ep, " %s", item->itemStr ) ; | |
1050 ep += strlen( ep ) ; | |
1051 | |
1052 REVERSE ; | |
1053 printf( "%s", item->numStr ) ; | |
1054 NORMAL ; | |
1055 printf( " %s", item->itemStr ) ; | |
1056 } | |
1057 else { | |
1058 sprintf( ep, "%s %s", item->numStr, item->itemStr ) ; | |
1059 ep += strlen( ep ) ; | |
1060 | |
1061 #ifdef ATOK_DEBUG | |
1062 printf( "%s", item->numStr ) ; | |
1063 printf( " %s", item->itemStr ) ; | |
1064 #endif /* ATOK_DEBUG */ | |
1065 } | |
1066 sprintf( ep, " " ) ; | |
1067 ep += strlen( ep ) ; | |
1068 } | |
1069 item++ ; | |
1070 } | |
1071 | |
1072 if (( es = strlen( tbuf ))) { | |
1073 es = euc2wcs( tbuf, es, &echoStr[*revPos + *revLen] ) ; | |
1074 #ifdef ATOK_DEBUG | |
1075 printf( "STR [%s] set +len = %d\n", tbuf, es ) ; | |
1076 #endif /* ATOK_DEBUG */ | |
1077 len += es ; | |
1078 } | |
1079 *echoLen = len ; | |
1080 #ifdef ATOK_DEBUG | |
1081 printf( "len = %d, echoLen = %d\n", len, *echoLen ) ; | |
1082 #endif /* ATOK_DEBUG */ | |
1083 return len ; | |
1084 } | |
1085 | |
1086 /* | |
1087 * $B$3$3$+$i2<$O(BDEBUG$BMQ(B | |
1088 */ | |
1089 | |
1090 menuPrint(mAux) | |
1091 menuAux *mAux; | |
1092 { | |
1093 int i ; | |
1094 register menuItem *item ; | |
1095 | |
1096 item = mAux->items ; | |
1097 if ( mAux->str ) { | |
1098 printf( "%s", mAux->str ) ; | |
1099 } | |
1100 for( i = 0 ; i < mAux->nitems ; i++ ) { | |
1101 if ( item->mode == ON ) { | |
1102 if ( mAux->cur == i ) { | |
1103 REVERSE ; | |
1104 printf( "%s", item->numStr ) ; | |
1105 NORMAL ; | |
1106 printf( " %s", item->itemStr ) ; | |
1107 } | |
1108 else { | |
1109 printf( "%s", item->numStr ) ; | |
1110 printf( " %s", item->itemStr ) ; | |
1111 } | |
1112 printf( " " ) ; | |
1113 } | |
1114 item++ ; | |
1115 } | |
1116 printf( "\n" ) ; | |
1117 } | |
1118 | |
1119 #ifdef STAND | |
1120 void | |
1121 main (argc, argv) | |
1122 int argc; | |
1123 char **argv; | |
1124 { | |
1125 | |
1126 char buf[BUFSIZ] ; | |
1127 menuAux *topMenu ; | |
1128 menuAux *cur ; | |
1129 | |
1130 int status ; | |
1131 int key ; | |
1132 | |
1133 topMenu = auxTopMenu ; | |
1134 cur = topMenu ; | |
1135 | |
1136 while( 1 ) { | |
1137 menuPrint( cur ) ; | |
1138 printf( "enter command => " ) ; | |
1139 gets( buf ) ; | |
1140 key = buf[0] ; | |
1141 status = MenuCtrl( &cur, key ) ; | |
1142 if ( status == 1 ) { | |
1143 if ( !cur ) { | |
1144 printf( "Program terminated\n" ) ; | |
1145 exit( 0 ) ; | |
1146 } | |
1147 } | |
1148 else if ( status == 2 ) { | |
1149 printf( "go to Chiled\n" ) ; | |
1150 } | |
1151 else if ( status != 0 ) { | |
1152 switch( cur->mode ) { | |
1153 case M_AUX : | |
1154 printf( "TOP MENU FUNC\n" ) ; | |
1155 break ; | |
1156 case M_CODE : | |
1157 printf( "CODE MENU FUNC\n" ) ; | |
1158 break ; | |
1159 case M_CODESJ : | |
1160 printf( "SJ FUNC\n" ) ; | |
1161 break ; | |
1162 case M_CODEEUC : | |
1163 printf( "EUC FUNC\n" ) ; | |
1164 break ; | |
1165 case M_CODEJIS : | |
1166 printf( "JIS FUNC\n" ) ; | |
1167 break ; | |
1168 case M_CODEKUTEN : | |
1169 printf( "KUTEN FUNC\n" ) ; | |
1170 break ; | |
1171 case M_KIGOU : | |
1172 printf( "KIGOU FUNC\n" ) ; | |
1173 break ; | |
1174 default: | |
1175 printf( "UNKNOWN\n" ) ; | |
1176 break ; | |
1177 } | |
1178 } | |
1179 } | |
1180 } | |
1181 | |
1182 #endif STAND |