source: trunk/dll/notebook.c@ 911

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

Commenting, help file, history update for recent changes; Minor clean up.

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