Link with C++ linker
[oweals/cde.git] / cde / programs / dtcalc / text.c
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: text.c /main/5 1996/03/25 13:13:06 ageorge $ */
24 /*                                                                      *
25  *  text.c                                                              *
26  *   Contains all the text initializationf for the Calulator            *
27  *                                                                      *
28  * (c) Copyright 1993, 1994 Hewlett-Packard Company                     *
29  * (c) Copyright 1993, 1994 International Business Machines Corp.       *
30  * (c) Copyright 1993, 1994 Sun Microsystems, Inc.                      *
31  * (c) Copyright 1993, 1994 Novell, Inc.                                *
32  */
33
34 #include <stdio.h>
35 #include <string.h>
36 #include "calctool.h"
37 #include "ds_common.h"
38
39 extern struct button buttons[] ;           /* Calculator button values. */
40 extern struct button mode_buttons[] ;      /* Special "mode" buttons. */
41 extern struct menu cmenus[] ;              /* Calculator menus. */
42 extern struct menu_entry menu_entries[] ;  /* All the menu strings. */
43
44 extern Vars v ;                 /* Calctool variables and options. */
45
46 void init_mess             P(()) ;
47
48 /*  The following are all the strings used by the dtcalc program.
49  *  They are initialised in init_text() to the local language equivalents.
50  */
51
52 char *base_str[MAXBASES] ;
53 char *calc_res[MAXRESOURCES] ;
54 char *cmdstr[MAXCMDS] ;
55 char *dtype_str[MAXDISPMODES] ;
56 char *lstrs[MAXLABELS] ;
57 char *mess[MAXMESS] ;
58 char *mode_str[MAXMODES] ;
59 char *mpstrs[MAXMPERRS] ;
60 char *opts[MAXOPTS] ;
61 char *pstrs[MAXPSTRS] ;
62 char *ttype_str[MAXTRIGMODES] ;
63 char *ustrs[MAXUSAGE] ;
64 char *vstrs[MAXVMESS] ;
65
66
67 void
68 init_cmdline_opts()      /* Initialize command line option strings. */
69 {
70   cmdstr[(int) CMD_ACC]      = "-a" ;
71   cmdstr[(int) CMD_MODE]      = "-m" ;
72   cmdstr[(int) CMD_BASE]      = "-b" ;
73   cmdstr[(int) CMD_TRIG]      = "-trig" ;
74   cmdstr[(int) CMD_DISP]      = "-notation" ;
75   cmdstr[(int) CMD_MENU_BAR]      = "-no_menu_bar" ;
76   cmdstr[(int) CMD_SESSION]      = "-session" ;
77 }
78
79
80 void
81 init_text()   /* Setup text strings depending upon language. */
82 {
83   int i ;
84
85   init_mess();
86 /*  Some notes for translators:
87  *
88  *  Text in the label strings below, should be left justified. It will
89  *  automatically be centre justified in the buttons, but various
90  *  calculations depend on the text starting on the left.
91  *
92  *  The original English V3 version was written with fixed (upto) four
93  *  character button labels. I've tried to extend this to allow any sized
94  *  labels, however the following conditions apply:
95  *
96  *  - If the label won't fit in the button, then as much as possible will be
97  *    shown, with the last character being '>'. If you enlarge the calculator,
98  *    probably more of the label will show.
99  *
100  *  - If the last character of the label is a '.', and this is not the first
101  *    character of the label (ie, the numeric point label), then dtcalc
102  *    knows that this signifies that this label should have two more '.'
103  *    characters appended to it (ie, "Mem." becomes "Mem...").
104  *
105  *  - If a dtcalc button has a menu item glyph associated with it, the
106  *    width of this glyph is taken into consideration, and the amount of
107  *    the label that can be displayed is adjusted accordingly.
108  */
109
110   i = 0 ;
111   read_str(&buttons[i++].str, LGET("")) ;                          /* Row 1.*/
112   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 5, "Functions"))) ; 
113   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 6, "Constants"))) ;
114   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 7, "Keys"))) ;
115
116   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 8, "Int"))) ;     /* Row 2. */
117   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 9, "Frac"))) ;
118   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 10, "Abs"))) ;
119   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 11, "Exp"))) ;
120
121   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 12, "Accuracy"))) ; /* Row 3.*/
122   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 13, "Store"))) ;
123   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 14, "Recall"))) ;
124   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 15, "Exchange"))) ;
125
126   read_str(&buttons[i++].str, LGET("")) ;      /* Row 4. */
127   read_str(&buttons[i++].str, LGET("")) ;
128   read_str(&buttons[i++].str, LGET("")) ;
129   read_str(&buttons[i++].str, LGET("")) ;
130
131   read_str(&buttons[i++].str, LGET("")) ;      /* Row 5. */
132   read_str(&buttons[i++].str, LGET("")) ;
133   read_str(&buttons[i++].str, LGET("")) ;
134   read_str(&buttons[i++].str, LGET("")) ;
135
136   read_str(&buttons[i++].str, LGET("")) ;      /* Row 6. */
137   read_str(&buttons[i++].str, LGET("")) ;
138   read_str(&buttons[i++].str, LGET("")) ;
139   read_str(&buttons[i++].str, LGET("")) ;
140
141   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 16, "1/x"))) ;    /* Row 7. */
142   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 17, "x^2"))) ;
143   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 19, "Sqrt"))) ;
144   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 18, "%"))) ;
145
146   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 20, "("))) ;      /* Row 8. */
147   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 21, ")"))) ;
148   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 22, "Bsp"))) ;
149   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 23, "Clr"))) ;
150
151   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 24, "D"))) ;      /* Row 9. */
152   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 25, "E"))) ;
153   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 26, "F"))) ;
154   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 27, "+/-"))) ;
155
156   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 28, "A"))) ;      /* Row 10. */
157   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 29, "B"))) ;
158   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 30, "C"))) ;
159   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 31, "X"))) ;
160
161   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 32, "7"))) ;      /* Row 11. */
162   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 33, "8"))) ;
163   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 34, "9"))) ;
164   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 35, "/"))) ;
165
166   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 36, "4"))) ;      /* Row 12. */
167   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 37, "5"))) ;
168   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 38, "6"))) ;
169   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 39, "-"))) ;
170
171   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 40, "1"))) ;      /* Row 13. */
172   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 41, "2"))) ;
173   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 42, "3"))) ;
174   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 43, "+"))) ;
175
176   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 44, "0"))) ;      /* Row 14. */
177   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 45, "."))) ;
178   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 46, "="))) ;
179   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 47, "Quit"))) ;
180
181   /* the three extra defs */
182   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 48, "Base"))) ;
183   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 49, "Disp"))) ;
184   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 50, "Mode"))) ;
185   read_str(&buttons[i++].str, LGET(GETMESSAGE(3, 51, "Trig"))) ;
186
187   i = 0 ;
188   read_str(&buttons[i++].str2, LGET("")) ;
189   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 52, "F - Funcs"))) ;
190   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 53, "# - Const"))) ;
191   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 54, "k - Keys"))) ;
192
193   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 55, "I - Int"))) ; 
194
195 /* CTL('f') */
196   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 56, "^f - Frac"))) ; 
197
198 /* CTL('u') */
199   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 57, "^u - Abs"))) ;
200
201   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 58, "E - Exp"))) ;
202
203   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 59, "A - Acc"))) ;
204   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 60, "S - Sto"))) ;
205   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 61, "R - Rcl"))) ;
206   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 62, "X - Xchg"))) ;
207
208   read_str(&buttons[i++].str2, LGET("")) ;
209   read_str(&buttons[i++].str2, LGET("")) ;
210   read_str(&buttons[i++].str2, LGET("")) ;
211   read_str(&buttons[i++].str2, LGET("")) ;
212
213   read_str(&buttons[i++].str2, LGET("")) ;
214   read_str(&buttons[i++].str2, LGET("")) ;
215   read_str(&buttons[i++].str2, LGET("")) ;
216   read_str(&buttons[i++].str2, LGET("")) ;
217
218   read_str(&buttons[i++].str2, LGET("")) ;
219   read_str(&buttons[i++].str2, LGET("")) ;
220   read_str(&buttons[i++].str2, LGET("")) ;
221   read_str(&buttons[i++].str2, LGET("")) ;
222
223   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 63, "r - 1/x"))) ;
224   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 64, "@ - x^2"))) ;
225   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 66, "s - Sqrt"))) ;
226   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 65, "%"))) ;
227
228   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 67, "("))) ;
229   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 68, ")"))) ;
230
231 /* CTL('h') */
232   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 69, "^h - Bsp"))) ;
233
234 /* del */
235 /* #ifdef hpux */
236 #ifdef HP_EXTENSIONS
237   if(v->keybdID == HIL_ITF_KBD)
238      read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 512, "clr disp"))) ;
239   else
240      read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 70, "del - Clr"))) ;
241 #else
242   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 70, "del - Clr"))) ;
243 #endif
244
245
246   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 71, "d"))) ;
247   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 72, "e"))) ;
248   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 73, "f"))) ;
249   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 74, "C - +/-"))) ;
250
251   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 75, "a"))) ;
252   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 76, "b"))) ; 
253   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 77, "c"))) ; 
254   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 78, "x"))) ;
255
256   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 79, "7"))) ;
257   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 80, "8"))) ;
258   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 81, "9"))) ;
259   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 82, "/"))) ;
260
261   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 83, "4"))) ;
262   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 84, "5"))) ;
263   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 85, "6"))) ;
264   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 86, "-"))) ;
265
266   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 87, "1"))) ;
267   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 88, "2"))) ;
268   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 89, "3"))) ;
269   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 90, "+"))) ;
270
271   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 91, "0"))) ;
272   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 92, "."))) ;
273   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 93, "="))) ;
274   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 94, "q - Quit"))) ;
275
276   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 95, "B"))) ;
277   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 96, "D"))) ;
278   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 97, "M"))) ;
279   read_str(&buttons[i++].str2, LGET(GETMESSAGE(3, 98, "T"))) ;
280
281   i = 0 ;
282   get_key_val(&buttons[i++].value, LGET("")) ;
283   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 452, "F"))) ;
284   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 453, "#"))) ;
285   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 454, "k"))) ;
286
287   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 455, "I"))) ; 
288
289 /* CTL('f') */
290   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 456, "\006"))) ; 
291
292 /* CTL('u') */
293   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 457, "\025"))) ;
294
295   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 458, "E"))) ;
296
297   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 459, "A"))) ;
298   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 460, "S"))) ;
299   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 461, "R"))) ;
300   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 462, "X"))) ;
301
302   get_key_val(&buttons[i++].value, LGET("")) ;
303   get_key_val(&buttons[i++].value, LGET("")) ;
304   get_key_val(&buttons[i++].value, LGET("")) ;
305   get_key_val(&buttons[i++].value, LGET("")) ;
306
307   get_key_val(&buttons[i++].value, LGET("")) ;
308   get_key_val(&buttons[i++].value, LGET("")) ;
309   get_key_val(&buttons[i++].value, LGET("")) ;
310   get_key_val(&buttons[i++].value, LGET("")) ;
311
312   get_key_val(&buttons[i++].value, LGET("")) ;
313   get_key_val(&buttons[i++].value, LGET("")) ;
314   get_key_val(&buttons[i++].value, LGET("")) ;
315   get_key_val(&buttons[i++].value, LGET("")) ;
316
317   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 463, "r"))) ;
318   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 464, "@"))) ;
319   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 466, "s"))) ;
320   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 465, "%"))) ;
321
322   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 67, "("))) ;
323   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 68, ")"))) ;
324
325 /* CTL('h') */
326   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 467, "\010"))) ;
327
328 /* del */
329 #ifdef hpux
330   if(v->keybdID == HIL_ITF_KBD)
331      get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 513, "\013"))) ;
332   else
333      get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 468, "\177"))) ;
334 #else
335   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 468, "\177"))) ;
336 #endif
337
338
339   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 469, "d"))) ;
340   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 470, "e"))) ;
341   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 471, "f"))) ;
342   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 472, "C"))) ;
343
344   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 473, "a"))) ;
345   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 474, "b"))) ;
346   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 475, "c"))) ;
347   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 476, "x"))) ;
348
349   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 79, "7"))) ;
350   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 80, "8"))) ;
351   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 81, "9"))) ;
352   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 82, "/"))) ;
353
354   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 83, "4"))) ;
355   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 84, "5"))) ;
356   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 85, "6"))) ;
357   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 86, "-"))) ;
358
359   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 87, "1"))) ;
360   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 88, "2"))) ;
361   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 89, "3"))) ;
362   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 90, "+"))) ;
363
364   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 91, "0"))) ;
365   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 92, "."))) ;
366   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 93, "="))) ;
367   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 477, "q"))) ;
368
369   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 95, "B"))) ;
370   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 96, "D"))) ;
371   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 97, "M"))) ;
372   get_key_val(&buttons[i++].value, LGET(GETMESSAGE(3, 98, "T"))) ;
373
374   calc_res[(int) R_ACCURACY] = DGET("accuracy") ;
375   calc_res[(int) R_BASE]     = DGET("base") ;
376   calc_res[(int) R_DISPLAY]  = DGET("display") ;
377   calc_res[(int) R_MODE]     = DGET("mode") ;
378   calc_res[(int) R_REGS]     = DGET("showRegisters") ;
379   calc_res[(int) R_TRIG]     = DGET("trigType") ;
380   calc_res[(int) R_BEEP]     = DGET("beep") ;
381   calc_res[(int) R_ICON]     = DGET("iconify") ;
382   calc_res[(int) R_WORKSPACE]  = DGET("workspace") ;
383   calc_res[(int) R_WIDTH]    = DGET("width") ;
384   calc_res[(int) R_HEIGHT]   = DGET("height") ;
385   calc_res[(int) R_X]        = DGET("x") ;
386   calc_res[(int) R_Y]        = DGET("y") ;
387   calc_res[(int) R_DISPLAYED]  = DGET("displayed") ;
388   calc_res[(int) R_REG0]     = DGET("register0") ;
389   calc_res[(int) R_REG1]     = DGET("register1") ;
390   calc_res[(int) R_REG2]     = DGET("register2") ;
391   calc_res[(int) R_REG3]     = DGET("register3") ;
392   calc_res[(int) R_REG4]     = DGET("register4") ;
393   calc_res[(int) R_REG5]     = DGET("register5") ;
394   calc_res[(int) R_REG6]     = DGET("register6") ;
395   calc_res[(int) R_REG7]     = DGET("register7") ;
396   calc_res[(int) R_REG8]     = DGET("register8") ;
397   calc_res[(int) R_REG9]     = DGET("register9") ;
398   calc_res[(int) R_FREG0]    = DGET("fregister0") ;
399   calc_res[(int) R_FREG1]    = DGET("fregister1") ;
400   calc_res[(int) R_FREG2]    = DGET("fregister2") ;
401   calc_res[(int) R_FREG3]    = DGET("fregister3") ;
402   calc_res[(int) R_FREG4]    = DGET("fregister4") ;
403   calc_res[(int) R_FREG5]    = DGET("fregister5") ;
404   calc_res[(int) R_MENUBAR]  = DGET("postMenuBar") ;
405   calc_res[(int) R_KEYS]     = DGET("keys") ;
406
407   STRCPY(v->con_names[0], LGET(GETMESSAGE(3, 119, "kilometers per hour <=> miles per hour."))) ;
408   STRCPY(v->con_names[1], LGET(GETMESSAGE(3, 120, "square root of 2."))) ;
409   STRCPY(v->con_names[2], LGET(GETMESSAGE(3, 121, "e."))) ;
410   STRCPY(v->con_names[3], LGET(GETMESSAGE(3, 122, "pi."))) ;
411   STRCPY(v->con_names[4], LGET(GETMESSAGE(3, 123, "centimeters <=> inch."))) ;
412   STRCPY(v->con_names[5], LGET(GETMESSAGE(3, 124, "degrees in a radian."))) ;
413   STRCPY(v->con_names[6], LGET(GETMESSAGE(3, 125, "2 ^ 20."))) ;
414   STRCPY(v->con_names[7], LGET(GETMESSAGE(3, 126, "grams <=> ounce."))) ;
415   STRCPY(v->con_names[8], LGET(GETMESSAGE(3, 127, "kilojoules <=> British thermal units."))) ;
416   STRCPY(v->con_names[9], LGET(GETMESSAGE(3, 128, "cubic centimeters <=> cubic inches."))) ;
417
418 /* Keyboard equivalents for the dtcalc menu entries. */
419
420           i = 0 ;
421 /* 00 */  get_key_val(&menu_entries[i++].val, LGET("0")) ;  /* ACC */
422 /* 01 */  get_key_val(&menu_entries[i++].val, LGET("1")) ;
423 /* 02 */  get_key_val(&menu_entries[i++].val, LGET("2")) ;
424 /* 03 */  get_key_val(&menu_entries[i++].val, LGET("3")) ;
425 /* 04 */  get_key_val(&menu_entries[i++].val, LGET("4")) ;
426 /* 05 */  get_key_val(&menu_entries[i++].val, LGET("5")) ;
427 /* 06 */  get_key_val(&menu_entries[i++].val, LGET("6")) ;
428 /* 07 */  get_key_val(&menu_entries[i++].val, LGET("7")) ;
429 /* 08 */  get_key_val(&menu_entries[i++].val, LGET("8")) ;
430 /* 09 */  get_key_val(&menu_entries[i++].val, LGET("9")) ;
431 /* 10 */  get_key_val(&menu_entries[i++].val, LGET("0")) ;  /* EXCH, RCL, STO */
432 /* 11 */  get_key_val(&menu_entries[i++].val, LGET("1")) ;
433 /* 12 */  get_key_val(&menu_entries[i++].val, LGET("2")) ;
434 /* 13 */  get_key_val(&menu_entries[i++].val, LGET("3")) ;
435 /* 14 */  get_key_val(&menu_entries[i++].val, LGET("4")) ;
436 /* 15 */  get_key_val(&menu_entries[i++].val, LGET("5")) ;
437 /* 16 */  get_key_val(&menu_entries[i++].val, LGET("6")) ;
438 /* 17 */  get_key_val(&menu_entries[i++].val, LGET("7")) ;
439 /* 18 */  get_key_val(&menu_entries[i++].val, LGET("8")) ;
440 /* 19 */  get_key_val(&menu_entries[i++].val, LGET("9")) ;
441 /* 35 */  get_key_val(&menu_entries[i++].val, LGET("b")) ;  /* BASE */
442 /* 36 */  get_key_val(&menu_entries[i++].val, LGET("o")) ;
443 /* 37 */  get_key_val(&menu_entries[i++].val, LGET("d")) ;
444 /* 38 */  get_key_val(&menu_entries[i++].val, LGET("h")) ;
445 /* 39 */  get_key_val(&menu_entries[i++].val, LGET("e")) ;  /* Display type. */
446 /* 40 */  get_key_val(&menu_entries[i++].val, LGET("f")) ;
447 /* 41 */  get_key_val(&menu_entries[i++].val, LGET("s")) ;
448 /* 42 */  get_key_val(&menu_entries[i++].val, LGET("d")) ;  /* Trig. type. */
449 /* 43 */  get_key_val(&menu_entries[i++].val, LGET("g")) ;
450 /* 44 */  get_key_val(&menu_entries[i++].val, LGET("r")) ;
451 /* 45 */  get_key_val(&menu_entries[i++].val, LGET("b")) ;  /* MODE */
452 /* 46 */  get_key_val(&menu_entries[i++].val, LGET("f")) ;
453 /* 47 */  get_key_val(&menu_entries[i++].val, LGET("l")) ;
454 /* 48 */  get_key_val(&menu_entries[i++].val, LGET("s")) ;
455 /* 49 */  get_key_val(&menu_entries[i++].val, LGET("\020")) ;
456
457   i = 0 ;
458 /* Financial */
459   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 208, "Term"))) ;
460   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 209, "i%Yr"))) ;
461   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 210, "Pv"))) ;
462   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 211, "Pmt"))) ;
463   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 212, "Fv"))) ;
464   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 515, "P/YR"))) ;
465   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 213, "CLRfregs"))) ;
466   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 214, "Ctrm"))) ;
467   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 215, "Ddb"))) ;
468   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 216, "Sln"))) ;
469   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 217, "Syd"))) ;
470   read_str(&mode_buttons[i++].str, " ") ;
471   read_str(&mode_buttons[i++].str, " ") ;
472   read_str(&mode_buttons[i++].str, " ") ;
473   read_str(&mode_buttons[i++].str, " ") ;
474   read_str(&mode_buttons[i++].str, " ") ;
475
476 /* Logical. */
477   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 218, "<"))) ;
478   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 219, ">"))) ;
479   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 220, "&16"))) ;
480   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 221, "&32"))) ;
481   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 222, "Or"))) ;
482   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 223, "And"))) ;
483   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 224, "Not"))) ;
484   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 225, "Xor"))) ;
485   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 226, "Xnor"))) ;
486   read_str(&mode_buttons[i++].str, " ") ;
487   read_str(&mode_buttons[i++].str, " ") ;
488   read_str(&mode_buttons[i++].str, " ") ;
489   read_str(&mode_buttons[i++].str, " ") ;
490   read_str(&mode_buttons[i++].str, " ") ;
491   read_str(&mode_buttons[i++].str, " ") ;
492   read_str(&mode_buttons[i++].str, " ") ;
493
494 /* Scientific. */
495   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 228, "Inv"))) ;
496   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 227, "Hyp"))) ;
497   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 229, "e^x"))) ;
498   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 230, "10^x"))) ;
499   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 231, "y^x"))) ;
500   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 232, "x!"))) ;
501   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 233, "Cos"))) ;
502   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 234, "Sin"))) ;
503   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 235, "Tan"))) ;
504   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 236, "Ln"))) ;
505   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 237, "Log"))) ;
506   read_str(&mode_buttons[i++].str, LGET(GETMESSAGE(3, 238, "Rand"))) ;
507   read_str(&mode_buttons[i++].str, " ") ;
508   read_str(&mode_buttons[i++].str, " ") ;
509   read_str(&mode_buttons[i++].str, " ") ;
510   read_str(&mode_buttons[i++].str, " ") ;
511
512 /* Keyboard equivalents for the three dtcalc mode window buttons. */
513
514   i = 0 ;
515 /* Financial */
516   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 239, "T - Term"))) ;
517 /* CTL('r') */
518   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 240, "^r - i%Yr"))) ;
519   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 241, "p - Pv"))) ;
520   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 242, "P - Pmt"))) ;
521   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 243, "v - Fv"))) ;
522   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 516, "y - P/YR"))) ;
523   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 244, "L - Clrgs"))) ;
524 /* CTL('t') */
525   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 245, "^t - Ctrm"))) ;
526 /* CTL('d') */
527   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 246, "^d - Ddb")));
528 /* CTL('s') */
529   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 247, "^s - Sln")));
530 /* CTL('y') */
531   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 248, "^y - Syd")));
532   read_str(&mode_buttons[i++].str2, " ") ;
533   read_str(&mode_buttons[i++].str2, " ") ;
534   read_str(&mode_buttons[i++].str2, " ") ;
535   read_str(&mode_buttons[i++].str2, " ") ;
536   read_str(&mode_buttons[i++].str2, " ") ;
537
538 /* Logical. */
539   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 249, "<"))) ;
540   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 250, ">"))) ;
541   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 251, "[ - &16"))) ;
542   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 252, "] - &32"))) ;
543   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 253, "| - Or"))) ;
544   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 254, "& - And"))) ;
545   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 255, "~ - Not"))) ;
546   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 256, "^ - Xor"))) ;
547   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 257, "n - Xnor"))) ;
548   read_str(&mode_buttons[i++].str2, " ") ;
549   read_str(&mode_buttons[i++].str2, " ") ;
550   read_str(&mode_buttons[i++].str2, " ") ;
551   read_str(&mode_buttons[i++].str2, " ") ;
552   read_str(&mode_buttons[i++].str2, " ") ;
553   read_str(&mode_buttons[i++].str2, " ") ;
554   read_str(&mode_buttons[i++].str2, " ") ;
555
556 /* Scientific. */
557   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 259, "i - Inv"))) ;
558   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 258, "h - Hyp"))) ;
559   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 260, "{ - e^x"))) ;
560   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 261, "} - 10^x"))) ;
561   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 262, "y - y^x"))) ;
562   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 263, "! - x!"))) ;
563 /* CTL('c') */
564   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 264, "^c - Cos")));
565 /* CTL('s') */
566   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 265, "^s - Sin")));
567 /* CTL('t') */
568   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 266, "^t - Tan")));
569   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 267, "N - Ln"))) ;
570   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 268, "G - Log"))) ;
571   read_str(&mode_buttons[i++].str2, LGET(GETMESSAGE(3, 269, "? - Rand"))) ;
572   read_str(&mode_buttons[i++].str2, " ") ;
573   read_str(&mode_buttons[i++].str2, " ") ;
574   read_str(&mode_buttons[i++].str2, " ") ;
575   read_str(&mode_buttons[i++].str2, " ") ;
576
577   i = 0 ;
578 /* Financial */
579   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 480, "T"))) ;
580 /* CTL('r') */
581   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 481, "\022"))) ;
582   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 482, "p"))) ;
583   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 483, "P"))) ;
584   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 484, "v"))) ;
585   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(5, 517, "y"))) ;
586   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 485, "L"))) ;
587 /* CTL('t') */
588   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 486, "\024"))) ;
589 /* CTL('d') */
590   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 487, "\004"))) ;
591 /* CTL('s') */
592   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 488, "\023"))) ;
593 /* CTL('y') */
594   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 489, "\031"))) ;
595   get_key_val(&mode_buttons[i++].value, " ") ;
596   get_key_val(&mode_buttons[i++].value, " ") ;
597   get_key_val(&mode_buttons[i++].value, " ") ;
598   get_key_val(&mode_buttons[i++].value, " ") ;
599   get_key_val(&mode_buttons[i++].value, " ") ;
600
601 /* Logical. */
602   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 249, "<"))) ;
603   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 250, ">"))) ;
604   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 490, "["))) ;
605   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 491, "]"))) ;
606   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 492, "|"))) ;
607   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 493, "&"))) ;
608   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 494, "~"))) ;
609   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 495, "^"))) ;
610   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 496, "n"))) ;
611   get_key_val(&mode_buttons[i++].value, " ") ;
612   get_key_val(&mode_buttons[i++].value, " ") ;
613   get_key_val(&mode_buttons[i++].value, " ") ;
614   get_key_val(&mode_buttons[i++].value, " ") ;
615   get_key_val(&mode_buttons[i++].value, " ") ;
616   get_key_val(&mode_buttons[i++].value, " ") ;
617   get_key_val(&mode_buttons[i++].value, " ") ;
618
619 /* Scientific. */
620   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 501, "i"))) ;
621   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 500, "h"))) ;
622   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 502, "{"))) ;
623   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 503, "}"))) ;
624   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 504, "y"))) ;
625   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 505, "!"))) ;
626 /* CTL('c') */
627   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 506, "\003"))) ;     
628 /* CTL('s') */
629   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 507, "\023"))) ;
630 /* CTL('t') */
631   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 508, "\024"))) ;
632   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 509, "N"))) ;
633   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 510, "G"))) ;
634   get_key_val(&mode_buttons[i++].value, LGET(GETMESSAGE(3, 511, "?"))) ;
635   get_key_val(&mode_buttons[i++].value, " ") ;
636   get_key_val(&mode_buttons[i++].value, " ") ;
637   get_key_val(&mode_buttons[i++].value, " ") ;
638   get_key_val(&mode_buttons[i++].value, " ") ;
639
640 }
641
642 void
643 init_mess()   /* Setup text strings depending upon language. */
644 {
645   int i ;
646
647   base_str[(int) BIN] = XtNewString(LGET(GETMESSAGE(2, 1, "Bin"))) ;  /* Base values. */
648   base_str[(int) OCT] = XtNewString(LGET(GETMESSAGE(2, 2, "Oct"))) ;
649   base_str[(int) DEC] = XtNewString(LGET(GETMESSAGE(2, 3, "Dec"))) ;
650   base_str[(int) HEX] = XtNewString(LGET(GETMESSAGE(2, 4, "Hex"))) ;
651
652   i = 0 ;
653   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 107, "Accuracy"))) ;         /* ACC */
654   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 108, "Numeric base"))) ;  /* BASE TYPE */
655   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 109, "Constants"))) ;        /* CON */
656   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 110, "Exchange"))) ;         /* EXCH */
657   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 111, "Functions"))) ;        /* FUN */
658   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 113, "Mode"))) ;             /* MODE */
659   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 114, "Display type"))) ;   /* NUM TYPE */
660   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 115, "Retrieve"))) ;         /* RCL */
661   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 117, "Store"))) ;            /* STO */
662   cmenus[i++].title = XtNewString(LGET(GETMESSAGE(3, 118, "Trigonometric type"))) ;/* TRIG TYPE */
663
664 /* Display mode. */
665   dtype_str[(int) ENG] = XtNewString(LGET(GETMESSAGE(2, 5, "ENG"))) ;
666   dtype_str[(int) FIX] = XtNewString(LGET(GETMESSAGE(2, 6, "FIX"))) ;
667   dtype_str[(int) SCI] = XtNewString(LGET(GETMESSAGE(2, 7, "SCI"))) ;
668
669 /* Labels for various Motif items. */
670   lstrs[(int) L_CONNO]   = XtNewString(LGET(GETMESSAGE(3, 132, "Constant no:"))) ;
671   lstrs[(int) L_FUNNO]   = XtNewString(LGET(GETMESSAGE(3, 133, "Function no:"))) ;
672   lstrs[(int) L_LCALC]   = XtNewString(LGET(GETMESSAGE(3, 134, "calculator"))) ;
673   lstrs[(int) L_NEWCON]  = XtNewString(LGET(GETMESSAGE(3, 135, "New Constant"))) ;
674   lstrs[(int) L_NEWFUN]  = XtNewString(LGET(GETMESSAGE(3, 136, "New Function"))) ;
675   lstrs[(int) L_UCALC]   = XtNewString(LGET(GETMESSAGE(2, 12, "Calculator"))) ;
676   lstrs[(int) L_MEMT]    = XtNewString(LGET(GETMESSAGE(3, 137, "Memory Registers"))) ;
677   lstrs[(int) L_FINMEMT] = XtNewString(LGET(GETMESSAGE(3, 518, "Financial Registers"))) ;
678   lstrs[(int) L_PROPT]   = XtNewString(LGET(GETMESSAGE(3, 139, "Calculator properties"))) ;
679   lstrs[(int) L_DESC]    = XtNewString(LGET(GETMESSAGE(3, 140, "Description:"))) ;
680   lstrs[(int) L_VALUE]   = XtNewString(LGET(GETMESSAGE(3, 141, "Value:"))) ;
681   lstrs[(int) L_CONB]    = XtNewString(LGET(GETMESSAGE(3, 142, "Enter Constant"))) ;
682   lstrs[(int) L_FUNB]    = XtNewString(LGET(GETMESSAGE(3, 143, "Enter Function"))) ;
683
684 /* Message strings. */
685   mess[(int) MESS_PARAM] = XtNewString(MGET(GETMESSAGE(3, 148, "%s\n"))) ;
686   mess[(int) MESS_CON]   = XtNewString(MGET(GETMESSAGE(3, 149, "%s %1d already exists."))) ;
687           i = 0 ;
688 /* ACC */
689 /* 00 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 153, "0 radix places"))) ;
690 /* 01 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 154, "1 radix places"))) ;
691 /* 02 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 155, "2 radix places"))) ;
692 /* 03 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 156, "3 radix places"))) ;
693 /* 04 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 157, "4 radix places"))) ;
694 /* 05 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 158, "5 radix places"))) ;
695 /* 06 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 159, "6 radix places"))) ;
696 /* 07 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 160, "7 radix places"))) ;
697 /* 08 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 161, "8 radix places"))) ;
698 /* 09 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 162, "9 radix places"))) ;
699
700 /* EXCH, RCL, STO */
701 /* 10 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 163, "Register 0"))) ;
702 /* 11 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 164, "Register 1"))) ;
703 /* 12 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 165, "Register 2"))) ;
704 /* 13 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 166, "Register 3"))) ;
705 /* 14 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 167, "Register 4"))) ;
706 /* 15 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 168, "Register 5"))) ;
707 /* 16 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 169, "Register 6"))) ;
708 /* 17 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 170, "Register 7"))) ;
709 /* 18 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 171, "Register 8"))) ;
710 /* 19 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 172, "Register 9"))) ;
711
712 /* BASE */
713 /* 20 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 188, "Binary"))) ;      
714 /* 21 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 189, "Octal"))) ;
715 /* 22 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 190, "Decimal"))) ;
716 /* 23 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 191, "Hexadecimal"))) ;
717
718 /* Display type. */
719 /* 24 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 192, "Engineering"))) ; 
720 /* 25 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 193, "Fixed point"))) ;
721 /* 26 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 194, "Scientific"))) ;
722
723 /* Trig. type. */
724 /* 27 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 195, "Degrees"))) ;     
725 /* 28 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 196, "Gradients"))) ;
726 /* 29 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 197, "Radians"))) ;
727
728 /* MODE */
729 /* 30 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 198, "Basic"))) ;       
730 /* 31 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 199, "Financial"))) ;
731 /* 32 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 200, "Logical"))) ;
732 /* 33 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 201, "Scientific"))) ;
733
734 /* 34 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 203, "Term:"))) ;
735 /* 35 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 204, "i%Yr:"))) ;
736 /* 36 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 205, "Present Value:"))) ;
737 /* 37 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 206, "Payment:"))) ;
738 /* 38 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 207, "Future Value:"))) ;
739 /* 39 */  menu_entries[i++].str = XtNewString(LGET(GETMESSAGE(3, 514, "Payments/Year:"))) ;
740
741   mode_str[(int) FINANCIAL]  = XtNewString(LGET(GETMESSAGE(3, 270, "FINANCIAL"))) ;
742   mode_str[(int) LOGICAL]    = XtNewString(LGET(GETMESSAGE(3, 271, "LOGICAL"))) ;
743   mode_str[(int) SCIENTIFIC] = XtNewString(LGET(GETMESSAGE(3, 272, "SCIENTIFIC"))) ;
744
745 /* MP errors (visible with the -E command line option. */
746
747   mpstrs[(int) MP_ADD2A] = XtNewString(LGET(GETMESSAGE(3, 273, "*** SIGN NOT 0, +1 OR -1 IN MPADD2 CALL.\n"))) ;
748   mpstrs[(int) MP_ADD2B] = XtNewString(LGET(GETMESSAGE(3, 274, "POSSIBLE OVERWRITING PROBLEM ***\n"))) ;
749   mpstrs[(int) MP_PART1] = XtNewString(LGET(GETMESSAGE(3, 275, "*** N .LE. 1 IN CALL TO MPART1 ***\n"))) ;
750   mpstrs[(int) MP_ASIN]  = XtNewString(LGET(GETMESSAGE(3, 276, "*** ABS(X) .GT. 1 IN CALL TO MPASIN ***\n"))) ;
751   mpstrs[(int) MP_ATAN]  = XtNewString(LGET(GETMESSAGE(3, 277, "*** ERROR OCCURRED IN MPATAN, RESULT INCORRECT ***\n"))) ;
752   mpstrs[(int) MP_CHKC]  = XtNewString(MGET(GETMESSAGE(3, 278, "*** B = %d ILLEGAL IN CALL TO MPCHK.\n"))) ;
753   mpstrs[(int) MP_CHKD]  = XtNewString(LGET(GETMESSAGE(3, 279, "PERHAPS NOT SET BEFORE CALL TO AN MP ROUTINE ***\n"))) ;
754   mpstrs[(int) MP_CHKE]  = XtNewString(MGET(GETMESSAGE(3, 280, "*** T = %d ILLEGAL IN CALL TO MPCHK.\n"))) ;
755   mpstrs[(int) MP_CHKF]  = XtNewString(LGET(GETMESSAGE(3, 279, "PERHAPS NOT SET BEFORE CALL TO AN MP ROUTINE ***\n"))) ;
756   mpstrs[(int) MP_CHKG]  = XtNewString(LGET(GETMESSAGE(3, 282, "*** M .LE. T IN CALL TO MPCHK.\n"))) ;
757   mpstrs[(int) MP_CHKH]  = XtNewString(LGET(GETMESSAGE(3, 279, "PERHAPS NOT SET BEFORE CALL TO AN MP ROUTINE ***\n"))) ;
758   mpstrs[(int) MP_CHKI]  = XtNewString(LGET(GETMESSAGE(3, 284, "*** B TOO LARGE IN CALL TO MPCHK ***\n"))) ;
759   mpstrs[(int) MP_CHKJ]  = XtNewString(LGET(GETMESSAGE(3, 285, "*** MXR TOO SMALL OR NOT SET TO DIM(R) BEFORE CALL "))) ;
760   mpstrs[(int) MP_CHKL]  = XtNewString(LGET(GETMESSAGE(3, 286, "TO AN MP ROUTINE ***\n"))) ;
761   mpstrs[(int) MP_CHKM]  = XtNewString(MGET(GETMESSAGE(3, 287, "*** MXR SHOULD BE AT LEAST %d*T + %d = %d  ***\n"))) ;
762   mpstrs[(int) MP_CHKN]  = XtNewString(MGET(GETMESSAGE(3, 288, "*** ACTUALLY MXR = %d, AND T = %d  ***\n"))) ;
763   mpstrs[(int) MP_CMD]   = XtNewString(LGET(GETMESSAGE(3, 289, "*** FLOATING-POINT OVER/UNDER-FLOW IN MPCMD ***\n"))) ;
764   mpstrs[(int) MP_CMR]   = XtNewString(LGET(GETMESSAGE(3, 290, "*** FLOATING-POINT OVER/UNDER-FLOW IN MPCMR ***\n"))) ;
765   mpstrs[(int) MP_CQM]   = XtNewString(LGET(GETMESSAGE(3, 291, "*** J = 0 IN CALL TO MPCQM ***\n"))) ;
766   mpstrs[(int) MP_DIVA]  = XtNewString(LGET(GETMESSAGE(3, 292, "*** ATTEMPTED DIVISION BY ZERO IN CALL TO MPDIV ***\n"))) ;
767   mpstrs[(int) MP_DIVB]  = XtNewString(LGET(GETMESSAGE(3, 293, "*** OVERFLOW OCCURRED IN MPDIV ***\n"))) ;
768   mpstrs[(int) MP_DIVIA] = XtNewString(LGET(GETMESSAGE(3, 294, "*** ATTEMPTED DIVISION BY ZERO IN CALL TO MPDIVI ***\n"))) ;
769   mpstrs[(int) MP_DIVIB] = XtNewString(LGET(GETMESSAGE(3, 295, "*** INTEGER OVERFLOW IN MPDIVI, B TOO LARGE ***\n"))) ;
770   mpstrs[(int) MP_EXPA]  = XtNewString(LGET(GETMESSAGE(3, 296, "*** OVERFLOW IN SUBROUTINE MPEXP ***\n"))) ;
771   mpstrs[(int) MP_EXPB]  = XtNewString(LGET(GETMESSAGE(3, 297, "*** ERROR OCCURRED IN MPEXP, RESULT INCORRECT ***\n"))) ;
772   mpstrs[(int) MP_EXP1]  = XtNewString(LGET(GETMESSAGE(3, 298, "*** ABS(X) NOT LESS THAN 1 IN CALL TO MPEXP1 ***\n"))) ;
773   mpstrs[(int) MP_LNA]   = XtNewString(LGET(GETMESSAGE(3, 299, "*** X NONPOSITIVE IN CALL TO MPLN ***\n"))) ;
774   mpstrs[(int) MP_LNB]   = XtNewString(LGET(GETMESSAGE(3, 300, "*** ERROR IN MPLN, ITERATION NOT CONVERGING ***\n"))) ;
775   mpstrs[(int) MP_LNSA]  = XtNewString(LGET(GETMESSAGE(3, 301, "*** ABS(X) .GE. 1/B IN CALL TO MPLNS ***\n"))) ;
776   mpstrs[(int) MP_LNSB]  = XtNewString(LGET(GETMESSAGE(3, 302, "*** ERROR OCCURRED IN MPLNS.\n"))) ;
777   mpstrs[(int) MP_LNSC]  = XtNewString(LGET(GETMESSAGE(3, 303, "NEWTON ITERATION NOT CONVERGING PROPERLY ***\n"))) ;
778   mpstrs[(int) MP_MULA]  = XtNewString(LGET(GETMESSAGE(3, 304, "*** INTEGER OVERFLOW IN MPMUL, B TOO LARGE ***\n"))) ;
779   mpstrs[(int) MP_MULB]  = XtNewString(LGET(GETMESSAGE(3, 305, "*** ILLEGAL BASE B DIGIT IN CALL TO MPMUL.\n"))) ;
780   mpstrs[(int) MP_MULC]  = XtNewString(LGET(GETMESSAGE(3, 306, "POSSIBLE OVERWRITING PROBLEM ***\n"))) ;
781   mpstrs[(int) MP_MUL2A] = XtNewString(LGET(GETMESSAGE(3, 307, "*** OVERFLOW OCCURRED IN MPMUL2 ***\n"))) ;
782   mpstrs[(int) MP_MUL2B] = XtNewString(LGET(GETMESSAGE(3, 308, "*** INTEGER OVERFLOW IN MPMUL2, B TOO LARGE ***\n"))) ;
783   mpstrs[(int) MP_MULQ]  = XtNewString(LGET(GETMESSAGE(3, 309, "*** ATTEMPTED DIVISION BY ZERO IN MPMULQ ***\n"))) ;
784   mpstrs[(int) MP_NZRA]  = XtNewString(LGET(GETMESSAGE(3, 310, "*** SIGN NOT 0, +1 OR -1 IN CALL TO MPNZR.\n"))) ;
785   mpstrs[(int) MP_NZRB]  = XtNewString(LGET(GETMESSAGE(3, 311, "POSSIBLE OVERWRITING PROBLEM ***\n"))) ;
786   mpstrs[(int) MP_NZRC]  = XtNewString(LGET(GETMESSAGE(3, 312, "*** OVERFLOW OCCURRED IN MPNZR ***\n"))) ;
787   mpstrs[(int) MP_OVFL]  = XtNewString(LGET(GETMESSAGE(3, 313, "*** CALL TO MPOVFL, MP OVERFLOW OCCURRED ***\n"))) ;
788   mpstrs[(int) MP_PI]    = XtNewString(LGET(GETMESSAGE(3, 314, "*** ERROR OCCURRED IN MPPI, RESULT INCORRECT ***\n"))) ;
789   mpstrs[(int) MP_PWRA]  = XtNewString(LGET(GETMESSAGE(3, 315, "*** ATTEMPT TO RAISE ZERO TO NEGATIVE POWER IN\n"))) ;
790   mpstrs[(int) MP_PWRB]  = XtNewString(LGET(GETMESSAGE(3, 316, "CALL TO SUBROUTINE MPPWR ***\n"))) ;
791   mpstrs[(int) MP_PWR2A] = XtNewString(LGET(GETMESSAGE(3, 317, "*** X NEGATIVE IN CALL TO MPPWR2 ***\n"))) ;
792   mpstrs[(int) MP_PWR2B] = XtNewString(LGET(GETMESSAGE(3, 318, "*** X ZERO AND Y NONPOSITIVE IN CALL TO MPPWR2 ***\n"))) ;
793   mpstrs[(int) MP_RECA]  = XtNewString(LGET(GETMESSAGE(3, 319, "*** ATTEMPTED DIVISION BY ZERO IN CALL TO MPREC ***\n"))) ;
794   mpstrs[(int) MP_RECB]  = XtNewString(LGET(GETMESSAGE(3, 320, "*** ERROR OCCURRED IN MPREC, NEWTON ITERATION\n"))) ;
795   mpstrs[(int) MP_RECC]  = XtNewString(LGET(GETMESSAGE(3, 321, "NOT CONVERGING PROPERLY ***\n"))) ;
796   mpstrs[(int) MP_RECD]  = XtNewString(LGET(GETMESSAGE(3, 322, "*** OVERFLOW OCCURRED IN MPREC ***\n"))) ;
797   mpstrs[(int) MP_ROOTA] = XtNewString(LGET(GETMESSAGE(3, 323, "*** N = 0 IN CALL TO MPROOT ***\n"))) ;
798   mpstrs[(int) MP_ROOTB] = XtNewString(LGET(GETMESSAGE(3, 324, "*** ABS(N) TOO LARGE IN CALL TO MPROOT ***\n"))) ;
799   mpstrs[(int) MP_ROOTC] = XtNewString(LGET(GETMESSAGE(3, 325, "*** X = 0 AND N NEGATIVE IN CALL TO MPROOT ***\n"))) ;
800   mpstrs[(int) MP_ROOTD] = XtNewString(LGET(GETMESSAGE(3, 326, "*** X NEGATIVE AND N EVEN IN CALL TO MPROOT ***\n"))) ;
801   mpstrs[(int) MP_ROOTE] = XtNewString(LGET(GETMESSAGE(3, 327, "*** ERROR OCCURRED IN MPROOT, NEWTON ITERATION\n"))) ;
802   mpstrs[(int) MP_ROOTF] = XtNewString(LGET(GETMESSAGE(3, 328, "NOT CONVERGING PROPERLY ***\n"))) ;
803   mpstrs[(int) MP_SETB]  = XtNewString(LGET(GETMESSAGE(3, 329, "*** IDECPL .LE. 0 IN CALL TO MPSET ***\n"))) ;
804   mpstrs[(int) MP_SETC]  = XtNewString(LGET(GETMESSAGE(3, 330, "ITMAX2 TOO SMALL IN CALL TO MPSET ***\n"))) ;
805   mpstrs[(int) MP_SETD]  = XtNewString(LGET(GETMESSAGE(3, 331, "*** INCREASE ITMAX2 AND DIMENSIONS OF MP ARRAYS \n"))) ;
806   mpstrs[(int) MP_SETE]  = XtNewString(MGET(GETMESSAGE(3, 332, "TO AT LEAST %d ***\n"))) ;
807   mpstrs[(int) MP_SIN]   = XtNewString(LGET(GETMESSAGE(3, 333, "*** ERROR OCCURRED IN MPSIN, RESULT INCORRECT ***\n"))) ;
808   mpstrs[(int) MP_SIN1]  = XtNewString(LGET(GETMESSAGE(3, 334, "*** ABS(X) .GT. 1 IN CALL TO MPSIN1 ***\n"))) ;
809   mpstrs[(int) MP_SQRT]  = XtNewString(LGET(GETMESSAGE(3, 335, "*** X NEGATIVE IN CALL TO SUBROUTINE MPSQRT ***\n"))) ;
810   mpstrs[(int) MP_TAN]   = XtNewString(LGET(GETMESSAGE(3, 336, "*** TAN(X) TOO LARGE IN CALL TO MPTAN ***\n"))) ;
811
812 /* Command line options. */
813
814   opts[(int) O_ACCVAL]   = XtNewString(LGET(GETMESSAGE(3, 337, "Calculator: -a needs accuracy value of 0-9."))) ;
815   opts[(int) O_ACCRANGE] = XtNewString(MGET(GETMESSAGE(3, 338, "Calculator: accuracy should be in the range 0-9\nWill set accuracy to the default: 2.\n")));
816   opts[(int) O_BASE]     = XtNewString(MGET(GETMESSAGE(3, 339, "Calculator: base should be binary, octal, decimal or hexadecimal.\nWill set base to the default: decimal.\n"))) ;
817   opts[(int) O_DISPLAY]  = XtNewString(MGET(GETMESSAGE(3, 340, "Calculator: invalid display mode [%s]\n"))) ;
818   opts[(int) O_MODE]     = XtNewString(MGET(GETMESSAGE(3, 341, "Calculator: invalid mode [%s]\nWill set mode to its default: scientific\n"))) ;
819   opts[(int) O_TRIG]     = XtNewString(MGET(GETMESSAGE(3, 342, "Calculator: invalid trig. mode [%s]\n"))) ;
820   opts[(int) O_SESSION]     = XtNewString(MGET(GETMESSAGE(3, 343, "Calculator: invalid session file.\n"))) ;
821
822   pstrs[(int) P_CHAR]   = XtNewString(LGET(GETMESSAGE(3, 351, "Character:"))) ;
823   pstrs[(int) P_ASCIIT] = XtNewString(LGET(GETMESSAGE(3, 352, "Get ASCII"))) ;
824
825 /* Trig. type values. */
826   ttype_str[(int) DEG]      = XtNewString(LGET(GETMESSAGE(3, 353, "Deg"))) ;
827   ttype_str[(int) GRAD]     = XtNewString(LGET(GETMESSAGE(3, 354, "Grad"))) ;
828   ttype_str[(int) RAD]      = XtNewString(LGET(GETMESSAGE(3, 355, "Rad"))) ;
829
830 /* Usage message. */
831   ustrs[(int) USAGE1] = XtNewString(MGET(GETMESSAGE(3, 356, "Calculator (dtcalc) version 1.%1d\n\n"))) ;
832   ustrs[(int) USAGE2] = XtNewString(MGET(GETMESSAGE(3, 357, "Usage: dtcalc [-a accuracy] [-m mode] [-b base] [-no_menu_bar] [-?]\n"))) ;
833   ustrs[(int) USAGE3] = XtNewString(LGET(GETMESSAGE(3, 358, "\t [-notation display_notation] [-trig trignometric_type] [-session session_file]\n"))) ;
834
835 /* Various strings. */
836   vstrs[(int) V_CANCEL]   = XtNewString(LGET(GETMESSAGE(3, 361, "Cancel"))) ;
837   vstrs[(int) V_CONFIRM]  = XtNewString(LGET(GETMESSAGE(3, 362, "Confirm"))) ;
838   vstrs[(int) V_CONTINUE] = XtNewString(LGET(GETMESSAGE(3, 363, "Continue"))) ;
839   vstrs[(int) V_CONWNAME] = XtNewString(LGET(GETMESSAGE(3, 142, "Enter Constant"))) ;
840   vstrs[(int) V_ERROR]    = XtNewString(LGET(GETMESSAGE(3, 364, "Error"))) ;
841   vstrs[(int) V_FUNWNAME] = XtNewString(LGET(GETMESSAGE(3, 143, "Enter Function"))) ;
842   vstrs[(int) V_CLR]      = XtNewString(LGET(GETMESSAGE(3, 370, "CLR"))) ;
843   vstrs[(int) V_HYP]      = XtNewString(LGET(GETMESSAGE(3, 371, "HYP"))) ;
844   vstrs[(int) V_INV]      = XtNewString(LGET(GETMESSAGE(3, 372, "INV"))) ;
845   vstrs[(int) V_INVCON]   = XtNewString(LGET(GETMESSAGE(3, 373, "Invalid constant value"))) ;
846   vstrs[(int) V_LCON]     = XtNewString(LGET(GETMESSAGE(3, 374, "Invalid constant number."))) ;
847   vstrs[(int) V_LFUN]     = XtNewString(LGET(GETMESSAGE(3, 375, "Invalid function number."))) ;
848   vstrs[(int) V_NOCHANGE] = XtNewString(LGET(GETMESSAGE(3, 377, "Constant not changed."))) ;
849   vstrs[(int) V_NUMSTACK] = XtNewString(LGET(GETMESSAGE(3, 378, "Numeric stack error"))) ;
850   vstrs[(int) V_OPSTACK]  = XtNewString(LGET(GETMESSAGE(3, 379, "Operand stack error"))) ;
851   vstrs[(int) V_OWRITE]   = XtNewString(LGET(GETMESSAGE(3, 380, "Okay to overwrite?"))) ;
852   vstrs[(int) V_RANGE]    = XtNewString(LGET(GETMESSAGE(3, 381, "Must be in the range 0 - 9"))) ;
853   vstrs[(int) V_TRUE]     = LGET("true") ;
854   vstrs[(int) V_UCON]     = XtNewString(LGET(GETMESSAGE(3, 383, "Constant"))) ;
855   vstrs[(int) V_UFUN]     = XtNewString(LGET(GETMESSAGE(3, 384, "Function"))) ;
856   vstrs[(int) V_NORSAVE]  = XtNewString(LGET(GETMESSAGE(3, 385, "Unable to save defaults.\n"))) ;
857
858 }