source: trunk/dll/notebook.c@ 1039

Last change on this file since 1039 was 1039, checked in by Gregg Young, 17 years ago

Removed unnecessary xfrees and included fortify.h where needed; moved several misplaced (x)frees;

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