source: trunk/dll/notebook.c@ 1712

Last change on this file since 1712 was 1712, checked in by Gregg Young, 12 years ago

Added comments

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