source: trunk/dll/notebook.c@ 1711

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

Fix separate parameters. Moved to general page renamed separate settings for apps. Ticket 497

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