source: trunk/dll/notebook.c@ 917

Last change on this file since 917 was 917, checked in by Steven Levine, 18 years ago

Correct/enhance settings notebook navigation, ticket #188 (Steven)
Reopen settings notebook to last selected page unless overridden, ticket #188 (Steven)
More Compare Directory overflow tweaks (Steven)

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