source: trunk/dll/notebook.c@ 1548

Last change on this file since 1548 was 1548, checked in by Gregg Young, 15 years ago

Fixed spurious error message when changing labels in the drive tree with a "not ready" drive selected (Ticket 437).

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