source: trunk/dll/notebook.c@ 922

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

Get Subjectwidth/left working in the collector

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