source: trunk/dll/notebook.c@ 920

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

Cleanup of NormalizeCmdLine moved to pathutil.c

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