source: trunk/dll/notebook.c@ 972

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

Ticket 230: Added comments.

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