source: trunk/dll/notebook.c@ 1080

Last change on this file since 1080 was 1080, checked in by John Small, 17 years ago

Ticket 197: Support accelerator keys in setting dialogs.

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