source: branches/branch-1-0/src/helpers/_test_dialog.c

Last change on this file was 396, checked in by rlw, 14 years ago

hq qpushove system-specific include paths from test files

  • Property svn:eol-style set to CRLF
  • Property svn:keywords set to Author Date Id Revision
File size: 25.9 KB
Line 
1#define OS2EMX_PLAIN_CHAR
2 // this is needed for "os2emx.h"; if this is defined,
3 // emx will define PSZ as _signed_ char, otherwise
4 // as unsigned char
5
6#define INCL_DOSNLS
7#define INCL_DOSERRORS
8
9#define INCL_WINWINDOWMGR
10#define INCL_WINFRAMEMGR
11#define INCL_WINDIALOGS
12#define INCL_WININPUT
13#define INCL_WINSTATICS
14#define INCL_WINBUTTONS
15#define INCL_WINLISTBOXES
16#define INCL_WINENTRYFIELDS
17#define INCL_WINMLE
18#define INCL_WINSYS
19#define INCL_WINCOUNTRY
20
21#define INCL_GPIPRIMITIVES
22#define INCL_GPIBITMAPS
23#define INCL_GPILCIDS
24#include <os2.h>
25
26#include <stdlib.h>
27#include <string.h>
28#include <stdio.h>
29
30#include "setup.h" // code generation and debugging options
31
32#include "dlgids.h"
33
34#include "helpers\comctl.h"
35#include "helpers\dialog.h"
36#include "helpers\gpih.h"
37#include "helpers\linklist.h"
38#include "helpers\standards.h"
39#include "helpers\stringh.h"
40#include "helpers\textview.h"
41#include "helpers\textv_html.h"
42#include "helpers\winh.h"
43#include "helpers\xstring.h"
44#include "helpers\tree.h"
45#include "helpers\tmsgfile.h"
46
47#define TEXT_WIDTH 120
48#define EF_WIDTH 200
49#define EF_HEIGHT -1
50
51#define ID_TEXTVIEW 1000
52
53#define TEXT_AND_ENTRYFIELD(varname, str) \
54 varname ## Text = CONTROLDEF_TEXT(str, -1, TEXT_WIDTH, -1), \
55 varname ## EF = CONTROLDEF_ENTRYFIELD_RO(NULL, -1, EF_WIDTH, EF_HEIGHT)
56
57// #define TRY_FILEOPS 1
58
59CONTROLDEF
60 G_OKButton = CONTROLDEF_DEFPUSHBUTTON(
61 "~OK",
62 DID_OK,
63 STD_BUTTON_WIDTH,
64 STD_BUTTON_HEIGHT),
65 G_CancelButton = CONTROLDEF_PUSHBUTTON(
66 "~Cancel",
67 DID_CANCEL,
68 STD_BUTTON_WIDTH,
69 STD_BUTTON_HEIGHT),
70 G_UndoButton = CONTROLDEF_PUSHBUTTON(
71 "Undo",
72 DID_UNDO,
73 STD_BUTTON_WIDTH,
74 STD_BUTTON_HEIGHT),
75 G_DefaultButton = CONTROLDEF_PUSHBUTTON(
76 "~Default",
77 DID_DEFAULT,
78 STD_BUTTON_WIDTH,
79 STD_BUTTON_HEIGHT),
80 G_HelpButton = CONTROLDEF_HELPPUSHBUTTON(
81 "~Help",
82 DID_HELP,
83 STD_BUTTON_WIDTH,
84 STD_BUTTON_HEIGHT),
85 G_Spacing = CONTROLDEF_TEXT(
86 NULL,
87 -1,
88 8,
89 1);
90
91#ifndef TRY_FILEOPS
92
93CONTROLDEF
94 Expl1 = CONTROLDEF_TEXT("green is column box", -1, -1, -1),
95 Expl2 = CONTROLDEF_TEXT("red is column content", -1, -1, -1),
96 Expl3 = CONTROLDEF_TEXT("blue is table box", -1, -1, -1),
97 DlgUnits = CONTROLDEF_TEXT(NULL, -1, -1, -1),
98 Checkbox = CONTROLDEF_AUTOCHECKBOX("Test Checkbox", -1, -1, -1),
99 Checkbox1 = CONTROLDEF_AUTOCHECKBOX("CB1", -1, -1, -1),
100 Checkbox2 = CONTROLDEF_AUTOCHECKBOX("Test Checkbox 2 longer", -1, -1, -1),
101 Checkbox3 = CONTROLDEF_AUTOCHECKBOX("asd”flijwet ", -1, -1, -1),
102 Checkbox4 = CONTROLDEF_AUTOCHECKBOX("blah blah", -1, -1, -1),
103 Checkbox5 = CONTROLDEF_AUTOCHECKBOX("whatever", -1, -1, -1),
104 Checkbox6 = CONTROLDEF_AUTOCHECKBOX("another test checkbox", -1, -1, -1),
105 Checkbox7 = CONTROLDEF_AUTOCHECKBOX("more whatever", -1, -1, -1),
106 Checkbox8 = CONTROLDEF_AUTOCHECKBOX("yet another test checkbox", -1, -1, -1),
107 MainGroup = CONTROLDEF_GROUP(
108 "Group",
109 -1,
110 -1,
111 -1),
112 OKButton = CONTROLDEF_DEFPUSHBUTTON(
113 "Auto-size ~OK button",
114 DID_OK,
115 -1,
116 -1),
117 FixedOKButton = CONTROLDEF_DEFPUSHBUTTON(
118 "~OK",
119 DID_OK,
120 STD_BUTTON_WIDTH,
121 STD_BUTTON_HEIGHT),
122 CancelButton = CONTROLDEF_PUSHBUTTON(
123 "~Cancel",
124 DID_CANCEL,
125 -1,
126 -1),
127 Text1 = CONTROLDEF_TEXT_WORDBREAK(
128 "This table's width is determined by the combined width "
129 "of the OK and Cancel buttons.",
130 -1,
131 -100),
132 Text2 = CONTROLDEF_TEXT_WORDBREAK(
133 "widebutton is as wide as those two buttons.",
134 -1,
135 -100),
136 WideButton = CONTROLDEF_PUSHBUTTON(
137 "widebutton",
138 DID_CANCEL,
139 -100,
140 50),
141 Text3 = CONTROLDEF_TEXT_WORDBREAK(
142 "The following two are 60% and 40% of the table width.",
143 -1,
144 -100),
145 HalfWideButton1 = CONTROLDEF_PUSHBUTTON(
146 "half",
147 DID_CANCEL,
148 -60,
149 50),
150 HalfWideButton2 = CONTROLDEF_PUSHBUTTON(
151 "half",
152 DID_CANCEL,
153 -40,
154 50),
155 Text4 = CONTROLDEF_TEXT_WORDBREAK(
156 "highbutton is 50% of the row width.",
157 -1,
158 -100),
159 HighButton = CONTROLDEF_PUSHBUTTON(
160 "highbutton",
161 DID_CANCEL,
162 100,
163 -50),
164 Text400 = CONTROLDEF_TEXT_WORDBREAK(
165 "This text is 400 pixels wide. The entry field below should be too.",
166 -1,
167 400),
168 TextAuto = CONTROLDEF_TEXT(
169 "Autosize text.",
170 -1,
171 -1,
172 -1),
173 RemainderEF = CONTROLDEF_ENTRYFIELD(
174 "Entry field that fills remaining space.",
175 -1,
176 SZL_REMAINDER,
177 SZL_AUTOSIZE),
178 Button100 = CONTROLDEF_PUSHBUTTON(
179 "100 pixels?",
180 -1,
181 100,
182 SZL_AUTOSIZE),
183 TEXT_AND_ENTRYFIELD(SummaryName,
184 "~Name:"),
185 EF200 = CONTROLDEF_ENTRYFIELD(
186 "200 pixels?",
187 -1,
188 200,
189 30),
190 MLE = CONTROLDEF_MLE(
191 "200 pixels?",
192 -1,
193 200,
194 30),
195 TestGroup1 = CONTROLDEF_GROUP(
196 "group fixed at 400 + (2 * COMMON_SPACING)",
197 -1,
198 400 + (2 * COMMON_SPACING),
199 -1),
200 TestGroup2 = CONTROLDEF_GROUP(
201 "auto size group",
202 -1,
203 -1,
204 -1),
205 TestGroup3 = CONTROLDEF_GROUP(
206 "Auto-size group with columns aligned",
207 -1,
208 -1,
209 -1),
210 TestGroup4 = CONTROLDEF_GROUP(
211 "Group that inherits size from parent table",
212 -1,
213 -1,
214 -1),
215 StaticFullWidth = CONTROLDEF_TEXT(
216 "This static has a width of 100%.",
217 -1,
218 -100,
219 SZL_AUTOSIZE),
220 StaticMLFullWidth = CONTROLDEF_TEXT_WORDBREAK(
221 "This multi-line static has a width of 100% and breaks properly "
222 "over several lines still. Its height is determined automatically.",
223 -1,
224 -100),
225 StaticHalfWidth = CONTROLDEF_TEXT(
226 "This static has a width of 50%.",
227 -1,
228 -50,
229 SZL_AUTOSIZE),
230 DropDown = CONTROLDEF_DROPDOWN(
231 -1,
232 -100,
233 200
234 ),
235 TextView =
236#if 1
237 CONTROLDEF_XTEXTVIEW_HTML(NULL, ID_TEXTVIEW, -100, NULL)
238#else
239 {
240 WC_XTEXTVIEW,
241 NULL,
242 WS_VISIBLE | XS_FULLSCROLL | XS_WORDWRAP | XS_HTML,
243 ID_TEXTVIEW,
244 CTL_COMMON_FONT,
245 0,
246 {-100, 100},
247 COMMON_SPACING,
248 NULL
249 }
250#endif
251 ;
252
253#define ICON_WIDTH 40
254#define BUTTON_WIDTH 45
255#define GROUPS_WIDTH 175
256#undef EF_HEIGHT
257#define EF_HEIGHT 25
258#define HOTKEY_EF_WIDTH 50
259
260STATIC const CONTROLDEF
261 TitleGroup = CONTROLDEF_GROUP("T~itle",
262 ID_XSDI_ICON_TITLE_TEXT,
263 SZL_AUTOSIZE,
264 SZL_AUTOSIZE),
265 TitleEF = CONTROLDEF_MLE(
266 NULL,
267 ID_XSDI_ICON_TITLE_EF,
268 -100, // GROUPS_WIDTH - 2 * COMMON_SPACING,
269 MAKE_SQUARE_CY(EF_HEIGHT)),
270 IconGroup = CONTROLDEF_GROUP(
271 "Icon",
272 ID_XSDI_ICON_GROUP,
273 GROUPS_WIDTH,
274 -1),
275 IconStatic =
276 {
277 WC_STATIC,
278 NULL,
279 WS_VISIBLE | SS_TEXT | DT_LEFT | DT_VCENTER | DT_MNEMONIC,
280 ID_XSDI_ICON_STATIC,
281 CTL_COMMON_FONT,
282 {ICON_WIDTH, MAKE_SQUARE_CY(ICON_WIDTH)},
283 COMMON_SPACING
284 },
285 IconExplanationText = CONTROLDEF_TEXT_WORDBREAK(
286 "Drag any icon to the rectangle on the left, or find an "
287 "icon file using the \"Browse\" button.",
288 ID_XSDI_ICON_EXPLANATION_TXT,
289 -100), // use table width
290 IconEditButton = CONTROLDEF_PUSHBUTTON(
291 "~Edit icon",
292 ID_XSDI_ICON_EDIT_BUTTON,
293 -1,
294 STD_BUTTON_HEIGHT),
295 IconBrowseButton = CONTROLDEF_PUSHBUTTON(
296 "Bro~wse...",
297 DID_BROWSE,
298 -1,
299 STD_BUTTON_HEIGHT),
300 IconResetButton = CONTROLDEF_PUSHBUTTON(
301 "Reset icon",
302 ID_XSDI_ICON_RESET_BUTTON,
303 -1,
304 STD_BUTTON_HEIGHT),
305 ExtrasGroup = CONTROLDEF_GROUP(
306 "Extras",
307 ID_XSDI_ICON_EXTRAS_GROUP,
308 GROUPS_WIDTH,
309 -1),
310 HotkeyText = CONTROLDEF_TEXT(
311 "Object hot~key:",
312 ID_XSDI_ICON_HOTKEY_TEXT,
313 -1,
314 -1),
315 HotkeyEF = CONTROLDEF_ENTRYFIELD(
316 NULL,
317 ID_XSDI_ICON_HOTKEY_EF,
318 HOTKEY_EF_WIDTH,
319 -1),
320 HotkeyClearButton = CONTROLDEF_PUSHBUTTON(
321 "~Clear",
322 ID_XSDI_ICON_HOTKEY_CLEAR,
323 -1,
324 STD_BUTTON_HEIGHT),
325 HotkeySetButton = CONTROLDEF_PUSHBUTTON(
326 "~Set",
327 ID_XSDI_ICON_HOTKEY_SET,
328 -1,
329 2 * STD_BUTTON_HEIGHT),
330 LockPositionCB = CONTROLDEF_AUTOCHECKBOX(
331 "~Lock in place",
332 ID_XSDI_ICON_LOCKPOSITION_CB,
333 SZL_AUTOSIZE,
334 SZL_AUTOSIZE),
335 TemplateCB = CONTROLDEF_AUTOCHECKBOX(
336 "~Template",
337 ID_XSDI_ICON_TEMPLATE_CB,
338 SZL_AUTOSIZE,
339 SZL_AUTOSIZE),
340 DetailsButton = CONTROLDEF_PUSHBUTTON(
341 "Det~ails...",
342 DID_DETAILS,
343 -1,
344 STD_BUTTON_HEIGHT);
345
346/*
347DLGHITEM dlgTest[] =
348 {
349 START_TABLE, // root table, required
350 START_ROW(ROW_VALIGN_CENTER),
351 START_GROUP_TABLE_EXT(&TitleGroup, TABLE_INHERIT_SIZE),
352 START_ROW(0),
353 CONTROL_DEF(&TitleEF),
354 END_TABLE,
355 START_ROW(ROW_VALIGN_CENTER),
356 START_GROUP_TABLE_EXT(&ExtrasGroup, TABLE_INHERIT_SIZE),
357 START_ROW(0),
358 START_ROW(ROW_VALIGN_CENTER),
359 CONTROL_DEF(&HotkeyText),
360 CONTROL_DEF(&HotkeyEF),
361 CONTROL_DEF(&HotkeySetButton),
362 CONTROL_DEF(&HotkeyClearButton),
363 START_ROW(ROW_VALIGN_CENTER),
364 CONTROL_DEF(&TemplateCB),
365 CONTROL_DEF(&LockPositionCB),
366 END_TABLE,
367 START_ROW(ROW_VALIGN_CENTER),
368 START_GROUP_TABLE_EXT(&IconGroup, TABLE_INHERIT_SIZE),
369 START_ROW(0),
370 CONTROL_DEF(&IconStatic),
371 START_TABLE,
372 START_ROW(0),
373 CONTROL_DEF(&IconExplanationText),
374 START_ROW(0),
375 CONTROL_DEF(&IconEditButton),
376 CONTROL_DEF(&IconBrowseButton),
377 CONTROL_DEF(&IconResetButton),
378 END_TABLE,
379 END_TABLE,
380 START_ROW(0),
381 CONTROL_DEF(&DetailsButton),
382 START_ROW(0),
383 CONTROL_DEF(&G_UndoButton), // common.c
384 CONTROL_DEF(&G_DefaultButton), // common.c
385 CONTROL_DEF(&G_HelpButton), // common.c
386 END_TABLE
387 };
388*/
389
390DLGHITEM dlgTest[] =
391 {
392 START_TABLE,
393 START_ROW(0),
394#if 1
395 START_GROUP_TABLE_ALIGN(&TestGroup3),
396#else
397 START_TABLE_ALIGN,
398#endif
399 START_ROW(0),
400 CONTROL_DEF(&Checkbox1),
401 CONTROL_DEF(&Checkbox2),
402 START_ROW(0),
403 CONTROL_DEF(&Checkbox3),
404 CONTROL_DEF(&Checkbox4),
405 START_ROW(0),
406 CONTROL_DEF(&Checkbox5),
407 CONTROL_DEF(&Checkbox6),
408 START_ROW(0),
409 CONTROL_DEF(&Checkbox7),
410 CONTROL_DEF(&Checkbox8),
411 END_TABLE,
412 START_ROW(0),
413 CONTROL_DEF(&DropDown),
414#if 1
415 START_ROW(0),
416 START_GROUP_TABLE(&TestGroup2),
417 START_ROW(0),
418 CONTROL_DEF(&Expl1),
419 CONTROL_DEF(&Expl2),
420 CONTROL_DEF(&Expl3),
421 END_TABLE,
422 START_ROW(0),
423 CONTROL_DEF(&DlgUnits),
424#endif
425 START_ROW(0),
426 START_GROUP_TABLE_EXT(&TestGroup4, TABLE_INHERIT_SIZE),
427 START_ROW(0),
428 CONTROL_DEF(&StaticFullWidth),
429 START_ROW(0),
430 CONTROL_DEF(&StaticMLFullWidth),
431 START_ROW(ROW_VALIGN_CENTER),
432 CONTROL_DEF(&RemainderEF),
433 START_ROW(ROW_VALIGN_CENTER),
434 CONTROL_DEF(&TextAuto),
435 CONTROL_DEF(&RemainderEF),
436 CONTROL_DEF(&RemainderEF),
437 END_TABLE,
438 START_ROW(0),
439 CONTROL_DEF(&OKButton),
440 END_TABLE
441 };
442
443#else // TRY_FILEOPS
444
445#define CX_COL1 60
446#define CX_COLDATE 40
447#define CX_COLTIME 40
448#define CX_COLSIZE 50
449
450#define CX_INTRO (CX_COL1 + CX_COLDATE + CX_COLTIME + CX_COLSIZE + 6 * COMMON_SPACING)
451
452STATIC CONTROLDEF
453 ClashIntro = CONTROLDEF_TEXT_WORDBREAK("An object with the title blah already exists in the folder blup.",
454 ID_XFDI_CLASH_TXT1, -100),
455 ClashOldObject = CONTROLDEF_TEXT("old object", ID_XFDI_CLASH_OLDOBJECT, CX_COL1, SZL_AUTOSIZE),
456 ClashDateOld = CONTROLDEF_TEXT("99.99.9999 ", ID_XFDI_CLASH_DATEOLD, SZL_AUTOSIZE, SZL_AUTOSIZE),
457 ClashTimeOld = CONTROLDEF_TEXT("99:99:99 ", ID_XFDI_CLASH_TIMEOLD, SZL_AUTOSIZE, SZL_AUTOSIZE),
458 ClashSizeOld = CONTROLDEF_TEXT_RIGHT("old size", ID_XFDI_CLASH_SIZEOLD, CX_COLSIZE, SZL_AUTOSIZE),
459 ClashNewObject = CONTROLDEF_TEXT("new object", ID_XFDI_CLASH_NEWOBJECT, CX_COL1, SZL_AUTOSIZE),
460 ClashDateNew = CONTROLDEF_TEXT("99.99.9999 ", ID_XFDI_CLASH_DATENEW, SZL_AUTOSIZE, SZL_AUTOSIZE),
461 ClashTimeNew = CONTROLDEF_TEXT("99:99:99 ", ID_XFDI_CLASH_TIMENEW, SZL_AUTOSIZE, SZL_AUTOSIZE),
462 ClashSizeNew = CONTROLDEF_TEXT_RIGHT("new size", ID_XFDI_CLASH_SIZENEW, CX_COLSIZE, SZL_AUTOSIZE),
463
464 ClashReplaceRadio = CONTROLDEF_FIRST_AUTORADIO("replace", ID_XFDI_CLASH_REPLACE, -60, SZL_AUTOSIZE),
465 ClashRenameNewRadio = CONTROLDEF_NEXT_AUTORADIO("rename new", ID_XFDI_CLASH_RENAMENEW, -60, SZL_AUTOSIZE),
466 ClashRenameNewEF = CONTROLDEF_ENTRYFIELD("M", ID_XFDI_CLASH_RENAMENEWTXT, -40, SZL_AUTOSIZE),
467 ClashRenameOldRadio = CONTROLDEF_NEXT_AUTORADIO("rename old", ID_XFDI_CLASH_RENAMEOLD, -60, SZL_AUTOSIZE),
468 ClashRenameOldEF = CONTROLDEF_ENTRYFIELD("M", ID_XFDI_CLASH_RENAMEOLDTXT, -40, SZL_AUTOSIZE);
469
470STATIC const DLGHITEM dlgTest[] =
471 {
472 START_TABLE,
473 START_ROW(0),
474 CONTROL_DEF(&ClashIntro),
475 START_ROW(0),
476 CONTROL_DEF(&ClashOldObject),
477 CONTROL_DEF(&ClashDateOld),
478 CONTROL_DEF(&ClashTimeOld),
479 CONTROL_DEF(&ClashSizeOld),
480 START_ROW(0),
481 CONTROL_DEF(&ClashNewObject),
482 CONTROL_DEF(&ClashDateNew),
483 CONTROL_DEF(&ClashTimeNew),
484 CONTROL_DEF(&ClashSizeNew),
485 START_ROW(0),
486 CONTROL_DEF(&ClashReplaceRadio),
487 START_ROW(0),
488 CONTROL_DEF(&ClashRenameNewRadio),
489 CONTROL_DEF(&ClashRenameNewEF),
490 START_ROW(0),
491 CONTROL_DEF(&ClashRenameOldRadio),
492 CONTROL_DEF(&ClashRenameOldEF),
493 START_ROW(0),
494 CONTROL_DEF(&G_OKButton),
495 CONTROL_DEF(&G_CancelButton),
496 CONTROL_DEF(&G_HelpButton),
497 END_TABLE
498 };
499
500#endif // TRY_FILEOPS
501
502MRESULT EXPENTRY fnwpTest(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
503{
504 MRESULT mrc = 0;
505
506 switch (msg)
507 {
508 case WM_CONTROL:
509 if ( (SHORT1FROMMP(mp1) == ID_TEXTVIEW)
510 && (SHORT2FROMMP(mp1) == TXVN_LINK)
511 )
512 {
513 WinMessageBox(HWND_DESKTOP,
514 hwnd,
515 (PSZ)mp2,
516 "Anchor clicked",
517 0,
518 MB_OK | MB_MOVEABLE);
519 }
520 break;
521
522 default:
523 mrc = WinDefDlgProc(hwnd, msg, mp1, mp2);
524 }
525
526 return mrc;
527}
528
529/*
530 *@@ XWPENTITY:
531 *
532 *@@added V0.9.16 (2001-09-29) [umoeller]
533 */
534
535typedef struct _XWPENTITY
536{
537 PCSZ pcszEntity;
538 PCSZ *ppcszString;
539} XWPENTITY, *PXWPENTITY;
540
541typedef const struct _XWPENTITY *PCXWPENTITY;
542
543STATIC CHAR G_szCopyright[5] = "";
544
545STATIC PCSZ G_pcszBldlevel = "BLDLEVEL_VERSION",
546 G_pcszBldDate = __DATE__,
547 G_pcszNewLine = "\n",
548 G_pcszNBSP = "\xFF", // non-breaking space
549 G_pcszContactUser = "CONTACT_ADDRESS_USER",
550 G_pcszContactDev = "CONTACT_ADDRESS_DEVEL",
551 G_pcszCopyChar = "\xB8", // in codepage 850
552 G_pcszCopyright = G_szCopyright,
553 ENTITY_XWORKPLACE = "XWorkplace";
554
555STATIC BOOL G_fEntitiesHacked = FALSE;
556
557STATIC const XWPENTITY G_aEntities[] =
558 {
559 "&copy;", &G_pcszCopyright,
560 "&xwp;", &ENTITY_XWORKPLACE,
561 "&version;", &G_pcszBldlevel,
562 "&date;", &G_pcszBldDate,
563 "&nl;", &G_pcszNewLine,
564 "&nbsp;", &G_pcszNBSP,
565 "&contact-user;", &G_pcszContactUser,
566 "&contact-dev;", &G_pcszContactDev,
567 };
568
569STATIC PTMFMSGFILE G_pXWPMsgFile = NULL; // V0.9.16 (2001-10-08) [umoeller]
570
571/*
572 *@@ cmnInitEntities:
573 * called from initMain to initialize NLS-dependent
574 * parts of the entities.
575 *
576 *@@added V0.9.20 (2002-08-10) [umoeller]
577 */
578
579VOID cmnInitEntities(HAB hab)
580{
581 // get the current process codepage for the WPS
582 ULONG acp[8]; // fixed V0.9.19 (2002-04-14) [umoeller], this needs an array
583 ULONG cb = 0;
584 APIRET arcCP;
585 if (arcCP = DosQueryCp(sizeof(acp),
586 acp,
587 &cb))
588 acp[0] = 437;
589
590 if (acp[0] == 850)
591 strcpy(G_szCopyright, G_pcszCopyChar);
592 else
593 {
594 WinCpTranslateString(hab,
595 850,
596 (PSZ)G_pcszCopyChar,
597 acp[0],
598 sizeof(G_szCopyright),
599 G_szCopyright);
600 if (G_szCopyright[0] == '\xFF')
601 strcpy(G_szCopyright, "(C)");
602 }
603
604}
605
606/*
607 *@@ ReplaceEntities:
608 *
609 *@@added V0.9.16 (2001-09-29) [umoeller]
610 */
611
612STATIC ULONG ReplaceEntities(PXSTRING pstr)
613{
614 ULONG ul,
615 rc = 0;
616
617 for (ul = 0;
618 ul < ARRAYITEMCOUNT(G_aEntities);
619 ul++)
620 {
621 ULONG ulOfs = 0;
622 PCXWPENTITY pThis = &G_aEntities[ul];
623 while (xstrFindReplaceC(pstr,
624 &ulOfs,
625 pThis->pcszEntity,
626 *(pThis->ppcszString)))
627 rc++;
628 }
629
630 return rc;
631}
632
633APIRET cmnGetMessageExt(PCSZ *pTable, // in: replacement PSZ table or NULL
634 ULONG ulTable, // in: size of that table or 0
635 PXSTRING pstr, // in/out: string
636 PCSZ pcszMsgID) // in: msg ID to retrieve
637{
638 APIRET arc = NO_ERROR;
639 BOOL fLocked = FALSE;
640
641 if (!G_pXWPMsgFile)
642 {
643 // first call:
644 // go load the XWP message file
645 arc = tmfOpenMessageFile("I:\\eCS\\ewps\\help\\xfldr001.tmf",
646 &G_pXWPMsgFile);
647 }
648
649 if (!arc)
650 {
651 arc = tmfGetMessage(G_pXWPMsgFile,
652 pcszMsgID,
653 pstr,
654 pTable,
655 ulTable);
656
657 #ifdef DEBUG_LANGCODES
658 _Pmpf((" tmfGetMessage rc: %d", arc));
659 #endif
660
661 if (!arc)
662 ReplaceEntities(pstr);
663 else
664 {
665 CHAR sz[500];
666 sprintf(sz,
667 "Message %s not found in %s, rc = %d",
668 pcszMsgID,
669 "I:\\eCS\\ewps\\help\\xfldr001.tmf",
670 arc);
671 xstrcpy(pstr, sz, 0);
672 }
673 }
674
675 return arc;
676}
677
678APIRET cmnGetMessage(PCSZ *pTable, // in: replacement PSZ table or NULL
679 ULONG ulTable, // in: size of that table or 0
680 PXSTRING pstr, // in/out: string
681 ULONG ulMsgNumber) // in: msg number to retrieve
682{
683 CHAR szMessageName[40];
684 // create string message identifier from ulMsgNumber
685 sprintf(szMessageName, "XFL%04d", ulMsgNumber);
686
687 return cmnGetMessageExt(pTable, ulTable, pstr, szMessageName);
688}
689
690int main (int argc, char *argv[])
691{
692 HAB hab;
693 HMQ hmq;
694 APIRET arc;
695 HWND hwndDlg;
696 XSTRING strInfo;
697
698 POINTL ptl1024 = {100, 100};
699 CHAR sz[100];
700
701 DosBeep(1000, 10);
702
703 hab = WinInitialize(0);
704 hmq = WinCreateMsgQueue(hab, 0);
705
706 cmnInitEntities(hab);
707
708 txvRegisterTextView(hab);
709
710 xstrInit(&strInfo, 0);
711 cmnGetMessage(NULL, 0,
712 &strInfo,
713 140);
714/*
715#if 0
716 txvStripLinefeeds(&strInfo.psz, 4);
717#else
718 txvConvertFromHTML(&strInfo.psz,
719 NULL,
720 NULL,
721 NULL);
722#endif
723*/
724
725#ifndef TRY_FILEOPS
726 TextView.pcszText = strInfo.psz;
727
728 WinMapDlgPoints(NULLHANDLE,
729 &ptl1024,
730 1,
731 TRUE);
732
733 sprintf(sz, "Dialog units are (%d/%d)", ptl1024.x, ptl1024.y);
734 DlgUnits.pcszText = sz;
735#endif
736
737 if (!(arc = dlghCreateDlg(&hwndDlg,
738 NULLHANDLE,
739 FCF_TITLEBAR | FCF_SYSMENU | FCF_DLGBORDER | FCF_NOBYTEALIGN,
740 fnwpTest,
741 "Test dialog",
742 dlgTest,
743 ARRAYITEMCOUNT(dlgTest),
744 NULL,
745 "9.WarpSans")))
746 {
747 winhCenterWindow(hwndDlg);
748 WinProcessDlg(hwndDlg);
749 WinDestroyWindow(hwndDlg);
750 }
751
752 WinDestroyMsgQueue(hmq);
753 WinTerminate(hab);
754
755 return (0);
756}
Note: See TracBrowser for help on using the repository browser.