source: trunk/dll/notebook.c@ 906

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

The basic program quoting code and some mailto cleanup.

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