source: trunk/dll/notebook.c@ 1186

Last change on this file since 1186 was 1186, checked in by John Small, 17 years ago

Ticket 187: Draft 2: Move remaining function declarations

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