source: trunk/dll/notebook.c@ 1096

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

Enviroment changesbacked out before 3.12 release. Ned to fix trap

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