source: trunk/dll/notebook.c@ 971

Last change on this file since 971 was 971, checked in by John Small, 18 years ago

Ticket 230: Fix/improve code related to various state or presparam values
stored in the INI file.

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