source: trunk/dll/notebook.c@ 898

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

Add option to not use <mailto:> wrapper (it doesn't work with the old pmmail); Cleanup of mailrun code; Replaced dunno.ico with a new version from David

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