source: trunk/dll/notebook.c@ 908

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

Avoid out of memory traps in Compare Directories
Rework Compare Directories progress display for 2 second update rate
Start refactoring to reduce dependence on fm3dll.h
Add timer services (IsITimerExpired etc.)

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