source: trunk/dll/notebook.c@ 896

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

Add LIBPATHSTRICT option for mailto

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