source: trunk/dll/notebook.c@ 961

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

Restore SaveDirCnrState internal state save logic - accidentally removed
Move save shutdown state name to strings (IDS_SHUTDOWNSTATE, ShutdownState)

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