source: trunk/dll/notebook.c@ 892

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

Dialog and menu changes for mailrun and use of WPURLDEFAULTSETTINGS for runftp and runhttp if not supplied by user (libpathstrict option added)

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