source: trunk/dll/notebook.c@ 1844

Last change on this file since 1844 was 1844, checked in by Steven Levine, 10 years ago

Add RESTORE_STATE_... definitions and use

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