source: trunk/dll/notebook.c@ 1806

Last change on this file since 1806 was 1806, checked in by Gregg Young, 10 years ago

Auyo open help only on the first access of quick settlings page during a session. Ticket 520

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