source: trunk/dll/notebook.c@ 927

Last change on this file since 927 was 927, checked in by Gregg Young, 18 years ago

Free pszWorkBuf memory for NormalizeCmdLine calls. Add comments for ticket 161 fix.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 106.2 KB
Line 
1
2/***********************************************************************
3
4 $Id: notebook.c 927 2008-01-17 02:22:03Z gyoung $
5
6 Configuration notebook
7
8 Copyright (c) 1993-98 M. Kimes
9 Copyright (c) 2004, 2008 Steven H. Levine
10
11 01 Aug 04 SHL Rework lstrip/rstrip usage
12 23 May 05 SHL Use QWL_USER
13 04 Jun 05 SHL Support Cancel button; make Esc key more consistent
14 29 May 06 SHL Comments
15 17 Jul 06 SHL Use Runtime_Error
16 15 Aug 06 SHL Rework SetMask args
17 03 Aug 07 GKY Enlarged and made setable everywhere Findbuf (speed file loading)
18 13 Aug 07 SHL Move #pragma alloc_text to end for OpenWatcom compat
19 13 Aug 07 SHL Rework FilesToGet min/max to match how DosFindFirst/Next works
20 19 Aug 07 SHL Sync with SaveDirCnrState mods
21 21 Aug 07 GKY Make Subject column in dircnr sizable and movable from the rigth to the left pane
22 26 Nov 07 GKY Allow a currently nonvalid path in the ext path field with warning
23 06 Jan 08 GKY Use NormalizeCmdLine to check program strings on entry
24 10 Jan 08 SHL Remember last settings page
25 10 Jan 08 SHL Rework page select logic
26
27***********************************************************************/
28
29#include <stdio.h>
30#include <stdlib.h>
31#include <string.h>
32
33#define INCL_DOS
34#define INCL_WIN
35#define INCL_LONGLONG // dircnrs.h
36
37#include "fm3dlg.h"
38#include "fm3str.h"
39#include "pathutil.h" // BldQuotedFileName
40#include "errutil.h" // Dos_Error...
41#include "strutil.h" // GetPString
42#include "fm3dll.h"
43
44#pragma data_seg(DATA2)
45
46static PSZ pszSrcFile = __FILE__;
47
48static HWND hwndNotebook;
49
50MRESULT EXPENTRY CfgADlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
51{
52 ULONG ulResult;
53
54 switch (msg) {
55 case WM_INITDLG:
56 WinSendDlgItemMsg(hwnd, CFGA_VIRUS, EM_SETTEXTLIMIT,
57 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
58 WinSendDlgItemMsg(hwnd, CFGA_EXTRACTPATH, EM_SETTEXTLIMIT,
59 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
60 WinEnableWindow(WinWindowFromID(hwnd, CFGA_FIND), FALSE);
61 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
62 break;
63
64 case UM_UNDO:
65 WinCheckButton(hwnd, CFGA_ARCSTUFFVISIBLE, fArcStuffVisible);
66 WinCheckButton(hwnd, CFGA_FOLDERAFTEREXTRACT, fFolderAfterExtract);
67 WinCheckButton(hwnd, CFGA_QUICKARCFIND, fQuickArcFind);
68 WinCheckButton(hwnd, CFGA_DEFARC, (*szDefArc != 0));
69 WinSetDlgItemText(hwnd, CFGA_DEFARCNAME, szDefArc);
70 WinSetDlgItemText(hwnd, CFGA_VIRUS, virus);
71 WinSetDlgItemText(hwnd, CFGA_EXTRACTPATH, extractpath);
72 break;
73
74 case WM_CONTROL:
75 switch (SHORT1FROMMP(mp1)) {
76 case CFGA_VIRUS:
77 case CFGA_EXTRACTPATH:
78 switch (SHORT2FROMMP(mp1)) {
79 case EN_KILLFOCUS:
80 WinEnableWindow(WinWindowFromID(hwnd, CFGA_FIND), FALSE);
81 break;
82 case EN_SETFOCUS:
83 WinEnableWindow(WinWindowFromID(hwnd, CFGA_FIND), TRUE);
84 break;
85 }
86 break;
87 case CFGA_DEFARC:
88 switch (SHORT2FROMMP(mp1)) {
89 case BN_CLICKED:
90 if (WinQueryButtonCheckstate(hwnd, CFGA_DEFARC)) {
91
92 ARC_TYPE *pat = arcsighead; // Hide dups
93
94 if (!WinDlgBox(HWND_DESKTOP, hwnd,
95 SBoxDlgProc, FM3ModHandle, ASEL_FRAME,
96 (PVOID) & pat) || !pat || !pat->id || !*pat->id) {
97 DosBeep(250, 100); // Complain
98 WinCheckButton(hwnd, CFGA_DEFARC, FALSE);
99 }
100 else
101 WinSetDlgItemText(hwnd, CFGA_DEFARCNAME, pat->id);
102 }
103 break;
104 default:
105 break;
106 }
107 break;
108
109 default:
110 break;
111 }
112 return 0;
113
114 case WM_COMMAND:
115 switch (SHORT1FROMMP(mp1)) {
116 case IDM_UNDO:
117 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
118 break;
119
120 case DID_CANCEL:
121 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
122
123 case DID_OK:
124 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
125 break;
126
127 case IDM_HELP:
128 if (hwndHelp)
129 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
130 MPFROM2SHORT(HELP_CFGA, 0), MPFROMSHORT(HM_RESOURCEID));
131 break;
132
133 case CFGA_FIND:
134 {
135 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
136 USHORT id;
137 HWND hwndFocus;
138
139 strcpy(filename, "*.EXE");
140 hwndFocus = WinQueryFocus(HWND_DESKTOP);
141 if (hwndFocus) {
142 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
143 switch (id) {
144 case CFGA_VIRUS:
145 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
146 BldQuotedFileName(szfilename, filename);
147 strcat(szfilename, " %p");
148 WinSetDlgItemText(hwnd, id, szfilename);
149 }
150 break;
151 case CFGA_EXTRACTPATH:
152 strcpy(filename, extractpath);
153 if (WinDlgBox(HWND_DESKTOP, hwndNotebook,
154 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME,
155 MPFROMP(filename)) && *filename)
156 WinSetDlgItemText(hwnd, id, filename);
157 break;
158 default:
159 Runtime_Error(pszSrcFile, __LINE__, "bad case");
160 break;
161 }
162 }
163 }
164 break;
165 }
166 return 0;
167
168 case WM_CLOSE:
169 fQuickArcFind = WinQueryButtonCheckstate(hwnd, CFGA_QUICKARCFIND);
170 PrfWriteProfileData(fmprof,
171 appname,
172 "QuickArcFind", &fQuickArcFind, sizeof(BOOL));
173 fArcStuffVisible = WinQueryButtonCheckstate(hwnd, CFGA_ARCSTUFFVISIBLE);
174 PrfWriteProfileData(fmprof,
175 appname,
176 "ArcStuffVisible", &fArcStuffVisible, sizeof(BOOL));
177 fFolderAfterExtract = WinQueryButtonCheckstate(hwnd,
178 CFGA_FOLDERAFTEREXTRACT);
179 PrfWriteProfileData(fmprof,
180 appname,
181 "FolderAfterExtract",
182 &fFolderAfterExtract, sizeof(BOOL));
183 if (WinQueryButtonCheckstate(hwnd, CFGA_DEFARC)) {
184
185 CHAR temp[CCHMAXPATH];
186
187 *temp = 0;
188 WinQueryDlgItemText(hwnd, CFGA_DEFARCNAME, CCHMAXPATH, temp);
189 strcpy(szDefArc, temp);
190 }
191 else
192 *szDefArc = 0;
193 PrfWriteProfileString(fmprof, appname, "DefArc", szDefArc);
194 {
195 CHAR szCLBuf[MAXCOMLINESTRG], szPathBuf[CCHMAXPATH];
196 PSZ pszWorkBuf;
197
198 pszWorkBuf = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
199 WinQueryDlgItemText(hwnd, CFGA_VIRUS, MAXCOMLINESTRG, szCLBuf);
200 szCLBuf[MAXCOMLINESTRG - 1] = 0;
201 if (strcmp(szCLBuf, virus)){
202 NormalizeCmdLine(pszWorkBuf, szCLBuf);
203 memcpy(virus, pszWorkBuf, strlen(pszWorkBuf) + 1);
204 xfree(pszWorkBuf);
205 if (!strchr(virus, '%') && strlen(virus) > 3)
206 strcat(virus, " %p");
207 }
208 if (!*virus)
209 strcpy(virus, "OS2SCAN.EXE %p /SUB /A");
210 WinQueryDlgItemText(hwnd, CFGA_EXTRACTPATH, CCHMAXPATH, szPathBuf);
211 szPathBuf[CCHMAXPATH - 1] = 0;
212 bstrip(szPathBuf);
213 if (strcmp(extractpath, szPathBuf)) {
214 memcpy(extractpath, szPathBuf, strlen(szPathBuf) + 1);
215 if (*extractpath){
216 MakeFullName(extractpath);
217 if (IsFile(extractpath)) {
218 ulResult = saymsg(MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP,
219 GetPString(IDS_WARNINGTEXT),
220 GetPString(IDS_EXTPATHNOTVALIDTEXT),
221 extractpath);
222 if (ulResult == MBID_YES)
223 *extractpath = 0;
224 if (ulResult == MBID_CANCEL){
225 WinDlgBox(HWND_DESKTOP,
226 hwnd,
227 CfgDlgProc,
228 FM3ModHandle,
229 CFG_FRAME,
230 MPFROMLONG(IDM_ARCHIVERSETTINGS));
231 break;
232 }
233 }
234 }
235 }
236 }
237 PrfWriteProfileString(fmprof, appname, "Virus", virus);
238 PrfWriteProfileString(fmprof, appname, "ExtractPath", extractpath);
239 break;
240 }
241 if (fCancelAction) {
242 fCancelAction = FALSE;
243 WinDlgBox(HWND_DESKTOP,
244 hwnd,
245 CfgDlgProc,
246 FM3ModHandle,
247 CFG_FRAME,
248 MPFROMLONG(IDM_ARCHIVERSETTINGS));
249 }
250 return WinDefDlgProc(hwnd, msg, mp1, mp2);
251}
252
253MRESULT EXPENTRY CfgSDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
254{
255 switch (msg) {
256 case WM_INITDLG:
257 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_SETTEXTLIMIT,
258 MPFROMSHORT(8), MPVOID);
259 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_OVERRIDESETLIMITS,
260 MPFROMLONG(FILESTOGET_MAX), MPFROMLONG(FILESTOGET_MIN));
261 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
262 break;
263
264 case UM_UNDO:
265 WinCheckButton(hwnd, CFGS_NOICONSFILES, (fNoIconsFiles == FALSE));
266 WinCheckButton(hwnd, CFGS_NOICONSDIRS, (fNoIconsDirs == FALSE));
267 WinCheckButton(hwnd, CFGS_LOADSUBJECTS, fLoadSubject);
268 WinCheckButton(hwnd, CFGS_LOADLONGNAMES, fLoadLongnames);
269 WinCheckButton(hwnd, CFGS_FORCELOWER, fForceLower);
270 WinCheckButton(hwnd, CFGS_FORCEUPPER, fForceUpper);
271 WinCheckButton(hwnd, CFGS_NOREMOVABLESCAN, fNoRemovableScan);
272 WinCheckButton(hwnd, CFGS_REMOTEBUG, fRemoteBug);
273 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_SETCURRENTVALUE,
274 MPFROMLONG(FilesToGet), MPVOID);
275 return 0;
276
277 case WM_CONTROL:
278 switch (SHORT1FROMMP(mp1)) {
279 case CFGS_FORCEUPPER:
280 case CFGS_FORCELOWER:
281 {
282 BOOL temp;
283
284 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
285 if (temp) {
286 switch (SHORT1FROMMP(mp1)) {
287 case CFGS_FORCEUPPER:
288 WinCheckButton(hwnd, CFGS_FORCELOWER, FALSE);
289 break;
290 case CFGS_FORCELOWER:
291 WinCheckButton(hwnd, CFGS_FORCEUPPER, FALSE);
292 break;
293 }
294 }
295 }
296 break;
297 }
298 return 0;
299
300 case WM_COMMAND:
301 switch (SHORT1FROMMP(mp1)) {
302 case IDM_UNDO:
303 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
304 break;
305
306 case DID_CANCEL:
307 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
308
309 case DID_OK:
310 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
311 break;
312
313 case IDM_HELP:
314 if (hwndHelp)
315 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
316 MPFROM2SHORT(HELP_CFGS, 0), MPFROMSHORT(HM_RESOURCEID));
317 break;
318 }
319 return 0;
320
321 case WM_CLOSE:
322 fLoadLongnames = WinQueryButtonCheckstate(hwnd, CFGS_LOADLONGNAMES);
323 PrfWriteProfileData(fmprof, appname, "LoadLongname", &fLoadLongnames,
324 sizeof(BOOL));
325 fLoadSubject = WinQueryButtonCheckstate(hwnd, CFGS_LOADSUBJECTS);
326 PrfWriteProfileData(fmprof, appname, "LoadSubject", &fLoadSubject,
327 sizeof(BOOL));
328 fRemoteBug = WinQueryButtonCheckstate(hwnd, CFGS_REMOTEBUG);
329 PrfWriteProfileData(fmprof, appname, "RemoteBug", &fRemoteBug,
330 sizeof(BOOL));
331 fNoRemovableScan = WinQueryButtonCheckstate(hwnd, CFGS_NOREMOVABLESCAN);
332 PrfWriteProfileData(fmprof, FM3Str, "NoRemovableScan", &fNoRemovableScan,
333 sizeof(BOOL));
334 fNoIconsFiles = WinQueryButtonCheckstate(hwnd, CFGS_NOICONSFILES);
335 fNoIconsFiles = (fNoIconsFiles) ? FALSE : TRUE;
336 PrfWriteProfileData(fmprof, appname, "NoIconsFiles",
337 &fNoIconsFiles, sizeof(BOOL));
338 fNoIconsDirs = WinQueryButtonCheckstate(hwnd, CFGS_NOICONSDIRS);
339 fNoIconsDirs = (fNoIconsDirs) ? FALSE : TRUE;
340 PrfWriteProfileData(fmprof, appname, "NoIconsDirs",
341 &fNoIconsDirs, sizeof(BOOL));
342 fForceUpper = WinQueryButtonCheckstate(hwnd, CFGS_FORCEUPPER);
343 PrfWriteProfileData(fmprof, appname, "ForceUpper",
344 &fForceUpper, sizeof(BOOL));
345 fForceLower = WinQueryButtonCheckstate(hwnd, CFGS_FORCELOWER);
346 PrfWriteProfileData(fmprof, appname, "ForceLower",
347 &fForceLower, sizeof(BOOL));
348 {
349 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_QUERYVALUE,
350 MPFROMP(&FilesToGet), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
351 if (FilesToGet < FILESTOGET_MIN)
352 FilesToGet = FILESTOGET_MIN;
353 else if (FilesToGet > FILESTOGET_MAX)
354 FilesToGet = FILESTOGET_MAX;
355 PrfWriteProfileData(fmprof,
356 appname, "FilesToGet", &FilesToGet, sizeof(ULONG));
357 }
358 break;
359 }
360 return WinDefDlgProc(hwnd, msg, mp1, mp2);
361}
362
363MRESULT EXPENTRY CfgVDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
364{
365 switch (msg) {
366 case WM_INITDLG:
367 WinSendDlgItemMsg(hwnd, CFGV_VIEWER, EM_SETTEXTLIMIT,
368 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
369 WinSendDlgItemMsg(hwnd, CFGV_EDITOR, EM_SETTEXTLIMIT,
370 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
371 WinSendDlgItemMsg(hwnd, CFGV_BINVIEW, EM_SETTEXTLIMIT,
372 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
373 WinSendDlgItemMsg(hwnd, CFGV_BINED, EM_SETTEXTLIMIT,
374 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
375 WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), FALSE);
376 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
377 break;
378
379 case UM_UNDO:
380 WinSetDlgItemText(hwnd, CFGV_VIEWER, viewer);
381 WinSetDlgItemText(hwnd, CFGV_EDITOR, editor);
382 WinSetDlgItemText(hwnd, CFGV_BINVIEW, binview);
383 WinSetDlgItemText(hwnd, CFGV_BINED, bined);
384 WinCheckButton(hwnd, CFGV_USENEWVIEWER, fUseNewViewer);
385 WinCheckButton(hwnd, CFGV_GUESSTYPE, fGuessType);
386 WinCheckButton(hwnd, CFGV_VIEWCHILD, fViewChild);
387 WinCheckButton(hwnd, CFGV_CHECKMM, fCheckMM);
388 return 0;
389
390 case WM_CONTROL:
391 switch (SHORT1FROMMP(mp1)) {
392 case CFGV_VIEWER:
393 case CFGV_EDITOR:
394 case CFGV_BINVIEW:
395 case CFGV_BINED:
396 switch (SHORT2FROMMP(mp1)) {
397 case EN_KILLFOCUS:
398 WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), FALSE);
399 break;
400 case EN_SETFOCUS:
401 WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), TRUE);
402 break;
403 }
404 break;
405 }
406 return 0;
407
408 case WM_COMMAND:
409 switch (SHORT1FROMMP(mp1)) {
410 case IDM_UNDO:
411 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
412 break;
413
414 case DID_CANCEL:
415 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
416
417 case DID_OK:
418 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
419 break;
420
421 case IDM_HELP:
422 if (hwndHelp)
423 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
424 MPFROM2SHORT(HELP_CFGV, 0), MPFROMSHORT(HM_RESOURCEID));
425 break;
426
427 case CFGV_FIND:
428 {
429 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
430 USHORT id;
431 HWND hwndFocus;
432
433 strcpy(filename, "*.EXE");
434 hwndFocus = WinQueryFocus(HWND_DESKTOP);
435 if (hwndFocus) {
436 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
437 switch (id) {
438 case CFGV_BINVIEW:
439 case CFGV_BINED:
440 case CFGV_VIEWER:
441 case CFGV_EDITOR:
442 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
443 BldQuotedFileName(szfilename, filename);
444 strcat(szfilename, " %a");
445 WinSetDlgItemText(hwnd, id, szfilename);
446 }
447 break;
448 default:
449 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
450 break;
451 }
452 }
453 }
454 break;
455 }
456 return 0;
457
458 case WM_CLOSE:
459 {
460 CHAR szCLBuf[MAXCOMLINESTRG];
461 PSZ pszWorkBuf;
462
463 pszWorkBuf = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
464 WinQueryDlgItemText(hwnd, CFGV_VIEWER, MAXCOMLINESTRG, szCLBuf);
465 szCLBuf[MAXCOMLINESTRG - 1] = 0;
466 if (strcmp(szCLBuf, viewer)){
467 NormalizeCmdLine(pszWorkBuf, szCLBuf);
468 memcpy(viewer, pszWorkBuf, strlen(pszWorkBuf) + 1);
469 if (!strchr(viewer, '%') && strlen(viewer) > 3)
470 strcat(viewer, " %a");
471 }
472 WinQueryDlgItemText(hwnd, CFGV_EDITOR, MAXCOMLINESTRG, szCLBuf);
473 szCLBuf[MAXCOMLINESTRG - 1] = 0;
474 if (strcmp(szCLBuf, editor)){
475 NormalizeCmdLine(pszWorkBuf, szCLBuf);
476 memcpy(editor, pszWorkBuf, strlen(pszWorkBuf) + 1);
477 if (!strchr(editor, '%') && strlen(editor) > 3)
478 strcat(editor, " %a");
479 }
480 WinQueryDlgItemText(hwnd, CFGV_BINVIEW, MAXCOMLINESTRG, szCLBuf);
481 szCLBuf[MAXCOMLINESTRG - 1] = 0;
482 if (strcmp(szCLBuf, binview)){
483 NormalizeCmdLine(pszWorkBuf, szCLBuf);
484 memcpy(binview, pszWorkBuf, strlen(pszWorkBuf) + 1);
485 if (!strchr(binview, '%') && strlen(binview) > 3)
486 strcat(binview, " %a");
487 }
488 WinQueryDlgItemText(hwnd, CFGV_BINED, MAXCOMLINESTRG, szCLBuf);
489 szCLBuf[MAXCOMLINESTRG - 1] = 0;
490 if (strcmp(szCLBuf, bined)){
491 NormalizeCmdLine(pszWorkBuf, szCLBuf);
492 memcpy(bined, pszWorkBuf, strlen(pszWorkBuf) + 1);
493 if (!strchr(bined, '%') && strlen(bined) > 3)
494 strcat(bined, " %a");
495 }
496 xfree(pszWorkBuf);
497 PrfWriteProfileString(fmprof, appname, "Viewer", viewer);
498 PrfWriteProfileString(fmprof, appname, "Editor", editor);
499 PrfWriteProfileString(fmprof, appname, "BinView", binview);
500 PrfWriteProfileString(fmprof, appname, "BinEd", bined);
501 fUseNewViewer = WinQueryButtonCheckstate(hwnd, CFGV_USENEWVIEWER);
502 PrfWriteProfileData(fmprof, appname, "UseNewViewer", &fUseNewViewer,
503 sizeof(BOOL));
504 fGuessType = WinQueryButtonCheckstate(hwnd, CFGV_GUESSTYPE);
505 PrfWriteProfileData(fmprof, appname, "GuessType", &fGuessType,
506 sizeof(BOOL));
507 fViewChild = WinQueryButtonCheckstate(hwnd, CFGV_VIEWCHILD);
508 PrfWriteProfileData(fmprof, appname, "ViewChild", &fViewChild,
509 sizeof(BOOL));
510 fCheckMM = WinQueryButtonCheckstate(hwnd, CFGV_CHECKMM);
511 PrfWriteProfileData(fmprof, appname, "CheckMM", &fCheckMM, sizeof(BOOL));
512
513 break;
514 }
515 }
516 if (fCancelAction) {
517 fCancelAction = FALSE;
518 WinDlgBox(HWND_DESKTOP,
519 hwnd,
520 CfgDlgProc,
521 FM3ModHandle,
522 CFG_FRAME,
523 MPFROMLONG(IDM_VIEWERSETTINGS));
524 }
525 return WinDefDlgProc(hwnd, msg, mp1, mp2);
526}
527
528MRESULT EXPENTRY CfgHDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
529{
530 switch (msg) {
531 case WM_INITDLG:
532 WinSendDlgItemMsg(hwnd, CFGH_RUNFTPWORKDIR, EM_SETTEXTLIMIT,
533 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
534 WinSendDlgItemMsg(hwnd, CFGH_RUNHTTPWORKDIR, EM_SETTEXTLIMIT,
535 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
536 WinSendDlgItemMsg(hwnd, CFGH_FTPRUN, EM_SETTEXTLIMIT,
537 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
538 WinSendDlgItemMsg(hwnd, CFGH_HTTPRUN, EM_SETTEXTLIMIT,
539 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
540 WinSendDlgItemMsg(hwnd, CFGH_MAILRUN, EM_SETTEXTLIMIT,
541 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
542 WinSendDlgItemMsg(hwnd, CFGH_RUNMAILWORKDIR, EM_SETTEXTLIMIT,
543 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
544 WinEnableWindow(WinWindowFromID(hwnd, CFGH_FIND), FALSE);
545 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
546 break;
547
548 case UM_UNDO:
549 WinSetDlgItemText(hwnd, CFGH_RUNFTPWORKDIR, ftprundir);
550 WinSetDlgItemText(hwnd, CFGH_RUNHTTPWORKDIR, httprundir);
551 WinSetDlgItemText(hwnd, CFGH_RUNMAILWORKDIR, mailrundir);
552 WinSetDlgItemText(hwnd, CFGH_MAILRUN, mailrun);
553 WinSetDlgItemText(hwnd, CFGH_FTPRUN, ftprun);
554 WinSetDlgItemText(hwnd, CFGH_HTTPRUN, httprun);
555 WinCheckButton(hwnd, CFGH_HTTPRUNWPSDEFAULT, fHttpRunWPSDefault);
556 WinCheckButton(hwnd, CFGH_FTPRUNWPSDEFAULT, fFtpRunWPSDefault);
557 WinCheckButton(hwnd, CFGH_LIBPATHSTRICTHTTPRUN, fLibPathStrictHttpRun);
558 WinCheckButton(hwnd, CFGH_LIBPATHSTRICTFTPRUN, fLibPathStrictFtpRun);
559 WinCheckButton(hwnd, CFGH_LIBPATHSTRICTMAILRUN, fLibPathStrictMailRun);
560 WinCheckButton(hwnd, CFGH_NOMAILTOMAILRUN, fNoMailtoMailRun);
561 return 0;
562
563 case WM_CONTROL:
564 switch (SHORT1FROMMP(mp1)) {
565 case CFGH_HTTPRUN:
566 case CFGH_FTPRUN:
567 case CFGH_RUNFTPWORKDIR:
568 case CFGH_RUNHTTPWORKDIR:
569 case CFGH_RUNMAILWORKDIR:
570 case CFGH_MAILRUN:
571 switch (SHORT2FROMMP(mp1)) {
572 case EN_KILLFOCUS:
573 WinEnableWindow(WinWindowFromID(hwnd, CFGH_FIND), FALSE);
574 break;
575 case EN_SETFOCUS:
576 WinEnableWindow(WinWindowFromID(hwnd, CFGH_FIND), TRUE);
577 break;
578 }
579 break;
580 }
581 return 0;
582
583 case WM_COMMAND:
584 switch (SHORT1FROMMP(mp1)) {
585 case IDM_UNDO:
586 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
587 break;
588
589 case DID_CANCEL:
590 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
591
592 case DID_OK:
593 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
594 break;
595
596 case IDM_HELP:
597 if (hwndHelp)
598 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
599 MPFROM2SHORT(HELP_CFGH, 0), MPFROMSHORT(HM_RESOURCEID));
600 break;
601
602 case CFGH_FIND:
603 {
604 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
605 USHORT id;
606 HWND hwndFocus;
607
608 strcpy(filename, "*.EXE");
609 hwndFocus = WinQueryFocus(HWND_DESKTOP);
610 if (hwndFocus) {
611 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
612 switch (id) {
613 case CFGH_HTTPRUN:
614 case CFGH_FTPRUN:
615 case CFGH_MAILRUN:
616 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
617 BldQuotedFileName(szfilename, filename);
618 WinSetDlgItemText(hwnd, id, szfilename);
619 }
620 break;
621 case CFGH_RUNFTPWORKDIR:
622 strcpy(filename, ftprundir);
623 if (WinDlgBox(HWND_DESKTOP, hwndNotebook,
624 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME,
625 MPFROMP(filename)) && *filename)
626 WinSetDlgItemText(hwnd, id, filename);
627 break;
628 case CFGH_RUNHTTPWORKDIR:
629 strcpy(filename, httprundir);
630 if (WinDlgBox(HWND_DESKTOP, hwndNotebook,
631 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME,
632 MPFROMP(filename)) && *filename)
633 WinSetDlgItemText(hwnd, id, filename);
634 break;
635 case CFGH_RUNMAILWORKDIR:
636 strcpy(filename, mailrundir);
637 if (WinDlgBox(HWND_DESKTOP, hwndNotebook,
638 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME,
639 MPFROMP(filename)) && *filename)
640 WinSetDlgItemText(hwnd, id, filename);
641 break;
642 default:
643 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
644 break;
645 }
646 }
647 }
648 break;
649 }
650 return 0;
651
652 case WM_CLOSE:
653 { // fixme these strings can be longer than CCHMAXPATH since
654 // they contain args.
655 CHAR szCLBuf[MAXCOMLINESTRG], szPathBuf[CCHMAXPATH];
656 PSZ pszWorkBuf;
657
658 pszWorkBuf = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
659 WinQueryDlgItemText(hwnd, CFGH_RUNHTTPWORKDIR, CCHMAXPATH, szPathBuf);
660 szPathBuf[CCHMAXPATH - 1] = 0;
661 bstrip(szPathBuf);
662 memcpy(httprundir, szPathBuf, strlen(szPathBuf) + 1);
663 WinQueryDlgItemText(hwnd, CFGH_RUNFTPWORKDIR, CCHMAXPATH, szPathBuf);
664 szPathBuf[CCHMAXPATH - 1] = 0;
665 bstrip(szPathBuf);
666 memcpy(ftprundir, szPathBuf, strlen(szPathBuf) + 1);
667 WinQueryDlgItemText(hwnd, CFGH_RUNMAILWORKDIR, CCHMAXPATH, szPathBuf);
668 szPathBuf[CCHMAXPATH - 1] = 0;
669 bstrip(szPathBuf);
670 memcpy(mailrundir, szPathBuf, strlen(szPathBuf) + 1);
671 WinQueryDlgItemText(hwnd, CFGH_FTPRUN, MAXCOMLINESTRG, szCLBuf);
672 szCLBuf[MAXCOMLINESTRG - 1] = 0;
673 if (strcmp(szCLBuf, ftprun)){
674 NormalizeCmdLine(pszWorkBuf, szCLBuf);
675 memcpy(ftprun, pszWorkBuf, strlen(pszWorkBuf) + 1);
676 }
677 WinQueryDlgItemText(hwnd, CFGH_HTTPRUN, MAXCOMLINESTRG, szCLBuf);
678 szCLBuf[MAXCOMLINESTRG - 1] = 0;
679 if (strcmp(szCLBuf, httprun)){
680 NormalizeCmdLine(pszWorkBuf, szCLBuf);
681 memcpy(httprun, pszWorkBuf, strlen(pszWorkBuf) + 1);
682 }
683 WinQueryDlgItemText(hwnd, CFGH_MAILRUN, MAXCOMLINESTRG, szCLBuf);
684 szCLBuf[MAXCOMLINESTRG - 1] = 0;
685 if (strcmp(szCLBuf, mailrun)){
686 NormalizeCmdLine(pszWorkBuf, szCLBuf);
687 memcpy(mailrun, pszWorkBuf, strlen(pszWorkBuf) + 1);
688 }
689 xfree(pszWorkBuf);
690 PrfWriteProfileString(fmprof, appname, "HttpRunDir", httprundir);
691 PrfWriteProfileString(fmprof, appname, "FtpRunDir", ftprundir);
692 PrfWriteProfileString(fmprof, appname, "MailRunDir", mailrundir);
693 PrfWriteProfileString(fmprof, appname, "FTPRun", ftprun);
694 PrfWriteProfileString(fmprof, appname, "HTTPRun", httprun);
695 PrfWriteProfileString(fmprof, appname, "MailRun", mailrun);
696 fHttpRunWPSDefault = WinQueryButtonCheckstate(hwnd, CFGH_HTTPRUNWPSDEFAULT);
697 PrfWriteProfileData(fmprof, appname, "HttpRunWPSDefault", &fHttpRunWPSDefault,
698 sizeof(BOOL));
699 fFtpRunWPSDefault = WinQueryButtonCheckstate(hwnd, CFGH_FTPRUNWPSDEFAULT);
700 PrfWriteProfileData(fmprof, appname, "FtpRunWPSDefault", &fFtpRunWPSDefault,
701 sizeof(BOOL));
702 fLibPathStrictHttpRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTHTTPRUN);
703 PrfWriteProfileData(fmprof, appname, "LibPathStrictHttpRun",
704 &fLibPathStrictHttpRun, sizeof(BOOL));
705 fLibPathStrictFtpRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTFTPRUN);
706 PrfWriteProfileData(fmprof, appname, "LibPathStrictFtpRun",
707 &fLibPathStrictFtpRun, sizeof(BOOL));
708 fLibPathStrictMailRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTMAILRUN);
709 PrfWriteProfileData(fmprof, appname, "LibPathStrictMailRun",
710 &fLibPathStrictMailRun, sizeof(BOOL));
711 fNoMailtoMailRun = WinQueryButtonCheckstate(hwnd, CFGH_NOMAILTOMAILRUN);
712 PrfWriteProfileData(fmprof, appname, "NoMailtoMailRun",
713 &fNoMailtoMailRun, sizeof(BOOL));
714 break;
715 }
716 }
717 if (fCancelAction) {
718 fCancelAction = FALSE;
719 WinDlgBox(HWND_DESKTOP,
720 hwnd,
721 CfgDlgProc,
722 FM3ModHandle,
723 CFG_FRAME,
724 MPFROMLONG(IDM_VIEWERSETTINGS));
725 }
726 return WinDefDlgProc(hwnd, msg, mp1, mp2);
727}
728
729MRESULT EXPENTRY CfgBDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
730{
731 switch (msg) {
732 case WM_INITDLG:
733 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
734 break;
735
736 case UM_UNDO:
737 WinCheckButton(hwnd, CFGB_TOOLBARHELP, fToolbarHelp);
738 WinCheckButton(hwnd, CFGB_DRIVEBARHELP, fDrivebarHelp);
739 WinCheckButton(hwnd, CFGB_OTHERHELP, fOtherHelp);
740 return 0;
741
742 case WM_COMMAND:
743 switch (SHORT1FROMMP(mp1)) {
744 case IDM_UNDO:
745 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
746 break;
747
748 case DID_CANCEL:
749 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
750
751 case DID_OK:
752 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
753 break;
754
755 case IDM_HELP:
756 if (hwndHelp)
757 WinSendMsg(hwndHelp,
758 HM_DISPLAY_HELP,
759 MPFROM2SHORT(HELP_CFGB, 0), MPFROMSHORT(HM_RESOURCEID));
760 break;
761 }
762 return 0;
763
764 case WM_CLOSE:
765 fToolbarHelp = WinQueryButtonCheckstate(hwnd, CFGB_TOOLBARHELP);
766 PrfWriteProfileData(fmprof,
767 FM3Str, "ToolbarHelp", &fToolbarHelp, sizeof(BOOL));
768 fDrivebarHelp = WinQueryButtonCheckstate(hwnd, CFGB_DRIVEBARHELP);
769 PrfWriteProfileData(fmprof,
770 FM3Str, "DrivebarHelp", &fDrivebarHelp, sizeof(BOOL));
771 fOtherHelp = WinQueryButtonCheckstate(hwnd, CFGB_OTHERHELP);
772 PrfWriteProfileData(fmprof,
773 FM3Str, "OtherHelp", &fOtherHelp, sizeof(BOOL));
774 break;
775 }
776 return WinDefDlgProc(hwnd, msg, mp1, mp2);
777}
778
779MRESULT EXPENTRY CfgTSDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
780{
781 static MASK mask;
782
783 switch (msg) {
784 case WM_INITDLG:
785 WinSendDlgItemMsg(hwnd,
786 CFG5_FILTER,
787 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
788 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
789 break;
790
791 case UM_FOCUSME:
792 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, IDM_HELP));
793 return 0;
794
795 case UM_UNDO:
796 {
797 ULONG flWindowAttr = 0;
798 ULONG ulSize = sizeof(ULONG);
799
800 if (!PrfQueryProfileData(fmprof,
801 appname,
802 "TreeflWindowAttr",
803 (PVOID) & flWindowAttr, &ulSize))
804 flWindowAttr |= (CV_TREE | CA_TREELINE | CV_ICON | CV_MINI | CV_FLOW);
805 WinCheckButton(hwnd, CFG5_ICON, ((flWindowAttr & CV_ICON) != FALSE));
806 WinCheckButton(hwnd, CFG5_MINIICONS,
807 ((flWindowAttr & CV_MINI) != FALSE));
808 memset(&mask, 0, sizeof(mask));
809 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
810 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
811 mask.fIsTree = TRUE;
812 ulSize = sizeof(MASK);
813 if (PrfQueryProfileData(fmprof, appname, "TreeFilter", &mask, &ulSize)) {
814 SetMask(NULL, &mask);
815 }
816 if (!mask.attrFile)
817 mask.attrFile = (FILE_READONLY | FILE_NORMAL |
818 FILE_ARCHIVED | FILE_DIRECTORY |
819 FILE_HIDDEN | FILE_SYSTEM);
820 strcpy(mask.prompt, GetPString(IDS_TREEFILTERTITLETEXT));
821 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
822 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
823 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
824 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
825 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
826 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
827 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
828 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
829 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
830 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
831 if (TreesortFlags & SORT_FIRSTEXTENSION)
832 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
833 else if (TreesortFlags & SORT_LASTEXTENSION)
834 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
835 else if (TreesortFlags & SORT_SIZE)
836 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
837 else if (TreesortFlags & SORT_EASIZE)
838 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
839 else if (TreesortFlags & SORT_LWDATE)
840 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
841 else if (TreesortFlags & SORT_LADATE)
842 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
843 else if (TreesortFlags & SORT_CRDATE)
844 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
845 else if (TreesortFlags & SORT_FILENAME)
846 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
847 else
848 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
849 if (TreesortFlags & SORT_REVERSE)
850 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
851 }
852 return 0;
853
854 case UM_SETUP5:
855 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
856 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
857 SetMask(NULL, &mask);
858 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
859 }
860 return 0;
861
862 case WM_CONTROL:
863 switch (SHORT1FROMMP(mp1)) {
864 case CFG5_FILTER:
865 switch (SHORT2FROMMP(mp1)) {
866 case EN_SETFOCUS:
867 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
868 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
869 break;
870 }
871 break;
872 }
873 return 0;
874
875 case WM_COMMAND:
876 switch (SHORT1FROMMP(mp1)) {
877 case IDM_UNDO:
878 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
879 break;
880
881 case DID_CANCEL:
882 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
883
884 case DID_OK:
885 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
886 break;
887
888 case IDM_HELP:
889 if (hwndHelp)
890 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
891 MPFROM2SHORT(HELP_TREEVIEW, 0),
892 MPFROMSHORT(HM_RESOURCEID));
893 break;
894 }
895 return 0;
896
897 case WM_CLOSE:
898 {
899 ULONG flWindowAttr = 0;
900
901 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
902 flWindowAttr |= CV_ICON;
903 else
904 flWindowAttr |= CV_TEXT;
905 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
906 flWindowAttr |= CV_MINI;
907 flWindowAttr |= (CV_TREE | CV_FLOW | CA_TREELINE);
908 PrfWriteProfileData(fmprof,
909 appname,
910 "TreeflWindowAttr", &flWindowAttr, sizeof(ULONG));
911 if (hwndTree) {
912
913 CNRINFO cnri;
914
915 memset(&cnri, 0, sizeof(cnri));
916 cnri.cb = sizeof(cnri);
917 WinSendMsg(WinWindowFromID
918 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
919 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
920 cnri.flWindowAttr = flWindowAttr;
921 WinSendMsg(WinWindowFromID
922 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
923 CM_SETCNRINFO, MPFROMP(&cnri),
924 MPFROMLONG(CMA_FLWINDOWATTR));
925 }
926 }
927 TreesortFlags = 0;
928 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
929 TreesortFlags |= SORT_FILENAME;
930 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
931 TreesortFlags |= SORT_SIZE;
932 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
933 TreesortFlags |= SORT_EASIZE;
934 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
935 TreesortFlags |= SORT_FIRSTEXTENSION;
936 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
937 TreesortFlags |= SORT_LASTEXTENSION;
938 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
939 TreesortFlags |= SORT_LWDATE;
940 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
941 TreesortFlags |= SORT_LADATE;
942 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
943 TreesortFlags |= SORT_CRDATE;
944 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
945 TreesortFlags |= SORT_DIRSFIRST;
946 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
947 TreesortFlags |= SORT_DIRSLAST;
948 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
949 TreesortFlags |= SORT_REVERSE;
950 PrfWriteProfileData(fmprof, appname, "TreeSort", &TreesortFlags,
951 sizeof(INT));
952 if (hwndTree)
953 PostMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_RESORT, 0), MPVOID);
954 *mask.prompt = 0;
955 PrfWriteProfileData(fmprof, appname, "TreeFilter", &mask, sizeof(MASK));
956 if (hwndTree) {
957
958 DIRCNRDATA *dcd;
959
960 dcd = WinQueryWindowPtr(WinWindowFromID(WinWindowFromID(hwndTree,
961 FID_CLIENT),
962 TREE_CNR), QWL_USER);
963 if (dcd && dcd->size == sizeof(DIRCNRDATA)) {
964 dcd->mask = mask;
965 PostMsg(hwndTree, UM_FILTER, MPVOID, MPVOID);
966 }
967 }
968 break;
969 }
970 return WinDefDlgProc(hwnd, msg, mp1, mp2);
971}
972
973MRESULT EXPENTRY CfgTDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
974{
975 switch (msg) {
976 case WM_INITDLG:
977 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
978 break;
979
980 case UM_UNDO:
981 WinCheckButton(hwnd, CFGT_FOLLOWTREE, fFollowTree);
982 WinCheckButton(hwnd, CFGT_TOPDIR, fTopDir);
983 WinCheckButton(hwnd, CFGT_DCOPENS, fDCOpens);
984 WinCheckButton(hwnd, CFGT_VTREEOPENSWPS, fVTreeOpensWPS);
985 WinCheckButton(hwnd, CFGT_COLLAPSEFIRST, fCollapseFirst);
986 WinCheckButton(hwnd, CFGT_SWITCHTREEONFOCUS, fSwitchTreeOnFocus);
987 WinCheckButton(hwnd, CFGT_SWITCHTREE, fSwitchTree);
988 WinCheckButton(hwnd, CFGT_SWITCHTREEEXPAND, fSwitchTreeExpand);
989 WinCheckButton(hwnd, CFGT_SHOWENV, fShowEnv);
990 return 0;
991
992 case WM_COMMAND:
993 switch (SHORT1FROMMP(mp1)) {
994 case IDM_UNDO:
995 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
996 break;
997
998 case DID_CANCEL:
999 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1000
1001 case DID_OK:
1002 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1003 break;
1004
1005 case IDM_HELP:
1006 if (hwndHelp)
1007 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1008 MPFROM2SHORT(HELP_CFGT, 0), MPFROMSHORT(HM_RESOURCEID));
1009 break;
1010 }
1011 return 0;
1012
1013 case WM_CLOSE:
1014 fVTreeOpensWPS = WinQueryButtonCheckstate(hwnd, CFGT_VTREEOPENSWPS);
1015 PrfWriteProfileData(fmprof, FM3Str, "VTreeOpensWPS", &fVTreeOpensWPS,
1016 sizeof(BOOL));
1017 fCollapseFirst = WinQueryButtonCheckstate(hwnd, CFGT_COLLAPSEFIRST);
1018 PrfWriteProfileData(fmprof, appname, "CollapseFirst", &fCollapseFirst,
1019 sizeof(BOOL));
1020 fSwitchTreeOnFocus = WinQueryButtonCheckstate(hwnd,
1021 CFGT_SWITCHTREEONFOCUS);
1022 PrfWriteProfileData(fmprof, appname, "SwitchTreeOnFocus",
1023 &fSwitchTreeOnFocus, sizeof(BOOL));
1024 fSwitchTreeExpand = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREEEXPAND);
1025 PrfWriteProfileData(fmprof, appname, "SwitchTreeExpand",
1026 &fSwitchTreeExpand, sizeof(BOOL));
1027 fSwitchTree = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREE);
1028 PrfWriteProfileData(fmprof, appname, "SwitchTree", &fSwitchTree,
1029 sizeof(BOOL));
1030 fFollowTree = WinQueryButtonCheckstate(hwnd, CFGT_FOLLOWTREE);
1031 PrfWriteProfileData(fmprof, appname, "FollowTree", &fFollowTree,
1032 sizeof(BOOL));
1033 fTopDir = WinQueryButtonCheckstate(hwnd, CFGT_TOPDIR);
1034 PrfWriteProfileData(fmprof, appname, "TopDir", (PVOID) & fTopDir,
1035 sizeof(BOOL));
1036 fDCOpens = WinQueryButtonCheckstate(hwnd, CFGT_DCOPENS);
1037 PrfWriteProfileData(fmprof, FM3Str, "DoubleClickOpens", &fDCOpens,
1038 sizeof(BOOL));
1039 if (hwndTree && fShowEnv != WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV))
1040 PostMsg(WinWindowFromID
1041 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), WM_COMMAND,
1042 MPFROM2SHORT(IDM_RESCAN, 0), MPVOID);
1043 fShowEnv = WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV);
1044 PrfWriteProfileData(fmprof, appname, "ShowEnv", &fShowEnv, sizeof(BOOL));
1045 break;
1046 }
1047 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1048}
1049
1050MRESULT EXPENTRY CfgGDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1051{
1052 switch (msg) {
1053 case WM_INITDLG:
1054 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1055 break;
1056
1057 case UM_UNDO:
1058 WinCheckButton(hwnd, CFGG_CONFIRMDELETE, fConfirmDelete);
1059 WinCheckButton(hwnd, CFGG_VERIFYWRITES, fVerify);
1060 WinCheckButton(hwnd, CFGG_LINKSETSICON, fLinkSetsIcon);
1061 WinCheckButton(hwnd, CFGG_DONTMOVEMOUSE, fDontMoveMouse);
1062 WinCheckButton(hwnd, CFGG_DEFAULTCOPY, fCopyDefault);
1063 WinCheckButton(hwnd, CFGG_IDLECOPY, fRealIdle);
1064 WinCheckButton(hwnd, CFGG_DNDDLG, fDragndropDlg);
1065 WinCheckButton(hwnd, CFGG_DEFAULTDELETEPERM, fDefaultDeletePerm);
1066 {
1067 long th = fNoFinger ? 2 : (fNoDead ? 1 : 0);
1068 WinCheckButton(hwnd, CFGG_NODEAD, th);
1069 }
1070 WinCheckButton(hwnd, CFGG_BORING, fDullMin);
1071 WinCheckButton(hwnd, CFGG_CUSTOMFILEDLG, fCustomFileDlg);
1072 WinCheckButton(hwnd, CFGG_FM2DELETES, fFM2Deletes);
1073 WinCheckButton(hwnd, CFGG_CONFIRMTARGET, fConfirmTarget);
1074 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1075 return 0;
1076
1077 case UM_FOCUSME:
1078 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, IDM_HELP));
1079 return 0;
1080
1081 case UM_SETUP5:
1082 SetTargetDir(hwnd, FALSE);
1083 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1084 return 0;
1085
1086 case WM_CONTROL:
1087 switch (SHORT1FROMMP(mp1)) {
1088 case CFGG_TARGETDIR:
1089 switch (SHORT2FROMMP(mp1)) {
1090 case EN_SETFOCUS:
1091 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1092 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1093 break;
1094 }
1095 break;
1096 }
1097 return 0;
1098
1099 case WM_COMMAND:
1100 switch (SHORT1FROMMP(mp1)) {
1101 case IDM_UNDO:
1102 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1103 break;
1104
1105 case DID_CANCEL:
1106 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1107
1108 case DID_OK:
1109 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1110 break;
1111
1112 case IDM_HELP:
1113 if (hwndHelp)
1114 WinSendMsg(hwndHelp,
1115 HM_DISPLAY_HELP,
1116 MPFROM2SHORT(HELP_CFGG, 0), MPFROMSHORT(HM_RESOURCEID));
1117 break;
1118 }
1119 return 0;
1120
1121 case WM_CLOSE:
1122 {
1123 long test;
1124
1125 test = WinQueryButtonCheckstate(hwnd, CFGG_NODEAD);
1126 fNoDead = (test == 1);
1127 fNoFinger = (test == 2);
1128 PrfWriteProfileData(fmprof, FM3Str, "NoDead", &fNoDead, sizeof(BOOL));
1129 PrfWriteProfileData(fmprof,
1130 FM3Str, "NoFinger", &fNoFinger, sizeof(BOOL));
1131 WinDestroyPointer(hptrFinger);
1132 if (!fNoDead)
1133 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER_ICON);
1134 else
1135 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER2_ICON);
1136 }
1137 fLinkSetsIcon = WinQueryButtonCheckstate(hwnd, CFGG_LINKSETSICON);
1138 PrfWriteProfileData(fmprof,
1139 appname,
1140 "LinkSetsIcon", &fLinkSetsIcon, sizeof(BOOL));
1141 fCustomFileDlg = WinQueryButtonCheckstate(hwnd, CFGG_CUSTOMFILEDLG);
1142 PrfWriteProfileData(fmprof,
1143 FM3Str,
1144 "CustomFileDlg", &fCustomFileDlg, sizeof(BOOL));
1145 fDullMin = WinQueryButtonCheckstate(hwnd, CFGG_BORING);
1146 PrfWriteProfileData(fmprof,
1147 FM3Str, "DullDatabar", &fDullMin, sizeof(BOOL));
1148 fConfirmDelete = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMDELETE);
1149 PrfWriteProfileData(fmprof,
1150 appname,
1151 "ConfirmDelete", &fConfirmDelete, sizeof(BOOL));
1152 fDontMoveMouse = WinQueryButtonCheckstate(hwnd, CFGG_DONTMOVEMOUSE);
1153 PrfWriteProfileData(fmprof,
1154 appname,
1155 "DontMoveMouse", &fDontMoveMouse, sizeof(BOOL));
1156 fCopyDefault = WinQueryButtonCheckstate(hwnd, CFGG_DEFAULTCOPY);
1157 PrfWriteProfileData(fmprof, appname, "DefaultCopy",
1158 &fCopyDefault, sizeof(BOOL));
1159 fRealIdle = WinQueryButtonCheckstate(hwnd, CFGG_IDLECOPY);
1160 PrfWriteProfileData(fmprof, appname, "IdleCopy",
1161 &fRealIdle, sizeof(BOOL));
1162 fDragndropDlg = WinQueryButtonCheckstate(hwnd, CFGG_DNDDLG);
1163 PrfWriteProfileData(fmprof, appname, "Drag&DropDlg",
1164 &fDragndropDlg, sizeof(BOOL));
1165 fVerify = WinQueryButtonCheckstate(hwnd, CFGG_VERIFYWRITES);
1166 PrfWriteProfileData(fmprof, appname, "VerifyWrites",
1167 &fVerify, sizeof(BOOL));
1168 DosSetVerify(fVerify);
1169 fDefaultDeletePerm = WinQueryButtonCheckstate(hwnd,
1170 CFGG_DEFAULTDELETEPERM);
1171 PrfWriteProfileData(fmprof, appname, "DefaultDeletePerm",
1172 &fDefaultDeletePerm, sizeof(BOOL));
1173 fFM2Deletes = WinQueryButtonCheckstate(hwnd, CFGG_FM2DELETES);
1174 PrfWriteProfileData(fmprof, FM3Str, "FM2Deletes",
1175 &fFM2Deletes, sizeof(BOOL));
1176 fConfirmTarget = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMTARGET);
1177 PrfWriteProfileData(fmprof, appname, "ConfirmTarget",
1178 &fConfirmTarget, sizeof(BOOL));
1179 break;
1180 }
1181 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1182}
1183
1184MRESULT EXPENTRY CfgCDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1185{
1186 switch (msg) {
1187 case WM_INITDLG:
1188 WinSendDlgItemMsg(hwnd, CFGC_COMPARE, EM_SETTEXTLIMIT,
1189 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
1190 WinSendDlgItemMsg(hwnd, CFGC_DIRCOMPARE, EM_SETTEXTLIMIT,
1191 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
1192 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1193 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1194 break;
1195
1196 case UM_UNDO:
1197 WinSetDlgItemText(hwnd, CFGC_COMPARE, compare);
1198 WinSetDlgItemText(hwnd, CFGC_DIRCOMPARE, dircompare);
1199 return 0;
1200
1201 case WM_CONTROL:
1202 switch (SHORT1FROMMP(mp1)) {
1203 case CFGC_COMPARE:
1204 case CFGC_DIRCOMPARE:
1205 switch (SHORT2FROMMP(mp1)) {
1206 case EN_KILLFOCUS:
1207 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1208 break;
1209 case EN_SETFOCUS:
1210 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), TRUE);
1211 break;
1212 }
1213 break;
1214 }
1215 return 0;
1216
1217 case WM_COMMAND:
1218 switch (SHORT1FROMMP(mp1)) {
1219 case IDM_UNDO:
1220 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1221 break;
1222
1223 case DID_CANCEL:
1224 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1225
1226 case DID_OK:
1227 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1228 break;
1229
1230 case IDM_HELP:
1231 if (hwndHelp)
1232 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1233 MPFROM2SHORT(HELP_CFGC, 0), MPFROMSHORT(HM_RESOURCEID));
1234 break;
1235
1236 case CFGC_FIND:
1237 {
1238 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
1239 USHORT id;
1240 HWND hwndFocus;
1241
1242 strcpy(filename, "*.EXE");
1243 hwndFocus = WinQueryFocus(HWND_DESKTOP);
1244 if (hwndFocus) {
1245 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
1246 switch (id) {
1247 case CFGC_COMPARE:
1248 case CFGC_DIRCOMPARE:
1249 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
1250 BldQuotedFileName(szfilename, filename);
1251 strcat(szfilename, " %a");
1252 WinSetDlgItemText(hwnd, id, szfilename);
1253 }
1254 break;
1255 default:
1256 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
1257 break;
1258 }
1259 }
1260 }
1261 break;
1262 }
1263 return 0;
1264
1265 case WM_CLOSE:
1266 {
1267 CHAR szCLBuf[MAXCOMLINESTRG];
1268 PSZ pszWorkBuf;
1269
1270 pszWorkBuf = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
1271 WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, MAXCOMLINESTRG, szCLBuf);
1272 szCLBuf[MAXCOMLINESTRG - 1] = 0;
1273 if (strcmp(szCLBuf, dircompare)){
1274 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1275 memcpy(dircompare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1276 if (!strchr(dircompare, '%') && strlen(dircompare) > 3)
1277 strcat(dircompare, " %a");
1278 }
1279 PrfWriteProfileString(fmprof, appname, "DirCompare", dircompare);
1280 WinQueryDlgItemText(hwnd, CFGC_COMPARE, MAXCOMLINESTRG, szCLBuf);
1281 szCLBuf[MAXCOMLINESTRG - 1] = 0;
1282 if (strcmp(szCLBuf, compare)){
1283 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1284 memcpy(compare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1285 if (!strchr(compare, '%') && strlen(compare) > 3)
1286 strcat(compare, " %a");
1287 }
1288 xfree(pszWorkBuf);
1289 PrfWriteProfileString(fmprof, appname, "Compare", compare);
1290 break;
1291 }
1292 }
1293 if (fCancelAction) {
1294 fCancelAction = FALSE;
1295 WinDlgBox(HWND_DESKTOP,
1296 hwnd,
1297 CfgDlgProc,
1298 FM3ModHandle,
1299 CFG_FRAME,
1300 MPFROMLONG(IDM_COMPARESETTINGS));
1301 }
1302 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1303}
1304
1305MRESULT EXPENTRY CfgDDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1306{
1307 switch (msg) {
1308 case WM_INITDLG:
1309 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1310 break;
1311
1312 case UM_UNDO:
1313 WinCheckButton(hwnd, CFGD_UNHILITE, fUnHilite);
1314 WinCheckButton(hwnd, CFGD_SYNCUPDATES, fSyncUpdates);
1315 WinCheckButton(hwnd, CFGD_LOOKINDIR, fLookInDir);
1316 WinCheckButton(hwnd, CFGD_MINONOPEN, fMinOnOpen);
1317 WinCheckButton(hwnd, CFGD_SELECTEDALWAYS, fSelectedAlways);
1318 WinCheckButton(hwnd, CFGD_NOSEARCH, fNoSearch);
1319 WinCheckButton(hwnd, CFGD_EXTENDEDSEL,
1320 ((ulCnrType & CCS_EXTENDSEL) != 0));
1321 WinCheckButton(hwnd, CFGD_MULTIPLESEL,
1322 ((ulCnrType & CCS_MULTIPLESEL) != 0));
1323 WinCheckButton(hwnd, CFGD_LEAVETREE, fLeaveTree);
1324 WinCheckButton(hwnd, CFGD_NOFOLDMENU, fNoFoldMenu);
1325 return 0;
1326
1327 case WM_COMMAND:
1328 switch (SHORT1FROMMP(mp1)) {
1329 case IDM_UNDO:
1330 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1331 break;
1332
1333 case DID_CANCEL:
1334 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1335
1336 case DID_OK:
1337 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1338 break;
1339
1340 case IDM_HELP:
1341 if (hwndHelp)
1342 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1343 MPFROM2SHORT(HELP_CFGD, 0), MPFROMSHORT(HM_RESOURCEID));
1344 break;
1345 }
1346 return 0;
1347
1348 case WM_CLOSE:
1349 ulCnrType = 0;
1350 if (WinQueryButtonCheckstate(hwnd, CFGD_EXTENDEDSEL))
1351 ulCnrType |= CCS_EXTENDSEL;
1352 if (WinQueryButtonCheckstate(hwnd, CFGD_MULTIPLESEL))
1353 ulCnrType |= CCS_MULTIPLESEL;
1354 PrfWriteProfileData(fmprof, appname, "ContainerType",
1355 (PVOID) & ulCnrType, sizeof(BOOL));
1356 fMinOnOpen = WinQueryButtonCheckstate(hwnd, CFGD_MINONOPEN);
1357 PrfWriteProfileData(fmprof, FM3Str, "MinDirOnOpen", &fMinOnOpen,
1358 sizeof(BOOL));
1359 fLeaveTree = WinQueryButtonCheckstate(hwnd, CFGD_LEAVETREE);
1360 PrfWriteProfileData(fmprof, appname, "LeaveTree", &fLeaveTree,
1361 sizeof(BOOL));
1362 fNoFoldMenu = WinQueryButtonCheckstate(hwnd, CFGD_NOFOLDMENU);
1363 PrfWriteProfileData(fmprof, appname, "NoFoldMenu", &fNoFoldMenu,
1364 sizeof(BOOL));
1365 fSelectedAlways = WinQueryButtonCheckstate(hwnd, CFGD_SELECTEDALWAYS);
1366 PrfWriteProfileData(fmprof, appname, "SelectedAlways", &fSelectedAlways,
1367 sizeof(BOOL));
1368 fNoSearch = WinQueryButtonCheckstate(hwnd, CFGD_NOSEARCH);
1369 PrfWriteProfileData(fmprof, appname, "NoSearch", &fNoSearch,
1370 sizeof(BOOL));
1371 fLookInDir = WinQueryButtonCheckstate(hwnd, CFGD_LOOKINDIR);
1372 PrfWriteProfileData(fmprof, FM3Str, "LookInDir", (PVOID) & fLookInDir,
1373 sizeof(BOOL));
1374 fUnHilite = WinQueryButtonCheckstate(hwnd, CFGD_UNHILITE);
1375 PrfWriteProfileData(fmprof, appname, "UnHilite",
1376 &fUnHilite, sizeof(BOOL));
1377 {
1378 BOOL dummy = WinQueryButtonCheckstate(hwnd, CFGD_SYNCUPDATES);
1379
1380 if (dummy != fSyncUpdates) {
1381 fSyncUpdates = dummy;
1382 if (hwndMain && !strcmp(realappname, FM3Str)) {
1383 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
1384 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
1385 PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
1386 }
1387 }
1388 }
1389 }
1390 PrfWriteProfileData(fmprof, appname, "SyncUpdates",
1391 &fSyncUpdates, sizeof(BOOL));
1392 if (!(ulCnrType & (CCS_EXTENDSEL | CCS_MULTIPLESEL)))
1393 saymsg(MB_ENTER | MB_ICONEXCLAMATION,
1394 HWND_DESKTOP,
1395 GetPString(IDS_WARNINGTEXT),
1396 GetPString(IDS_SELECTTYPEERRORTEXT));
1397 break;
1398 }
1399 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1400}
1401
1402MRESULT EXPENTRY CfgMDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1403{
1404 switch (msg) {
1405 case WM_INITDLG:
1406 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1407 break;
1408
1409 case UM_UNDO:
1410 WinCheckButton(hwnd, CFGM_EXTERNALINIS, fExternalINIs);
1411 WinCheckButton(hwnd, CFGM_EXTERNALARCBOXES, fExternalArcboxes);
1412 WinCheckButton(hwnd, CFGM_EXTERNALVIEWER, fExternalViewer);
1413 WinCheckButton(hwnd, CFGM_EXTERNALCOLLECTOR, fExternalCollector);
1414 WinCheckButton(hwnd, CFGM_SAVESTATE, fSaveState);
1415 WinCheckButton(hwnd, CFGM_AUTOTILE, (fAutoTile));
1416 WinCheckButton(hwnd, CFGM_FREETREE, (fFreeTree));
1417 WinCheckButton(hwnd, CFGM_SPLITSTATUS, (fSplitStatus));
1418 WinCheckButton(hwnd, CFGM_NOTREEGAP, (fNoTreeGap));
1419 WinCheckButton(hwnd, CFGM_STARTMIN, (fStartMinimized));
1420 WinCheckButton(hwnd, CFGM_STARTMAX, (fStartMaximized));
1421 WinCheckButton(hwnd, CFGM_DATAMIN, (fDataMin));
1422 WinCheckButton(hwnd, CFGM_TILEBACKWARDS, (fTileBackwards));
1423 {
1424 long th;
1425
1426 th = (fAutoAddDirs && fAutoAddAllDirs) ? 2 : (fAutoAddDirs) ? 1 : 0;
1427 WinCheckButton(hwnd, CFGM_RECENTDIRS, th);
1428 WinSendMsg(hwnd, UM_RESTORE, MPFROM2SHORT(CFGM_RECENTDIRS, 0), MPVOID);
1429 }
1430 WinCheckButton(hwnd, CFGM_USERLISTSWITCHES, fUserListSwitches);
1431 WinCheckButton(hwnd, CFGM_WSANIMATE, (fwsAnimate != 0));
1432 WinCheckButton(hwnd, CFGM_SEPARATEPARMS, fSeparateParms);
1433 WinCheckButton(hwnd, CFGM_BLUELED, fBlueLED);
1434 WinCheckButton(hwnd, CFGM_SHOWTARGET, fShowTarget);
1435 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), !(fStartMinimized));
1436 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), !(fStartMaximized));
1437 return 0;
1438
1439 case UM_RESTORE:
1440 {
1441 long test;
1442 BOOL th, oh;
1443 char s[80];
1444
1445 test = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1446 th = (test != 0);
1447 oh = (test == 1);
1448 *s = 0;
1449 switch (SHORT1FROMMP(mp1)) {
1450 case CFGM_RECENTDIRS:
1451 sprintf(s,
1452 GetPString(IDS_RECENTHELPWHICHTEXT),
1453 (!oh && th) ?
1454 GetPString(IDS_RECENTONLYTEXT) :
1455 (oh && th) ?
1456 GetPString(IDS_ALLONLYTEXT) : GetPString(IDS_NONE));
1457 break;
1458 }
1459 if (*s)
1460 WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), s);
1461 }
1462 return 0;
1463
1464 case WM_CONTROL:
1465 switch (SHORT1FROMMP(mp1)) {
1466 case CFGM_RECENTDIRS:
1467 WinSendMsg(hwnd, UM_RESTORE, mp1, MPVOID);
1468 break;
1469 case CFGM_STARTMIN:
1470 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN)) {
1471 WinCheckButton(hwnd, CFGM_STARTMAX, FALSE);
1472 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), FALSE);
1473 }
1474 else
1475 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), TRUE);
1476 break;
1477 case CFGM_STARTMAX:
1478 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX)) {
1479 WinCheckButton(hwnd, CFGM_STARTMIN, FALSE);
1480 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), FALSE);
1481 }
1482 else
1483 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), TRUE);
1484 break;
1485 }
1486 return 0;
1487
1488 case WM_COMMAND:
1489 switch (SHORT1FROMMP(mp1)) {
1490 case IDM_UNDO:
1491 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1492 break;
1493
1494 case DID_CANCEL:
1495 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1496
1497 case DID_OK:
1498 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1499 break;
1500
1501 case IDM_HELP:
1502 if (hwndHelp)
1503 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1504 MPFROM2SHORT(HELP_CFGM, 0), MPFROMSHORT(HM_RESOURCEID));
1505 break;
1506 }
1507 return 0;
1508
1509 case WM_CLOSE:
1510 if (hwndMain && !strcmp(realappname, FM3Str)) {
1511 if (fFreeTree != WinQueryButtonCheckstate(hwnd, CFGM_FREETREE))
1512 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_FREETREE, 0), MPVOID);
1513 if (fAutoTile != WinQueryButtonCheckstate(hwnd, CFGM_AUTOTILE))
1514 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_AUTOTILE, 0), MPVOID);
1515 if (fSplitStatus != WinQueryButtonCheckstate(hwnd, CFGM_SPLITSTATUS)) {
1516 fSplitStatus = (fSplitStatus) ? FALSE : TRUE;
1517 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_BLINK, 0), MPVOID);
1518 PrfWriteProfileData(fmprof, FM3Str, "SplitStatus", &fSplitStatus,
1519 sizeof(BOOL));
1520 }
1521 }
1522 fUserListSwitches = WinQueryButtonCheckstate(hwnd, CFGM_USERLISTSWITCHES);
1523 PrfWriteProfileData(fmprof, FM3Str, "UserListSwitches",
1524 (PVOID) & fUserListSwitches, sizeof(BOOL));
1525 fExternalINIs = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALINIS);
1526 PrfWriteProfileData(fmprof, FM3Str, "ExternalINIs",
1527 (PVOID) & fExternalINIs, sizeof(BOOL));
1528 fExternalArcboxes = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALARCBOXES);
1529 PrfWriteProfileData(fmprof, FM3Str, "ExternalArcboxes",
1530 (PVOID) & fExternalArcboxes, sizeof(BOOL));
1531 fExternalCollector =
1532 WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALCOLLECTOR);
1533 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
1534 (PVOID) & fExternalCollector, sizeof(BOOL));
1535 fExternalViewer = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALVIEWER);
1536 PrfWriteProfileData(fmprof, FM3Str, "ExternalViewer",
1537 (PVOID) & fExternalViewer, sizeof(BOOL));
1538 {
1539 long test;
1540
1541 test = WinQueryButtonCheckstate(hwnd, CFGM_RECENTDIRS);
1542 fAutoAddDirs = (test != 0);
1543 fAutoAddAllDirs = (test == 2);
1544 }
1545 PrfWriteProfileData(fmprof,
1546 appname,
1547 "AutoAddDirs", (PVOID) & fAutoAddDirs, sizeof(BOOL));
1548 PrfWriteProfileData(fmprof,
1549 appname,
1550 "AutoAddAllDirs",
1551 (PVOID) & fAutoAddAllDirs, sizeof(BOOL));
1552 fwsAnimate = WinQueryButtonCheckstate(hwnd, CFGM_WSANIMATE);
1553 if (fwsAnimate)
1554 fwsAnimate = WS_ANIMATE;
1555 PrfWriteProfileData(fmprof,
1556 appname,
1557 "WS_ANIMATE", (PVOID) & fwsAnimate, sizeof(ULONG));
1558 fSaveState = WinQueryButtonCheckstate(hwnd, CFGM_SAVESTATE);
1559 PrfWriteProfileData(fmprof,
1560 FM3Str,
1561 "SaveState", (PVOID) & fSaveState, sizeof(BOOL));
1562 fStartMinimized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN);
1563 PrfWriteProfileData(fmprof,
1564 appname,
1565 "StartMinimized",
1566 (PVOID) & fStartMinimized, sizeof(BOOL));
1567 fStartMaximized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX);
1568 PrfWriteProfileData(fmprof,
1569 appname,
1570 "StartMaximized",
1571 (PVOID) & fStartMaximized, sizeof(BOOL));
1572 fDataMin = WinQueryButtonCheckstate(hwnd, CFGM_DATAMIN);
1573 PrfWriteProfileData(fmprof,
1574 FM3Str, "DataMin", (PVOID) & fDataMin, sizeof(BOOL));
1575 fTileBackwards = WinQueryButtonCheckstate(hwnd, CFGM_TILEBACKWARDS);
1576 PrfWriteProfileData(fmprof,
1577 FM3Str,
1578 "TileBackwards",
1579 (PVOID) & fTileBackwards, sizeof(BOOL));
1580 fNoTreeGap = WinQueryButtonCheckstate(hwnd, CFGM_NOTREEGAP);
1581 PrfWriteProfileData(fmprof,
1582 FM3Str,
1583 "NoTreeGap", (PVOID) & fNoTreeGap, sizeof(BOOL));
1584 fBlueLED = WinQueryButtonCheckstate(hwnd, CFGM_BLUELED);
1585 PrfWriteProfileData(fmprof,
1586 appname, "BlueLED", (PVOID) & fBlueLED, sizeof(BOOL));
1587 {
1588 BOOL dummy;
1589
1590 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SHOWTARGET);
1591 if (dummy != fShowTarget) {
1592 fShowTarget = dummy;
1593 PrfWriteProfileData(fmprof,
1594 appname,
1595 "ShowTarget",
1596 (PVOID) & fShowTarget, sizeof(BOOL));
1597 if (hwndMain)
1598 PostMsg(WinQueryWindow(hwndMain, QW_PARENT),
1599 WM_UPDATEFRAME, MPFROMLONG(FCF_SIZEBORDER), MPVOID);
1600 SetTargetDir(hwnd, TRUE);
1601 }
1602 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SEPARATEPARMS);
1603 if (dummy != fSeparateParms) {
1604 fSeparateParms = dummy;
1605 PrfWriteProfileData(fmprof,
1606 FM3Str,
1607 "SeparateParms",
1608 (PVOID) & fSeparateParms, sizeof(BOOL));
1609 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
1610 UM_UNDO, MPVOID, MPVOID);
1611 }
1612 }
1613 break;
1614 }
1615 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1616}
1617
1618MRESULT EXPENTRY Cfg5DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1619{
1620 static MASK mask;
1621
1622 switch (msg) {
1623 case WM_INITDLG:
1624 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
1625 MPFROMSHORT(8), MPVOID);
1626 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
1627 MPFROMLONG(1000), MPFROMLONG(50));
1628 WinSendDlgItemMsg(hwnd,
1629 CFG5_FILTER,
1630 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
1631 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1632 break;
1633
1634 case UM_FOCUSME:
1635 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
1636 return 0;
1637
1638 case UM_UNDO:
1639 {
1640 ULONG flWindowAttr = 0;
1641 ULONG ulSize = sizeof(ULONG);
1642
1643 if (!PrfQueryProfileData(fmprof,
1644 appname,
1645 "DirflWindowAttr", &flWindowAttr, &ulSize))
1646 flWindowAttr = (CV_NAME | CV_MINI | CA_DETAILSVIEWTITLES | CV_FLOW);
1647 if (flWindowAttr & CV_ICON)
1648 WinCheckButton(hwnd, CFG5_ICON, TRUE);
1649 if (flWindowAttr & CV_NAME)
1650 WinCheckButton(hwnd, CFG5_NAME, TRUE);
1651 if (flWindowAttr & CV_TEXT)
1652 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
1653 if (flWindowAttr & CV_DETAIL)
1654 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
1655 if (flWindowAttr & CV_MINI)
1656 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
1657 if (flWindowAttr & CA_DETAILSVIEWTITLES)
1658 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
1659 WinCheckButton(hwnd, CFG5_SHOWLNAMES, detailslongname);
1660 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, detailssubject);
1661 WinCheckButton(hwnd, CFG5_SHOWEAS, detailsea);
1662 WinCheckButton(hwnd, CFG5_SHOWSIZE, detailssize);
1663 WinCheckButton(hwnd, CFG5_SHOWICON, detailsicon);
1664 WinCheckButton(hwnd, CFG5_SHOWLWDATE, detailslwdate);
1665 WinCheckButton(hwnd, CFG5_SHOWLWTIME, detailslwtime);
1666 WinCheckButton(hwnd, CFG5_SHOWLADATE, detailsladate);
1667 WinCheckButton(hwnd, CFG5_SHOWLATIME, detailslatime);
1668 WinCheckButton(hwnd, CFG5_SHOWCRDATE, detailscrdate);
1669 WinCheckButton(hwnd, CFG5_SHOWCRTIME, detailscrtime);
1670 WinCheckButton(hwnd, CFG5_SHOWATTR, detailsattr);
1671 memset(&mask, 0, sizeof(mask));
1672 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1673 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
1674 ulSize = sizeof(MASK);
1675 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, &ulSize))
1676 SetMask(NULL, &mask);
1677 if (!mask.attrFile)
1678 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1679 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
1680 strcpy(mask.prompt, GetPString(IDS_DEFDIRFILTERTITLETEXT));
1681 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
1682 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, fSubjectInLeftPane);
1683 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, fSubjectLengthMax);
1684 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
1685 MPFROMLONG(SubjectDisplayWidth), MPVOID);
1686 }
1687 return 0;
1688
1689 case UM_SETUP5:
1690 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
1691 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
1692 SetMask(NULL, &mask);
1693 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
1694 }
1695 return 0;
1696
1697 case WM_CONTROL:
1698 switch (SHORT1FROMMP(mp1)) {
1699 case CFG5_FILTER:
1700 switch (SHORT2FROMMP(mp1)) {
1701 case EN_SETFOCUS:
1702 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1703 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1704 break;
1705 }
1706 break;
1707 }
1708 return 0;
1709
1710 case WM_COMMAND:
1711 switch (SHORT1FROMMP(mp1)) {
1712 case IDM_UNDO:
1713 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1714 break;
1715
1716 case DID_CANCEL:
1717 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1718
1719 case DID_OK:
1720 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1721 break;
1722
1723 case IDM_HELP:
1724 if (hwndHelp)
1725 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1726 MPFROM2SHORT(HELP_CFG5, 0), MPFROMSHORT(HM_RESOURCEID));
1727 break;
1728 }
1729 return 0;
1730
1731 case WM_CLOSE:
1732 {
1733 ULONG flWindowAttr = 0;
1734
1735 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
1736 flWindowAttr |= CV_ICON;
1737 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
1738 flWindowAttr |= CV_NAME;
1739 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
1740 flWindowAttr |= CV_TEXT;
1741 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
1742 flWindowAttr |= CV_DETAIL;
1743 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
1744 flWindowAttr |= CV_MINI;
1745 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
1746 flWindowAttr |= CA_DETAILSVIEWTITLES;
1747 flWindowAttr |= CV_FLOW;
1748 PrfWriteProfileData(fmprof,
1749 appname,
1750 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
1751 }
1752 detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
1753 PrfWriteProfileData(fmprof, appname, "DetailsLongname",
1754 &detailslongname, sizeof(BOOL));
1755// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname",
1756// JBS &detailslongname, sizeof(BOOL));
1757 detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
1758 PrfWriteProfileData(fmprof, appname, "DetailsSubject",
1759 &detailssubject, sizeof(BOOL));
1760// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject",
1761// JBS &detailssubject, sizeof(BOOL));
1762 detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS);
1763 PrfWriteProfileData(fmprof, appname, "DetailsEA",
1764 &detailsea, sizeof(BOOL));
1765// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA",
1766// JBS &detailsea, sizeof(BOOL));
1767 detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
1768 PrfWriteProfileData(fmprof, appname, "DetailsSize",
1769 &detailssize, sizeof(BOOL));
1770// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize",
1771// JBS &detailssize, sizeof(BOOL));
1772 detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
1773 PrfWriteProfileData(fmprof, appname, "DetailsIcon",
1774 &detailsicon, sizeof(BOOL));
1775// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon",
1776// JBS &detailsicon, sizeof(BOOL));
1777 detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
1778 PrfWriteProfileData(fmprof, appname, "DetailsLWDate",
1779 &detailslwdate, sizeof(BOOL));
1780// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate",
1781// JBS &detailslwdate, sizeof(BOOL));
1782 detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
1783 PrfWriteProfileData(fmprof, appname, "DetailsLWTime",
1784 &detailslwtime, sizeof(BOOL));
1785// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime",
1786// JBS &detailslwtime, sizeof(BOOL));
1787 detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
1788 PrfWriteProfileData(fmprof, appname, "DetailsLADate",
1789 &detailsladate, sizeof(BOOL));
1790// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate",
1791// JBS &detailsladate, sizeof(BOOL));
1792 detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
1793 PrfWriteProfileData(fmprof, appname, "DetailsLATime",
1794 &detailslatime, sizeof(BOOL));
1795// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime",
1796// JBS &detailslatime, sizeof(BOOL));
1797 detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
1798 PrfWriteProfileData(fmprof, appname, "DetailsCRDate",
1799 &detailscrdate, sizeof(BOOL));
1800// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate",
1801// JBS &detailscrdate, sizeof(BOOL));
1802 detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
1803 PrfWriteProfileData(fmprof, appname, "DetailsCRTime",
1804 &detailscrtime, sizeof(BOOL));
1805// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime",
1806// JBS &detailscrtime, sizeof(BOOL));
1807 detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
1808 PrfWriteProfileData(fmprof, appname, "DetailsAttr",
1809 &detailsattr, sizeof(BOOL));
1810// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr",
1811// JBS &detailsattr, sizeof(BOOL));
1812 fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
1813 PrfWriteProfileData(fmprof, appname, "SubjectInLeftPane",
1814 &fSubjectInLeftPane, sizeof(BOOL));
1815// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectInLeftPane",
1816// JBS &fSubjectInLeftPane, sizeof(BOOL));
1817 fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
1818 PrfWriteProfileData(fmprof, appname, "SubjectLengthMax",
1819 &fSubjectLengthMax, sizeof(BOOL));
1820// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectLengthMax",
1821// JBS &fSubjectLengthMax, sizeof(BOOL));
1822 *mask.prompt = 0;
1823 PrfWriteProfileData(fmprof, appname, "DirFilter", &mask, sizeof(MASK));
1824 {
1825 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
1826 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
1827 MPFROMP(&SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
1828 if (SubjectDisplayWidth < 50)
1829 SubjectDisplayWidth = 0;
1830 else if (SubjectDisplayWidth > 1000)
1831 SubjectDisplayWidth = 1000;
1832 }
1833 else
1834 SubjectDisplayWidth = 0;
1835 PrfWriteProfileData(fmprof,
1836 appname, "SubjectDisplayWidth",
1837 &SubjectDisplayWidth, sizeof(ULONG));
1838 PrfWriteProfileData(fmprof,
1839 appname, "DirCnr.SubjectDisplayWidth",
1840 &SubjectDisplayWidth, sizeof(ULONG));
1841 }
1842 break;
1843 }
1844 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1845}
1846
1847MRESULT EXPENTRY Cfg6DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1848{
1849 switch (msg) {
1850 case WM_INITDLG:
1851 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1852 break;
1853
1854 case UM_UNDO:
1855 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
1856 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
1857 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
1858 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
1859 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
1860 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
1861 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
1862 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
1863 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
1864 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
1865 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
1866 if (sortFlags & SORT_FIRSTEXTENSION)
1867 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
1868 else if (sortFlags & SORT_LASTEXTENSION)
1869 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
1870 else if (sortFlags & SORT_SIZE)
1871 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
1872 else if (sortFlags & SORT_EASIZE)
1873 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
1874 else if (sortFlags & SORT_LWDATE)
1875 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
1876 else if (sortFlags & SORT_LADATE)
1877 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
1878 else if (sortFlags & SORT_CRDATE)
1879 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
1880 else if (sortFlags & SORT_FILENAME)
1881 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
1882 else
1883 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
1884 if (sortFlags & SORT_DIRSFIRST)
1885 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
1886 else if (sortFlags & SORT_DIRSLAST)
1887 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
1888 if (sortFlags & SORT_REVERSE)
1889 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
1890 return 0;
1891
1892 case WM_CONTROL:
1893 switch (SHORT1FROMMP(mp1)) {
1894 case CFG6_SORTDIRSFIRST:
1895 case CFG6_SORTDIRSLAST:
1896 {
1897 BOOL temp;
1898
1899 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1900 if (temp) {
1901 switch (SHORT1FROMMP(mp1)) {
1902 case CFG6_SORTDIRSFIRST:
1903 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
1904 break;
1905 case CFG6_SORTDIRSLAST:
1906 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
1907 break;
1908 }
1909 }
1910 }
1911 break;
1912 }
1913 return 0;
1914
1915 case WM_COMMAND:
1916 switch (SHORT1FROMMP(mp1)) {
1917 case IDM_UNDO:
1918 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1919 break;
1920
1921 case DID_CANCEL:
1922 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1923
1924 case DID_OK:
1925 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1926 break;
1927
1928 case IDM_HELP:
1929 if (hwndHelp)
1930 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1931 MPFROM2SHORT(HELP_CFG6, 0), MPFROMSHORT(HM_RESOURCEID));
1932 break;
1933 }
1934 return 0;
1935
1936 case WM_CLOSE:
1937 sortFlags = 0;
1938 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
1939 sortFlags |= SORT_FILENAME;
1940 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
1941 sortFlags |= SORT_SIZE;
1942 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
1943 sortFlags |= SORT_EASIZE;
1944 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
1945 sortFlags |= SORT_FIRSTEXTENSION;
1946 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
1947 sortFlags |= SORT_LASTEXTENSION;
1948 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
1949 sortFlags |= SORT_LWDATE;
1950 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
1951 sortFlags |= SORT_LADATE;
1952 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
1953 sortFlags |= SORT_CRDATE;
1954 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
1955 sortFlags |= SORT_DIRSFIRST;
1956 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
1957 sortFlags |= SORT_DIRSLAST;
1958 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
1959 sortFlags |= SORT_REVERSE;
1960 PrfWriteProfileData(fmprof, appname, "Sort", &sortFlags, sizeof(INT));
1961 break;
1962 }
1963 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1964}
1965
1966MRESULT EXPENTRY Cfg7DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1967{
1968 static MASK mask;
1969
1970 switch (msg) {
1971 case WM_INITDLG:
1972 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
1973 MPFROMSHORT(8), MPVOID);
1974 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
1975 MPFROMLONG(1000), MPFROMLONG(50));
1976 WinSendDlgItemMsg(hwnd, CFG5_FILTER, EM_SETTEXTLIMIT,
1977 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
1978 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1979 break;
1980
1981 case UM_FOCUSME:
1982 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
1983 return 0;
1984
1985 case UM_UNDO:
1986 WinCheckButton(hwnd, CFG5_EXTERNALCOLLECTOR, fExternalCollector);
1987 {
1988 ULONG flWindowAttr = 0;
1989 ULONG ulSize = sizeof(ULONG);
1990
1991 if (!PrfQueryProfileData(fmprof,
1992 appname,
1993 "CollectorflWindowAttr", &flWindowAttr, &ulSize))
1994 flWindowAttr = (CV_NAME | CA_DETAILSVIEWTITLES | CV_MINI | CV_FLOW);
1995 if (flWindowAttr & CV_ICON)
1996 WinCheckButton(hwnd, CFG5_ICON, TRUE);
1997 if (flWindowAttr & CV_NAME)
1998 WinCheckButton(hwnd, CFG5_NAME, TRUE);
1999 if (flWindowAttr & CV_TEXT)
2000 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
2001 if (flWindowAttr & CV_DETAIL)
2002 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
2003 if (flWindowAttr & CV_MINI)
2004 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
2005 if (flWindowAttr & CA_DETAILSVIEWTITLES)
2006 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
2007 memset(&mask, 0, sizeof(mask));
2008 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2009 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2010 ulSize = sizeof(MASK);
2011 if (PrfQueryProfileData(fmprof,
2012 appname, "CollectorFilter", &mask, &ulSize)) {
2013 SetMask(NULL, &mask);
2014 }
2015 if (!mask.attrFile)
2016 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2017 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2018 strcpy(mask.prompt, GetPString(IDS_DEFCOLFILTERTITLETEXT));
2019 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2020 }
2021 {
2022 DIRCNRDATA dcd;
2023
2024 memset(&dcd, 0, sizeof(dcd));
2025 LoadDetailsSwitches("Collector", &dcd);
2026 WinCheckButton(hwnd, CFG5_SHOWLNAMES, dcd.detailslongname);
2027 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, dcd.detailssubject);
2028 WinCheckButton(hwnd, CFG5_SHOWEAS, dcd.detailsea);
2029 WinCheckButton(hwnd, CFG5_SHOWSIZE, dcd.detailssize);
2030 WinCheckButton(hwnd, CFG5_SHOWICON, dcd.detailsicon);
2031 WinCheckButton(hwnd, CFG5_SHOWLWDATE, dcd.detailslwdate);
2032 WinCheckButton(hwnd, CFG5_SHOWLWTIME, dcd.detailslwtime);
2033 WinCheckButton(hwnd, CFG5_SHOWLADATE, dcd.detailsladate);
2034 WinCheckButton(hwnd, CFG5_SHOWLATIME, dcd.detailslatime);
2035 WinCheckButton(hwnd, CFG5_SHOWCRDATE, dcd.detailscrdate);
2036 WinCheckButton(hwnd, CFG5_SHOWCRTIME, dcd.detailscrtime);
2037 WinCheckButton(hwnd, CFG5_SHOWATTR, dcd.detailsattr);
2038 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, dcd.fSubjectInLeftPane);
2039 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, dcd.fSubjectLengthMax);
2040 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
2041 MPFROMLONG(dcd.SubjectDisplayWidth), MPVOID);
2042
2043 }
2044 return 0;
2045
2046 case UM_SETUP5:
2047 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2048 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2049 SetMask(NULL, &mask);
2050 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2051 }
2052 return 0;
2053
2054 case WM_CONTROL:
2055 switch (SHORT1FROMMP(mp1)) {
2056 case CFG5_FILTER:
2057 switch (SHORT2FROMMP(mp1)) {
2058 case EN_SETFOCUS:
2059 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2060 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2061 break;
2062 }
2063 break;
2064 }
2065 return 0;
2066
2067 case WM_COMMAND:
2068 switch (SHORT1FROMMP(mp1)) {
2069 case IDM_UNDO:
2070 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2071 break;
2072
2073 case DID_CANCEL:
2074 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2075
2076 case DID_OK:
2077 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2078 break;
2079
2080 case IDM_HELP:
2081 if (hwndHelp)
2082 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2083 MPFROM2SHORT(HELP_CFG7, 0), MPFROMSHORT(HM_RESOURCEID));
2084 break;
2085 }
2086 return 0;
2087
2088 case WM_CLOSE:
2089 fExternalCollector = WinQueryButtonCheckstate(hwnd,
2090 CFG5_EXTERNALCOLLECTOR);
2091 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
2092 &fExternalCollector, sizeof(BOOL));
2093 {
2094 ULONG flWindowAttr = 0;
2095
2096 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2097 flWindowAttr |= CV_ICON;
2098 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2099 flWindowAttr |= CV_NAME;
2100 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2101 flWindowAttr |= CV_TEXT;
2102 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2103 flWindowAttr |= CV_DETAIL;
2104 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2105 flWindowAttr |= CV_MINI;
2106 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2107 flWindowAttr |= CA_DETAILSVIEWTITLES;
2108 flWindowAttr |= CV_FLOW;
2109 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2110 &flWindowAttr, sizeof(ULONG));
2111 }
2112 {
2113 DIRCNRDATA dcd;
2114
2115 memset(&dcd, 0, sizeof(dcd));
2116 dcd.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
2117 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLongname",
2118 &dcd.detailslongname, sizeof(BOOL));
2119 dcd.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
2120 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSubject",
2121 &dcd.detailssubject, sizeof(BOOL));
2122 dcd.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS);
2123 PrfWriteProfileData(fmprof, appname, "Collector.DetailsEA",
2124 &dcd.detailsea, sizeof(BOOL));
2125 dcd.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
2126 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSize",
2127 &dcd.detailssize, sizeof(BOOL));
2128 dcd.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
2129 PrfWriteProfileData(fmprof, appname, "Collector.DetailsIcon",
2130 &dcd.detailsicon, sizeof(BOOL));
2131 dcd.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
2132 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWDate",
2133 &dcd.detailslwdate, sizeof(BOOL));
2134 dcd.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
2135 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWTime",
2136 &dcd.detailslwtime, sizeof(BOOL));
2137 dcd.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
2138 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLADate",
2139 &dcd.detailsladate, sizeof(BOOL));
2140 dcd.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
2141 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLATime",
2142 &dcd.detailslatime, sizeof(BOOL));
2143 dcd.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
2144 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRDate",
2145 &dcd.detailscrdate, sizeof(BOOL));
2146 dcd.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
2147 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRTime",
2148 &dcd.detailscrtime, sizeof(BOOL));
2149 dcd.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
2150 PrfWriteProfileData(fmprof, appname, "Collector.DetailsAttr",
2151 &dcd.detailsattr, sizeof(BOOL));
2152 dcd.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
2153 PrfWriteProfileData(fmprof, appname, "Collector.SubjectInLeftPane",
2154 &dcd.fSubjectInLeftPane, sizeof(BOOL));
2155 dcd.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
2156 PrfWriteProfileData(fmprof, appname, "Collector.SubjectLengthMax",
2157 &dcd.fSubjectLengthMax, sizeof(BOOL));
2158 *mask.prompt = 0;
2159 PrfWriteProfileData(fmprof,
2160 appname, "CollectorFilter", &mask, sizeof(MASK));
2161 {
2162 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2163 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
2164 MPFROMP(&dcd.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2165 if (dcd.SubjectDisplayWidth < 50)
2166 dcd.SubjectDisplayWidth = 0;
2167 else if (dcd.SubjectDisplayWidth > 1000)
2168 dcd.SubjectDisplayWidth = 1000;
2169 }
2170 else
2171 dcd.SubjectDisplayWidth = 0;
2172 PrfWriteProfileData(fmprof,
2173 appname, "Collector.SubjectDisplayWidth",
2174 &dcd.SubjectDisplayWidth, sizeof(ULONG));
2175 }
2176 }
2177 break;
2178 }
2179 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2180}
2181
2182MRESULT EXPENTRY Cfg8DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2183{
2184 switch (msg) {
2185 case WM_INITDLG:
2186 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2187 break;
2188
2189 case UM_UNDO:
2190 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2191 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2192 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2193 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2194 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2195 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2196 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2197 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2198 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2199 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2200 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2201 if (CollectorsortFlags & SORT_FIRSTEXTENSION)
2202 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2203 else if (CollectorsortFlags & SORT_LASTEXTENSION)
2204 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2205 else if (CollectorsortFlags & SORT_SIZE)
2206 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2207 else if (CollectorsortFlags & SORT_EASIZE)
2208 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2209 else if (CollectorsortFlags & SORT_LWDATE)
2210 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2211 else if (CollectorsortFlags & SORT_LADATE)
2212 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2213 else if (CollectorsortFlags & SORT_CRDATE)
2214 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2215 else if (CollectorsortFlags & SORT_FILENAME)
2216 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2217 else
2218 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2219 if (CollectorsortFlags & SORT_DIRSFIRST)
2220 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2221 else if (CollectorsortFlags & SORT_DIRSLAST)
2222 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2223 if (CollectorsortFlags & SORT_REVERSE)
2224 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2225 return 0;
2226
2227 case WM_CONTROL:
2228 switch (SHORT1FROMMP(mp1)) {
2229 case CFG6_SORTDIRSFIRST:
2230 case CFG6_SORTDIRSLAST:
2231 {
2232 BOOL temp;
2233
2234 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2235 if (temp) {
2236 switch (SHORT1FROMMP(mp1)) {
2237 case CFG6_SORTDIRSFIRST:
2238 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2239 break;
2240 case CFG6_SORTDIRSLAST:
2241 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2242 break;
2243 }
2244 }
2245 }
2246 break;
2247 }
2248 return 0;
2249
2250 case WM_COMMAND:
2251 switch (SHORT1FROMMP(mp1)) {
2252 case IDM_UNDO:
2253 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2254 break;
2255
2256 case DID_CANCEL:
2257 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2258
2259 case DID_OK:
2260 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2261 break;
2262
2263 case IDM_HELP:
2264 if (hwndHelp)
2265 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2266 MPFROM2SHORT(HELP_CFG8, 0), MPFROMSHORT(HM_RESOURCEID));
2267 break;
2268 }
2269 return 0;
2270
2271 case WM_CLOSE:
2272 CollectorsortFlags = 0;
2273 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2274 CollectorsortFlags |= SORT_FILENAME;
2275 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2276 CollectorsortFlags |= SORT_SIZE;
2277 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2278 CollectorsortFlags |= SORT_EASIZE;
2279 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2280 CollectorsortFlags |= SORT_FIRSTEXTENSION;
2281 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2282 CollectorsortFlags |= SORT_LASTEXTENSION;
2283 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2284 CollectorsortFlags |= SORT_LWDATE;
2285 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2286 CollectorsortFlags |= SORT_LADATE;
2287 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2288 CollectorsortFlags |= SORT_CRDATE;
2289 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2290 CollectorsortFlags |= SORT_DIRSFIRST;
2291 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2292 CollectorsortFlags |= SORT_DIRSLAST;
2293 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2294 CollectorsortFlags |= SORT_REVERSE;
2295 PrfWriteProfileData(fmprof,
2296 appname,
2297 "CollectorSort", &CollectorsortFlags, sizeof(INT));
2298 break;
2299 }
2300 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2301}
2302
2303MRESULT EXPENTRY Cfg9DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2304{
2305 switch (msg) {
2306 case WM_INITDLG:
2307 break;
2308
2309 case WM_COMMAND:
2310 switch (SHORT1FROMMP(mp1)) {
2311 case IDM_HELP:
2312 if (hwndHelp)
2313 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2314 MPFROM2SHORT(HELP_CFG9, 0), MPFROMSHORT(HM_RESOURCEID));
2315 return 0;
2316 case CFG9_MAXIMUMUI:
2317 if (hwndMain) {
2318 if (MenuInvisible)
2319 WinSendMsg(hwndMain, WM_COMMAND,
2320 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2321 if (!fAutoView)
2322 WinSendMsg(hwndMain, WM_COMMAND,
2323 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2324 if (!fDrivebar)
2325 WinSendMsg(hwndMain, WM_COMMAND,
2326 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2327 if (!fToolbar)
2328 WinSendMsg(hwndMain, WM_COMMAND,
2329 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2330 if (!fMoreButtons)
2331 WinSendMsg(hwndMain, WM_COMMAND,
2332 MPFROM2SHORT(IDM_MOREBUTTONS, 0), MPVOID);
2333 if (!fUserComboBox)
2334 WinSendMsg(hwndMain, WM_COMMAND,
2335 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2336 }
2337 return 0;
2338 case CFG9_MINIMUMUI:
2339 if (hwndMain) {
2340 if (!MenuInvisible)
2341 WinSendMsg(hwndMain, WM_COMMAND,
2342 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2343 if (fAutoView)
2344 WinSendMsg(hwndMain, WM_COMMAND,
2345 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2346 if (fToolbar)
2347 WinSendMsg(hwndMain, WM_COMMAND,
2348 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2349 if (fMoreButtons)
2350 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2351 MPVOID);
2352 if (fUserComboBox)
2353 WinSendMsg(hwndMain, WM_COMMAND,
2354 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2355 saymsg(MB_ENTER | MB_ICONASTERISK,
2356 hwnd,
2357 GetPString(IDS_DONTFORGETTEXT),
2358 GetPString(IDS_UNHIDEMENUWARNTEXT));
2359 }
2360 return 0;
2361 case CFG9_MAXINFOPRETTY:
2362 fLoadSubject = TRUE;
2363 fLoadLongnames = TRUE;
2364 fNoIconsFiles = FALSE;
2365 fNoIconsDirs = FALSE;
2366 fForceUpper = FALSE;
2367 fForceLower = FALSE;
2368 fArcStuffVisible = TRUE;
2369 fSplitStatus = TRUE;
2370 fDragndropDlg = TRUE;
2371 {
2372 ULONG flWindowAttr;
2373
2374 flWindowAttr = CV_DETAIL | CV_FLOW | CA_DETAILSVIEWTITLES;
2375 PrfWriteProfileData(fmprof,
2376 appname,
2377 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2378 PrfWriteProfileData(fmprof,
2379 appname,
2380 "CollectorflWindowAttr",
2381 &flWindowAttr, sizeof(ULONG));
2382 PrfWriteProfileData(fmprof, appname, "DirCnr.Fontnamesize", NULL, 0);
2383 PrfWriteProfileData(fmprof,
2384 appname, "Collector.Fontnamesize", NULL, 0);
2385 }
2386 detailslongname = TRUE;
2387 detailssubject = TRUE;
2388 detailsea = TRUE;
2389 detailssize = TRUE;
2390 detailsicon = TRUE;
2391 detailslwdate = TRUE;
2392 detailslwtime = TRUE;
2393 detailsladate = TRUE;
2394 detailslatime = TRUE;
2395 detailscrdate = TRUE;
2396 detailscrtime = TRUE;
2397 detailsattr = TRUE;
2398 if (hwndTree) {
2399
2400 CNRINFO cnri;
2401 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
2402
2403 memset(&cnri, 0, sizeof(cnri));
2404 cnri.cb = sizeof(cnri);
2405 WinSendMsg(WinWindowFromID
2406 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2407 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2408 cnri.flWindowAttr = flWindowAttr;
2409 WinSendMsg(WinWindowFromID
2410 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2411 CM_SETCNRINFO, MPFROMP(&cnri),
2412 MPFROMLONG(CMA_FLWINDOWATTR));
2413 }
2414 break;
2415
2416 case CFG9_MAXINFOPLAIN:
2417 fLoadSubject = TRUE;
2418 fLoadLongnames = TRUE;
2419 fNoIconsFiles = TRUE;
2420 fNoIconsDirs = TRUE;
2421 fForceUpper = FALSE;
2422 fForceLower = FALSE;
2423 fArcStuffVisible = TRUE;
2424 fSplitStatus = TRUE;
2425 fDragndropDlg = TRUE;
2426 {
2427 ULONG flWindowAttr;
2428
2429 flWindowAttr = CV_DETAIL | CV_FLOW | CV_MINI;
2430 PrfWriteProfileData(fmprof,
2431 appname,
2432 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2433 PrfWriteProfileData(fmprof,
2434 appname,
2435 "CollectorflWindowAttr",
2436 &flWindowAttr, sizeof(ULONG));
2437 PrfWriteProfileData(fmprof,
2438 appname,
2439 "DirCnr.Fontnamesize",
2440 GetPString(IDS_8HELVTEXT),
2441 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2442 PrfWriteProfileData(fmprof,
2443 appname,
2444 "Collector.Fontnamesize",
2445 GetPString(IDS_8HELVTEXT),
2446 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2447 }
2448 detailslongname = TRUE;
2449 detailssubject = TRUE;
2450 detailsea = TRUE;
2451 detailssize = TRUE;
2452 detailsicon = TRUE;
2453 detailslwdate = TRUE;
2454 detailslwtime = TRUE;
2455 detailsladate = TRUE;
2456 detailslatime = TRUE;
2457 detailscrdate = TRUE;
2458 detailscrtime = TRUE;
2459 detailsattr = TRUE;
2460 if (hwndTree) {
2461
2462 CNRINFO cnri;
2463 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_TEXT |
2464 CV_FLOW | CA_TREELINE;
2465
2466 memset(&cnri, 0, sizeof(cnri));
2467 cnri.cb = sizeof(cnri);
2468 WinSendMsg(WinWindowFromID
2469 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2470 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2471 cnri.flWindowAttr = flWindowAttr;
2472 WinSendMsg(WinWindowFromID
2473 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2474 CM_SETCNRINFO, MPFROMP(&cnri),
2475 MPFROMLONG(CMA_FLWINDOWATTR));
2476 }
2477 break;
2478 case CFG9_MAXFILENAMES:
2479 if (hwndMain && fAutoView)
2480 WinSendMsg(hwndMain, WM_COMMAND,
2481 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2482 fForceUpper = FALSE;
2483 fForceLower = TRUE;
2484 fExternalViewer = TRUE;
2485 fExternalArcboxes = TRUE;
2486 fExternalCollector = TRUE;
2487 fExternalINIs = TRUE;
2488 fLoadSubject = FALSE;
2489 fLoadLongnames = FALSE;
2490 fNoIconsFiles = TRUE;
2491 fNoIconsDirs = TRUE;
2492 {
2493 ULONG flWindowAttr;
2494
2495 flWindowAttr = CV_TEXT | CV_FLOW;
2496 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2497 &flWindowAttr, sizeof(ULONG));
2498 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2499 &flWindowAttr, sizeof(ULONG));
2500 PrfWriteProfileData(fmprof, appname, "DirCnr.Fontnamesize",
2501 GetPString(IDS_8HELVTEXT),
2502 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2503 PrfWriteProfileData(fmprof, appname, "Collector.Fontnamesize",
2504 GetPString(IDS_8HELVTEXT),
2505 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2506 }
2507 if (hwndTree) {
2508
2509 CNRINFO cnri;
2510 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
2511
2512 memset(&cnri, 0, sizeof(cnri));
2513 cnri.cb = sizeof(cnri);
2514 WinSendMsg(WinWindowFromID
2515 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2516 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2517 cnri.flWindowAttr = flWindowAttr;
2518 WinSendMsg(WinWindowFromID
2519 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2520 CM_SETCNRINFO, MPFROMP(&cnri),
2521 MPFROMLONG(CMA_FLWINDOWATTR));
2522 }
2523 break;
2524 case CFG9_MAXSPEED:
2525 fLoadSubject = FALSE;
2526 fLoadLongnames = FALSE;
2527 fVerify = FALSE;
2528 DosSetVerify(FALSE);
2529 FilesToGet = FILESTOGET_MAX;
2530 fQuickArcFind = TRUE;
2531 fMinOnOpen = TRUE;
2532 fRealIdle = FALSE;
2533 fNoIconsFiles = TRUE;
2534 fNoIconsDirs = TRUE;
2535 fSyncUpdates = FALSE;
2536 fArcStuffVisible = FALSE;
2537 fForceUpper = FALSE;
2538 fForceLower = FALSE;
2539 detailslongname = FALSE;
2540 detailssubject = FALSE;
2541 break;
2542
2543 case CFG9_HECTOR:
2544 fSwitchTree = TRUE;
2545 fSwitchTreeOnFocus = FALSE;
2546 fSwitchTreeExpand = TRUE;
2547 fCollapseFirst = TRUE;
2548 fSelectedAlways = FALSE;
2549 fTileBackwards = FALSE;
2550 fExternalViewer = FALSE;
2551 fExternalArcboxes = TRUE;
2552 fExternalCollector = FALSE;
2553 fExternalINIs = TRUE;
2554 fCopyDefault = FALSE;
2555 fFollowTree = FALSE;
2556 fLoadSubject = FALSE;
2557 fLoadLongnames = FALSE;
2558 fDontMoveMouse = FALSE;
2559 fUnHilite = TRUE;
2560 fUserListSwitches = TRUE;
2561 fDCOpens = FALSE;
2562 fLinkSetsIcon = FALSE;
2563 fConfirmDelete = TRUE;
2564 fSyncUpdates = FALSE;
2565 fRealIdle = FALSE;
2566 fNoIconsFiles = FALSE;
2567 fNoIconsDirs = TRUE;
2568 fFolderAfterExtract = FALSE;
2569 fVerify = TRUE;
2570 DosSetVerify(TRUE);
2571 fForceUpper = FALSE;
2572 fForceLower = TRUE;
2573 fArcStuffVisible = FALSE;
2574 fVTreeOpensWPS = FALSE;
2575 fRemoteBug = FALSE;
2576 fDragndropDlg = TRUE;
2577 fMinOnOpen = FALSE;
2578 fQuickArcFind = TRUE;
2579 fNoRemovableScan = TRUE;
2580 FilesToGet = FILESTOGET_MIN;
2581 fFreeTree = FALSE;
2582 fSplitStatus = TRUE;
2583 fAutoTile = TRUE;
2584 fSaveState = TRUE;
2585 fStartMinimized = FALSE;
2586 fStartMaximized = FALSE;
2587 fDataMin = FALSE;
2588 ulCnrType = CCS_EXTENDSEL | CCS_MULTIPLESEL;
2589 fNoTreeGap = TRUE;
2590 {
2591 ULONG flWindowAttr;
2592
2593 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
2594 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2595 &flWindowAttr, sizeof(ULONG));
2596 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2597 &flWindowAttr, sizeof(ULONG));
2598 }
2599 detailslongname = FALSE;
2600 detailssubject = FALSE;
2601 detailsea = TRUE;
2602 detailssize = TRUE;
2603 detailsicon = TRUE;
2604 detailslwdate = TRUE;
2605 detailslwtime = TRUE;
2606 detailsladate = FALSE;
2607 detailslatime = FALSE;
2608 detailscrdate = FALSE;
2609 detailscrtime = FALSE;
2610 detailsattr = TRUE;
2611 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2612 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2613 if (hwndMain) {
2614
2615 SWP swp;
2616
2617 if (WinQueryWindowPos(hwndMain, &swp)) {
2618 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2619 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2620 }
2621 }
2622 if (hwndMain) {
2623 if (MenuInvisible)
2624 WinSendMsg(hwndMain, WM_COMMAND,
2625 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2626 if (fAutoView)
2627 WinSendMsg(hwndMain, WM_COMMAND,
2628 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2629 if (fToolbar)
2630 WinSendMsg(hwndMain, WM_COMMAND,
2631 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2632 if (!fDrivebar)
2633 WinSendMsg(hwndMain, WM_COMMAND,
2634 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2635 if (!fMoreButtons)
2636 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2637 MPVOID);
2638 if (!fUserComboBox)
2639 WinSendMsg(hwndMain, WM_COMMAND,
2640 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2641 }
2642 if (hwndTree) {
2643
2644 CNRINFO cnri;
2645 ULONG flWindowAttr = (CV_TREE | CV_TEXT | CV_MINI |
2646 CV_FLOW | CA_TREELINE);
2647
2648 memset(&cnri, 0, sizeof(cnri));
2649 cnri.cb = sizeof(cnri);
2650 WinSendMsg(WinWindowFromID
2651 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2652 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2653 cnri.flWindowAttr = flWindowAttr;
2654 WinSendMsg(WinWindowFromID
2655 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2656 CM_SETCNRINFO, MPFROMP(&cnri),
2657 MPFROMLONG(CMA_FLWINDOWATTR));
2658 }
2659 break;
2660
2661 case CFG9_DEFAULT:
2662 fSwitchTree = FALSE;
2663 fSwitchTreeOnFocus = FALSE;
2664 fSwitchTreeExpand = FALSE;
2665 fCollapseFirst = FALSE;
2666 fSelectedAlways = FALSE;
2667 fTileBackwards = FALSE;
2668 fExternalViewer = FALSE;
2669 fExternalArcboxes = FALSE;
2670 fExternalCollector = FALSE;
2671 fExternalINIs = FALSE;
2672 fCopyDefault = FALSE;
2673 fFollowTree = FALSE;
2674 fLoadSubject = TRUE;
2675 fLoadLongnames = TRUE;
2676 fDontMoveMouse = FALSE;
2677 fUnHilite = TRUE;
2678 fUserListSwitches = FALSE;
2679 fDCOpens = FALSE;
2680 fLinkSetsIcon = FALSE;
2681 fConfirmDelete = TRUE;
2682 fSyncUpdates = FALSE;
2683 fRealIdle = FALSE;
2684 fNoIconsFiles = FALSE;
2685 fNoIconsDirs = FALSE;
2686 fFolderAfterExtract = FALSE;
2687 fVerify = TRUE;
2688 fNoSearch = TRUE;
2689 DosSetVerify(TRUE);
2690 fForceUpper = FALSE;
2691 fForceLower = TRUE;
2692 fArcStuffVisible = TRUE;
2693 fVTreeOpensWPS = FALSE;
2694 fRemoteBug = TRUE;
2695 fDragndropDlg = TRUE;
2696 fMinOnOpen = FALSE;
2697 fQuickArcFind = TRUE;
2698 fNoRemovableScan = FALSE;
2699 FilesToGet = FILESTOGET_MAX;
2700 fFreeTree = FALSE;
2701 fSplitStatus = TRUE;
2702 fAutoTile = TRUE;
2703 fSaveState = TRUE;
2704 fStartMinimized = FALSE;
2705 fStartMaximized = FALSE;
2706 fDataMin = TRUE;
2707 ulCnrType = CCS_EXTENDSEL;
2708 fNoTreeGap = FALSE;
2709 {
2710 ULONG flWindowAttr;
2711
2712 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
2713 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2714 &flWindowAttr, sizeof(ULONG));
2715 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2716 &flWindowAttr, sizeof(ULONG));
2717 }
2718 detailslongname = FALSE;
2719 detailssubject = FALSE;
2720 detailsea = TRUE;
2721 detailssize = TRUE;
2722 detailsicon = TRUE;
2723 detailslwdate = TRUE;
2724 detailslwtime = TRUE;
2725 detailsladate = FALSE;
2726 detailslatime = FALSE;
2727 detailscrdate = FALSE;
2728 detailscrtime = FALSE;
2729 detailsattr = TRUE;
2730 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2731 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2732 if (hwndMain) {
2733
2734 SWP swp;
2735
2736 if (WinQueryWindowPos(hwndMain, &swp)) {
2737 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2738 swp.cx / 5,
2739 swp.cy -
2740 (WinQuerySysValue(HWND_DESKTOP, SV_CYICON) * 2),
2741 SWP_MOVE | SWP_SIZE);
2742 }
2743 }
2744 if (hwndTree) {
2745
2746 CNRINFO cnri;
2747 ULONG flWindowAttr = (CV_TREE | CV_TEXT |
2748 CV_FLOW | CA_TREELINE | CV_MINI);
2749
2750 memset(&cnri, 0, sizeof(cnri));
2751 cnri.cb = sizeof(cnri);
2752 WinSendMsg(WinWindowFromID
2753 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2754 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2755 cnri.flWindowAttr = flWindowAttr;
2756 WinSendMsg(WinWindowFromID
2757 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2758 CM_SETCNRINFO, MPFROMP(&cnri),
2759 MPFROMLONG(CMA_FLWINDOWATTR));
2760 }
2761 break;
2762
2763 case CFG9_WINDOZETHINK:
2764 fTileBackwards = FALSE;
2765 ulCnrType = CCS_MULTIPLESEL;
2766 fFollowTree = TRUE;
2767 fTopDir = FALSE;
2768 fSwitchTree = TRUE;
2769 fSwitchTreeOnFocus = FALSE;
2770 fSwitchTreeExpand = TRUE;
2771 fCollapseFirst = TRUE;
2772 fDCOpens = FALSE;
2773 {
2774 ULONG flWindowAttr;
2775
2776 flWindowAttr = CV_NAME | CV_FLOW | CA_DETAILSVIEWTITLES;
2777 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2778 &flWindowAttr, sizeof(ULONG));
2779 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2780 &flWindowAttr, sizeof(ULONG));
2781 }
2782 fLinkSetsIcon = FALSE;
2783 fFreeTree = FALSE;
2784 fNoTreeGap = TRUE;
2785 fExternalArcboxes = TRUE;
2786 fExternalViewer = TRUE;
2787 fExternalCollector = TRUE;
2788 fExternalINIs = TRUE;
2789 fUserListSwitches = TRUE;
2790 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
2791 MPVOID);
2792 if (hwndTree) {
2793
2794 CNRINFO cnri;
2795 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_ICON |
2796 CV_FLOW | CA_TREELINE;
2797
2798 memset(&cnri, 0, sizeof(cnri));
2799 cnri.cb = sizeof(cnri);
2800 WinSendMsg(WinWindowFromID
2801 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2802 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2803 cnri.flWindowAttr = flWindowAttr;
2804 WinSendMsg(WinWindowFromID
2805 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2806 CM_SETCNRINFO, MPFROMP(&cnri),
2807 MPFROMLONG(CMA_FLWINDOWATTR));
2808 }
2809 if (hwndMain) {
2810 if (fAutoView)
2811 WinSendMsg(hwndMain, WM_COMMAND,
2812 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2813 if (!fDrivebar)
2814 WinSendMsg(hwndMain, WM_COMMAND,
2815 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2816 {
2817 SWP swp;
2818
2819 if (WinQueryWindowPos(hwndMain, &swp)) {
2820 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2821 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2822 }
2823 }
2824 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
2825 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1L), MPVOID);
2826 }
2827 return 0;
2828
2829 case CFG9_DOSTHINK:
2830 fTileBackwards = TRUE;
2831 ulCnrType = CCS_MULTIPLESEL;
2832 fSwitchTree = TRUE;
2833 fSwitchTreeOnFocus = FALSE;
2834 fSwitchTreeExpand = TRUE;
2835 fCollapseFirst = TRUE;
2836 fFollowTree = TRUE;
2837 fTopDir = FALSE;
2838 if (hwndMain) {
2839 if (!fTextTools)
2840 WinSendMsg(hwndMain, WM_COMMAND,
2841 MPFROM2SHORT(IDM_TEXTTOOLS, 0), MPVOID);
2842 }
2843 {
2844 ULONG flWindowAttr;
2845
2846 flWindowAttr = CV_TEXT | CV_FLOW | CA_DETAILSVIEWTITLES;
2847 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2848 &flWindowAttr, sizeof(ULONG));
2849 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2850 &flWindowAttr, sizeof(ULONG));
2851 }
2852 if (hwndTree) {
2853
2854 CNRINFO cnri;
2855 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
2856
2857 memset(&cnri, 0, sizeof(cnri));
2858 cnri.cb = sizeof(cnri);
2859 WinSendMsg(WinWindowFromID
2860 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2861 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2862 cnri.flWindowAttr = flWindowAttr;
2863 WinSendMsg(WinWindowFromID
2864 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2865 CM_SETCNRINFO, MPFROMP(&cnri),
2866 MPFROMLONG(CMA_FLWINDOWATTR));
2867 }
2868 /* intentional fallthru */
2869 case CFG9_1X:
2870 if (SHORT1FROMMP(mp1) == CFG9_1X) {
2871 fTileBackwards = FALSE;
2872 ulCnrType = CCS_MULTIPLESEL | CCS_EXTENDSEL;
2873 fSwitchTree = FALSE;
2874 fSwitchTreeOnFocus = FALSE;
2875 fSwitchTreeExpand = FALSE;
2876 fCollapseFirst = FALSE;
2877 fFollowTree = FALSE;
2878 fNoSearch = TRUE;
2879 }
2880 fAutoTile = TRUE;
2881 fSaveState = TRUE;
2882 fDCOpens = FALSE;
2883 fLinkSetsIcon = FALSE;
2884 fFreeTree = FALSE;
2885 fNoTreeGap = TRUE;
2886 fExternalArcboxes = TRUE;
2887 fExternalViewer = TRUE;
2888 fExternalCollector = TRUE;
2889 fExternalINIs = TRUE;
2890 fUserListSwitches = TRUE;
2891 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
2892 MPVOID);
2893 if (hwndTree) {
2894
2895 CNRINFO cnri;
2896 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
2897
2898 memset(&cnri, 0, sizeof(cnri));
2899 cnri.cb = sizeof(cnri);
2900 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
2901 TREE_CNR),
2902 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2903 cnri.flWindowAttr = flWindowAttr;
2904 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
2905 TREE_CNR),
2906 CM_SETCNRINFO,
2907 MPFROMP(&cnri), MPFROMLONG(CMA_FLWINDOWATTR));
2908 }
2909 if (hwndMain) {
2910 if (fAutoView)
2911 WinSendMsg(hwndMain, WM_COMMAND,
2912 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2913 if (fUserComboBox)
2914 WinSendMsg(hwndMain, WM_COMMAND,
2915 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2916 {
2917 SWP swp;
2918
2919 if (WinQueryWindowPos(hwndMain, &swp)) {
2920 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2921 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2922 }
2923 }
2924 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
2925 PostMsg(MainObjectHwnd, UM_SETDIR, MPVOID, MPVOID);
2926 }
2927 return 0;
2928
2929 case DID_CANCEL:
2930 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2931
2932 case DID_OK:
2933 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2934 return 0;
2935
2936 default:
2937 return 0;
2938 }
2939 PrfWriteProfileData(fmprof, appname, "DetailsLongname",
2940 &detailslongname, sizeof(BOOL));
2941// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname",
2942// JBS &detailslongname, sizeof(BOOL));
2943 PrfWriteProfileData(fmprof, appname, "DetailsSubject",
2944 &detailssubject, sizeof(BOOL));
2945// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject",
2946// JBS &detailssubject, sizeof(BOOL));
2947 PrfWriteProfileData(fmprof, appname, "DetailsEA",
2948 &detailsea, sizeof(BOOL));
2949// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA",
2950// JBS &detailsea, sizeof(BOOL));
2951 PrfWriteProfileData(fmprof, appname, "DetailsSize",
2952 &detailssize, sizeof(BOOL));
2953// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize",
2954// JBS &detailssize, sizeof(BOOL));
2955 PrfWriteProfileData(fmprof, appname, "DetailsIcon",
2956 &detailsicon, sizeof(BOOL));
2957// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon",
2958// JBS &detailsicon, sizeof(BOOL));
2959 PrfWriteProfileData(fmprof, appname, "DetailsLWDate",
2960 &detailslwdate, sizeof(BOOL));
2961// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate",
2962// JBS &detailslwdate, sizeof(BOOL));
2963 PrfWriteProfileData(fmprof, appname, "DetailsLWTime",
2964 &detailslwtime, sizeof(BOOL));
2965// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime",
2966// JBS &detailslwtime, sizeof(BOOL));
2967 PrfWriteProfileData(fmprof, appname, "DetailsLADate",
2968 &detailsladate, sizeof(BOOL));
2969// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate",
2970// JBS &detailsladate, sizeof(BOOL));
2971 PrfWriteProfileData(fmprof, appname, "DetailsLATime",
2972 &detailslatime, sizeof(BOOL));
2973// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime",
2974// JBS &detailslatime, sizeof(BOOL));
2975 PrfWriteProfileData(fmprof, appname, "DetailsCRDate",
2976 &detailscrdate, sizeof(BOOL));
2977// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate",
2978// JBS &detailscrdate, sizeof(BOOL));
2979 PrfWriteProfileData(fmprof, appname, "DetailsCRTime",
2980 &detailscrtime, sizeof(BOOL));
2981// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime",
2982// JBS &detailscrtime, sizeof(BOOL));
2983 PrfWriteProfileData(fmprof, appname, "DetailsAttr",
2984 &detailsattr, sizeof(BOOL));
2985// JBS PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr",
2986// JBS &detailsattr, sizeof(BOOL));
2987 if (hwndMain) {
2988 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
2989 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
2990 PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
2991 }
2992 }
2993 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
2994 UM_UNDO, MPVOID, MPVOID);
2995 return 0;
2996
2997 case WM_CLOSE:
2998 break;
2999 }
3000 return WinDefDlgProc(hwnd, msg, mp1, mp2);
3001}
3002
3003struct
3004{
3005 USHORT usMenuId;
3006 USHORT usFrameId;
3007 ULONG ulTitle;
3008 PFNWP pfnPageProc;
3009 HWND hwnd;
3010 ULONG ulHelpId;
3011 ULONG ulPageId;
3012} np[] = {
3013 { IDM_DIRCNRSETTINGS, CFGD_FRAME, IDS_NOTEDIRCNRS1TEXT, CfgDDlgProc, 0, 0, 0 },
3014 { 0, CFG5_FRAME, IDS_NOTEDIRVIEW1TEXT, Cfg5DlgProc, 0, 0, 0},
3015 { 0, CFG6_FRAME, IDS_NOTEDIRSORT1TEXT, Cfg6DlgProc, 0, 0, 0 },
3016 { IDM_COLLECTORSETTINGS, CFG5_FRAME, IDS_NOTECOLVIEW1TEXT, Cfg7DlgProc, 0, 0, 0 },
3017 { 0, CFG6_FRAME, IDS_NOTECOLSORT1TEXT, Cfg8DlgProc, 0, 0, 0 },
3018 { IDM_ARCHIVERSETTINGS, CFGA_FRAME, IDS_NOTEARCHIVER1TEXT, CfgADlgProc, 0, 0, 0 },
3019 { 0, CFGT_FRAME, IDS_NOTETREE1TEXT, CfgTDlgProc, 0, 0, 0 },
3020 { 0, CFGTS_FRAME, IDS_NOTETREESORT1TEXT, CfgTSDlgProc, 0, 0, 0 },
3021 { 0, CFGV_FRAME, IDS_NOTEVIEWERS1TEXT, CfgVDlgProc, 0, 0, 0 },
3022 { IDM_VIEWERSETTINGS, CFGH_FRAME, IDS_NOTEVIEWERS3TEXT, CfgHDlgProc, 0, 0, 0 },
3023 { IDM_COMPARESETTINGS, CFGC_FRAME, IDS_NOTECOMPARE1TEXT, CfgCDlgProc, 0, 0, 0 },
3024 { 0, CFGM_FRAME, IDS_NOTEMONOLITHIC1TEXT, CfgMDlgProc, 0, 0, 0 },
3025 { 0, CFGG_FRAME, IDS_NOTEGENERAL1TEXT, CfgGDlgProc, 0, 0, 0 },
3026 { 0, CFGS_FRAME, IDS_NOTESCANNING1TEXT, CfgSDlgProc, 0, 0, 0 },
3027 { 0, CFGB_FRAME, IDS_NOTEBUBBLE1TEXT, CfgBDlgProc, 0, 0, 0 },
3028 { IDM_QUICKSETTINGS, CFG9_FRAME, IDS_NOTEQUICK1TEXT, Cfg9DlgProc, 0, 0, 0 },
3029 { 0, 0, 0, NULL, 0, 0, 0 } // usFrameId 0 is end marker
3030};
3031
3032MRESULT EXPENTRY CfgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
3033{
3034 HWND hwndTemp;
3035 USHORT attrib = BKA_FIRST;
3036 INT x;
3037 ULONG ulPageId;
3038 ULONG ulSize;
3039
3040 static PSZ pszIK_LastSettingsPage = "LastSettingsPage";
3041 static BOOL fInitDone;
3042
3043 static UINT uLastPageIndex;
3044
3045 switch (msg) {
3046 case WM_INITDLG:
3047 hwndNotebook = hwnd;
3048 if (!fInitDone) {
3049 ulSize = sizeof(uLastPageIndex);
3050 PrfQueryProfileData(fmprof, appname, pszIK_LastSettingsPage, &uLastPageIndex, &ulSize);
3051 fInitDone = TRUE;
3052 }
3053 if (mp2) {
3054 // If fm/2 lite drop quick setting page
3055 if (mp2 == MPFROMLONG(IDM_LITESETTINGS)) {
3056 x = 0;
3057 while (np[x].usFrameId && np[x].usFrameId != CFG9_FRAME)
3058 x++;
3059 np[x].usFrameId = 0;
3060 mp2 = 0;
3061 }
3062 }
3063 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
3064 WinSendDlgItemMsg(hwnd,
3065 CFG_NOTEBOOK,
3066 BKM_SETDIMENSIONS,
3067 MPFROM2SHORT(82, 24), MPFROMLONG(BKA_MAJORTAB));
3068 WinSendDlgItemMsg(hwnd,
3069 CFG_NOTEBOOK,
3070 BKM_SETDIMENSIONS,
3071 MPFROM2SHORT(20, 20), MPFROMLONG(BKA_PAGEBUTTON));
3072 WinSendDlgItemMsg(hwnd,
3073 CFG_NOTEBOOK,
3074 BKM_SETDIMENSIONS,
3075 MPFROM2SHORT(0, 0), MPFROMLONG(BKA_MINORTAB));
3076 for (x = 0; np[x].usFrameId; x++) {
3077 hwndTemp = WinLoadDlg(HWND_DESKTOP,
3078 HWND_DESKTOP,
3079 np[x].pfnPageProc, FM3ModHandle, np[x].usFrameId, MPVOID);
3080 if (!hwndTemp) {
3081 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
3082 "Can not load settings page %u", x);
3083 }
3084 else {
3085 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG)hwnd);
3086 np[x].hwnd = hwndTemp;
3087 np[x].ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3088 CFG_NOTEBOOK,
3089 BKM_INSERTPAGE,
3090 MPFROMLONG(BKA_FIRST),
3091 MPFROM2SHORT(BKA_AUTOPAGESIZE |
3092 BKA_STATUSTEXTON |
3093 BKA_MAJOR, attrib));
3094 attrib = BKA_LAST;
3095 WinSendDlgItemMsg(hwnd,
3096 CFG_NOTEBOOK,
3097 BKM_SETPAGEWINDOWHWND,
3098 MPFROMLONG(np[x].ulPageId), MPFROMLONG(np[x].hwnd));
3099 WinSendDlgItemMsg(hwnd,
3100 CFG_NOTEBOOK,
3101 BKM_SETTABTEXT,
3102 MPFROMLONG(np[x].ulPageId),
3103 MPFROMP(GetPString(np[x].ulTitle)));
3104 WinSendDlgItemMsg(hwnd,
3105 CFG_NOTEBOOK,
3106 BKM_SETSTATUSLINETEXT,
3107 MPFROMLONG(np[x].ulPageId),
3108 MPFROMP(GetPString(np[x].ulTitle + 1)));
3109 if (LONGFROMMP(mp2) == np[x].usMenuId) {
3110 uLastPageIndex = x;
3111 }
3112 }
3113 } // for
3114 // If quick settings page requested, assume request is for first time init
3115 // Turn to cfg page and show help
3116 // Page will not be available if running fm/2 lite or if load error
3117 if (mp2 == MPFROMLONG(IDM_QUICKSETTINGS) &&
3118 x-- > 0 && np[x].hwnd && np[x].usFrameId == CFG9_FRAME) {
3119 // 10 Jan 08 SHL fixme to document what UM_SETDIR 1 means
3120 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1), MPVOID);
3121 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3122 BKM_TURNTOPAGE, MPFROMLONG(np[x].ulPageId), MPVOID);
3123 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x].hwnd), MPVOID);
3124 PostMsg(np[x].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
3125 }
3126 else {
3127 if (uLastPageIndex >= x) {
3128 Runtime_Error(pszSrcFile, __LINE__, "uLastPageIndex corrupted (%u)",
3129 uLastPageIndex);
3130 uLastPageIndex = 0;
3131 }
3132 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3133 BKM_TURNTOPAGE, MPFROMLONG(np[uLastPageIndex].ulPageId), MPVOID);
3134 }
3135
3136 break;
3137
3138 case UM_FOCUSME:
3139 if (mp1)
3140 WinSetActiveWindow(HWND_DESKTOP, (HWND) mp1);
3141 break;
3142
3143 case WM_CONTROL:
3144 switch (SHORT1FROMMP(mp1)) {
3145 case CFG_NOTEBOOK:
3146 switch (SHORT2FROMMP(mp1)) {
3147 case BKN_PAGESELECTED:
3148 if (mp2) {
3149 PAGESELECTNOTIFY *psn = mp2;
3150 ULONG id = psn->ulPageIdNew;
3151 UINT x;
3152 for (x = 0; np[x].usFrameId; x++) {
3153 if (np[x].ulPageId == id) {
3154 uLastPageIndex = x; // Found it
3155 break;
3156 }
3157 }
3158 }
3159 } // switch BKN
3160 break;
3161 } // switch page
3162 return 0;
3163
3164 case UM_SETUP:
3165 WinSetActiveWindow(HWND_DESKTOP, WinQueryWindow(hwnd, QW_OWNER));
3166 WinSetActiveWindow(HWND_DESKTOP, hwnd);
3167 return 0;
3168
3169 case WM_COMMAND:
3170 switch (SHORT1FROMMP(mp1)) {
3171 case DID_OK:
3172 WinDismissDlg(hwnd, 1);
3173 break;
3174
3175 case DID_CANCEL:
3176 // Tell current page to undo itself in case changed and still alive
3177 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
3178 CFG_NOTEBOOK,
3179 BKM_QUERYPAGEID,
3180 MPFROMLONG(0),
3181 MPFROM2SHORT(BKA_TOP, 0));
3182 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3183 CFG_NOTEBOOK,
3184 BKM_QUERYPAGEWINDOWHWND,
3185 MPFROMLONG(ulPageId), MPVOID);
3186 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage,
3187 (PVOID)&uLastPageIndex, sizeof(uLastPageIndex));
3188 if (hwndTemp)
3189 WinSendMsg(hwndTemp, UM_UNDO, MPVOID, MPVOID);
3190
3191 WinDismissDlg(hwnd, 0);
3192 break;
3193
3194 case IDM_HELP: /* relay message to appropriate page's window */
3195 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
3196 CFG_NOTEBOOK,
3197 BKM_QUERYPAGEID,
3198 MPFROMLONG(0),
3199 MPFROM2SHORT(BKA_TOP, 0));
3200 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3201 CFG_NOTEBOOK,
3202 BKM_QUERYPAGEWINDOWHWND,
3203 MPFROMLONG(ulPageId), MPVOID);
3204 if (hwndTemp)
3205 PostMsg(hwndTemp, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
3206 break;
3207 }
3208 return 0;
3209
3210 case UM_UNDO:
3211 for (x = 0; np[x].usFrameId; x++) {
3212 if (np[x].hwnd)
3213 WinSendMsg(np[x].hwnd, UM_UNDO, MPVOID, MPVOID);
3214 }
3215 break;
3216
3217 case WM_DESTROY:
3218 if (np[0].usFrameId) {
3219 for (x = 1; np[x].usFrameId; x++) {
3220 if (np[x].hwnd) {
3221 WinSendMsg(np[x].hwnd, WM_CLOSE, MPVOID, MPVOID);
3222 np[x].hwnd = (HWND) 0;
3223 np[x].ulPageId = 0;
3224 }
3225 }
3226 WinSendMsg(np[0].hwnd, WM_CLOSE, MPVOID, MPVOID);
3227 np[0].hwnd = (HWND) 0;
3228 np[0].ulPageId = 0;
3229 }
3230 hwndNotebook = (HWND) 0;
3231 break;
3232 case WM_CLOSE:
3233 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage,
3234 (PVOID)&uLastPageIndex, sizeof(uLastPageIndex));
3235 break;
3236 }
3237 return WinDefDlgProc(hwnd, msg, mp1, mp2);
3238}
3239
3240#pragma alloc_text(NOTEBOOK,CfgTDlgProc,CfgTSDlgProc,CfgMDlgProc)
3241#pragma alloc_text(NOTEBOOK2,CfgADlgProc,CfgSDlgProc,CfgVDlgProc,CfgHDlgProc)
3242#pragma alloc_text(NOTEBOOK3,CfgDDlgProc,Cfg5DlgProc,Cfg6DlgProc)
3243#pragma alloc_text(NOTEBOOK4,Cfg7DlgProc,Cfg8DlgProc,CfgCDlgProc)
3244#pragma alloc_text(NOTEBOOK5,CfgGDlgProc,CfgDlgProc,CfgBDlgProc)
3245
Note: See TracBrowser for help on using the repository browser.