source: trunk/dll/notebook.c@ 1083

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

Ticket 114: Support user-selectable env. strings in Tree container.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 121.4 KB
Line 
1
2/***********************************************************************
3
4 $Id: notebook.c 1083 2008-07-20 15:31:07Z jbs $
5
6 Configuration notebook
7
8 Copyright (c) 1993-98 M. Kimes
9 Copyright (c) 2004, 2008 Steven H. Levine
10
11 01 Aug 04 SHL Rework lstrip/rstrip usage
12 23 May 05 SHL Use QWL_USER
13 04 Jun 05 SHL Support Cancel button; make Esc key more consistent
14 29 May 06 SHL Comments
15 17 Jul 06 SHL Use Runtime_Error
16 15 Aug 06 SHL Rework SetMask args
17 03 Aug 07 GKY Enlarged and made setable everywhere Findbuf (speed file loading)
18 13 Aug 07 SHL Move #pragma alloc_text to end for OpenWatcom compat
19 13 Aug 07 SHL Rework FilesToGet min/max to match how DosFindFirst/Next works
20 19 Aug 07 SHL Sync with SaveDirCnrState mods
21 21 Aug 07 GKY Make Subject column in dircnr sizable and movable from the rigth to the left pane
22 26 Nov 07 GKY Allow a currently nonvalid path in the ext path field with warning
23 06 Jan 08 GKY Use NormalizeCmdLine to check program strings on entry
24 10 Jan 08 SHL Remember last settings page
25 10 Jan 08 SHL Rework page select logic
26 13 Jan 08 GKY Get Subjectwidth/Subjectleft working in the collector.
27 19 Jan 08 JBS Ticket 150: fix/improve save and restore of dir cnr state at FM/2 close/reopen
28 15 Feb 08 SHL Rework to support settings menu conditional cascade. Make more generic
29 16 Feb 08 SHL Restore SaveDirCnrState internal state save logic - accidentally removed
30 22 Feb 08 JBS Ticket 230: Fix/improve various code related to state or presparam values in the INI file.
31 29 Feb 08 GKY Changes to enable user settable command line length
32 08 Mar 08 JBS Ticket 230: Replace prefixless INI keys for default directory containers with
33 keys using a "DirCnr." prefix
34 06 Jul 08 GKY Update delete/undelete to include move to and open XWP trashcan
35 11 Jul 08 JBS Ticket 230: Simplified code and eliminated some local variables by incorporating
36 all the details view settings (both the global variables and those in the
37 DIRCNRDATA struct) into a new struct: DETAILS_SETTINGS.
38 19 Jul 08 JBS Ticket 197: Support accelerator keys in setting dialogs.
39 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 switch (msg) {
1171 case WM_INITDLG:
1172 WinSendDlgItemMsg(hwnd, CFGT_ENVVARLIST, EM_SETTEXTLIMIT,
1173 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
1174 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1175 break;
1176
1177 case UM_UNDO:
1178 WinCheckButton(hwnd, CFGT_FOLLOWTREE, fFollowTree);
1179 WinCheckButton(hwnd, CFGT_TOPDIR, fTopDir);
1180 WinCheckButton(hwnd, CFGT_DCOPENS, fDCOpens);
1181 WinCheckButton(hwnd, CFGT_VTREEOPENSWPS, fVTreeOpensWPS);
1182 WinCheckButton(hwnd, CFGT_COLLAPSEFIRST, fCollapseFirst);
1183 WinCheckButton(hwnd, CFGT_SWITCHTREEONFOCUS, fSwitchTreeOnFocus);
1184 WinCheckButton(hwnd, CFGT_SWITCHTREE, fSwitchTree);
1185 WinCheckButton(hwnd, CFGT_SWITCHTREEEXPAND, fSwitchTreeExpand);
1186 WinCheckButton(hwnd, CFGT_SHOWENV, fShowEnv);
1187 WinSetDlgItemText(hwnd, CFGT_ENVVARLIST, pszTreeEnvVarList);
1188 return 0;
1189
1190 case WM_HELP:
1191 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1192 break;
1193
1194 case WM_CHAR:
1195 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1196 switch (CHARMSG(&msg)->vkey) {
1197 case VK_F3:
1198 case VK_ENTER:
1199 case VK_NEWLINE:
1200 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1201 return 0;
1202 break;
1203 case VK_ESC:
1204 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1205 return 0;
1206 break;
1207 case VK_F1:
1208 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1209 return 0;
1210 break;
1211 }
1212 }
1213 break;
1214
1215 case WM_COMMAND:
1216 switch (SHORT1FROMMP(mp1)) {
1217 case IDM_UNDO:
1218 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1219 break;
1220
1221 case DID_CANCEL:
1222 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1223
1224 case DID_OK:
1225 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1226 break;
1227
1228 case IDM_HELP:
1229 if (hwndHelp)
1230 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1231 MPFROM2SHORT(HELP_CFGT, 0), MPFROMSHORT(HM_RESOURCEID));
1232 break;
1233 }
1234 return 0;
1235
1236 case WM_CLOSE:
1237 fVTreeOpensWPS = WinQueryButtonCheckstate(hwnd, CFGT_VTREEOPENSWPS);
1238 PrfWriteProfileData(fmprof, FM3Str, "VTreeOpensWPS", &fVTreeOpensWPS,
1239 sizeof(BOOL));
1240 fCollapseFirst = WinQueryButtonCheckstate(hwnd, CFGT_COLLAPSEFIRST);
1241 PrfWriteProfileData(fmprof, appname, "CollapseFirst", &fCollapseFirst,
1242 sizeof(BOOL));
1243 fSwitchTreeOnFocus = WinQueryButtonCheckstate(hwnd,
1244 CFGT_SWITCHTREEONFOCUS);
1245 PrfWriteProfileData(fmprof, appname, "SwitchTreeOnFocus",
1246 &fSwitchTreeOnFocus, sizeof(BOOL));
1247 fSwitchTreeExpand = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREEEXPAND);
1248 PrfWriteProfileData(fmprof, appname, "SwitchTreeExpand",
1249 &fSwitchTreeExpand, sizeof(BOOL));
1250 fSwitchTree = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREE);
1251 PrfWriteProfileData(fmprof, appname, "SwitchTree", &fSwitchTree,
1252 sizeof(BOOL));
1253 fFollowTree = WinQueryButtonCheckstate(hwnd, CFGT_FOLLOWTREE);
1254 PrfWriteProfileData(fmprof, appname, "FollowTree", &fFollowTree,
1255 sizeof(BOOL));
1256 fTopDir = WinQueryButtonCheckstate(hwnd, CFGT_TOPDIR);
1257 PrfWriteProfileData(fmprof, appname, "TopDir", (PVOID) & fTopDir,
1258 sizeof(BOOL));
1259 fDCOpens = WinQueryButtonCheckstate(hwnd, CFGT_DCOPENS);
1260 PrfWriteProfileData(fmprof, FM3Str, "DoubleClickOpens", &fDCOpens,
1261 sizeof(BOOL));
1262 if (hwndTree && fShowEnv != WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV))
1263 PostMsg(WinWindowFromID
1264 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), WM_COMMAND,
1265 MPFROM2SHORT(IDM_RESCAN, 0), MPVOID);
1266 fShowEnv = WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV);
1267 PrfWriteProfileData(fmprof, appname, "ShowEnv", &fShowEnv, sizeof(BOOL));
1268 {
1269 char * pszTemp = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__);
1270 if (pszTemp)
1271 {
1272 WinQueryDlgItemText(hwnd, CFGT_ENVVARLIST, MaxComLineStrg, pszTemp);
1273 strupr(pszTemp);
1274 if (strcmp(pszTemp, pszTreeEnvVarList))
1275 {
1276 strcpy(pszTreeEnvVarList, pszTemp);
1277 PrfWriteProfileString(fmprof, appname, "TreeEnvVarList", pszTreeEnvVarList);
1278 if (hwndTree && fShowEnv) {
1279 PostMsg(WinWindowFromID
1280 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), WM_COMMAND,
1281 MPFROM2SHORT(IDM_RESCAN, 0), MPVOID);
1282 }
1283 }
1284 free(pszTemp);
1285 } else {
1286 // Report error?
1287 }
1288 }
1289 break;
1290 }
1291 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1292}
1293
1294MRESULT EXPENTRY CfgGDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1295{
1296 switch (msg) {
1297 case WM_INITDLG:
1298 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_SETTEXTLIMIT,
1299 MPFROMSHORT(8), MPVOID);
1300 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_OVERRIDESETLIMITS,
1301 MPFROMLONG(CMDLNLNGTH_MAX), MPFROMLONG(CMDLNLNGTH_MIN));
1302 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1303 break;
1304
1305 case WM_HELP:
1306 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1307 break;
1308
1309 case WM_CHAR:
1310 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1311 switch (CHARMSG(&msg)->vkey) {
1312 case VK_F3:
1313 case VK_ENTER:
1314 case VK_NEWLINE:
1315 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1316 return 0;
1317 break;
1318 case VK_ESC:
1319 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1320 return 0;
1321 break;
1322 case VK_F1:
1323 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1324 return 0;
1325 break;
1326 }
1327 }
1328 break;
1329
1330 case UM_UNDO:
1331 WinCheckButton(hwnd, CFGG_CONFIRMDELETE, fConfirmDelete);
1332 WinCheckButton(hwnd, CFGG_VERIFYWRITES, fVerify);
1333 WinCheckButton(hwnd, CFGG_LINKSETSICON, fLinkSetsIcon);
1334 WinCheckButton(hwnd, CFGG_DONTMOVEMOUSE, fDontMoveMouse);
1335 WinCheckButton(hwnd, CFGG_DEFAULTCOPY, fCopyDefault);
1336 WinCheckButton(hwnd, CFGG_IDLECOPY, fRealIdle);
1337 WinCheckButton(hwnd, CFGG_DNDDLG, fDragndropDlg);
1338 WinCheckButton(hwnd, CFGG_DEFAULTDELETEPERM, fDefaultDeletePerm);
1339 {
1340 long th = fNoFinger ? 2 : (fNoDead ? 1 : 0);
1341 WinCheckButton(hwnd, CFGG_NODEAD, th);
1342 }
1343 WinCheckButton(hwnd, CFGG_BORING, fDullMin);
1344 WinCheckButton(hwnd, CFGG_CUSTOMFILEDLG, fCustomFileDlg);
1345 WinCheckButton(hwnd, CFGG_FM2DELETES, fFM2Deletes);
1346 WinCheckButton(hwnd, CFGG_CONFIRMTARGET, fConfirmTarget);
1347 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1348 WinCheckButton(hwnd, CFGG_TRASHCAN, fTrashCan);
1349 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_SETCURRENTVALUE,
1350 MPFROMLONG(MaxComLineStrg), MPVOID);
1351 return 0;
1352
1353 case UM_FOCUSME:
1354 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, IDM_HELP));
1355 return 0;
1356
1357 case UM_SETUP5:
1358 SetTargetDir(hwnd, FALSE);
1359 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1360 return 0;
1361
1362 case WM_CONTROL:
1363 switch (SHORT1FROMMP(mp1)) {
1364 case CFGG_TARGETDIR:
1365 switch (SHORT2FROMMP(mp1)) {
1366 case EN_SETFOCUS:
1367 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1368 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1369 break;
1370 }
1371 break;
1372 }
1373 return 0;
1374
1375 case WM_COMMAND:
1376 switch (SHORT1FROMMP(mp1)) {
1377 case IDM_UNDO:
1378 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1379 break;
1380
1381 case DID_CANCEL:
1382 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1383
1384 case DID_OK:
1385 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1386 break;
1387
1388 case IDM_HELP:
1389 if (hwndHelp)
1390 WinSendMsg(hwndHelp,
1391 HM_DISPLAY_HELP,
1392 MPFROM2SHORT(HELP_CFGG, 0), MPFROMSHORT(HM_RESOURCEID));
1393 break;
1394 }
1395 return 0;
1396
1397 case WM_CLOSE:
1398 {
1399 long test;
1400
1401 test = WinQueryButtonCheckstate(hwnd, CFGG_NODEAD);
1402 fNoDead = (test == 1);
1403 fNoFinger = (test == 2);
1404 PrfWriteProfileData(fmprof, FM3Str, "NoDead", &fNoDead, sizeof(BOOL));
1405 PrfWriteProfileData(fmprof,
1406 FM3Str, "NoFinger", &fNoFinger, sizeof(BOOL));
1407 WinDestroyPointer(hptrFinger);
1408 if (!fNoDead)
1409 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER_ICON);
1410 else
1411 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER2_ICON);
1412 }
1413 fLinkSetsIcon = WinQueryButtonCheckstate(hwnd, CFGG_LINKSETSICON);
1414 PrfWriteProfileData(fmprof,
1415 appname,
1416 "LinkSetsIcon", &fLinkSetsIcon, sizeof(BOOL));
1417 fCustomFileDlg = WinQueryButtonCheckstate(hwnd, CFGG_CUSTOMFILEDLG);
1418 PrfWriteProfileData(fmprof,
1419 FM3Str,
1420 "CustomFileDlg", &fCustomFileDlg, sizeof(BOOL));
1421 fDullMin = WinQueryButtonCheckstate(hwnd, CFGG_BORING);
1422 PrfWriteProfileData(fmprof,
1423 FM3Str, "DullDatabar", &fDullMin, sizeof(BOOL));
1424 fConfirmDelete = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMDELETE);
1425 PrfWriteProfileData(fmprof,
1426 appname,
1427 "ConfirmDelete", &fConfirmDelete, sizeof(BOOL));
1428 fDontMoveMouse = WinQueryButtonCheckstate(hwnd, CFGG_DONTMOVEMOUSE);
1429 PrfWriteProfileData(fmprof,
1430 appname,
1431 "DontMoveMouse", &fDontMoveMouse, sizeof(BOOL));
1432 fCopyDefault = WinQueryButtonCheckstate(hwnd, CFGG_DEFAULTCOPY);
1433 PrfWriteProfileData(fmprof, appname, "DefaultCopy",
1434 &fCopyDefault, sizeof(BOOL));
1435 fRealIdle = WinQueryButtonCheckstate(hwnd, CFGG_IDLECOPY);
1436 PrfWriteProfileData(fmprof, appname, "IdleCopy",
1437 &fRealIdle, sizeof(BOOL));
1438 fDragndropDlg = WinQueryButtonCheckstate(hwnd, CFGG_DNDDLG);
1439 PrfWriteProfileData(fmprof, appname, "Drag&DropDlg",
1440 &fDragndropDlg, sizeof(BOOL));
1441 fVerify = WinQueryButtonCheckstate(hwnd, CFGG_VERIFYWRITES);
1442 PrfWriteProfileData(fmprof, appname, "VerifyWrites",
1443 &fVerify, sizeof(BOOL));
1444 DosSetVerify(fVerify);
1445 fDefaultDeletePerm = WinQueryButtonCheckstate(hwnd,
1446 CFGG_DEFAULTDELETEPERM);
1447 PrfWriteProfileData(fmprof, appname, "DefaultDeletePerm",
1448 &fDefaultDeletePerm, sizeof(BOOL));
1449 fFM2Deletes = WinQueryButtonCheckstate(hwnd, CFGG_FM2DELETES);
1450 PrfWriteProfileData(fmprof, FM3Str, "FM2Deletes",
1451 &fFM2Deletes, sizeof(BOOL));
1452 fTrashCan = WinQueryButtonCheckstate(hwnd, CFGG_TRASHCAN);
1453 PrfWriteProfileData(fmprof, FM3Str, "TrashCan",
1454 &fTrashCan, sizeof(BOOL));
1455 fConfirmTarget = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMTARGET);
1456 PrfWriteProfileData(fmprof, appname, "ConfirmTarget",
1457 &fConfirmTarget, sizeof(BOOL));
1458 {
1459 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_QUERYVALUE,
1460 MPFROMP(&MaxComLineStrg), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
1461 if (MaxComLineStrg < CMDLNLNGTH_MIN)
1462 MaxComLineStrg = CMDLNLNGTH_MIN;
1463 else if (MaxComLineStrg > CMDLNLNGTH_MAX)
1464 MaxComLineStrg = CMDLNLNGTH_MAX;
1465 PrfWriteProfileData(fmprof,
1466 appname, "MaxComLineStrg", &MaxComLineStrg, sizeof(ULONG));
1467 }
1468 break;
1469 }
1470 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1471}
1472
1473MRESULT EXPENTRY CfgCDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1474{
1475 switch (msg) {
1476 case WM_INITDLG:
1477 WinSendDlgItemMsg(hwnd, CFGC_COMPARE, EM_SETTEXTLIMIT,
1478 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID);
1479 WinSendDlgItemMsg(hwnd, CFGC_DIRCOMPARE, EM_SETTEXTLIMIT,
1480 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID);
1481 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1482 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1483 break;
1484
1485 case WM_HELP:
1486 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1487 break;
1488
1489 case WM_CHAR:
1490 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1491 switch (CHARMSG(&msg)->vkey) {
1492 case VK_F3:
1493 case VK_ENTER:
1494 case VK_NEWLINE:
1495 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1496 return 0;
1497 break;
1498 case VK_ESC:
1499 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1500 return 0;
1501 break;
1502 case VK_F1:
1503 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1504 return 0;
1505 break;
1506 }
1507 }
1508 break;
1509
1510 case UM_UNDO:
1511 WinSetDlgItemText(hwnd, CFGC_COMPARE, compare);
1512 WinSetDlgItemText(hwnd, CFGC_DIRCOMPARE, dircompare);
1513 return 0;
1514
1515 case WM_CONTROL:
1516 switch (SHORT1FROMMP(mp1)) {
1517 case CFGC_COMPARE:
1518 case CFGC_DIRCOMPARE:
1519 switch (SHORT2FROMMP(mp1)) {
1520 case EN_KILLFOCUS:
1521 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1522 break;
1523 case EN_SETFOCUS:
1524 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), TRUE);
1525 break;
1526 }
1527 break;
1528 }
1529 return 0;
1530
1531 case WM_COMMAND:
1532 switch (SHORT1FROMMP(mp1)) {
1533 case IDM_UNDO:
1534 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1535 break;
1536
1537 case DID_CANCEL:
1538 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1539
1540 case DID_OK:
1541 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1542 break;
1543
1544 case IDM_HELP:
1545 if (hwndHelp)
1546 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1547 MPFROM2SHORT(HELP_CFGC, 0), MPFROMSHORT(HM_RESOURCEID));
1548 break;
1549
1550 case CFGC_FIND:
1551 {
1552 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
1553 USHORT id;
1554 HWND hwndFocus;
1555
1556 strcpy(filename, "*.EXE");
1557 hwndFocus = WinQueryFocus(HWND_DESKTOP);
1558 if (hwndFocus) {
1559 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
1560 switch (id) {
1561 case CFGC_COMPARE:
1562 case CFGC_DIRCOMPARE:
1563 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
1564 BldQuotedFileName(szfilename, filename);
1565 strcat(szfilename, " %a");
1566 WinSetDlgItemText(hwnd, id, szfilename);
1567 }
1568 break;
1569 default:
1570 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
1571 break;
1572 }
1573 }
1574 }
1575 break;
1576 }
1577 return 0;
1578
1579 case WM_CLOSE:
1580 {
1581 CHAR *szCLBuf;
1582 PSZ pszWorkBuf;
1583
1584 szCLBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__);
1585 if (!szCLBuf)
1586 return 0; //already complained
1587 pszWorkBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__);
1588 if (!pszWorkBuf) {
1589 free(szCLBuf);
1590 return 0; //already complained
1591 }
1592 WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, MaxComLineStrg, szCLBuf);
1593 szCLBuf[MaxComLineStrg - 1] = 0;
1594 if (strcmp(szCLBuf, dircompare)){
1595 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1596 memcpy(dircompare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1597 if (!strchr(dircompare, '%') && strlen(dircompare) > 3)
1598 strcat(dircompare, " %a");
1599 }
1600 PrfWriteProfileString(fmprof, appname, "DirCompare", dircompare);
1601 WinQueryDlgItemText(hwnd, CFGC_COMPARE, MaxComLineStrg, szCLBuf);
1602 szCLBuf[MaxComLineStrg - 1] = 0;
1603 if (strcmp(szCLBuf, compare)){
1604 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1605 memcpy(compare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1606 if (!strchr(compare, '%') && strlen(compare) > 3)
1607 strcat(compare, " %a");
1608 }
1609 free(pszWorkBuf);
1610 free(szCLBuf);
1611 PrfWriteProfileString(fmprof, appname, "Compare", compare);
1612 break;
1613 }
1614 }
1615 if (fCancelAction) {
1616 fCancelAction = FALSE;
1617 WinDlgBox(HWND_DESKTOP,
1618 hwnd,
1619 CfgDlgProc,
1620 FM3ModHandle,
1621 CFG_FRAME,
1622 MPFROMLONG(IDM_COMPARESETTINGS));
1623 }
1624 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1625}
1626
1627MRESULT EXPENTRY CfgDDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1628{
1629
1630 switch (msg) {
1631 case WM_INITDLG:
1632 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1633 break;
1634
1635 case UM_UNDO:
1636 WinCheckButton(hwnd, CFGD_UNHILITE, fUnHilite);
1637 WinCheckButton(hwnd, CFGD_SYNCUPDATES, fSyncUpdates);
1638 WinCheckButton(hwnd, CFGD_LOOKINDIR, fLookInDir);
1639 WinCheckButton(hwnd, CFGD_MINONOPEN, fMinOnOpen);
1640 WinCheckButton(hwnd, CFGD_SELECTEDALWAYS, fSelectedAlways);
1641 WinCheckButton(hwnd, CFGD_NOSEARCH, fNoSearch);
1642 WinCheckButton(hwnd, CFGD_EXTENDEDSEL,
1643 ((ulCnrType & CCS_EXTENDSEL) != 0));
1644 WinCheckButton(hwnd, CFGD_MULTIPLESEL,
1645 ((ulCnrType & CCS_MULTIPLESEL) != 0));
1646 WinCheckButton(hwnd, CFGD_LEAVETREE, fLeaveTree);
1647 WinCheckButton(hwnd, CFGD_NOFOLDMENU, fNoFoldMenu);
1648 return 0;
1649
1650 case WM_HELP:
1651 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1652 break;
1653
1654 case WM_CHAR:
1655 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1656 switch (CHARMSG(&msg)->vkey) {
1657 case VK_F3:
1658 case VK_ENTER:
1659 case VK_NEWLINE:
1660 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1661 return 0;
1662 break;
1663 case VK_ESC:
1664 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1665 return 0;
1666 break;
1667 case VK_F1:
1668 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1669 return 0;
1670 break;
1671 }
1672 }
1673 break;
1674
1675 case WM_COMMAND:
1676 switch (SHORT1FROMMP(mp1)) {
1677 case IDM_UNDO:
1678 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1679 break;
1680
1681 case DID_CANCEL:
1682 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1683
1684 case DID_OK:
1685 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1686 break;
1687
1688 case IDM_HELP:
1689 if (hwndHelp)
1690 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1691 MPFROM2SHORT(HELP_CFGD, 0), MPFROMSHORT(HM_RESOURCEID));
1692 break;
1693 }
1694 return 0;
1695
1696 case WM_CLOSE:
1697 ulCnrType = 0;
1698 if (WinQueryButtonCheckstate(hwnd, CFGD_EXTENDEDSEL))
1699 ulCnrType |= CCS_EXTENDSEL;
1700 if (WinQueryButtonCheckstate(hwnd, CFGD_MULTIPLESEL))
1701 ulCnrType |= CCS_MULTIPLESEL;
1702 PrfWriteProfileData(fmprof, appname, "ContainerType",
1703 (PVOID) & ulCnrType, sizeof(BOOL));
1704 fMinOnOpen = WinQueryButtonCheckstate(hwnd, CFGD_MINONOPEN);
1705 PrfWriteProfileData(fmprof, FM3Str, "MinDirOnOpen", &fMinOnOpen,
1706 sizeof(BOOL));
1707 fLeaveTree = WinQueryButtonCheckstate(hwnd, CFGD_LEAVETREE);
1708 PrfWriteProfileData(fmprof, appname, "LeaveTree", &fLeaveTree,
1709 sizeof(BOOL));
1710 fNoFoldMenu = WinQueryButtonCheckstate(hwnd, CFGD_NOFOLDMENU);
1711 PrfWriteProfileData(fmprof, appname, "NoFoldMenu", &fNoFoldMenu,
1712 sizeof(BOOL));
1713 fSelectedAlways = WinQueryButtonCheckstate(hwnd, CFGD_SELECTEDALWAYS);
1714 PrfWriteProfileData(fmprof, appname, "SelectedAlways", &fSelectedAlways,
1715 sizeof(BOOL));
1716 fNoSearch = WinQueryButtonCheckstate(hwnd, CFGD_NOSEARCH);
1717 PrfWriteProfileData(fmprof, appname, "NoSearch", &fNoSearch,
1718 sizeof(BOOL));
1719 fLookInDir = WinQueryButtonCheckstate(hwnd, CFGD_LOOKINDIR);
1720 PrfWriteProfileData(fmprof, FM3Str, "LookInDir", (PVOID) & fLookInDir,
1721 sizeof(BOOL));
1722 fUnHilite = WinQueryButtonCheckstate(hwnd, CFGD_UNHILITE);
1723 PrfWriteProfileData(fmprof, appname, "UnHilite",
1724 &fUnHilite, sizeof(BOOL));
1725 {
1726 BOOL fOldSyncUpdates = WinQueryButtonCheckstate(hwnd, CFGD_SYNCUPDATES);
1727
1728 if (fOldSyncUpdates != fSyncUpdates) {
1729 fSyncUpdates = fOldSyncUpdates;
1730 if (hwndMain && !strcmp(realappname, FM3Str)) {
1731 // Save state and restore to refresh windows with new settings
1732 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
1733 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
1734// PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
1735 PostMsg(MainObjectHwnd, UM_RESTORE, GetPString(IDS_FM2TEMPTEXT), MPVOID);
1736 }
1737 }
1738 }
1739 }
1740 PrfWriteProfileData(fmprof, appname, "SyncUpdates",
1741 &fSyncUpdates, sizeof(BOOL));
1742 if (!(ulCnrType & (CCS_EXTENDSEL | CCS_MULTIPLESEL)))
1743 saymsg(MB_ENTER | MB_ICONEXCLAMATION,
1744 HWND_DESKTOP,
1745 GetPString(IDS_WARNINGTEXT),
1746 GetPString(IDS_SELECTTYPEERRORTEXT));
1747 break; // WM_CLOSE
1748 }
1749 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1750}
1751
1752MRESULT EXPENTRY CfgMDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1753{
1754 switch (msg) {
1755 case WM_INITDLG:
1756 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1757 break;
1758
1759 case WM_HELP:
1760 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1761 break;
1762
1763 case WM_CHAR:
1764 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1765 switch (CHARMSG(&msg)->vkey) {
1766 case VK_F3:
1767 case VK_ENTER:
1768 case VK_NEWLINE:
1769 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1770 return 0;
1771 break;
1772 case VK_ESC:
1773 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1774 return 0;
1775 break;
1776 case VK_F1:
1777 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1778 return 0;
1779 break;
1780 }
1781 }
1782 break;
1783
1784 case UM_UNDO:
1785 WinCheckButton(hwnd, CFGM_EXTERNALINIS, fExternalINIs);
1786 WinCheckButton(hwnd, CFGM_EXTERNALARCBOXES, fExternalArcboxes);
1787 WinCheckButton(hwnd, CFGM_EXTERNALVIEWER, fExternalViewer);
1788 WinCheckButton(hwnd, CFGM_EXTERNALCOLLECTOR, fExternalCollector);
1789 WinCheckButton(hwnd, CFGM_SAVESTATE, fSaveState);
1790 WinCheckButton(hwnd, CFGM_AUTOTILE, (fAutoTile));
1791 WinCheckButton(hwnd, CFGM_FREETREE, (fFreeTree));
1792 WinCheckButton(hwnd, CFGM_SPLITSTATUS, (fSplitStatus));
1793 WinCheckButton(hwnd, CFGM_NOTREEGAP, (fNoTreeGap));
1794 WinCheckButton(hwnd, CFGM_STARTMIN, (fStartMinimized));
1795 WinCheckButton(hwnd, CFGM_STARTMAX, (fStartMaximized));
1796 WinCheckButton(hwnd, CFGM_DATAMIN, (fDataMin));
1797 WinCheckButton(hwnd, CFGM_TILEBACKWARDS, (fTileBackwards));
1798 {
1799 long th;
1800
1801 th = (fAutoAddDirs && fAutoAddAllDirs) ? 2 : (fAutoAddDirs) ? 1 : 0;
1802 WinCheckButton(hwnd, CFGM_RECENTDIRS, th);
1803 WinSendMsg(hwnd, UM_RESTORE, MPFROM2SHORT(CFGM_RECENTDIRS, 0), MPVOID);
1804 }
1805 WinCheckButton(hwnd, CFGM_USERLISTSWITCHES, fUserListSwitches);
1806 WinCheckButton(hwnd, CFGM_WSANIMATE, (fwsAnimate != 0));
1807 WinCheckButton(hwnd, CFGM_SEPARATEPARMS, fSeparateParms);
1808 WinCheckButton(hwnd, CFGM_BLUELED, fBlueLED);
1809 WinCheckButton(hwnd, CFGM_SHOWTARGET, fShowTarget);
1810 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), !(fStartMinimized));
1811 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), !(fStartMaximized));
1812 return 0;
1813
1814 case UM_RESTORE:
1815 {
1816 long test;
1817 BOOL th, oh;
1818 char s[80];
1819
1820 test = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1821 th = (test != 0);
1822 oh = (test == 1);
1823 *s = 0;
1824 switch (SHORT1FROMMP(mp1)) {
1825 case CFGM_RECENTDIRS:
1826 sprintf(s,
1827 GetPString(IDS_RECENTHELPWHICHTEXT),
1828 (!oh && th) ?
1829 GetPString(IDS_RECENTONLYTEXT) :
1830 (oh && th) ?
1831 GetPString(IDS_ALLONLYTEXT) : GetPString(IDS_NONE));
1832 break;
1833 }
1834 if (*s)
1835 WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), s);
1836 }
1837 return 0;
1838
1839 case WM_CONTROL:
1840 switch (SHORT1FROMMP(mp1)) {
1841 case CFGM_RECENTDIRS:
1842 WinSendMsg(hwnd, UM_RESTORE, mp1, MPVOID);
1843 break;
1844 case CFGM_STARTMIN:
1845 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN)) {
1846 WinCheckButton(hwnd, CFGM_STARTMAX, FALSE);
1847 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), FALSE);
1848 }
1849 else
1850 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), TRUE);
1851 break;
1852 case CFGM_STARTMAX:
1853 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX)) {
1854 WinCheckButton(hwnd, CFGM_STARTMIN, FALSE);
1855 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), FALSE);
1856 }
1857 else
1858 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), TRUE);
1859 break;
1860 }
1861 return 0;
1862
1863 case WM_COMMAND:
1864 switch (SHORT1FROMMP(mp1)) {
1865 case IDM_UNDO:
1866 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1867 break;
1868
1869 case DID_CANCEL:
1870 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1871
1872 case DID_OK:
1873 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1874 break;
1875
1876 case IDM_HELP:
1877 if (hwndHelp)
1878 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1879 MPFROM2SHORT(HELP_CFGM, 0), MPFROMSHORT(HM_RESOURCEID));
1880 break;
1881 }
1882 return 0;
1883
1884 case WM_CLOSE:
1885 if (hwndMain && !strcmp(realappname, FM3Str)) {
1886 if (fFreeTree != WinQueryButtonCheckstate(hwnd, CFGM_FREETREE))
1887 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_FREETREE, 0), MPVOID);
1888 if (fAutoTile != WinQueryButtonCheckstate(hwnd, CFGM_AUTOTILE))
1889 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_AUTOTILE, 0), MPVOID);
1890 if (fSplitStatus != WinQueryButtonCheckstate(hwnd, CFGM_SPLITSTATUS)) {
1891 fSplitStatus = (fSplitStatus) ? FALSE : TRUE;
1892 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_BLINK, 0), MPVOID);
1893 PrfWriteProfileData(fmprof, FM3Str, "SplitStatus", &fSplitStatus,
1894 sizeof(BOOL));
1895 }
1896 }
1897 fUserListSwitches = WinQueryButtonCheckstate(hwnd, CFGM_USERLISTSWITCHES);
1898 PrfWriteProfileData(fmprof, FM3Str, "UserListSwitches",
1899 (PVOID) & fUserListSwitches, sizeof(BOOL));
1900 fExternalINIs = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALINIS);
1901 PrfWriteProfileData(fmprof, FM3Str, "ExternalINIs",
1902 (PVOID) & fExternalINIs, sizeof(BOOL));
1903 fExternalArcboxes = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALARCBOXES);
1904 PrfWriteProfileData(fmprof, FM3Str, "ExternalArcboxes",
1905 (PVOID) & fExternalArcboxes, sizeof(BOOL));
1906 fExternalCollector =
1907 WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALCOLLECTOR);
1908 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
1909 (PVOID) & fExternalCollector, sizeof(BOOL));
1910 fExternalViewer = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALVIEWER);
1911 PrfWriteProfileData(fmprof, FM3Str, "ExternalViewer",
1912 (PVOID) & fExternalViewer, sizeof(BOOL));
1913 {
1914 long test;
1915
1916 test = WinQueryButtonCheckstate(hwnd, CFGM_RECENTDIRS);
1917 fAutoAddDirs = (test != 0);
1918 fAutoAddAllDirs = (test == 2);
1919 }
1920 PrfWriteProfileData(fmprof,
1921 appname,
1922 "AutoAddDirs", (PVOID) & fAutoAddDirs, sizeof(BOOL));
1923 PrfWriteProfileData(fmprof,
1924 appname,
1925 "AutoAddAllDirs",
1926 (PVOID) & fAutoAddAllDirs, sizeof(BOOL));
1927 fwsAnimate = WinQueryButtonCheckstate(hwnd, CFGM_WSANIMATE);
1928 if (fwsAnimate)
1929 fwsAnimate = WS_ANIMATE;
1930 PrfWriteProfileData(fmprof,
1931 appname,
1932 "WS_ANIMATE", (PVOID) & fwsAnimate, sizeof(ULONG));
1933 fSaveState = WinQueryButtonCheckstate(hwnd, CFGM_SAVESTATE);
1934 PrfWriteProfileData(fmprof,
1935 FM3Str,
1936 "SaveState", (PVOID) & fSaveState, sizeof(BOOL));
1937 fStartMinimized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN);
1938 PrfWriteProfileData(fmprof,
1939 appname,
1940 "StartMinimized",
1941 (PVOID) & fStartMinimized, sizeof(BOOL));
1942 fStartMaximized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX);
1943 PrfWriteProfileData(fmprof,
1944 appname,
1945 "StartMaximized",
1946 (PVOID) & fStartMaximized, sizeof(BOOL));
1947 fDataMin = WinQueryButtonCheckstate(hwnd, CFGM_DATAMIN);
1948 PrfWriteProfileData(fmprof,
1949 FM3Str, "DataMin", (PVOID) & fDataMin, sizeof(BOOL));
1950 fTileBackwards = WinQueryButtonCheckstate(hwnd, CFGM_TILEBACKWARDS);
1951 PrfWriteProfileData(fmprof,
1952 FM3Str,
1953 "TileBackwards",
1954 (PVOID) & fTileBackwards, sizeof(BOOL));
1955 fNoTreeGap = WinQueryButtonCheckstate(hwnd, CFGM_NOTREEGAP);
1956 PrfWriteProfileData(fmprof,
1957 FM3Str,
1958 "NoTreeGap", (PVOID) & fNoTreeGap, sizeof(BOOL));
1959 fBlueLED = WinQueryButtonCheckstate(hwnd, CFGM_BLUELED);
1960 PrfWriteProfileData(fmprof,
1961 appname, "BlueLED", (PVOID) & fBlueLED, sizeof(BOOL));
1962 {
1963 BOOL dummy;
1964
1965 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SHOWTARGET);
1966 if (dummy != fShowTarget) {
1967 fShowTarget = dummy;
1968 PrfWriteProfileData(fmprof,
1969 appname,
1970 "ShowTarget",
1971 (PVOID) & fShowTarget, sizeof(BOOL));
1972 if (hwndMain)
1973 PostMsg(WinQueryWindow(hwndMain, QW_PARENT),
1974 WM_UPDATEFRAME, MPFROMLONG(FCF_SIZEBORDER), MPVOID);
1975 SetTargetDir(hwnd, TRUE);
1976 }
1977 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SEPARATEPARMS);
1978 if (dummy != fSeparateParms) {
1979 fSeparateParms = dummy;
1980 PrfWriteProfileData(fmprof,
1981 FM3Str,
1982 "SeparateParms",
1983 (PVOID) & fSeparateParms, sizeof(BOOL));
1984 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
1985 UM_UNDO, MPVOID, MPVOID);
1986 }
1987 }
1988 break;
1989 }
1990 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1991}
1992
1993MRESULT EXPENTRY Cfg5DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1994{
1995 static MASK mask;
1996
1997 switch (msg) {
1998 case WM_INITDLG:
1999 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
2000 MPFROMSHORT(8), MPVOID);
2001 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
2002 MPFROMLONG(1000), MPFROMLONG(50));
2003 WinSendDlgItemMsg(hwnd,
2004 CFG5_FILTER,
2005 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
2006 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2007 break;
2008
2009 case WM_HELP:
2010 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2011 break;
2012
2013 case WM_CHAR:
2014 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2015 switch (CHARMSG(&msg)->vkey) {
2016 case VK_F3:
2017 case VK_ENTER:
2018 case VK_NEWLINE:
2019 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2020 return 0;
2021 break;
2022 case VK_ESC:
2023 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2024 return 0;
2025 break;
2026 case VK_F1:
2027 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2028 return 0;
2029 break;
2030 }
2031 }
2032 break;
2033
2034 case UM_FOCUSME:
2035 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
2036 return 0;
2037
2038 case UM_UNDO:
2039 {
2040 ULONG flWindowAttr = 0;
2041 ULONG ulSize = sizeof(ULONG);
2042
2043 if (!PrfQueryProfileData(fmprof,
2044 appname,
2045 "DirflWindowAttr", &flWindowAttr, &ulSize))
2046 flWindowAttr = (CV_NAME | CV_MINI | CA_DETAILSVIEWTITLES | CV_FLOW);
2047 if (flWindowAttr & CV_ICON)
2048 WinCheckButton(hwnd, CFG5_ICON, TRUE);
2049 if (flWindowAttr & CV_NAME)
2050 WinCheckButton(hwnd, CFG5_NAME, TRUE);
2051 if (flWindowAttr & CV_TEXT)
2052 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
2053 if (flWindowAttr & CV_DETAIL)
2054 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
2055 if (flWindowAttr & CV_MINI)
2056 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
2057 if (flWindowAttr & CA_DETAILSVIEWTITLES)
2058 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
2059 WinCheckButton(hwnd, CFG5_SHOWLNAMES, dsDirCnrDefault.detailslongname);
2060 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, dsDirCnrDefault.detailssubject);
2061 WinCheckButton(hwnd, CFG5_SHOWEAS, dsDirCnrDefault.detailsea);
2062 WinCheckButton(hwnd, CFG5_SHOWSIZE, dsDirCnrDefault.detailssize);
2063 WinCheckButton(hwnd, CFG5_SHOWICON, dsDirCnrDefault.detailsicon);
2064 WinCheckButton(hwnd, CFG5_SHOWLWDATE, dsDirCnrDefault.detailslwdate);
2065 WinCheckButton(hwnd, CFG5_SHOWLWTIME, dsDirCnrDefault.detailslwtime);
2066 WinCheckButton(hwnd, CFG5_SHOWLADATE, dsDirCnrDefault.detailsladate);
2067 WinCheckButton(hwnd, CFG5_SHOWLATIME, dsDirCnrDefault.detailslatime);
2068 WinCheckButton(hwnd, CFG5_SHOWCRDATE, dsDirCnrDefault.detailscrdate);
2069 WinCheckButton(hwnd, CFG5_SHOWCRTIME, dsDirCnrDefault.detailscrtime);
2070 WinCheckButton(hwnd, CFG5_SHOWATTR, dsDirCnrDefault.detailsattr);
2071 memset(&mask, 0, sizeof(mask));
2072 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2073 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2074 ulSize = sizeof(MASK);
2075 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, &ulSize))
2076 SetMask(NULL, &mask);
2077 if (!mask.attrFile)
2078 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2079 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2080 strcpy(mask.prompt, GetPString(IDS_DEFDIRFILTERTITLETEXT));
2081 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2082 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, dsDirCnrDefault.fSubjectInLeftPane);
2083 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, dsDirCnrDefault.fSubjectLengthMax);
2084 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
2085 MPFROMLONG(dsDirCnrDefault.SubjectDisplayWidth), MPVOID);
2086 }
2087 return 0;
2088
2089 case UM_SETUP5:
2090 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2091 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2092 SetMask(NULL, &mask);
2093 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2094 }
2095 return 0;
2096
2097 case WM_CONTROL:
2098 switch (SHORT1FROMMP(mp1)) {
2099 case CFG5_FILTER:
2100 switch (SHORT2FROMMP(mp1)) {
2101 case EN_SETFOCUS:
2102 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2103 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2104 break;
2105 }
2106 break;
2107 }
2108 return 0;
2109
2110 case WM_COMMAND:
2111 switch (SHORT1FROMMP(mp1)) {
2112 case IDM_UNDO:
2113 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2114 break;
2115
2116 case DID_CANCEL:
2117 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2118
2119 case DID_OK:
2120 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2121 break;
2122
2123 case IDM_HELP:
2124 if (hwndHelp)
2125 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2126 MPFROM2SHORT(HELP_CFG5, 0), MPFROMSHORT(HM_RESOURCEID));
2127 break;
2128 }
2129 return 0;
2130
2131 case WM_CLOSE:
2132 {
2133 ULONG flWindowAttr = 0;
2134
2135 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2136 flWindowAttr |= CV_ICON;
2137 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2138 flWindowAttr |= CV_NAME;
2139 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2140 flWindowAttr |= CV_TEXT;
2141 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2142 flWindowAttr |= CV_DETAIL;
2143 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2144 flWindowAttr |= CV_MINI;
2145 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2146 flWindowAttr |= CA_DETAILSVIEWTITLES;
2147 flWindowAttr |= CV_FLOW;
2148 PrfWriteProfileData(fmprof,
2149 appname,
2150 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2151 }
2152 dsDirCnrDefault.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
2153 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname",
2154 &dsDirCnrDefault.detailslongname, sizeof(BOOL));
2155 dsDirCnrDefault.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
2156 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject",
2157 &dsDirCnrDefault.detailssubject, sizeof(BOOL));
2158 dsDirCnrDefault.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
2159 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA",
2160 &dsDirCnrDefault.detailsea, sizeof(BOOL));
2161 dsDirCnrDefault.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
2162 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize",
2163 &dsDirCnrDefault.detailssize, sizeof(BOOL));
2164 dsDirCnrDefault.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
2165 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon",
2166 &dsDirCnrDefault.detailsicon, sizeof(BOOL));
2167 dsDirCnrDefault.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
2168 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate",
2169 &dsDirCnrDefault.detailslwdate, sizeof(BOOL));
2170 dsDirCnrDefault.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
2171 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime",
2172 &dsDirCnrDefault.detailslwtime, sizeof(BOOL));
2173 dsDirCnrDefault.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
2174 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate",
2175 &dsDirCnrDefault.detailsladate, sizeof(BOOL));
2176 dsDirCnrDefault.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
2177 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime",
2178 &dsDirCnrDefault.detailslatime, sizeof(BOOL));
2179 dsDirCnrDefault.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
2180 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate",
2181 &dsDirCnrDefault.detailscrdate, sizeof(BOOL));
2182 dsDirCnrDefault.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
2183 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime",
2184 &dsDirCnrDefault.detailscrtime, sizeof(BOOL));
2185 dsDirCnrDefault.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
2186 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr",
2187 &dsDirCnrDefault.detailsattr, sizeof(BOOL));
2188 dsDirCnrDefault.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
2189 PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectInLeftPane",
2190 &dsDirCnrDefault.fSubjectInLeftPane, sizeof(BOOL));
2191 dsDirCnrDefault.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
2192 PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectLengthMax",
2193 &dsDirCnrDefault.fSubjectLengthMax, sizeof(BOOL));
2194 *mask.prompt = 0;
2195 PrfWriteProfileData(fmprof, appname, "DirFilter", &mask, sizeof(MASK));
2196 {
2197 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2198 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
2199 MPFROMP(&dsDirCnrDefault.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2200 if (dsDirCnrDefault.SubjectDisplayWidth < 50)
2201 dsDirCnrDefault.SubjectDisplayWidth = 0;
2202 else if (dsDirCnrDefault.SubjectDisplayWidth > 1000)
2203 dsDirCnrDefault.SubjectDisplayWidth = 1000;
2204 }
2205 else
2206 dsDirCnrDefault.SubjectDisplayWidth = 0;
2207 PrfWriteProfileData(fmprof,
2208 appname, "DirCnr.SubjectDisplayWidth",
2209 &dsDirCnrDefault.SubjectDisplayWidth, sizeof(ULONG));
2210 }
2211 break;
2212 }
2213 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2214}
2215
2216MRESULT EXPENTRY Cfg6DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2217{
2218 switch (msg) {
2219 case WM_INITDLG:
2220 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2221 break;
2222
2223 case WM_HELP:
2224 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2225 break;
2226
2227 case WM_CHAR:
2228 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2229 switch (CHARMSG(&msg)->vkey) {
2230 case VK_F3:
2231 case VK_ENTER:
2232 case VK_NEWLINE:
2233 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2234 return 0;
2235 break;
2236 case VK_ESC:
2237 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2238 return 0;
2239 break;
2240 case VK_F1:
2241 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2242 return 0;
2243 break;
2244 }
2245 }
2246 break;
2247
2248 case UM_UNDO:
2249 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2250 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2251 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2252 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2253 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2254 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2255 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2256 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2257 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2258 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2259 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2260 if (sortFlags & SORT_FIRSTEXTENSION)
2261 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2262 else if (sortFlags & SORT_LASTEXTENSION)
2263 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2264 else if (sortFlags & SORT_SIZE)
2265 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2266 else if (sortFlags & SORT_EASIZE)
2267 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2268 else if (sortFlags & SORT_LWDATE)
2269 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2270 else if (sortFlags & SORT_LADATE)
2271 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2272 else if (sortFlags & SORT_CRDATE)
2273 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2274 else if (sortFlags & SORT_FILENAME)
2275 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2276 else
2277 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2278 if (sortFlags & SORT_DIRSFIRST)
2279 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2280 else if (sortFlags & SORT_DIRSLAST)
2281 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2282 if (sortFlags & SORT_REVERSE)
2283 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2284 return 0;
2285
2286 case WM_CONTROL:
2287 switch (SHORT1FROMMP(mp1)) {
2288 case CFG6_SORTDIRSFIRST:
2289 case CFG6_SORTDIRSLAST:
2290 {
2291 BOOL temp;
2292
2293 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2294 if (temp) {
2295 switch (SHORT1FROMMP(mp1)) {
2296 case CFG6_SORTDIRSFIRST:
2297 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2298 break;
2299 case CFG6_SORTDIRSLAST:
2300 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2301 break;
2302 }
2303 }
2304 }
2305 break;
2306 }
2307 return 0;
2308
2309 case WM_COMMAND:
2310 switch (SHORT1FROMMP(mp1)) {
2311 case IDM_UNDO:
2312 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2313 break;
2314
2315 case DID_CANCEL:
2316 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2317
2318 case DID_OK:
2319 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2320 break;
2321
2322 case IDM_HELP:
2323 if (hwndHelp)
2324 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2325 MPFROM2SHORT(HELP_CFG6, 0), MPFROMSHORT(HM_RESOURCEID));
2326 break;
2327 }
2328 return 0;
2329
2330 case WM_CLOSE:
2331 sortFlags = 0;
2332 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2333 sortFlags |= SORT_FILENAME;
2334 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2335 sortFlags |= SORT_SIZE;
2336 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2337 sortFlags |= SORT_EASIZE;
2338 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2339 sortFlags |= SORT_FIRSTEXTENSION;
2340 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2341 sortFlags |= SORT_LASTEXTENSION;
2342 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2343 sortFlags |= SORT_LWDATE;
2344 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2345 sortFlags |= SORT_LADATE;
2346 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2347 sortFlags |= SORT_CRDATE;
2348 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2349 sortFlags |= SORT_DIRSFIRST;
2350 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2351 sortFlags |= SORT_DIRSLAST;
2352 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2353 sortFlags |= SORT_REVERSE;
2354 PrfWriteProfileData(fmprof, appname, "Sort", &sortFlags, sizeof(INT));
2355 break;
2356 }
2357 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2358}
2359
2360MRESULT EXPENTRY Cfg7DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2361{
2362 static MASK mask;
2363
2364 switch (msg) {
2365 case WM_INITDLG:
2366 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
2367 MPFROMSHORT(8), MPVOID);
2368 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
2369 MPFROMLONG(1000), MPFROMLONG(50));
2370 WinSendDlgItemMsg(hwnd, CFG5_FILTER, EM_SETTEXTLIMIT,
2371 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
2372 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2373 break;
2374
2375 case WM_HELP:
2376 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2377 break;
2378
2379 case WM_CHAR:
2380 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2381 switch (CHARMSG(&msg)->vkey) {
2382 case VK_F3:
2383 case VK_ENTER:
2384 case VK_NEWLINE:
2385 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2386 return 0;
2387 break;
2388 case VK_ESC:
2389 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2390 return 0;
2391 break;
2392 case VK_F1:
2393 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2394 return 0;
2395 break;
2396 }
2397 }
2398 break;
2399
2400 case UM_FOCUSME:
2401 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
2402 return 0;
2403
2404 case UM_UNDO:
2405 WinCheckButton(hwnd, CFG5_EXTERNALCOLLECTOR, fExternalCollector);
2406 {
2407 ULONG flWindowAttr = 0;
2408 ULONG ulSize = sizeof(ULONG);
2409
2410 if (!PrfQueryProfileData(fmprof,
2411 appname,
2412 "CollectorflWindowAttr", &flWindowAttr, &ulSize))
2413 flWindowAttr = (CV_NAME | CA_DETAILSVIEWTITLES | CV_MINI | CV_FLOW);
2414 if (flWindowAttr & CV_ICON)
2415 WinCheckButton(hwnd, CFG5_ICON, TRUE);
2416 if (flWindowAttr & CV_NAME)
2417 WinCheckButton(hwnd, CFG5_NAME, TRUE);
2418 if (flWindowAttr & CV_TEXT)
2419 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
2420 if (flWindowAttr & CV_DETAIL)
2421 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
2422 if (flWindowAttr & CV_MINI)
2423 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
2424 if (flWindowAttr & CA_DETAILSVIEWTITLES)
2425 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
2426 memset(&mask, 0, sizeof(mask));
2427 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2428 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2429 ulSize = sizeof(MASK);
2430 if (PrfQueryProfileData(fmprof,
2431 appname, "CollectorFilter", &mask, &ulSize)) {
2432 SetMask(NULL, &mask);
2433 }
2434 if (!mask.attrFile)
2435 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2436 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2437 strcpy(mask.prompt, GetPString(IDS_DEFCOLFILTERTITLETEXT));
2438 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2439 }
2440 {
2441 DETAILS_SETTINGS ds;
2442
2443 memset(&ds, 0, sizeof(ds));
2444 LoadDetailsSwitches("Collector", &ds);
2445 WinCheckButton(hwnd, CFG5_SHOWLNAMES, ds.detailslongname);
2446 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, ds.detailssubject);
2447 WinCheckButton(hwnd, CFG5_SHOWEAS, ds.detailsea);
2448 WinCheckButton(hwnd, CFG5_SHOWSIZE, ds.detailssize);
2449 WinCheckButton(hwnd, CFG5_SHOWICON, ds.detailsicon);
2450 WinCheckButton(hwnd, CFG5_SHOWLWDATE, ds.detailslwdate);
2451 WinCheckButton(hwnd, CFG5_SHOWLWTIME, ds.detailslwtime);
2452 WinCheckButton(hwnd, CFG5_SHOWLADATE, ds.detailsladate);
2453 WinCheckButton(hwnd, CFG5_SHOWLATIME, ds.detailslatime);
2454 WinCheckButton(hwnd, CFG5_SHOWCRDATE, ds.detailscrdate);
2455 WinCheckButton(hwnd, CFG5_SHOWCRTIME, ds.detailscrtime);
2456 WinCheckButton(hwnd, CFG5_SHOWATTR, ds.detailsattr);
2457 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, ds.fSubjectInLeftPane);
2458 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, ds.fSubjectLengthMax);
2459 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
2460 MPFROMLONG(ds.SubjectDisplayWidth), MPVOID);
2461
2462 }
2463 return 0;
2464
2465 case UM_SETUP5:
2466 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2467 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2468 SetMask(NULL, &mask);
2469 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2470 }
2471 return 0;
2472
2473 case WM_CONTROL:
2474 switch (SHORT1FROMMP(mp1)) {
2475 case CFG5_FILTER:
2476 switch (SHORT2FROMMP(mp1)) {
2477 case EN_SETFOCUS:
2478 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2479 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2480 break;
2481 }
2482 break;
2483 }
2484 return 0;
2485
2486 case WM_COMMAND:
2487 switch (SHORT1FROMMP(mp1)) {
2488 case IDM_UNDO:
2489 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2490 break;
2491
2492 case DID_CANCEL:
2493 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2494
2495 case DID_OK:
2496 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2497 break;
2498
2499 case IDM_HELP:
2500 if (hwndHelp)
2501 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2502 MPFROM2SHORT(HELP_CFG7, 0), MPFROMSHORT(HM_RESOURCEID));
2503 break;
2504 }
2505 return 0;
2506
2507 case WM_CLOSE:
2508 fExternalCollector = WinQueryButtonCheckstate(hwnd,
2509 CFG5_EXTERNALCOLLECTOR);
2510 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
2511 &fExternalCollector, sizeof(BOOL));
2512 {
2513 ULONG flWindowAttr = 0;
2514
2515 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2516 flWindowAttr |= CV_ICON;
2517 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2518 flWindowAttr |= CV_NAME;
2519 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2520 flWindowAttr |= CV_TEXT;
2521 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2522 flWindowAttr |= CV_DETAIL;
2523 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2524 flWindowAttr |= CV_MINI;
2525 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2526 flWindowAttr |= CA_DETAILSVIEWTITLES;
2527 flWindowAttr |= CV_FLOW;
2528 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2529 &flWindowAttr, sizeof(ULONG));
2530 }
2531 {
2532 DETAILS_SETTINGS ds;
2533
2534 memset(&ds, 0, sizeof(ds));
2535 ds.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
2536 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLongname",
2537 &ds.detailslongname, sizeof(BOOL));
2538 ds.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
2539 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSubject",
2540 &ds.detailssubject, sizeof(BOOL));
2541 ds.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS);
2542 PrfWriteProfileData(fmprof, appname, "Collector.DetailsEA",
2543 &ds.detailsea, sizeof(BOOL));
2544 ds.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
2545 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSize",
2546 &ds.detailssize, sizeof(BOOL));
2547 ds.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
2548 PrfWriteProfileData(fmprof, appname, "Collector.DetailsIcon",
2549 &ds.detailsicon, sizeof(BOOL));
2550 ds.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
2551 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWDate",
2552 &ds.detailslwdate, sizeof(BOOL));
2553 ds.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
2554 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWTime",
2555 &ds.detailslwtime, sizeof(BOOL));
2556 ds.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
2557 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLADate",
2558 &ds.detailsladate, sizeof(BOOL));
2559 ds.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
2560 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLATime",
2561 &ds.detailslatime, sizeof(BOOL));
2562 ds.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
2563 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRDate",
2564 &ds.detailscrdate, sizeof(BOOL));
2565 ds.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
2566 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRTime",
2567 &ds.detailscrtime, sizeof(BOOL));
2568 ds.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
2569 PrfWriteProfileData(fmprof, appname, "Collector.DetailsAttr",
2570 &ds.detailsattr, sizeof(BOOL));
2571 ds.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
2572 PrfWriteProfileData(fmprof, appname, "Collector.SubjectInLeftPane",
2573 &ds.fSubjectInLeftPane, sizeof(BOOL));
2574 ds.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
2575 PrfWriteProfileData(fmprof, appname, "Collector.SubjectLengthMax",
2576 &ds.fSubjectLengthMax, sizeof(BOOL));
2577 *mask.prompt = 0;
2578 PrfWriteProfileData(fmprof,
2579 appname, "CollectorFilter", &mask, sizeof(MASK));
2580 {
2581 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2582 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
2583 MPFROMP(&ds.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2584 if (ds.SubjectDisplayWidth < 50)
2585 ds.SubjectDisplayWidth = 0;
2586 else if (ds.SubjectDisplayWidth > 1000)
2587 ds.SubjectDisplayWidth = 1000;
2588 }
2589 else
2590 ds.SubjectDisplayWidth = 0;
2591 PrfWriteProfileData(fmprof,
2592 appname, "Collector.SubjectDisplayWidth",
2593 &ds.SubjectDisplayWidth, sizeof(ULONG));
2594 }
2595 }
2596 break;
2597 }
2598 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2599}
2600
2601MRESULT EXPENTRY Cfg8DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2602{
2603 switch (msg) {
2604 case WM_INITDLG:
2605 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2606 break;
2607
2608 case WM_HELP:
2609 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2610 break;
2611
2612 case WM_CHAR:
2613 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2614 switch (CHARMSG(&msg)->vkey) {
2615 case VK_F3:
2616 case VK_ENTER:
2617 case VK_NEWLINE:
2618 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2619 return 0;
2620 break;
2621 case VK_ESC:
2622 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2623 return 0;
2624 break;
2625 case VK_F1:
2626 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2627 return 0;
2628 break;
2629 }
2630 }
2631 break;
2632
2633 case UM_UNDO:
2634 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2635 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2636 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2637 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2638 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2639 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2640 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2641 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2642 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2643 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2644 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2645 if (CollectorsortFlags & SORT_FIRSTEXTENSION)
2646 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2647 else if (CollectorsortFlags & SORT_LASTEXTENSION)
2648 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2649 else if (CollectorsortFlags & SORT_SIZE)
2650 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2651 else if (CollectorsortFlags & SORT_EASIZE)
2652 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2653 else if (CollectorsortFlags & SORT_LWDATE)
2654 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2655 else if (CollectorsortFlags & SORT_LADATE)
2656 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2657 else if (CollectorsortFlags & SORT_CRDATE)
2658 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2659 else if (CollectorsortFlags & SORT_FILENAME)
2660 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2661 else
2662 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2663 if (CollectorsortFlags & SORT_DIRSFIRST)
2664 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2665 else if (CollectorsortFlags & SORT_DIRSLAST)
2666 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2667 if (CollectorsortFlags & SORT_REVERSE)
2668 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2669 return 0;
2670
2671 case WM_CONTROL:
2672 switch (SHORT1FROMMP(mp1)) {
2673 case CFG6_SORTDIRSFIRST:
2674 case CFG6_SORTDIRSLAST:
2675 {
2676 BOOL temp;
2677
2678 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2679 if (temp) {
2680 switch (SHORT1FROMMP(mp1)) {
2681 case CFG6_SORTDIRSFIRST:
2682 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2683 break;
2684 case CFG6_SORTDIRSLAST:
2685 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2686 break;
2687 }
2688 }
2689 }
2690 break;
2691 }
2692 return 0;
2693
2694 case WM_COMMAND:
2695 switch (SHORT1FROMMP(mp1)) {
2696 case IDM_UNDO:
2697 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2698 break;
2699
2700 case DID_CANCEL:
2701 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2702
2703 case DID_OK:
2704 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2705 break;
2706
2707 case IDM_HELP:
2708 if (hwndHelp)
2709 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2710 MPFROM2SHORT(HELP_CFG8, 0), MPFROMSHORT(HM_RESOURCEID));
2711 break;
2712 }
2713 return 0;
2714
2715 case WM_CLOSE:
2716 CollectorsortFlags = 0;
2717 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2718 CollectorsortFlags |= SORT_FILENAME;
2719 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2720 CollectorsortFlags |= SORT_SIZE;
2721 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2722 CollectorsortFlags |= SORT_EASIZE;
2723 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2724 CollectorsortFlags |= SORT_FIRSTEXTENSION;
2725 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2726 CollectorsortFlags |= SORT_LASTEXTENSION;
2727 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2728 CollectorsortFlags |= SORT_LWDATE;
2729 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2730 CollectorsortFlags |= SORT_LADATE;
2731 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2732 CollectorsortFlags |= SORT_CRDATE;
2733 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2734 CollectorsortFlags |= SORT_DIRSFIRST;
2735 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2736 CollectorsortFlags |= SORT_DIRSLAST;
2737 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2738 CollectorsortFlags |= SORT_REVERSE;
2739 PrfWriteProfileData(fmprof,
2740 appname,
2741 "CollectorSort", &CollectorsortFlags, sizeof(INT));
2742 break;
2743 }
2744 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2745}
2746
2747MRESULT EXPENTRY Cfg9DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2748{
2749 switch (msg) {
2750 case WM_INITDLG:
2751 break;
2752
2753 case WM_HELP:
2754 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2755 break;
2756
2757 case WM_CHAR:
2758 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2759 switch (CHARMSG(&msg)->vkey) {
2760 case VK_F3:
2761 case VK_ENTER:
2762 case VK_NEWLINE:
2763 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2764 return 0;
2765 break;
2766 case VK_ESC:
2767 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2768 return 0;
2769 break;
2770 case VK_F1:
2771 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2772 return 0;
2773 break;
2774 }
2775 }
2776 break;
2777
2778 case WM_COMMAND:
2779 switch (SHORT1FROMMP(mp1)) {
2780 case IDM_HELP:
2781 if (hwndHelp)
2782 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2783 MPFROM2SHORT(HELP_CFG9, 0), MPFROMSHORT(HM_RESOURCEID));
2784 return 0;
2785 case CFG9_MAXIMUMUI:
2786 if (hwndMain) {
2787 if (MenuInvisible)
2788 WinSendMsg(hwndMain, WM_COMMAND,
2789 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2790 if (!fAutoView)
2791 WinSendMsg(hwndMain, WM_COMMAND,
2792 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2793 if (!fDrivebar)
2794 WinSendMsg(hwndMain, WM_COMMAND,
2795 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2796 if (!fToolbar)
2797 WinSendMsg(hwndMain, WM_COMMAND,
2798 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2799 if (!fMoreButtons)
2800 WinSendMsg(hwndMain, WM_COMMAND,
2801 MPFROM2SHORT(IDM_MOREBUTTONS, 0), MPVOID);
2802 if (!fUserComboBox)
2803 WinSendMsg(hwndMain, WM_COMMAND,
2804 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2805 }
2806 return 0;
2807 case CFG9_MINIMUMUI:
2808 if (hwndMain) {
2809 if (!MenuInvisible)
2810 WinSendMsg(hwndMain, WM_COMMAND,
2811 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2812 if (fAutoView)
2813 WinSendMsg(hwndMain, WM_COMMAND,
2814 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2815 if (fToolbar)
2816 WinSendMsg(hwndMain, WM_COMMAND,
2817 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2818 if (fMoreButtons)
2819 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2820 MPVOID);
2821 if (fUserComboBox)
2822 WinSendMsg(hwndMain, WM_COMMAND,
2823 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2824 saymsg(MB_ENTER | MB_ICONASTERISK,
2825 hwnd,
2826 GetPString(IDS_DONTFORGETTEXT),
2827 GetPString(IDS_UNHIDEMENUWARNTEXT));
2828 }
2829 return 0;
2830 case CFG9_MAXINFOPRETTY:
2831 fLoadSubject = TRUE;
2832 fLoadLongnames = TRUE;
2833 fNoIconsFiles = FALSE;
2834 fNoIconsDirs = FALSE;
2835 fForceUpper = FALSE;
2836 fForceLower = FALSE;
2837 fArcStuffVisible = TRUE;
2838 fSplitStatus = TRUE;
2839 fDragndropDlg = TRUE;
2840 {
2841 ULONG flWindowAttr;
2842
2843 flWindowAttr = CV_DETAIL | CV_FLOW | CA_DETAILSVIEWTITLES;
2844 PrfWriteProfileData(fmprof,
2845 appname,
2846 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2847 PrfWriteProfileData(fmprof,
2848 appname,
2849 "CollectorflWindowAttr",
2850 &flWindowAttr, sizeof(ULONG));
2851 PrfWriteProfileData(fmprof,
2852 appname, "Collector.Fontnamesize", NULL, 0);
2853 }
2854 dsDirCnrDefault.detailslongname = TRUE;
2855 dsDirCnrDefault.detailssubject = TRUE;
2856 dsDirCnrDefault.detailsea = TRUE;
2857 dsDirCnrDefault.detailssize = TRUE;
2858 dsDirCnrDefault.detailsicon = TRUE;
2859 dsDirCnrDefault.detailslwdate = TRUE;
2860 dsDirCnrDefault.detailslwtime = TRUE;
2861 dsDirCnrDefault.detailsladate = TRUE;
2862 dsDirCnrDefault.detailslatime = TRUE;
2863 dsDirCnrDefault.detailscrdate = TRUE;
2864 dsDirCnrDefault.detailscrtime = TRUE;
2865 dsDirCnrDefault.detailsattr = TRUE;
2866 if (hwndTree) {
2867
2868 CNRINFO cnri;
2869 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
2870
2871 memset(&cnri, 0, sizeof(cnri));
2872 cnri.cb = sizeof(cnri);
2873 WinSendMsg(WinWindowFromID
2874 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2875 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2876 cnri.flWindowAttr = flWindowAttr;
2877 WinSendMsg(WinWindowFromID
2878 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2879 CM_SETCNRINFO, MPFROMP(&cnri),
2880 MPFROMLONG(CMA_FLWINDOWATTR));
2881 }
2882 break;
2883
2884 case CFG9_MAXINFOPLAIN:
2885 fLoadSubject = TRUE;
2886 fLoadLongnames = TRUE;
2887 fNoIconsFiles = TRUE;
2888 fNoIconsDirs = TRUE;
2889 fForceUpper = FALSE;
2890 fForceLower = FALSE;
2891 fArcStuffVisible = TRUE;
2892 fSplitStatus = TRUE;
2893 fDragndropDlg = TRUE;
2894 {
2895 ULONG flWindowAttr;
2896
2897 flWindowAttr = CV_DETAIL | CV_FLOW | CV_MINI;
2898 PrfWriteProfileData(fmprof,
2899 appname,
2900 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2901 PrfWriteProfileData(fmprof,
2902 appname,
2903 "CollectorflWindowAttr",
2904 &flWindowAttr, sizeof(ULONG));
2905 PrfWriteProfileData(fmprof,
2906 appname,
2907 "Collector.Fontnamesize",
2908 GetPString(IDS_8HELVTEXT),
2909 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2910 }
2911 dsDirCnrDefault.detailslongname = TRUE;
2912 dsDirCnrDefault.detailssubject = TRUE;
2913 dsDirCnrDefault.detailsea = TRUE;
2914 dsDirCnrDefault.detailssize = TRUE;
2915 dsDirCnrDefault.detailsicon = TRUE;
2916 dsDirCnrDefault.detailslwdate = TRUE;
2917 dsDirCnrDefault.detailslwtime = TRUE;
2918 dsDirCnrDefault.detailsladate = TRUE;
2919 dsDirCnrDefault.detailslatime = TRUE;
2920 dsDirCnrDefault.detailscrdate = TRUE;
2921 dsDirCnrDefault.detailscrtime = TRUE;
2922 dsDirCnrDefault.detailsattr = TRUE;
2923 if (hwndTree) {
2924
2925 CNRINFO cnri;
2926 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_TEXT |
2927 CV_FLOW | CA_TREELINE;
2928
2929 memset(&cnri, 0, sizeof(cnri));
2930 cnri.cb = sizeof(cnri);
2931 WinSendMsg(WinWindowFromID
2932 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2933 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2934 cnri.flWindowAttr = flWindowAttr;
2935 WinSendMsg(WinWindowFromID
2936 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2937 CM_SETCNRINFO, MPFROMP(&cnri),
2938 MPFROMLONG(CMA_FLWINDOWATTR));
2939 }
2940 break;
2941 case CFG9_MAXFILENAMES:
2942 if (hwndMain && fAutoView)
2943 WinSendMsg(hwndMain, WM_COMMAND,
2944 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2945 fForceUpper = FALSE;
2946 fForceLower = TRUE;
2947 fExternalViewer = TRUE;
2948 fExternalArcboxes = TRUE;
2949 fExternalCollector = TRUE;
2950 fExternalINIs = TRUE;
2951 fLoadSubject = FALSE;
2952 fLoadLongnames = FALSE;
2953 fNoIconsFiles = TRUE;
2954 fNoIconsDirs = TRUE;
2955 {
2956 ULONG flWindowAttr;
2957
2958 flWindowAttr = CV_TEXT | CV_FLOW;
2959 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2960 &flWindowAttr, sizeof(ULONG));
2961 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2962 &flWindowAttr, sizeof(ULONG));
2963 PrfWriteProfileData(fmprof, appname, "Collector.Fontnamesize",
2964 GetPString(IDS_8HELVTEXT),
2965 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2966 }
2967 if (hwndTree) {
2968
2969 CNRINFO cnri;
2970 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
2971
2972 memset(&cnri, 0, sizeof(cnri));
2973 cnri.cb = sizeof(cnri);
2974 WinSendMsg(WinWindowFromID
2975 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2976 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2977 cnri.flWindowAttr = flWindowAttr;
2978 WinSendMsg(WinWindowFromID
2979 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2980 CM_SETCNRINFO, MPFROMP(&cnri),
2981 MPFROMLONG(CMA_FLWINDOWATTR));
2982 }
2983 break;
2984 case CFG9_MAXSPEED:
2985 fLoadSubject = FALSE;
2986 fLoadLongnames = FALSE;
2987 fVerify = FALSE;
2988 DosSetVerify(FALSE);
2989 FilesToGet = FILESTOGET_MAX;
2990 fQuickArcFind = TRUE;
2991 fMinOnOpen = TRUE;
2992 fRealIdle = FALSE;
2993 fNoIconsFiles = TRUE;
2994 fNoIconsDirs = TRUE;
2995 fSyncUpdates = FALSE;
2996 fArcStuffVisible = FALSE;
2997 fForceUpper = FALSE;
2998 fForceLower = FALSE;
2999 dsDirCnrDefault.detailslongname = FALSE;
3000 dsDirCnrDefault.detailssubject = FALSE;
3001 break;
3002
3003 case CFG9_HECTOR:
3004 fSwitchTree = TRUE;
3005 fSwitchTreeOnFocus = FALSE;
3006 fSwitchTreeExpand = TRUE;
3007 fCollapseFirst = TRUE;
3008 fSelectedAlways = FALSE;
3009 fTileBackwards = FALSE;
3010 fExternalViewer = FALSE;
3011 fExternalArcboxes = TRUE;
3012 fExternalCollector = FALSE;
3013 fExternalINIs = TRUE;
3014 fCopyDefault = FALSE;
3015 fFollowTree = FALSE;
3016 fLoadSubject = FALSE;
3017 fLoadLongnames = FALSE;
3018 fDontMoveMouse = FALSE;
3019 fUnHilite = TRUE;
3020 fUserListSwitches = TRUE;
3021 fDCOpens = FALSE;
3022 fLinkSetsIcon = FALSE;
3023 fConfirmDelete = TRUE;
3024 fSyncUpdates = FALSE;
3025 fRealIdle = FALSE;
3026 fNoIconsFiles = FALSE;
3027 fNoIconsDirs = TRUE;
3028 fFolderAfterExtract = FALSE;
3029 fVerify = TRUE;
3030 DosSetVerify(TRUE);
3031 fForceUpper = FALSE;
3032 fForceLower = TRUE;
3033 fArcStuffVisible = FALSE;
3034 fVTreeOpensWPS = FALSE;
3035 fRemoteBug = FALSE;
3036 fDragndropDlg = TRUE;
3037 fMinOnOpen = FALSE;
3038 fQuickArcFind = TRUE;
3039 fNoRemovableScan = TRUE;
3040 FilesToGet = FILESTOGET_MIN;
3041 fFreeTree = FALSE;
3042 fSplitStatus = TRUE;
3043 fAutoTile = TRUE;
3044 fSaveState = TRUE;
3045 fStartMinimized = FALSE;
3046 fStartMaximized = FALSE;
3047 fDataMin = FALSE;
3048 ulCnrType = CCS_EXTENDSEL | CCS_MULTIPLESEL;
3049 fNoTreeGap = TRUE;
3050 {
3051 ULONG flWindowAttr;
3052
3053 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
3054 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3055 &flWindowAttr, sizeof(ULONG));
3056 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3057 &flWindowAttr, sizeof(ULONG));
3058 }
3059 dsDirCnrDefault.detailslongname = FALSE;
3060 dsDirCnrDefault.detailssubject = FALSE;
3061 dsDirCnrDefault.detailsea = TRUE;
3062 dsDirCnrDefault.detailssize = TRUE;
3063 dsDirCnrDefault.detailsicon = TRUE;
3064 dsDirCnrDefault.detailslwdate = TRUE;
3065 dsDirCnrDefault.detailslwtime = TRUE;
3066 dsDirCnrDefault.detailsladate = FALSE;
3067 dsDirCnrDefault.detailslatime = FALSE;
3068 dsDirCnrDefault.detailscrdate = FALSE;
3069 dsDirCnrDefault.detailscrtime = FALSE;
3070 dsDirCnrDefault.detailsattr = TRUE;
3071 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3072 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3073 if (hwndMain) {
3074
3075 SWP swp;
3076
3077 if (WinQueryWindowPos(hwndMain, &swp)) {
3078 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3079 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
3080 }
3081 if (MenuInvisible)
3082 WinSendMsg(hwndMain, WM_COMMAND,
3083 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
3084 if (fAutoView)
3085 WinSendMsg(hwndMain, WM_COMMAND,
3086 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3087 if (fToolbar)
3088 WinSendMsg(hwndMain, WM_COMMAND,
3089 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
3090 if (!fDrivebar)
3091 WinSendMsg(hwndMain, WM_COMMAND,
3092 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
3093 if (!fMoreButtons)
3094 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
3095 MPVOID);
3096 if (!fUserComboBox)
3097 WinSendMsg(hwndMain, WM_COMMAND,
3098 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
3099 }
3100 if (hwndTree) {
3101
3102 CNRINFO cnri;
3103 ULONG flWindowAttr = (CV_TREE | CV_TEXT | CV_MINI |
3104 CV_FLOW | CA_TREELINE);
3105
3106 memset(&cnri, 0, sizeof(cnri));
3107 cnri.cb = sizeof(cnri);
3108 WinSendMsg(WinWindowFromID
3109 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3110 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3111 cnri.flWindowAttr = flWindowAttr;
3112 WinSendMsg(WinWindowFromID
3113 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3114 CM_SETCNRINFO, MPFROMP(&cnri),
3115 MPFROMLONG(CMA_FLWINDOWATTR));
3116 }
3117 break;
3118
3119 case CFG9_DEFAULT:
3120 fSwitchTree = FALSE;
3121 fSwitchTreeOnFocus = FALSE;
3122 fSwitchTreeExpand = FALSE;
3123 fCollapseFirst = FALSE;
3124 fSelectedAlways = FALSE;
3125 fTileBackwards = FALSE;
3126 fExternalViewer = FALSE;
3127 fExternalArcboxes = FALSE;
3128 fExternalCollector = FALSE;
3129 fExternalINIs = FALSE;
3130 fCopyDefault = FALSE;
3131 fFollowTree = FALSE;
3132 fLoadSubject = TRUE;
3133 fLoadLongnames = TRUE;
3134 fDontMoveMouse = FALSE;
3135 fUnHilite = TRUE;
3136 fUserListSwitches = FALSE;
3137 fDCOpens = FALSE;
3138 fLinkSetsIcon = FALSE;
3139 fConfirmDelete = TRUE;
3140 fSyncUpdates = FALSE;
3141 fRealIdle = FALSE;
3142 fNoIconsFiles = FALSE;
3143 fNoIconsDirs = FALSE;
3144 fFolderAfterExtract = FALSE;
3145 fVerify = TRUE;
3146 fNoSearch = TRUE;
3147 DosSetVerify(TRUE);
3148 fForceUpper = FALSE;
3149 fForceLower = TRUE;
3150 fArcStuffVisible = TRUE;
3151 fVTreeOpensWPS = FALSE;
3152 fRemoteBug = TRUE;
3153 fDragndropDlg = TRUE;
3154 fMinOnOpen = FALSE;
3155 fQuickArcFind = TRUE;
3156 fNoRemovableScan = FALSE;
3157 FilesToGet = FILESTOGET_MAX;
3158 fFreeTree = FALSE;
3159 fSplitStatus = TRUE;
3160 fAutoTile = TRUE;
3161 fSaveState = TRUE;
3162 fStartMinimized = FALSE;
3163 fStartMaximized = FALSE;
3164 fDataMin = TRUE;
3165 ulCnrType = CCS_EXTENDSEL;
3166 fNoTreeGap = FALSE;
3167 {
3168 ULONG flWindowAttr;
3169
3170 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
3171 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3172 &flWindowAttr, sizeof(ULONG));
3173 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3174 &flWindowAttr, sizeof(ULONG));
3175 }
3176 dsDirCnrDefault.detailslongname = FALSE;
3177 dsDirCnrDefault.detailssubject = FALSE;
3178 dsDirCnrDefault.detailsea = TRUE;
3179 dsDirCnrDefault.detailssize = TRUE;
3180 dsDirCnrDefault.detailsicon = TRUE;
3181 dsDirCnrDefault.detailslwdate = TRUE;
3182 dsDirCnrDefault.detailslwtime = TRUE;
3183 dsDirCnrDefault.detailsladate = FALSE;
3184 dsDirCnrDefault.detailslatime = FALSE;
3185 dsDirCnrDefault.detailscrdate = FALSE;
3186 dsDirCnrDefault.detailscrtime = FALSE;
3187 dsDirCnrDefault.detailsattr = TRUE;
3188 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3189 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3190 if (hwndMain) {
3191
3192 SWP swp;
3193
3194 if (WinQueryWindowPos(hwndMain, &swp)) {
3195 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3196 swp.cx / 5,
3197 swp.cy -
3198 (WinQuerySysValue(HWND_DESKTOP, SV_CYICON) * 2),
3199 SWP_MOVE | SWP_SIZE);
3200 }
3201 }
3202 if (hwndTree) {
3203
3204 CNRINFO cnri;
3205 ULONG flWindowAttr = (CV_TREE | CV_TEXT |
3206 CV_FLOW | CA_TREELINE | CV_MINI);
3207
3208 memset(&cnri, 0, sizeof(cnri));
3209 cnri.cb = sizeof(cnri);
3210 WinSendMsg(WinWindowFromID
3211 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3212 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3213 cnri.flWindowAttr = flWindowAttr;
3214 WinSendMsg(WinWindowFromID
3215 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3216 CM_SETCNRINFO, MPFROMP(&cnri),
3217 MPFROMLONG(CMA_FLWINDOWATTR));
3218 }
3219 break;
3220
3221 case CFG9_WINDOZETHINK:
3222 fTileBackwards = FALSE;
3223 ulCnrType = CCS_MULTIPLESEL;
3224 fFollowTree = TRUE;
3225 fTopDir = FALSE;
3226 fSwitchTree = TRUE;
3227 fSwitchTreeOnFocus = FALSE;
3228 fSwitchTreeExpand = TRUE;
3229 fCollapseFirst = TRUE;
3230 fDCOpens = FALSE;
3231 {
3232 ULONG flWindowAttr;
3233
3234 flWindowAttr = CV_NAME | CV_FLOW | CA_DETAILSVIEWTITLES;
3235 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3236 &flWindowAttr, sizeof(ULONG));
3237 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3238 &flWindowAttr, sizeof(ULONG));
3239 }
3240 fLinkSetsIcon = FALSE;
3241 fFreeTree = FALSE;
3242 fNoTreeGap = TRUE;
3243 fExternalArcboxes = TRUE;
3244 fExternalViewer = TRUE;
3245 fExternalCollector = TRUE;
3246 fExternalINIs = TRUE;
3247 fUserListSwitches = TRUE;
3248 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
3249 MPVOID);
3250 if (hwndTree) {
3251
3252 CNRINFO cnri;
3253 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_ICON |
3254 CV_FLOW | CA_TREELINE;
3255
3256 memset(&cnri, 0, sizeof(cnri));
3257 cnri.cb = sizeof(cnri);
3258 WinSendMsg(WinWindowFromID
3259 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3260 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3261 cnri.flWindowAttr = flWindowAttr;
3262 WinSendMsg(WinWindowFromID
3263 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3264 CM_SETCNRINFO, MPFROMP(&cnri),
3265 MPFROMLONG(CMA_FLWINDOWATTR));
3266 }
3267 if (hwndMain) {
3268 if (fAutoView)
3269 WinSendMsg(hwndMain, WM_COMMAND,
3270 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3271 if (!fDrivebar)
3272 WinSendMsg(hwndMain, WM_COMMAND,
3273 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
3274 {
3275 SWP swp;
3276
3277 if (WinQueryWindowPos(hwndMain, &swp)) {
3278 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3279 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
3280 }
3281 }
3282 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
3283 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1L), MPVOID);
3284 }
3285 return 0;
3286
3287 case CFG9_DOSTHINK:
3288 fTileBackwards = TRUE;
3289 ulCnrType = CCS_MULTIPLESEL;
3290 fSwitchTree = TRUE;
3291 fSwitchTreeOnFocus = FALSE;
3292 fSwitchTreeExpand = TRUE;
3293 fCollapseFirst = TRUE;
3294 fFollowTree = TRUE;
3295 fTopDir = FALSE;
3296 if (hwndMain) {
3297 if (!fTextTools)
3298 WinSendMsg(hwndMain, WM_COMMAND,
3299 MPFROM2SHORT(IDM_TEXTTOOLS, 0), MPVOID);
3300 }
3301 {
3302 ULONG flWindowAttr;
3303
3304 flWindowAttr = CV_TEXT | CV_FLOW | CA_DETAILSVIEWTITLES;
3305 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3306 &flWindowAttr, sizeof(ULONG));
3307 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3308 &flWindowAttr, sizeof(ULONG));
3309 }
3310 if (hwndTree) {
3311
3312 CNRINFO cnri;
3313 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
3314
3315 memset(&cnri, 0, sizeof(cnri));
3316 cnri.cb = sizeof(cnri);
3317 WinSendMsg(WinWindowFromID
3318 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3319 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3320 cnri.flWindowAttr = flWindowAttr;
3321 WinSendMsg(WinWindowFromID
3322 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3323 CM_SETCNRINFO, MPFROMP(&cnri),
3324 MPFROMLONG(CMA_FLWINDOWATTR));
3325 }
3326 /* intentional fallthru */
3327 case CFG9_1X:
3328 if (SHORT1FROMMP(mp1) == CFG9_1X) {
3329 fTileBackwards = FALSE;
3330 ulCnrType = CCS_MULTIPLESEL | CCS_EXTENDSEL;
3331 fSwitchTree = FALSE;
3332 fSwitchTreeOnFocus = FALSE;
3333 fSwitchTreeExpand = FALSE;
3334 fCollapseFirst = FALSE;
3335 fFollowTree = FALSE;
3336 fNoSearch = TRUE;
3337 }
3338 fAutoTile = TRUE;
3339 fSaveState = TRUE;
3340 fDCOpens = FALSE;
3341 fLinkSetsIcon = FALSE;
3342 fFreeTree = FALSE;
3343 fNoTreeGap = TRUE;
3344 fExternalArcboxes = TRUE;
3345 fExternalViewer = TRUE;
3346 fExternalCollector = TRUE;
3347 fExternalINIs = TRUE;
3348 fUserListSwitches = TRUE;
3349 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
3350 MPVOID);
3351 if (hwndTree) {
3352
3353 CNRINFO cnri;
3354 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
3355
3356 memset(&cnri, 0, sizeof(cnri));
3357 cnri.cb = sizeof(cnri);
3358 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
3359 TREE_CNR),
3360 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3361 cnri.flWindowAttr = flWindowAttr;
3362 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
3363 TREE_CNR),
3364 CM_SETCNRINFO,
3365 MPFROMP(&cnri), MPFROMLONG(CMA_FLWINDOWATTR));
3366 }
3367 if (hwndMain) {
3368 if (fAutoView)
3369 WinSendMsg(hwndMain, WM_COMMAND,
3370 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3371 if (fUserComboBox)
3372 WinSendMsg(hwndMain, WM_COMMAND,
3373 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
3374 {
3375 SWP swp;
3376
3377 if (WinQueryWindowPos(hwndMain, &swp)) {
3378 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3379 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
3380 }
3381 }
3382 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
3383 PostMsg(MainObjectHwnd, UM_SETDIR, MPVOID, MPVOID);
3384 }
3385 return 0;
3386
3387 case DID_CANCEL:
3388 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
3389
3390 case DID_OK:
3391 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
3392 return 0;
3393
3394 default:
3395 return 0;
3396 }
3397 // Save new details settings and refresh windows
3398 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname",
3399 &dsDirCnrDefault.detailslongname, sizeof(BOOL));
3400 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject",
3401 &dsDirCnrDefault.detailssubject, sizeof(BOOL));
3402 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA",
3403 &dsDirCnrDefault.detailsea, sizeof(BOOL));
3404 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize",
3405 &dsDirCnrDefault.detailssize, sizeof(BOOL));
3406 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon",
3407 &dsDirCnrDefault.detailsicon, sizeof(BOOL));
3408 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate",
3409 &dsDirCnrDefault.detailslwdate, sizeof(BOOL));
3410 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime",
3411 &dsDirCnrDefault.detailslwtime, sizeof(BOOL));
3412 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate",
3413 &dsDirCnrDefault.detailsladate, sizeof(BOOL));
3414 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime",
3415 &dsDirCnrDefault.detailslatime, sizeof(BOOL));
3416 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate",
3417 &dsDirCnrDefault.detailscrdate, sizeof(BOOL));
3418 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime",
3419 &dsDirCnrDefault.detailscrtime, sizeof(BOOL));
3420 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr",
3421 &dsDirCnrDefault.detailsattr, sizeof(BOOL));
3422 if (hwndMain) {
3423 // Save state and restore to refresh windows with new settings
3424 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
3425 // Tell window procedure to close container windows
3426 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
3427 // Restore saved state
3428 PostMsg(MainObjectHwnd, UM_RESTORE, GetPString(IDS_FM2TEMPTEXT), MPVOID);
3429 }
3430 }
3431 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
3432 UM_UNDO, MPVOID, MPVOID);
3433 return 0;
3434
3435 case WM_CLOSE:
3436 break;
3437 }
3438 return WinDefDlgProc(hwnd, msg, mp1, mp2);
3439}
3440
3441struct
3442{
3443 USHORT usMenuId;
3444 USHORT usFrameId;
3445 ULONG ulTitle;
3446 PFNWP pfnPageProc;
3447 HWND hwnd;
3448 ULONG ulHelpId;
3449 ULONG ulPageId;
3450} np[] = {
3451 { IDM_DIRCNRSETTINGS, CFGD_FRAME, IDS_NOTEDIRCNRS1TEXT, CfgDDlgProc, 0, 0, 0 },
3452 { IDM_DIRVIEWSETTINGS, CFG5_FRAME, IDS_NOTEDIRVIEW1TEXT, Cfg5DlgProc, 0, 0, 0},
3453 { IDM_DIRSORTSETTINGS, CFG6_FRAME, IDS_NOTEDIRSORT1TEXT, Cfg6DlgProc, 0, 0, 0 },
3454 { IDM_COLLECTORVIEWSETTINGS, CFG5_FRAME, IDS_NOTECOLVIEW1TEXT, Cfg7DlgProc, 0, 0, 0 },
3455 { IDM_COLLECTORSORTSETTINGS, CFG6_FRAME, IDS_NOTECOLSORT1TEXT, Cfg8DlgProc, 0, 0, 0 },
3456 { IDM_ARCHIVERSETTINGS, CFGA_FRAME, IDS_NOTEARCHIVER1TEXT, CfgADlgProc, 0, 0, 0 },
3457 { IDM_TREECNRVIEWSETTINGS, CFGT_FRAME, IDS_NOTETREE1TEXT, CfgTDlgProc, 0, 0, 0 },
3458 { IDM_TREECNRSORTSETTINGS, CFGTS_FRAME, IDS_NOTETREESORT1TEXT, CfgTSDlgProc, 0, 0, 0 },
3459 { IDM_VIEWERSETTINGS, CFGV_FRAME, IDS_NOTEVIEWERS1TEXT, CfgVDlgProc, 0, 0, 0 },
3460 { IDM_VIEWERSETTINGS2, CFGH_FRAME, IDS_NOTEVIEWERS3TEXT, CfgHDlgProc, 0, 0, 0 },
3461 { IDM_COMPARESETTINGS, CFGC_FRAME, IDS_NOTECOMPARE1TEXT, CfgCDlgProc, 0, 0, 0 },
3462 { IDM_MONOLITHICSETTINGS, CFGM_FRAME, IDS_NOTEMONOLITHIC1TEXT, CfgMDlgProc, 0, 0, 0 },
3463 { IDM_GENERALSETTINGS, CFGG_FRAME, IDS_NOTEGENERAL1TEXT, CfgGDlgProc, 0, 0, 0 },
3464 { IDM_SCANSETTINGS, CFGS_FRAME, IDS_NOTESCANNING1TEXT, CfgSDlgProc, 0, 0, 0 },
3465 { IDM_BUBBLESSETTINGS, CFGB_FRAME, IDS_NOTEBUBBLE1TEXT, CfgBDlgProc, 0, 0, 0 },
3466 { IDM_QUICKSETTINGS, CFG9_FRAME, IDS_NOTEQUICK1TEXT, Cfg9DlgProc, 0, 0, 0 },
3467 { 0, 0, 0, NULL, 0, 0, 0 } // usFrameId 0 is end marker
3468};
3469
3470static PSZ pszIK_LastSettingsPage = "LastSettingsPage";
3471
3472MRESULT EXPENTRY CfgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
3473{
3474 HWND hwndTemp;
3475 USHORT attrib = BKA_FIRST;
3476 INT x;
3477 ULONG ulPageId;
3478 UINT uPageIndex;
3479 HAB hab;
3480 static HACCEL haccelCfg = NULLHANDLE;
3481
3482 switch (msg) {
3483 case WM_INITDLG:
3484 hwndNotebook = hwnd;
3485 uPageIndex = 0;
3486 hab = WinQueryAnchorBlock(hwnd);
3487 if (haccelCfg == NULLHANDLE) {
3488 haccelCfg = WinLoadAccelTable(hab, FM3ModHandle, CFG_FRAME);
3489 if (haccelCfg == NULLHANDLE)
3490 Win_Error(hwndNotebook, HWND_DESKTOP, pszSrcFile, __LINE__, "WinLoadAccelTable");
3491 }
3492 if (haccelCfg != NULLHANDLE) {
3493 if (!WinSetAccelTable(hab, haccelCfg, hwndNotebook))
3494 Win_Error(hwndNotebook, HWND_DESKTOP, pszSrcFile, __LINE__, "WinSetAccelTable");
3495 // else
3496 // DbgMsg(pszSrcFile, __LINE__, "WinSetAccelTable MAIN_DRIVELIST %x %x", hwndFrame, haccelDriveList);
3497 }
3498
3499 // If generic call, try to find conditional cascade default
3500 // 15 Feb 08 SHL fixme to be gone when/if IDM_NOTEBOOK gone?
3501 if (mp2 == MPFROMLONG(IDM_NOTEBOOK)) {
3502 DbgMsg(pszSrcFile, __LINE__, "Trying to translate IDM_NOTEBOOK");
3503 hwndTemp = WinQueryWindow(hwnd, QW_OWNER);
3504 if (hwndTemp != HWND_DESKTOP) {
3505 HWND hwndMenu;
3506 // Owner is frame if not applet
3507 hwndMenu = WinWindowFromID(hwndTemp, FID_MENU);
3508 if (hwndMenu == NULLHANDLE)
3509 Runtime_Error(pszSrcFile, __LINE__, "FID_MENU");
3510 else {
3511 MENUITEM mi;
3512 BOOL ok;
3513 memset(&mi, 0, sizeof(mi));
3514 ok = (BOOL)WinSendMsg(hwndMenu,
3515 MM_QUERYITEM,
3516 MPFROM2SHORT(IDM_NOTEBOOKSUBMENU, TRUE),
3517 MPFROMP(&mi));
3518 if (!ok)
3519 Runtime_Error(pszSrcFile, __LINE__, "IDM_NOTEBOOKSUBMENU");
3520 else {
3521 mp2 = WinSendMsg(mi.hwndSubMenu, MM_QUERYDEFAULTITEMID, MPVOID, MPVOID);
3522 if (!mp2)
3523 Runtime_Error(pszSrcFile, __LINE__, "MM_QUERYDEFAULTITEMID");
3524 }
3525 }
3526 }
3527 }
3528
3529 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
3530 WinSendDlgItemMsg(hwnd,
3531 CFG_NOTEBOOK,
3532 BKM_SETDIMENSIONS,
3533 MPFROM2SHORT(82, 24), MPFROMLONG(BKA_MAJORTAB));
3534 WinSendDlgItemMsg(hwnd,
3535 CFG_NOTEBOOK,
3536 BKM_SETDIMENSIONS,
3537 MPFROM2SHORT(20, 20), MPFROMLONG(BKA_PAGEBUTTON));
3538 WinSendDlgItemMsg(hwnd,
3539 CFG_NOTEBOOK,
3540 BKM_SETDIMENSIONS,
3541 MPFROM2SHORT(0, 0), MPFROMLONG(BKA_MINORTAB));
3542
3543 // Build and insert notebook pages
3544 for (x = 0; np[x].usFrameId; x++) {
3545 hwndTemp = WinLoadDlg(HWND_DESKTOP,
3546 HWND_DESKTOP,
3547 np[x].pfnPageProc, FM3ModHandle, np[x].usFrameId, MPVOID);
3548 if (!hwndTemp) {
3549 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
3550 "Can not load settings page %u", x);
3551 }
3552 else {
3553 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG)hwnd);
3554 np[x].hwnd = hwndTemp;
3555 np[x].ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3556 CFG_NOTEBOOK,
3557 BKM_INSERTPAGE,
3558 MPFROMLONG(BKA_FIRST),
3559 MPFROM2SHORT(BKA_AUTOPAGESIZE |
3560 BKA_STATUSTEXTON |
3561 BKA_MAJOR, attrib));
3562 attrib = BKA_LAST;
3563 WinSendDlgItemMsg(hwnd,
3564 CFG_NOTEBOOK,
3565 BKM_SETPAGEWINDOWHWND,
3566 MPFROMLONG(np[x].ulPageId), MPFROMLONG(np[x].hwnd));
3567 WinSendDlgItemMsg(hwnd,
3568 CFG_NOTEBOOK,
3569 BKM_SETTABTEXT,
3570 MPFROMLONG(np[x].ulPageId),
3571 MPFROMP(GetPString(np[x].ulTitle)));
3572 WinSendDlgItemMsg(hwnd,
3573 CFG_NOTEBOOK,
3574 BKM_SETSTATUSLINETEXT,
3575 MPFROMLONG(np[x].ulPageId),
3576 MPFROMP(GetPString(np[x].ulTitle + 1)));
3577
3578 if (LONGFROMMP(mp2) == np[x].usMenuId)
3579 uPageIndex = x; // Remember selected page
3580 }
3581 } // for pages
3582
3583 // If quick settings page requested, assume request is for first time init
3584 // Turn to cfg page and show help
3585 // Page will not be available if running fm/2 lite or if load error
3586 // 15 Feb 08 SHL fixme to do just once?
3587 if (mp2 == MPFROMLONG(IDM_QUICKSETTINGS) &&
3588 x-- > 0 &&
3589 np[x].hwnd &&
3590 np[x].usFrameId == CFG9_FRAME)
3591 {
3592 // 10 Jan 08 SHL fixme to document what UM_SETDIR 1 means
3593 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1), MPVOID);
3594 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3595 BKM_TURNTOPAGE, MPFROMLONG(np[x].ulPageId), MPVOID);
3596 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x].hwnd), MPVOID);
3597 PostMsg(np[x].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
3598 }
3599 else if (uPageIndex >= x) {
3600 Runtime_Error(pszSrcFile, __LINE__, "uPageIndex corrupted (%u)",
3601 uPageIndex);
3602 uPageIndex = 0;
3603 }
3604 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3605 BKM_TURNTOPAGE, MPFROMLONG(np[uPageIndex].ulPageId), MPVOID);
3606 // 15 Feb 08 SHL fixme to put focus on first field of page
3607
3608 break;
3609
3610 case UM_FOCUSME:
3611 if (mp1)
3612 WinSetActiveWindow(HWND_DESKTOP, (HWND) mp1);
3613 break;
3614
3615 case UM_SETUP:
3616 WinSetActiveWindow(HWND_DESKTOP, WinQueryWindow(hwnd, QW_OWNER));
3617 WinSetActiveWindow(HWND_DESKTOP, hwnd);
3618 return 0;
3619
3620 case WM_HELP:
3621 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
3622 break;
3623
3624 case WM_CHAR:
3625 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
3626 switch (CHARMSG(&msg)->vkey) {
3627 case VK_F3:
3628 case VK_ENTER:
3629 case VK_NEWLINE:
3630 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
3631 return 0;
3632 break;
3633 case VK_ESC:
3634 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
3635 return 0;
3636 break;
3637 case VK_F1:
3638 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
3639 return 0;
3640 break;
3641 }
3642 }
3643 break;
3644
3645 case WM_COMMAND:
3646 switch (SHORT1FROMMP(mp1)) {
3647 case DID_OK:
3648 WinDismissDlg(hwnd, 1);
3649 break;
3650
3651 case DID_CANCEL:
3652 // Tell current page to undo itself in case changed and still alive
3653 SaveLastPageIndex(hwnd);
3654 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
3655 CFG_NOTEBOOK,
3656 BKM_QUERYPAGEID,
3657 MPFROMLONG(0),
3658 MPFROM2SHORT(BKA_TOP, 0));
3659 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3660 CFG_NOTEBOOK,
3661 BKM_QUERYPAGEWINDOWHWND,
3662 MPFROMLONG(ulPageId), MPVOID);
3663 if (hwndTemp)
3664 WinSendMsg(hwndTemp, UM_UNDO, MPVOID, MPVOID);
3665
3666 WinDismissDlg(hwnd, 0);
3667 break;
3668
3669 case IDM_HELP: /* relay message to appropriate page's window */
3670 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
3671 CFG_NOTEBOOK,
3672 BKM_QUERYPAGEID,
3673 MPFROMLONG(0),
3674 MPFROM2SHORT(BKA_TOP, 0));
3675 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3676 CFG_NOTEBOOK,
3677 BKM_QUERYPAGEWINDOWHWND,
3678 MPFROMLONG(ulPageId), MPVOID);
3679 if (hwndTemp)
3680 PostMsg(hwndTemp, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
3681 break;
3682 }
3683 return 0;
3684
3685 case UM_UNDO:
3686 for (x = 0; np[x].usFrameId; x++) {
3687 if (np[x].hwnd)
3688 WinSendMsg(np[x].hwnd, UM_UNDO, MPVOID, MPVOID);
3689 }
3690 break;
3691
3692 case WM_DESTROY:
3693 if (np[0].usFrameId) {
3694 for (x = 1; np[x].usFrameId; x++) {
3695 if (np[x].hwnd) {
3696 WinSendMsg(np[x].hwnd, WM_CLOSE, MPVOID, MPVOID);
3697 np[x].hwnd = (HWND) 0;
3698 np[x].ulPageId = 0;
3699 }
3700 }
3701 WinSendMsg(np[0].hwnd, WM_CLOSE, MPVOID, MPVOID);
3702 np[0].hwnd = (HWND) 0;
3703 np[0].ulPageId = 0;
3704 }
3705 hwndNotebook = (HWND) 0;
3706 break;
3707 case WM_CLOSE:
3708 SaveLastPageIndex(hwnd);
3709 break;
3710 }
3711 return WinDefDlgProc(hwnd, msg, mp1, mp2);
3712}
3713/**
3714 * Initialize config submenu
3715 * @param hwndMenu is window handle
3716 * @param fIsLite is true if called for fm/2 lite
3717 */
3718
3719VOID CfgMenuInit(HWND hwndMenu, BOOL fIsLite)
3720{
3721 UINT uPageIndex;
3722 ULONG ulSize = sizeof(uPageIndex);
3723 UINT x;
3724 PrfQueryProfileData(fmprof, appname, pszIK_LastSettingsPage, &uPageIndex, &ulSize);
3725 for (x = 0; x < uPageIndex && np[x].usFrameId; x++)
3726 ; // Search
3727 if (np[x].usMenuId)
3728 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[uPageIndex].usMenuId);
3729 // If lite, delete excess items from menus and tables
3730 if (fIsLite) {
3731 WinSendMsg(hwndMenu,
3732 MM_DELETEITEM,
3733 MPFROM2SHORT(IDM_QUICKSETTINGS, FALSE), MPVOID);
3734 // If fm/2 lite drop quick setting page
3735 for (x = 0; np[x].usFrameId && np[x].usFrameId != CFG9_FRAME; x++)
3736 ; // Scan
3737 np[x].usFrameId = 0;
3738 }
3739}
3740
3741static VOID SaveLastPageIndex(HWND hwnd)
3742{
3743 HWND hwndOwner;
3744 HWND hwndMenu;
3745 UINT x;
3746 ULONG ulPageId;
3747
3748 // Owner is frame if not applet
3749 hwndOwner = WinQueryWindow(hwnd, QW_OWNER);
3750 if (hwndOwner != HWND_DESKTOP) {
3751 ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3752 CFG_NOTEBOOK,
3753 BKM_QUERYPAGEID,
3754 MPFROMLONG(0),
3755 MPFROM2SHORT(BKA_TOP, 0));
3756 if (!ulPageId)
3757 Runtime_Error(pszSrcFile, __LINE__, "BKM_QUERYPAGEID");
3758 else {
3759 for (x = 0; np[x].usMenuId && np[x].ulPageId != ulPageId; x++)
3760 ; // Scan
3761 if (!np[x].usMenuId)
3762 Runtime_Error(pszSrcFile, __LINE__, "bad menu id %lu", ulPageId);
3763 else {
3764 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage,
3765 (PVOID)&x, sizeof(x));
3766 hwndMenu = WinWindowFromID(hwndOwner, FID_MENU);
3767 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[x].usMenuId);
3768 }
3769 }
3770 }
3771}
3772
3773#pragma alloc_text(NOTEBOOK,CfgTDlgProc,CfgTSDlgProc,CfgMDlgProc)
3774#pragma alloc_text(NOTEBOOK2,CfgADlgProc,CfgSDlgProc,CfgVDlgProc,CfgHDlgProc)
3775#pragma alloc_text(NOTEBOOK3,CfgDDlgProc,Cfg5DlgProc,Cfg6DlgProc)
3776#pragma alloc_text(NOTEBOOK4,Cfg7DlgProc,Cfg8DlgProc,CfgCDlgProc)
3777#pragma alloc_text(NOTEBOOK5,CfgGDlgProc,CfgDlgProc,CfgBDlgProc)
3778#pragma alloc_text(NOTEBOOK5,CfgMenuInit,SaveLastPageIndex)
Note: See TracBrowser for help on using the repository browser.