source: trunk/dll/notebook.c@ 1103

Last change on this file since 1103 was 1103, checked in by Gregg Young, 17 years ago

Make sure pszTemp is freed on PostMsg failure

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