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 |
|
---|
59 | CONTROLDEF
|
---|
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 |
|
---|
93 | CONTROLDEF
|
---|
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("asdflijwet ", -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 |
|
---|
260 | STATIC 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 | /*
|
---|
347 | DLGHITEM 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 |
|
---|
390 | DLGHITEM 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 |
|
---|
452 | STATIC 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 |
|
---|
470 | STATIC 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 |
|
---|
502 | MRESULT 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 |
|
---|
535 | typedef struct _XWPENTITY
|
---|
536 | {
|
---|
537 | PCSZ pcszEntity;
|
---|
538 | PCSZ *ppcszString;
|
---|
539 | } XWPENTITY, *PXWPENTITY;
|
---|
540 |
|
---|
541 | typedef const struct _XWPENTITY *PCXWPENTITY;
|
---|
542 |
|
---|
543 | STATIC CHAR G_szCopyright[5] = "";
|
---|
544 |
|
---|
545 | STATIC 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 |
|
---|
555 | STATIC BOOL G_fEntitiesHacked = FALSE;
|
---|
556 |
|
---|
557 | STATIC const XWPENTITY G_aEntities[] =
|
---|
558 | {
|
---|
559 | "©", &G_pcszCopyright,
|
---|
560 | "&xwp;", &ENTITY_XWORKPLACE,
|
---|
561 | "&version;", &G_pcszBldlevel,
|
---|
562 | "&date;", &G_pcszBldDate,
|
---|
563 | "&nl;", &G_pcszNewLine,
|
---|
564 | " ", &G_pcszNBSP,
|
---|
565 | "&contact-user;", &G_pcszContactUser,
|
---|
566 | "&contact-dev;", &G_pcszContactDev,
|
---|
567 | };
|
---|
568 |
|
---|
569 | STATIC 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 |
|
---|
579 | VOID 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 |
|
---|
612 | STATIC 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 |
|
---|
633 | APIRET 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 |
|
---|
678 | APIRET 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 |
|
---|
690 | int 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 | }
|
---|