source: trunk/dll/notebook.c@ 940

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

Minor cleanup, added comments and History for recent changes

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