source: trunk/dll/notebook.c@ 959

Last change on this file since 959 was 959, checked in by Gregg Young, 18 years ago

Use xfree where appropriate. Check that buffer exists following all xmallocs. Stopped at eas.c with xfree checking. One remaining xmalloc without test in dirsize.c

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