source: trunk/dll/notebook.c@ 955

Last change on this file since 955 was 953, checked in by Steven Levine, 18 years ago

Rework code and resources to support settings menu conditional cascade
Optimize last settings menu save/restore

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