source: trunk/dll/notebook.c@ 1664

Last change on this file since 1664 was 1664, checked in by Gregg Young, 13 years ago

Changes to use Unlock to unlock files if Unlock.exe is in path both from menu/toolbar and as part of copy, move and delete operations. Changes to allow copy and move over readonly files with a warning dialog; also added a warning dialog for delete of readonly files

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 131.2 KB
Line 
1
2/***********************************************************************
3
4 $Id: notebook.c 1664 2012-08-05 00:11:07Z 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 fSeparateParms;
172BOOL fShowDriveOnly;
173BOOL fShowEnv;
174BOOL fShowDriveLabelInTree;
175BOOL fShowFSTypeInTree;
176BOOL fShowTarget;
177BOOL fStartMaximized;
178BOOL fStartMinimized;
179BOOL fSwitchTree;
180BOOL fSwitchTreeExpand;
181BOOL fSwitchTreeOnFocus;
182BOOL fSyncUpdates;
183BOOL fTileBackwards;
184BOOL fToolbarHelp;
185BOOL fTrashCan;
186BOOL fUnHilite;
187BOOL fUseNewViewer;
188BOOL fUserListSwitches;
189BOOL fVTreeOpensWPS;
190BOOL fVerify;
191BOOL fViewChild;
192BOOL fWarnReadOnly;
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 {
1558 long th = fNoFinger ? 2 : (fNoDead ? 1 : 0);
1559 WinCheckButton(hwnd, CFGG_NODEAD, th);
1560 }
1561 WinCheckButton(hwnd, CFGG_BORING, fDullMin);
1562 WinCheckButton(hwnd, CFGG_CUSTOMFILEDLG, fCustomFileDlg);
1563 WinCheckButton(hwnd, CFGG_FM2DELETES, fFM2Deletes);
1564 WinCheckButton(hwnd, CFGG_CONFIRMTARGET, fConfirmTarget);
1565 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1566 WinCheckButton(hwnd, CFGG_TRASHCAN, fTrashCan);
1567 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_SETCURRENTVALUE,
1568 MPFROMLONG(MaxComLineStrg), MPVOID);
1569 return 0;
1570
1571 case UM_FOCUSME:
1572 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, IDM_HELP));
1573 return 0;
1574
1575 case UM_SETUP5:
1576 SetTargetDir(hwnd, FALSE);
1577 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1578 return 0;
1579
1580 case WM_CONTROL:
1581 switch (SHORT1FROMMP(mp1)) {
1582 case CFGG_TARGETDIR:
1583 switch (SHORT2FROMMP(mp1)) {
1584 case EN_SETFOCUS:
1585 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1586 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1587 break;
1588 }
1589 break;
1590 }
1591 return 0;
1592
1593 case WM_COMMAND:
1594 switch (SHORT1FROMMP(mp1)) {
1595 case IDM_UNDO:
1596 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1597 break;
1598
1599 case DID_CANCEL:
1600 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1601
1602 case DID_OK:
1603 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1604 break;
1605
1606 case IDM_HELP:
1607 if (hwndHelp)
1608 WinSendMsg(hwndHelp,
1609 HM_DISPLAY_HELP,
1610 MPFROM2SHORT(HELP_CFGG, 0), MPFROMSHORT(HM_RESOURCEID));
1611 break;
1612 }
1613 return 0;
1614
1615 case WM_CLOSE:
1616 {
1617 long test;
1618
1619 test = WinQueryButtonCheckstate(hwnd, CFGG_NODEAD);
1620 fNoDead = (test == 1);
1621 fNoFinger = (test == 2);
1622 PrfWriteProfileData(fmprof, appname, "NoDead", &fNoDead, sizeof(BOOL));
1623 PrfWriteProfileData(fmprof,
1624 appname, "NoFinger", &fNoFinger, sizeof(BOOL));
1625 WinDestroyPointer(hptrFinger);
1626 if (!fNoDead)
1627 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER_ICON);
1628 else
1629 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER2_ICON);
1630 }
1631 fLinkSetsIcon = WinQueryButtonCheckstate(hwnd, CFGG_LINKSETSICON);
1632 PrfWriteProfileData(fmprof,
1633 appname,
1634 "LinkSetsIcon", &fLinkSetsIcon, sizeof(BOOL));
1635 fCustomFileDlg = WinQueryButtonCheckstate(hwnd, CFGG_CUSTOMFILEDLG);
1636 PrfWriteProfileData(fmprof,
1637 appname,
1638 "CustomFileDlg", &fCustomFileDlg, sizeof(BOOL));
1639 fDullMin = WinQueryButtonCheckstate(hwnd, CFGG_BORING);
1640 PrfWriteProfileData(fmprof,
1641 appname, "DullDatabar", &fDullMin, sizeof(BOOL));
1642 fConfirmDelete = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMDELETE);
1643 PrfWriteProfileData(fmprof,
1644 appname,
1645 "ConfirmDelete", &fConfirmDelete, sizeof(BOOL));
1646 fDontMoveMouse = WinQueryButtonCheckstate(hwnd, CFGG_DONTMOVEMOUSE);
1647 PrfWriteProfileData(fmprof,
1648 appname,
1649 "DontMoveMouse", &fDontMoveMouse, sizeof(BOOL));
1650 fCopyDefault = WinQueryButtonCheckstate(hwnd, CFGG_DEFAULTCOPY);
1651 PrfWriteProfileData(fmprof, appname, "DefaultCopy",
1652 &fCopyDefault, sizeof(BOOL));
1653 fRealIdle = WinQueryButtonCheckstate(hwnd, CFGG_IDLECOPY);
1654 PrfWriteProfileData(fmprof, appname, "IdleCopy",
1655 &fRealIdle, sizeof(BOOL));
1656 fDragndropDlg = WinQueryButtonCheckstate(hwnd, CFGG_DNDDLG);
1657 PrfWriteProfileData(fmprof, appname, "Drag&DropDlg",
1658 &fDragndropDlg, sizeof(BOOL));
1659 fVerify = WinQueryButtonCheckstate(hwnd, CFGG_VERIFYWRITES);
1660 PrfWriteProfileData(fmprof, appname, "VerifyWrites",
1661 &fVerify, sizeof(BOOL));
1662 DosSetVerify(fVerify);
1663 fDefaultDeletePerm = WinQueryButtonCheckstate(hwnd,
1664 CFGG_DEFAULTDELETEPERM);
1665 PrfWriteProfileData(fmprof, appname, "DefaultDeletePerm",
1666 &fDefaultDeletePerm, sizeof(BOOL));
1667 fFM2Deletes = WinQueryButtonCheckstate(hwnd, CFGG_FM2DELETES);
1668 PrfWriteProfileData(fmprof, appname, "FM2Deletes",
1669 &fFM2Deletes, sizeof(BOOL));
1670 fTrashCan = WinQueryButtonCheckstate(hwnd, CFGG_TRASHCAN);
1671 PrfWriteProfileData(fmprof, appname, "TrashCan",
1672 &fTrashCan, sizeof(BOOL));
1673 fConfirmTarget = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMTARGET);
1674 PrfWriteProfileData(fmprof, appname, "ConfirmTarget",
1675 &fConfirmTarget, sizeof(BOOL));
1676 fAlertBeepOff = WinQueryButtonCheckstate(hwnd, CFGG_ALERTBEEPOFF);
1677 PrfWriteProfileData(fmprof, appname, "AlertBeepOff",
1678 &fAlertBeepOff, sizeof(BOOL));
1679 fErrorBeepOff = WinQueryButtonCheckstate(hwnd, CFGG_ERRORBEEPOFF);
1680 PrfWriteProfileData(fmprof, appname, "ErrorBeepOff",
1681 &fErrorBeepOff, sizeof(BOOL));
1682 fWarnReadOnly = WinQueryButtonCheckstate(hwnd, CFGG_WARNREADONLY);
1683 PrfWriteProfileData(fmprof, appname, "WarnReadOnly",
1684 &fWarnReadOnly, sizeof(BOOL));
1685 {
1686 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_QUERYVALUE,
1687 MPFROMP(&MaxComLineStrg), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
1688 if (MaxComLineStrg < CMDLNLNGTH_MIN)
1689 MaxComLineStrg = CMDLNLNGTH_MIN;
1690 else if (MaxComLineStrg > CMDLNLNGTH_MAX)
1691 MaxComLineStrg = CMDLNLNGTH_MAX;
1692 PrfWriteProfileData(fmprof,
1693 appname, "MaxComLineStrg", &MaxComLineStrg, sizeof(ULONG));
1694 }
1695 break;
1696 }
1697 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1698}
1699
1700MRESULT EXPENTRY CfgCDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1701{
1702 switch (msg) {
1703 case WM_INITDLG:
1704 WinSendDlgItemMsg(hwnd, CFGC_COMPARE, EM_SETTEXTLIMIT,
1705 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID);
1706 WinSendDlgItemMsg(hwnd, CFGC_DIRCOMPARE, EM_SETTEXTLIMIT,
1707 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID);
1708 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1709 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1710 break;
1711
1712 case WM_HELP:
1713 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1714 break;
1715
1716 case WM_CHAR:
1717 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1718 switch (CHARMSG(&msg)->vkey) {
1719 case VK_F3:
1720 case VK_ENTER:
1721 case VK_NEWLINE:
1722 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1723 return 0;
1724 break;
1725 case VK_ESC:
1726 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1727 return 0;
1728 break;
1729 case VK_F1:
1730 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1731 return 0;
1732 break;
1733 }
1734 }
1735 break;
1736
1737 case UM_UNDO:
1738 WinSetDlgItemText(hwnd, CFGC_COMPARE, compare);
1739 WinSetDlgItemText(hwnd, CFGC_DIRCOMPARE, dircompare);
1740 return 0;
1741
1742 case WM_CONTROL:
1743 switch (SHORT1FROMMP(mp1)) {
1744 case CFGC_COMPARE:
1745 case CFGC_DIRCOMPARE:
1746 switch (SHORT2FROMMP(mp1)) {
1747 case EN_KILLFOCUS:
1748 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1749 break;
1750 case EN_SETFOCUS:
1751 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), TRUE);
1752 break;
1753 }
1754 break;
1755 }
1756 return 0;
1757
1758 case WM_COMMAND:
1759 switch (SHORT1FROMMP(mp1)) {
1760 case IDM_UNDO:
1761 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1762 break;
1763
1764 case DID_CANCEL:
1765 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1766
1767 case DID_OK:
1768 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1769 break;
1770
1771 case IDM_HELP:
1772 if (hwndHelp)
1773 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1774 MPFROM2SHORT(HELP_CFGC, 0), MPFROMSHORT(HM_RESOURCEID));
1775 break;
1776
1777 case CFGC_FIND:
1778 {
1779 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
1780 USHORT id;
1781 HWND hwndFocus;
1782
1783 strcpy(filename, PCSZ_STARDOTEXE);
1784 hwndFocus = WinQueryFocus(HWND_DESKTOP);
1785 if (hwndFocus) {
1786 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
1787 switch (id) {
1788 case CFGC_COMPARE:
1789 case CFGC_DIRCOMPARE:
1790 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
1791 BldQuotedFileName(szfilename, filename);
1792 strcat(szfilename, " %a");
1793 WinSetDlgItemText(hwnd, id, szfilename);
1794 }
1795 break;
1796 default:
1797 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
1798 break;
1799 }
1800 }
1801 }
1802 break;
1803 }
1804 return 0;
1805
1806 case WM_CLOSE:
1807 {
1808 CHAR *szCLBuf;
1809 PSZ pszWorkBuf;
1810
1811 szCLBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__);
1812 if (!szCLBuf)
1813 return 0; //already complained
1814 pszWorkBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__);
1815 if (!pszWorkBuf) {
1816 free(szCLBuf);
1817 return 0; //already complained
1818 }
1819 WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, MaxComLineStrg, szCLBuf);
1820 szCLBuf[MaxComLineStrg - 1] = 0;
1821 if (strcmp(szCLBuf, dircompare)){
1822 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1823 memcpy(dircompare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1824 if (!strchr(dircompare, '%') && strlen(dircompare) > 3)
1825 strcat(dircompare, " %a");
1826 }
1827 PrfWriteProfileString(fmprof, appname, "DirCompare", dircompare);
1828 WinQueryDlgItemText(hwnd, CFGC_COMPARE, MaxComLineStrg, szCLBuf);
1829 szCLBuf[MaxComLineStrg - 1] = 0;
1830 if (strcmp(szCLBuf, compare)){
1831 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1832 memcpy(compare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1833 if (!strchr(compare, '%') && strlen(compare) > 3)
1834 strcat(compare, " %a");
1835 }
1836 free(pszWorkBuf);
1837 free(szCLBuf);
1838 PrfWriteProfileString(fmprof, appname, "Compare", compare);
1839 break;
1840 }
1841 }
1842 if (fCancelAction) {
1843 fCancelAction = FALSE;
1844 WinDlgBox(HWND_DESKTOP,
1845 hwnd,
1846 CfgDlgProc,
1847 FM3ModHandle,
1848 CFG_FRAME,
1849 MPFROMLONG(IDM_COMPARESETTINGS));
1850 }
1851 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1852}
1853
1854MRESULT EXPENTRY CfgDDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1855{
1856
1857 switch (msg) {
1858 case WM_INITDLG:
1859 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1860 break;
1861
1862 case UM_UNDO:
1863 WinCheckButton(hwnd, CFGD_UNHILITE, fUnHilite);
1864 WinCheckButton(hwnd, CFGD_SYNCUPDATES, fSyncUpdates);
1865 WinCheckButton(hwnd, CFGD_LOOKINDIR, fLookInDir);
1866 WinCheckButton(hwnd, CFGD_MINONOPEN, fMinOnOpen);
1867 WinCheckButton(hwnd, CFGD_SELECTEDALWAYS, fSelectedAlways);
1868 WinCheckButton(hwnd, CFGD_NOSEARCH, fNoSearch);
1869 WinCheckButton(hwnd, CFGD_EXTENDEDSEL,
1870 ((ulCnrType & CCS_EXTENDSEL) != 0));
1871 WinCheckButton(hwnd, CFGD_MULTIPLESEL,
1872 ((ulCnrType & CCS_MULTIPLESEL) != 0));
1873 WinCheckButton(hwnd, CFGD_LEAVETREE, fLeaveTree);
1874 WinCheckButton(hwnd, CFGD_NOFOLDMENU, fNoFoldMenu);
1875 return 0;
1876
1877 case WM_HELP:
1878 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1879 break;
1880
1881 case WM_CHAR:
1882 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1883 switch (CHARMSG(&msg)->vkey) {
1884 case VK_F3:
1885 case VK_ENTER:
1886 case VK_NEWLINE:
1887 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1888 return 0;
1889 break;
1890 case VK_ESC:
1891 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1892 return 0;
1893 break;
1894 case VK_F1:
1895 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1896 return 0;
1897 break;
1898 }
1899 }
1900 break;
1901
1902 case WM_COMMAND:
1903 switch (SHORT1FROMMP(mp1)) {
1904 case IDM_UNDO:
1905 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1906 break;
1907
1908 case DID_CANCEL:
1909 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1910
1911 case DID_OK:
1912 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1913 break;
1914
1915 case IDM_HELP:
1916 if (hwndHelp)
1917 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1918 MPFROM2SHORT(HELP_CFGD, 0), MPFROMSHORT(HM_RESOURCEID));
1919 break;
1920 }
1921 return 0;
1922
1923 case WM_CLOSE:
1924 ulCnrType = 0;
1925 if (WinQueryButtonCheckstate(hwnd, CFGD_EXTENDEDSEL))
1926 ulCnrType |= CCS_EXTENDSEL;
1927 if (WinQueryButtonCheckstate(hwnd, CFGD_MULTIPLESEL))
1928 ulCnrType |= CCS_MULTIPLESEL;
1929 PrfWriteProfileData(fmprof, appname, "ContainerType",
1930 (PVOID) & ulCnrType, sizeof(BOOL));
1931 fMinOnOpen = WinQueryButtonCheckstate(hwnd, CFGD_MINONOPEN);
1932 PrfWriteProfileData(fmprof, appname, "MinDirOnOpen", &fMinOnOpen,
1933 sizeof(BOOL));
1934 fLeaveTree = WinQueryButtonCheckstate(hwnd, CFGD_LEAVETREE);
1935 PrfWriteProfileData(fmprof, appname, "LeaveTree", &fLeaveTree,
1936 sizeof(BOOL));
1937 fNoFoldMenu = WinQueryButtonCheckstate(hwnd, CFGD_NOFOLDMENU);
1938 PrfWriteProfileData(fmprof, appname, "NoFoldMenu", &fNoFoldMenu,
1939 sizeof(BOOL));
1940 fSelectedAlways = WinQueryButtonCheckstate(hwnd, CFGD_SELECTEDALWAYS);
1941 PrfWriteProfileData(fmprof, appname, "SelectedAlways", &fSelectedAlways,
1942 sizeof(BOOL));
1943 fNoSearch = WinQueryButtonCheckstate(hwnd, CFGD_NOSEARCH);
1944 PrfWriteProfileData(fmprof, appname, "NoSearch", &fNoSearch,
1945 sizeof(BOOL));
1946 fLookInDir = WinQueryButtonCheckstate(hwnd, CFGD_LOOKINDIR);
1947 PrfWriteProfileData(fmprof, appname, "LookInDir", (PVOID) & fLookInDir,
1948 sizeof(BOOL));
1949 fUnHilite = WinQueryButtonCheckstate(hwnd, CFGD_UNHILITE);
1950 PrfWriteProfileData(fmprof, appname, "UnHilite",
1951 &fUnHilite, sizeof(BOOL));
1952 {
1953 BOOL fOldSyncUpdates = WinQueryButtonCheckstate(hwnd, CFGD_SYNCUPDATES);
1954
1955 if (fOldSyncUpdates != fSyncUpdates) {
1956 fSyncUpdates = fOldSyncUpdates;
1957 if (hwndMain && !strcmp(realappname, FM3Str)) {
1958 // Save state and restore to refresh windows with new settings
1959 if (SaveDirCnrState(hwndMain, PCSZ_FM2TEMPTEXT) > 0) {
1960 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
1961// PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
1962 PostMsg(MainObjectHwnd, UM_RESTORE, (PSZ) PCSZ_FM2TEMPTEXT, MPVOID);
1963 }
1964 }
1965 }
1966 }
1967 PrfWriteProfileData(fmprof, appname, "SyncUpdates",
1968 &fSyncUpdates, sizeof(BOOL));
1969 if (!(ulCnrType & (CCS_EXTENDSEL | CCS_MULTIPLESEL)))
1970 saymsg(MB_ENTER | MB_ICONEXCLAMATION,
1971 HWND_DESKTOP,
1972 GetPString(IDS_WARNINGTEXT),
1973 GetPString(IDS_SELECTTYPEERRORTEXT));
1974 break; // WM_CLOSE
1975 }
1976 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1977}
1978
1979MRESULT EXPENTRY CfgMDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1980{
1981 switch (msg) {
1982 case WM_INITDLG:
1983 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1984 break;
1985
1986 case WM_HELP:
1987 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1988 break;
1989
1990 case WM_CHAR:
1991 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1992 switch (CHARMSG(&msg)->vkey) {
1993 case VK_F3:
1994 case VK_ENTER:
1995 case VK_NEWLINE:
1996 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1997 return 0;
1998 break;
1999 case VK_ESC:
2000 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2001 return 0;
2002 break;
2003 case VK_F1:
2004 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2005 return 0;
2006 break;
2007 }
2008 }
2009 break;
2010
2011 case UM_UNDO:
2012 WinCheckButton(hwnd, CFGM_EXTERNALINIS, fExternalINIs);
2013 WinCheckButton(hwnd, CFGM_EXTERNALARCBOXES, fExternalArcboxes);
2014 WinCheckButton(hwnd, CFGM_EXTERNALVIEWER, fExternalViewer);
2015 WinCheckButton(hwnd, CFGM_EXTERNALCOLLECTOR, fExternalCollector);
2016 WinCheckButton(hwnd, CFGM_SAVESTATE, fSaveState);
2017 WinCheckButton(hwnd, CFGM_AUTOTILE, (fAutoTile));
2018 WinCheckButton(hwnd, CFGM_FREETREE, (fFreeTree));
2019 WinCheckButton(hwnd, CFGM_SPLITSTATUS, (fSplitStatus));
2020 WinCheckButton(hwnd, CFGM_NOTREEGAP, (fNoTreeGap));
2021 WinCheckButton(hwnd, CFGM_STARTMIN, (fStartMinimized));
2022 WinCheckButton(hwnd, CFGM_STARTMAX, (fStartMaximized));
2023 WinCheckButton(hwnd, CFGM_DATAMIN, (fDataMin));
2024 WinCheckButton(hwnd, CFGM_TILEBACKWARDS, (fTileBackwards));
2025 {
2026 long th;
2027
2028 th = (fAutoAddDirs && fAutoAddAllDirs) ? 2 : (fAutoAddDirs) ? 1 : 0;
2029 WinCheckButton(hwnd, CFGM_RECENTDIRS, th);
2030 WinSendMsg(hwnd, UM_RESTORE, MPFROM2SHORT(CFGM_RECENTDIRS, 0), MPVOID);
2031 }
2032 WinCheckButton(hwnd, CFGM_USERLISTSWITCHES, fUserListSwitches);
2033 WinCheckButton(hwnd, CFGM_WSANIMATE, (fwsAnimate != 0));
2034 WinCheckButton(hwnd, CFGM_SEPARATEPARMS, fSeparateParms);
2035 WinCheckButton(hwnd, CFGM_BLUELED, fBlueLED);
2036 WinCheckButton(hwnd, CFGM_SHOWTARGET, fShowTarget);
2037 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), !(fStartMinimized));
2038 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), !(fStartMaximized));
2039 return 0;
2040
2041 case UM_RESTORE:
2042 {
2043 long test;
2044 BOOL th, oh;
2045 char s[80];
2046
2047 test = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2048 th = (test != 0);
2049 oh = (test == 1);
2050 *s = 0;
2051 switch (SHORT1FROMMP(mp1)) {
2052 case CFGM_RECENTDIRS:
2053 sprintf(s,
2054 GetPString(IDS_RECENTHELPWHICHTEXT),
2055 (!oh && th) ?
2056 GetPString(IDS_RECENTONLYTEXT) :
2057 (oh && th) ?
2058 GetPString(IDS_ALLONLYTEXT) : GetPString(IDS_NONE));
2059 break;
2060 }
2061 if (*s)
2062 WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), s);
2063 }
2064 return 0;
2065
2066 case WM_CONTROL:
2067 switch (SHORT1FROMMP(mp1)) {
2068 case CFGM_RECENTDIRS:
2069 WinSendMsg(hwnd, UM_RESTORE, mp1, MPVOID);
2070 break;
2071 case CFGM_STARTMIN:
2072 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN)) {
2073 WinCheckButton(hwnd, CFGM_STARTMAX, FALSE);
2074 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), FALSE);
2075 }
2076 else
2077 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), TRUE);
2078 break;
2079 case CFGM_STARTMAX:
2080 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX)) {
2081 WinCheckButton(hwnd, CFGM_STARTMIN, FALSE);
2082 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), FALSE);
2083 }
2084 else
2085 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), TRUE);
2086 break;
2087 }
2088 return 0;
2089
2090 case WM_COMMAND:
2091 switch (SHORT1FROMMP(mp1)) {
2092 case IDM_UNDO:
2093 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2094 break;
2095
2096 case DID_CANCEL:
2097 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2098
2099 case DID_OK:
2100 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2101 break;
2102
2103 case IDM_HELP:
2104 if (hwndHelp)
2105 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2106 MPFROM2SHORT(HELP_CFGM, 0), MPFROMSHORT(HM_RESOURCEID));
2107 break;
2108 }
2109 return 0;
2110
2111 case WM_CLOSE:
2112 if (hwndMain && !strcmp(realappname, FM3Str)) {
2113 if (fFreeTree != WinQueryButtonCheckstate(hwnd, CFGM_FREETREE))
2114 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_FREETREE, 0), MPVOID);
2115 if (fAutoTile != WinQueryButtonCheckstate(hwnd, CFGM_AUTOTILE))
2116 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_AUTOTILE, 0), MPVOID);
2117 if (fSplitStatus != WinQueryButtonCheckstate(hwnd, CFGM_SPLITSTATUS)) {
2118 fSplitStatus = (fSplitStatus) ? FALSE : TRUE;
2119 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_BLINK, 0), MPVOID);
2120 PrfWriteProfileData(fmprof, FM3Str, "SplitStatus", &fSplitStatus,
2121 sizeof(BOOL));
2122 }
2123 }
2124 fUserListSwitches = WinQueryButtonCheckstate(hwnd, CFGM_USERLISTSWITCHES);
2125 PrfWriteProfileData(fmprof, FM3Str, "UserListSwitches",
2126 (PVOID) & fUserListSwitches, sizeof(BOOL));
2127 fExternalINIs = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALINIS);
2128 PrfWriteProfileData(fmprof, FM3Str, "ExternalINIs",
2129 (PVOID) & fExternalINIs, sizeof(BOOL));
2130 fExternalArcboxes = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALARCBOXES);
2131 PrfWriteProfileData(fmprof, FM3Str, "ExternalArcboxes",
2132 (PVOID) & fExternalArcboxes, sizeof(BOOL));
2133 fExternalCollector =
2134 WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALCOLLECTOR);
2135 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
2136 (PVOID) & fExternalCollector, sizeof(BOOL));
2137 fExternalViewer = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALVIEWER);
2138 PrfWriteProfileData(fmprof, FM3Str, "ExternalViewer",
2139 (PVOID) & fExternalViewer, sizeof(BOOL));
2140 {
2141 long test;
2142
2143 test = WinQueryButtonCheckstate(hwnd, CFGM_RECENTDIRS);
2144 fAutoAddDirs = (test != 0);
2145 fAutoAddAllDirs = (test == 2);
2146 }
2147 PrfWriteProfileData(fmprof,
2148 appname,
2149 "AutoAddDirs", (PVOID) & fAutoAddDirs, sizeof(BOOL));
2150 PrfWriteProfileData(fmprof,
2151 appname,
2152 "AutoAddAllDirs",
2153 (PVOID) & fAutoAddAllDirs, sizeof(BOOL));
2154 fwsAnimate = WinQueryButtonCheckstate(hwnd, CFGM_WSANIMATE);
2155 if (fwsAnimate)
2156 fwsAnimate = WS_ANIMATE;
2157 PrfWriteProfileData(fmprof,
2158 appname,
2159 "WS_ANIMATE", (PVOID) & fwsAnimate, sizeof(ULONG));
2160 fSaveState = WinQueryButtonCheckstate(hwnd, CFGM_SAVESTATE);
2161 PrfWriteProfileData(fmprof,
2162 FM3Str,
2163 "SaveState", (PVOID) & fSaveState, sizeof(BOOL));
2164 fStartMinimized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN);
2165 PrfWriteProfileData(fmprof,
2166 appname,
2167 "StartMinimized",
2168 (PVOID) & fStartMinimized, sizeof(BOOL));
2169 fStartMaximized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX);
2170 PrfWriteProfileData(fmprof,
2171 appname,
2172 "StartMaximized",
2173 (PVOID) & fStartMaximized, sizeof(BOOL));
2174 fDataMin = WinQueryButtonCheckstate(hwnd, CFGM_DATAMIN);
2175 PrfWriteProfileData(fmprof,
2176 appname, "DataMin", (PVOID) & fDataMin, sizeof(BOOL));
2177 fTileBackwards = WinQueryButtonCheckstate(hwnd, CFGM_TILEBACKWARDS);
2178 PrfWriteProfileData(fmprof,
2179 FM3Str,
2180 "TileBackwards",
2181 (PVOID) & fTileBackwards, sizeof(BOOL));
2182 fNoTreeGap = WinQueryButtonCheckstate(hwnd, CFGM_NOTREEGAP);
2183 PrfWriteProfileData(fmprof,
2184 appname,
2185 "NoTreeGap", (PVOID) & fNoTreeGap, sizeof(BOOL));
2186 fBlueLED = WinQueryButtonCheckstate(hwnd, CFGM_BLUELED);
2187 PrfWriteProfileData(fmprof,
2188 appname, "BlueLED", (PVOID) & fBlueLED, sizeof(BOOL));
2189 {
2190 BOOL dummy;
2191
2192 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SHOWTARGET);
2193 if (dummy != fShowTarget) {
2194 fShowTarget = dummy;
2195 PrfWriteProfileData(fmprof,
2196 appname,
2197 "ShowTarget",
2198 (PVOID) & fShowTarget, sizeof(BOOL));
2199 if (hwndMain)
2200 PostMsg(WinQueryWindow(hwndMain, QW_PARENT),
2201 WM_UPDATEFRAME, MPFROMLONG(FCF_SIZEBORDER), MPVOID);
2202 SetTargetDir(hwnd, TRUE);
2203 }
2204 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SEPARATEPARMS);
2205 if (dummy != fSeparateParms) {
2206 fSeparateParms = dummy;
2207 PrfWriteProfileData(fmprof,
2208 appname,
2209 "SeparateParms",
2210 (PVOID) & fSeparateParms, sizeof(BOOL));
2211 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
2212 UM_UNDO, MPVOID, MPVOID);
2213 }
2214 }
2215 break;
2216 }
2217 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2218}
2219
2220MRESULT EXPENTRY Cfg5DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2221{
2222 static MASK mask;
2223
2224 switch (msg) {
2225 case WM_INITDLG:
2226 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
2227 MPFROMSHORT(8), MPVOID);
2228 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
2229 MPFROMLONG(1000), MPFROMLONG(50));
2230 WinSendDlgItemMsg(hwnd,
2231 CFG5_FILTER,
2232 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
2233 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2234 break;
2235
2236 case WM_HELP:
2237 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2238 break;
2239
2240 case WM_CHAR:
2241 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2242 switch (CHARMSG(&msg)->vkey) {
2243 case VK_F3:
2244 case VK_ENTER:
2245 case VK_NEWLINE:
2246 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2247 return 0;
2248 break;
2249 case VK_ESC:
2250 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2251 return 0;
2252 break;
2253 case VK_F1:
2254 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2255 return 0;
2256 break;
2257 }
2258 }
2259 break;
2260
2261 case UM_FOCUSME:
2262 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
2263 return 0;
2264
2265 case UM_UNDO:
2266 {
2267 ULONG flWindowAttr = 0;
2268 ULONG ulSize = sizeof(ULONG);
2269
2270 if (!PrfQueryProfileData(fmprof,
2271 appname,
2272 "DirflWindowAttr", &flWindowAttr, &ulSize))
2273 flWindowAttr = (CV_NAME | CV_MINI | CA_DETAILSVIEWTITLES | CV_FLOW);
2274 if (flWindowAttr & CV_ICON)
2275 WinCheckButton(hwnd, CFG5_ICON, TRUE);
2276 if (flWindowAttr & CV_NAME)
2277 WinCheckButton(hwnd, CFG5_NAME, TRUE);
2278 if (flWindowAttr & CV_TEXT)
2279 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
2280 if (flWindowAttr & CV_DETAIL)
2281 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
2282 if (flWindowAttr & CV_MINI)
2283 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
2284 if (flWindowAttr & CA_DETAILSVIEWTITLES)
2285 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
2286 WinCheckButton(hwnd, CFG5_SHOWLNAMES, dsDirCnrDefault.detailslongname);
2287 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, dsDirCnrDefault.detailssubject);
2288 WinCheckButton(hwnd, CFG5_SHOWEAS, dsDirCnrDefault.detailsea);
2289 WinCheckButton(hwnd, CFG5_SHOWSIZE, dsDirCnrDefault.detailssize);
2290 WinCheckButton(hwnd, CFG5_SHOWICON, dsDirCnrDefault.detailsicon);
2291 WinCheckButton(hwnd, CFG5_SHOWLWDATE, dsDirCnrDefault.detailslwdate);
2292 WinCheckButton(hwnd, CFG5_SHOWLWTIME, dsDirCnrDefault.detailslwtime);
2293 WinCheckButton(hwnd, CFG5_SHOWLADATE, dsDirCnrDefault.detailsladate);
2294 WinCheckButton(hwnd, CFG5_SHOWLATIME, dsDirCnrDefault.detailslatime);
2295 WinCheckButton(hwnd, CFG5_SHOWCRDATE, dsDirCnrDefault.detailscrdate);
2296 WinCheckButton(hwnd, CFG5_SHOWCRTIME, dsDirCnrDefault.detailscrtime);
2297 WinCheckButton(hwnd, CFG5_SHOWATTR, dsDirCnrDefault.detailsattr);
2298 memset(&mask, 0, sizeof(mask));
2299 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2300 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2301 ulSize = sizeof(MASK);
2302 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, &ulSize))
2303 SetMask(NULL, &mask);
2304 if (!mask.attrFile)
2305 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2306 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2307 strcpy(mask.prompt, GetPString(IDS_DEFDIRFILTERTITLETEXT));
2308 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2309 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, dsDirCnrDefault.fSubjectInLeftPane);
2310 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, dsDirCnrDefault.fSubjectLengthMax);
2311 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
2312 MPFROMLONG(dsDirCnrDefault.SubjectDisplayWidth), MPVOID);
2313 }
2314 return 0;
2315
2316 case UM_SETUP5:
2317 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2318 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2319 SetMask(NULL, &mask);
2320 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2321 }
2322 return 0;
2323
2324 case WM_CONTROL:
2325 switch (SHORT1FROMMP(mp1)) {
2326 case CFG5_FILTER:
2327 switch (SHORT2FROMMP(mp1)) {
2328 case EN_SETFOCUS:
2329 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2330 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2331 break;
2332 }
2333 break;
2334 }
2335 return 0;
2336
2337 case WM_COMMAND:
2338 switch (SHORT1FROMMP(mp1)) {
2339 case IDM_UNDO:
2340 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2341 break;
2342
2343 case DID_CANCEL:
2344 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2345
2346 case DID_OK:
2347 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2348 break;
2349
2350 case IDM_HELP:
2351 if (hwndHelp)
2352 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2353 MPFROM2SHORT(HELP_CFG5, 0), MPFROMSHORT(HM_RESOURCEID));
2354 break;
2355 }
2356 return 0;
2357
2358 case WM_CLOSE:
2359 {
2360 ULONG flWindowAttr = 0;
2361
2362 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2363 flWindowAttr |= CV_ICON;
2364 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2365 flWindowAttr |= CV_NAME;
2366 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2367 flWindowAttr |= CV_TEXT;
2368 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2369 flWindowAttr |= CV_DETAIL;
2370 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2371 flWindowAttr |= CV_MINI;
2372 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2373 flWindowAttr |= CA_DETAILSVIEWTITLES;
2374 flWindowAttr |= CV_FLOW;
2375 PrfWriteProfileData(fmprof,
2376 appname,
2377 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2378 }
2379 dsDirCnrDefault.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
2380 dsDirCnrDefault.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
2381 dsDirCnrDefault.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS);
2382 dsDirCnrDefault.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
2383 dsDirCnrDefault.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
2384 dsDirCnrDefault.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
2385 dsDirCnrDefault.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
2386 dsDirCnrDefault.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
2387 dsDirCnrDefault.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
2388 dsDirCnrDefault.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
2389 dsDirCnrDefault.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
2390 dsDirCnrDefault.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
2391 dsDirCnrDefault.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
2392 dsDirCnrDefault.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
2393 *mask.prompt = 0;
2394 PrfWriteProfileData(fmprof, appname, "DirFilter", &mask, sizeof(MASK));
2395 {
2396 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2397 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
2398 MPFROMP(&dsDirCnrDefault.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2399 if (dsDirCnrDefault.SubjectDisplayWidth < 50)
2400 dsDirCnrDefault.SubjectDisplayWidth = 0;
2401 else if (dsDirCnrDefault.SubjectDisplayWidth > 1000)
2402 dsDirCnrDefault.SubjectDisplayWidth = 1000;
2403 }
2404 else
2405 dsDirCnrDefault.SubjectDisplayWidth = 0;
2406 }
2407 WriteDetailsSwitches(PCSZ_DIRCNR, &dsDirCnrDefault, FALSE);
2408 break;
2409 }
2410 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2411}
2412
2413MRESULT EXPENTRY Cfg6DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2414{
2415 switch (msg) {
2416 case WM_INITDLG:
2417 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2418 break;
2419
2420 case WM_HELP:
2421 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2422 break;
2423
2424 case WM_CHAR:
2425 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2426 switch (CHARMSG(&msg)->vkey) {
2427 case VK_F3:
2428 case VK_ENTER:
2429 case VK_NEWLINE:
2430 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2431 return 0;
2432 break;
2433 case VK_ESC:
2434 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2435 return 0;
2436 break;
2437 case VK_F1:
2438 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2439 return 0;
2440 break;
2441 }
2442 }
2443 break;
2444
2445 case UM_UNDO:
2446 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2447 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2448 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2449 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2450 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2451 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2452 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2453 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2454 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2455 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2456 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2457 if (sortFlags & SORT_FIRSTEXTENSION)
2458 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2459 else if (sortFlags & SORT_LASTEXTENSION)
2460 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2461 else if (sortFlags & SORT_SIZE)
2462 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2463 else if (sortFlags & SORT_EASIZE)
2464 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2465 else if (sortFlags & SORT_LWDATE)
2466 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2467 else if (sortFlags & SORT_LADATE)
2468 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2469 else if (sortFlags & SORT_CRDATE)
2470 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2471 else if (sortFlags & SORT_FILENAME)
2472 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2473 else
2474 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2475 if (sortFlags & SORT_DIRSFIRST)
2476 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2477 else if (sortFlags & SORT_DIRSLAST)
2478 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2479 if (sortFlags & SORT_REVERSE)
2480 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2481 return 0;
2482
2483 case WM_CONTROL:
2484 switch (SHORT1FROMMP(mp1)) {
2485 case CFG6_SORTDIRSFIRST:
2486 case CFG6_SORTDIRSLAST:
2487 {
2488 BOOL temp;
2489
2490 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2491 if (temp) {
2492 switch (SHORT1FROMMP(mp1)) {
2493 case CFG6_SORTDIRSFIRST:
2494 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2495 break;
2496 case CFG6_SORTDIRSLAST:
2497 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2498 break;
2499 }
2500 }
2501 }
2502 break;
2503 }
2504 return 0;
2505
2506 case WM_COMMAND:
2507 switch (SHORT1FROMMP(mp1)) {
2508 case IDM_UNDO:
2509 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2510 break;
2511
2512 case DID_CANCEL:
2513 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2514
2515 case DID_OK:
2516 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2517 break;
2518
2519 case IDM_HELP:
2520 if (hwndHelp)
2521 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2522 MPFROM2SHORT(HELP_CFG6, 0), MPFROMSHORT(HM_RESOURCEID));
2523 break;
2524 }
2525 return 0;
2526
2527 case WM_CLOSE:
2528 sortFlags = 0;
2529 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2530 sortFlags |= SORT_FILENAME;
2531 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2532 sortFlags |= SORT_SIZE;
2533 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2534 sortFlags |= SORT_EASIZE;
2535 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2536 sortFlags |= SORT_FIRSTEXTENSION;
2537 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2538 sortFlags |= SORT_LASTEXTENSION;
2539 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2540 sortFlags |= SORT_LWDATE;
2541 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2542 sortFlags |= SORT_LADATE;
2543 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2544 sortFlags |= SORT_CRDATE;
2545 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2546 sortFlags |= SORT_DIRSFIRST;
2547 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2548 sortFlags |= SORT_DIRSLAST;
2549 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2550 sortFlags |= SORT_REVERSE;
2551 PrfWriteProfileData(fmprof, appname, "Sort", &sortFlags, sizeof(INT));
2552 break;
2553 }
2554 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2555}
2556
2557MRESULT EXPENTRY Cfg7DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2558{
2559 static MASK mask;
2560
2561 switch (msg) {
2562 case WM_INITDLG:
2563 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
2564 MPFROMSHORT(8), MPVOID);
2565 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
2566 MPFROMLONG(1000), MPFROMLONG(50));
2567 WinSendDlgItemMsg(hwnd, CFG5_FILTER, EM_SETTEXTLIMIT,
2568 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
2569 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2570 break;
2571
2572 case WM_HELP:
2573 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2574 break;
2575
2576 case WM_CHAR:
2577 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2578 switch (CHARMSG(&msg)->vkey) {
2579 case VK_F3:
2580 case VK_ENTER:
2581 case VK_NEWLINE:
2582 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2583 return 0;
2584 break;
2585 case VK_ESC:
2586 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2587 return 0;
2588 break;
2589 case VK_F1:
2590 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2591 return 0;
2592 break;
2593 }
2594 }
2595 break;
2596
2597 case UM_FOCUSME:
2598 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
2599 return 0;
2600
2601 case UM_UNDO:
2602 WinCheckButton(hwnd, CFG5_EXTERNALCOLLECTOR, fExternalCollector);
2603 {
2604 ULONG flWindowAttr = 0;
2605 ULONG ulSize = sizeof(ULONG);
2606
2607 if (!PrfQueryProfileData(fmprof,
2608 appname,
2609 "CollectorflWindowAttr", &flWindowAttr, &ulSize))
2610 flWindowAttr = (CV_NAME | CA_DETAILSVIEWTITLES | CV_MINI | CV_FLOW);
2611 if (flWindowAttr & CV_ICON)
2612 WinCheckButton(hwnd, CFG5_ICON, TRUE);
2613 if (flWindowAttr & CV_NAME)
2614 WinCheckButton(hwnd, CFG5_NAME, TRUE);
2615 if (flWindowAttr & CV_TEXT)
2616 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
2617 if (flWindowAttr & CV_DETAIL)
2618 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
2619 if (flWindowAttr & CV_MINI)
2620 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
2621 if (flWindowAttr & CA_DETAILSVIEWTITLES)
2622 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
2623 memset(&mask, 0, sizeof(mask));
2624 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2625 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2626 ulSize = sizeof(MASK);
2627 if (PrfQueryProfileData(fmprof,
2628 appname, "CollectorFilter", &mask, &ulSize)) {
2629 SetMask(NULL, &mask);
2630 }
2631 if (!mask.attrFile)
2632 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2633 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2634 strcpy(mask.prompt, GetPString(IDS_DEFCOLFILTERTITLETEXT));
2635 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2636 }
2637 {
2638 DETAILS_SETTINGS ds;
2639
2640 memset(&ds, 0, sizeof(ds));
2641 LoadDetailsSwitches(PCSZ_COLLECTOR, &ds, FALSE);
2642 WinCheckButton(hwnd, CFG5_SHOWLNAMES, ds.detailslongname);
2643 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, ds.detailssubject);
2644 WinCheckButton(hwnd, CFG5_SHOWEAS, ds.detailsea);
2645 WinCheckButton(hwnd, CFG5_SHOWSIZE, ds.detailssize);
2646 WinCheckButton(hwnd, CFG5_SHOWICON, ds.detailsicon);
2647 WinCheckButton(hwnd, CFG5_SHOWLWDATE, ds.detailslwdate);
2648 WinCheckButton(hwnd, CFG5_SHOWLWTIME, ds.detailslwtime);
2649 WinCheckButton(hwnd, CFG5_SHOWLADATE, ds.detailsladate);
2650 WinCheckButton(hwnd, CFG5_SHOWLATIME, ds.detailslatime);
2651 WinCheckButton(hwnd, CFG5_SHOWCRDATE, ds.detailscrdate);
2652 WinCheckButton(hwnd, CFG5_SHOWCRTIME, ds.detailscrtime);
2653 WinCheckButton(hwnd, CFG5_SHOWATTR, ds.detailsattr);
2654 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, ds.fSubjectInLeftPane);
2655 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, ds.fSubjectLengthMax);
2656 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
2657 MPFROMLONG(ds.SubjectDisplayWidth), MPVOID);
2658
2659 }
2660 return 0;
2661
2662 case UM_SETUP5:
2663 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2664 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2665 SetMask(NULL, &mask);
2666 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2667 }
2668 return 0;
2669
2670 case WM_CONTROL:
2671 switch (SHORT1FROMMP(mp1)) {
2672 case CFG5_FILTER:
2673 switch (SHORT2FROMMP(mp1)) {
2674 case EN_SETFOCUS:
2675 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2676 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2677 break;
2678 }
2679 break;
2680 }
2681 return 0;
2682
2683 case WM_COMMAND:
2684 switch (SHORT1FROMMP(mp1)) {
2685 case IDM_UNDO:
2686 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2687 break;
2688
2689 case DID_CANCEL:
2690 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2691
2692 case DID_OK:
2693 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2694 break;
2695
2696 case IDM_HELP:
2697 if (hwndHelp)
2698 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2699 MPFROM2SHORT(HELP_CFG7, 0), MPFROMSHORT(HM_RESOURCEID));
2700 break;
2701 }
2702 return 0;
2703
2704 case WM_CLOSE:
2705 fExternalCollector = WinQueryButtonCheckstate(hwnd,
2706 CFG5_EXTERNALCOLLECTOR);
2707 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
2708 &fExternalCollector, sizeof(BOOL));
2709 {
2710 ULONG flWindowAttr = 0;
2711
2712 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2713 flWindowAttr |= CV_ICON;
2714 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2715 flWindowAttr |= CV_NAME;
2716 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2717 flWindowAttr |= CV_TEXT;
2718 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2719 flWindowAttr |= CV_DETAIL;
2720 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2721 flWindowAttr |= CV_MINI;
2722 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2723 flWindowAttr |= CA_DETAILSVIEWTITLES;
2724 flWindowAttr |= CV_FLOW;
2725 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2726 &flWindowAttr, sizeof(ULONG));
2727 }
2728 {
2729 DETAILS_SETTINGS ds;
2730
2731 memset(&ds, 0, sizeof(ds));
2732 ds.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
2733 ds.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
2734 ds.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS);
2735 ds.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
2736 ds.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
2737 ds.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
2738 ds.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
2739 ds.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
2740 ds.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
2741 ds.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
2742 ds.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
2743 ds.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
2744 ds.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
2745 ds.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
2746 *mask.prompt = 0;
2747 PrfWriteProfileData(fmprof,
2748 appname, "CollectorFilter", &mask, sizeof(MASK));
2749 {
2750 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2751 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
2752 MPFROMP(&ds.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2753 if (ds.SubjectDisplayWidth < 50)
2754 ds.SubjectDisplayWidth = 0;
2755 else if (ds.SubjectDisplayWidth > 1000)
2756 ds.SubjectDisplayWidth = 1000;
2757 }
2758 else
2759 ds.SubjectDisplayWidth = 0;
2760 }
2761 WriteDetailsSwitches(PCSZ_COLLECTOR, &ds, FALSE);
2762 }
2763 break;
2764 }
2765 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2766}
2767
2768MRESULT EXPENTRY Cfg8DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2769{
2770 switch (msg) {
2771 case WM_INITDLG:
2772 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2773 break;
2774
2775 case WM_HELP:
2776 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2777 break;
2778
2779 case WM_CHAR:
2780 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2781 switch (CHARMSG(&msg)->vkey) {
2782 case VK_F3:
2783 case VK_ENTER:
2784 case VK_NEWLINE:
2785 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2786 return 0;
2787 break;
2788 case VK_ESC:
2789 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2790 return 0;
2791 break;
2792 case VK_F1:
2793 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2794 return 0;
2795 break;
2796 }
2797 }
2798 break;
2799
2800 case UM_UNDO:
2801 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2802 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2803 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2804 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2805 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2806 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2807 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2808 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2809 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2810 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2811 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2812 if (CollectorsortFlags & SORT_FIRSTEXTENSION)
2813 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2814 else if (CollectorsortFlags & SORT_LASTEXTENSION)
2815 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2816 else if (CollectorsortFlags & SORT_SIZE)
2817 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2818 else if (CollectorsortFlags & SORT_EASIZE)
2819 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2820 else if (CollectorsortFlags & SORT_LWDATE)
2821 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2822 else if (CollectorsortFlags & SORT_LADATE)
2823 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2824 else if (CollectorsortFlags & SORT_CRDATE)
2825 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2826 else if (CollectorsortFlags & SORT_FILENAME)
2827 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2828 else
2829 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2830 if (CollectorsortFlags & SORT_DIRSFIRST)
2831 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2832 else if (CollectorsortFlags & SORT_DIRSLAST)
2833 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2834 if (CollectorsortFlags & SORT_REVERSE)
2835 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2836 return 0;
2837
2838 case WM_CONTROL:
2839 switch (SHORT1FROMMP(mp1)) {
2840 case CFG6_SORTDIRSFIRST:
2841 case CFG6_SORTDIRSLAST:
2842 {
2843 BOOL temp;
2844
2845 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2846 if (temp) {
2847 switch (SHORT1FROMMP(mp1)) {
2848 case CFG6_SORTDIRSFIRST:
2849 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2850 break;
2851 case CFG6_SORTDIRSLAST:
2852 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2853 break;
2854 }
2855 }
2856 }
2857 break;
2858 }
2859 return 0;
2860
2861 case WM_COMMAND:
2862 switch (SHORT1FROMMP(mp1)) {
2863 case IDM_UNDO:
2864 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2865 break;
2866
2867 case DID_CANCEL:
2868 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2869
2870 case DID_OK:
2871 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2872 break;
2873
2874 case IDM_HELP:
2875 if (hwndHelp)
2876 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2877 MPFROM2SHORT(HELP_CFG8, 0), MPFROMSHORT(HM_RESOURCEID));
2878 break;
2879 }
2880 return 0;
2881
2882 case WM_CLOSE:
2883 CollectorsortFlags = 0;
2884 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2885 CollectorsortFlags |= SORT_FILENAME;
2886 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2887 CollectorsortFlags |= SORT_SIZE;
2888 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2889 CollectorsortFlags |= SORT_EASIZE;
2890 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2891 CollectorsortFlags |= SORT_FIRSTEXTENSION;
2892 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2893 CollectorsortFlags |= SORT_LASTEXTENSION;
2894 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2895 CollectorsortFlags |= SORT_LWDATE;
2896 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2897 CollectorsortFlags |= SORT_LADATE;
2898 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2899 CollectorsortFlags |= SORT_CRDATE;
2900 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2901 CollectorsortFlags |= SORT_DIRSFIRST;
2902 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2903 CollectorsortFlags |= SORT_DIRSLAST;
2904 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2905 CollectorsortFlags |= SORT_REVERSE;
2906 PrfWriteProfileData(fmprof,
2907 appname,
2908 "CollectorSort", &CollectorsortFlags, sizeof(INT));
2909 break;
2910 }
2911 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2912}
2913
2914MRESULT EXPENTRY Cfg9DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2915{
2916 switch (msg) {
2917 case WM_INITDLG:
2918 break;
2919
2920 case WM_HELP:
2921 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2922 break;
2923
2924 case WM_CHAR:
2925 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2926 switch (CHARMSG(&msg)->vkey) {
2927 case VK_F3:
2928 case VK_ENTER:
2929 case VK_NEWLINE:
2930 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2931 return 0;
2932 break;
2933 case VK_ESC:
2934 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2935 return 0;
2936 break;
2937 case VK_F1:
2938 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2939 return 0;
2940 break;
2941 }
2942 }
2943 break;
2944
2945 case WM_COMMAND:
2946 switch (SHORT1FROMMP(mp1)) {
2947 case IDM_HELP:
2948 if (hwndHelp)
2949 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2950 MPFROM2SHORT(HELP_CFG9, 0), MPFROMSHORT(HM_RESOURCEID));
2951 return 0;
2952 case CFG9_MAXIMUMUI:
2953 if (hwndMain) {
2954 if (MenuInvisible)
2955 WinSendMsg(hwndMain, WM_COMMAND,
2956 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2957 if (!fAutoView)
2958 WinSendMsg(hwndMain, WM_COMMAND,
2959 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2960 if (!fDrivebar)
2961 WinSendMsg(hwndMain, WM_COMMAND,
2962 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2963 if (!fToolbar)
2964 WinSendMsg(hwndMain, WM_COMMAND,
2965 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2966 if (!fMoreButtons)
2967 WinSendMsg(hwndMain, WM_COMMAND,
2968 MPFROM2SHORT(IDM_MOREBUTTONS, 0), MPVOID);
2969 if (!fUserComboBox)
2970 WinSendMsg(hwndMain, WM_COMMAND,
2971 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2972 }
2973 return 0;
2974 case CFG9_MINIMUMUI:
2975 if (hwndMain) {
2976 if (!MenuInvisible)
2977 WinSendMsg(hwndMain, WM_COMMAND,
2978 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2979 if (fAutoView)
2980 WinSendMsg(hwndMain, WM_COMMAND,
2981 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2982 if (fToolbar)
2983 WinSendMsg(hwndMain, WM_COMMAND,
2984 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2985 if (fMoreButtons)
2986 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2987 MPVOID);
2988 if (fUserComboBox)
2989 WinSendMsg(hwndMain, WM_COMMAND,
2990 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2991 saymsg(MB_ENTER | MB_ICONASTERISK,
2992 hwnd,
2993 GetPString(IDS_DONTFORGETTEXT),
2994 GetPString(IDS_UNHIDEMENUWARNTEXT));
2995 }
2996 return 0;
2997 case CFG9_MAXINFOPRETTY:
2998 fLoadSubject = TRUE;
2999 fLoadLongnames = TRUE;
3000 fNoIconsFiles = FALSE;
3001 fNoIconsDirs = FALSE;
3002 fForceUpper = FALSE;
3003 fForceLower = FALSE;
3004 fArcStuffVisible = TRUE;
3005 fSplitStatus = TRUE;
3006 fDragndropDlg = TRUE;
3007 {
3008 ULONG flWindowAttr;
3009
3010 flWindowAttr = CV_DETAIL | CV_FLOW | CA_DETAILSVIEWTITLES;
3011 PrfWriteProfileData(fmprof,
3012 appname,
3013 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
3014 PrfWriteProfileData(fmprof,
3015 appname,
3016 "CollectorflWindowAttr",
3017 &flWindowAttr, sizeof(ULONG));
3018 PrfWriteProfileData(fmprof,
3019 appname, "Collector.Fontnamesize", NULL, 0);
3020 }
3021 dsDirCnrDefault.detailslongname = TRUE;
3022 dsDirCnrDefault.detailssubject = TRUE;
3023 dsDirCnrDefault.detailsea = TRUE;
3024 dsDirCnrDefault.detailssize = TRUE;
3025 dsDirCnrDefault.detailsicon = TRUE;
3026 dsDirCnrDefault.detailslwdate = TRUE;
3027 dsDirCnrDefault.detailslwtime = TRUE;
3028 dsDirCnrDefault.detailsladate = TRUE;
3029 dsDirCnrDefault.detailslatime = TRUE;
3030 dsDirCnrDefault.detailscrdate = TRUE;
3031 dsDirCnrDefault.detailscrtime = TRUE;
3032 dsDirCnrDefault.detailsattr = TRUE;
3033 if (hwndTree) {
3034
3035 CNRINFO cnri;
3036 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
3037
3038 memset(&cnri, 0, sizeof(cnri));
3039 cnri.cb = sizeof(cnri);
3040 WinSendMsg(WinWindowFromID
3041 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3042 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3043 cnri.flWindowAttr = flWindowAttr;
3044 WinSendMsg(WinWindowFromID
3045 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3046 CM_SETCNRINFO, MPFROMP(&cnri),
3047 MPFROMLONG(CMA_FLWINDOWATTR));
3048 }
3049 break;
3050
3051 case CFG9_MAXINFOPLAIN:
3052 fLoadSubject = TRUE;
3053 fLoadLongnames = TRUE;
3054 fNoIconsFiles = TRUE;
3055 fNoIconsDirs = TRUE;
3056 fForceUpper = FALSE;
3057 fForceLower = FALSE;
3058 fArcStuffVisible = TRUE;
3059 fSplitStatus = TRUE;
3060 fDragndropDlg = TRUE;
3061 {
3062 ULONG flWindowAttr;
3063
3064 flWindowAttr = CV_DETAIL | CV_FLOW | CV_MINI;
3065 PrfWriteProfileData(fmprof,
3066 appname,
3067 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
3068 PrfWriteProfileData(fmprof,
3069 appname,
3070 "CollectorflWindowAttr",
3071 &flWindowAttr, sizeof(ULONG));
3072 //This is set to maximize the info seen in the container GKY
3073 PrfWriteProfileData(fmprof,
3074 appname,
3075 "Collector.Fontnamesize",
3076 (PVOID) FNT_8HELVETICA,
3077 strlen(FNT_8HELVETICA) + 1);
3078 }
3079 dsDirCnrDefault.detailslongname = TRUE;
3080 dsDirCnrDefault.detailssubject = TRUE;
3081 dsDirCnrDefault.detailsea = TRUE;
3082 dsDirCnrDefault.detailssize = TRUE;
3083 dsDirCnrDefault.detailsicon = TRUE;
3084 dsDirCnrDefault.detailslwdate = TRUE;
3085 dsDirCnrDefault.detailslwtime = TRUE;
3086 dsDirCnrDefault.detailsladate = TRUE;
3087 dsDirCnrDefault.detailslatime = TRUE;
3088 dsDirCnrDefault.detailscrdate = TRUE;
3089 dsDirCnrDefault.detailscrtime = TRUE;
3090 dsDirCnrDefault.detailsattr = TRUE;
3091 if (hwndTree) {
3092
3093 CNRINFO cnri;
3094 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_TEXT |
3095 CV_FLOW | CA_TREELINE;
3096
3097 memset(&cnri, 0, sizeof(cnri));
3098 cnri.cb = sizeof(cnri);
3099 WinSendMsg(WinWindowFromID
3100 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3101 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3102 cnri.flWindowAttr = flWindowAttr;
3103 WinSendMsg(WinWindowFromID
3104 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3105 CM_SETCNRINFO, MPFROMP(&cnri),
3106 MPFROMLONG(CMA_FLWINDOWATTR));
3107 }
3108 break;
3109 case CFG9_MAXFILENAMES:
3110 if (hwndMain && fAutoView)
3111 WinSendMsg(hwndMain, WM_COMMAND,
3112 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3113 fForceUpper = FALSE;
3114 fForceLower = TRUE;
3115 fExternalViewer = TRUE;
3116 fExternalArcboxes = TRUE;
3117 fExternalCollector = TRUE;
3118 fExternalINIs = TRUE;
3119 fLoadSubject = FALSE;
3120 fLoadLongnames = FALSE;
3121 fNoIconsFiles = TRUE;
3122 fNoIconsDirs = TRUE;
3123 {
3124 ULONG flWindowAttr;
3125
3126 flWindowAttr = CV_TEXT | CV_FLOW;
3127 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3128 &flWindowAttr, sizeof(ULONG));
3129 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3130 &flWindowAttr, sizeof(ULONG));
3131 //fixme to allow user to change presparams 1-10-09 GKY
3132 PrfWriteProfileData(fmprof, appname, "Collector.Fontnamesize",
3133 (PVOID) FNT_8HELVETICA,
3134 strlen(FNT_8HELVETICA) + 1);
3135 }
3136 if (hwndTree) {
3137
3138 CNRINFO cnri;
3139 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
3140
3141 memset(&cnri, 0, sizeof(cnri));
3142 cnri.cb = sizeof(cnri);
3143 WinSendMsg(WinWindowFromID
3144 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3145 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3146 cnri.flWindowAttr = flWindowAttr;
3147 WinSendMsg(WinWindowFromID
3148 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3149 CM_SETCNRINFO, MPFROMP(&cnri),
3150 MPFROMLONG(CMA_FLWINDOWATTR));
3151 }
3152 break;
3153 case CFG9_MAXSPEED:
3154 fLoadSubject = FALSE;
3155 fLoadLongnames = FALSE;
3156 fVerify = FALSE;
3157 DosSetVerify(FALSE);
3158 FilesToGet = FILESTOGET_MAX;
3159 fQuickArcFind = TRUE;
3160 fMinOnOpen = TRUE;
3161 fRealIdle = FALSE;
3162 fNoIconsFiles = TRUE;
3163 fNoIconsDirs = TRUE;
3164 fSyncUpdates = FALSE;
3165 fArcStuffVisible = FALSE;
3166 fForceUpper = FALSE;
3167 fForceLower = FALSE;
3168 fEjectRemovableScan = FALSE;
3169 fRScanLocal = FALSE;
3170 dsDirCnrDefault.detailslongname = FALSE;
3171 dsDirCnrDefault.detailssubject = FALSE;
3172 break;
3173
3174 case CFG9_HECTOR:
3175 fSwitchTree = TRUE;
3176 fSwitchTreeOnFocus = FALSE;
3177 fSwitchTreeExpand = TRUE;
3178 fCollapseFirst = TRUE;
3179 fSelectedAlways = FALSE;
3180 fTileBackwards = FALSE;
3181 fExternalViewer = FALSE;
3182 fExternalArcboxes = TRUE;
3183 fExternalCollector = FALSE;
3184 fExternalINIs = TRUE;
3185 fCopyDefault = FALSE;
3186 fFollowTree = FALSE;
3187 fLoadSubject = FALSE;
3188 fLoadLongnames = FALSE;
3189 fDontMoveMouse = FALSE;
3190 fUnHilite = TRUE;
3191 fUserListSwitches = TRUE;
3192 fDCOpens = FALSE;
3193 fLinkSetsIcon = FALSE;
3194 fConfirmDelete = TRUE;
3195 fSyncUpdates = FALSE;
3196 fRealIdle = FALSE;
3197 fNoIconsFiles = FALSE;
3198 fNoIconsDirs = TRUE;
3199 fFolderAfterExtract = FALSE;
3200 fVerify = TRUE;
3201 DosSetVerify(TRUE);
3202 fForceUpper = FALSE;
3203 fForceLower = TRUE;
3204 fArcStuffVisible = FALSE;
3205 fVTreeOpensWPS = FALSE;
3206 fRemoteBug = FALSE;
3207 fDragndropDlg = TRUE;
3208 fMinOnOpen = FALSE;
3209 fQuickArcFind = TRUE;
3210 fNoRemovableScan = TRUE;
3211 FilesToGet = FILESTOGET_MIN;
3212 fFreeTree = FALSE;
3213 fSplitStatus = TRUE;
3214 fAutoTile = TRUE;
3215 fSaveState = TRUE;
3216 fStartMinimized = FALSE;
3217 fStartMaximized = FALSE;
3218 fDataMin = FALSE;
3219 ulCnrType = CCS_EXTENDSEL | CCS_MULTIPLESEL;
3220 fNoTreeGap = TRUE;
3221 {
3222 ULONG flWindowAttr;
3223
3224 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
3225 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3226 &flWindowAttr, sizeof(ULONG));
3227 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3228 &flWindowAttr, sizeof(ULONG));
3229 }
3230 dsDirCnrDefault.detailslongname = FALSE;
3231 dsDirCnrDefault.detailssubject = FALSE;
3232 dsDirCnrDefault.detailsea = TRUE;
3233 dsDirCnrDefault.detailssize = TRUE;
3234 dsDirCnrDefault.detailsicon = TRUE;
3235 dsDirCnrDefault.detailslwdate = TRUE;
3236 dsDirCnrDefault.detailslwtime = TRUE;
3237 dsDirCnrDefault.detailsladate = FALSE;
3238 dsDirCnrDefault.detailslatime = FALSE;
3239 dsDirCnrDefault.detailscrdate = FALSE;
3240 dsDirCnrDefault.detailscrtime = FALSE;
3241 dsDirCnrDefault.detailsattr = TRUE;
3242 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3243 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3244 if (hwndMain) {
3245
3246 SWP swp;
3247
3248 if (WinQueryWindowPos(hwndMain, &swp)) {
3249 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3250 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
3251 }
3252 if (MenuInvisible)
3253 WinSendMsg(hwndMain, WM_COMMAND,
3254 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
3255 if (fAutoView)
3256 WinSendMsg(hwndMain, WM_COMMAND,
3257 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3258 if (fToolbar)
3259 WinSendMsg(hwndMain, WM_COMMAND,
3260 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
3261 if (!fDrivebar)
3262 WinSendMsg(hwndMain, WM_COMMAND,
3263 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
3264 if (!fMoreButtons)
3265 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
3266 MPVOID);
3267 if (!fUserComboBox)
3268 WinSendMsg(hwndMain, WM_COMMAND,
3269 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
3270 }
3271 if (hwndTree) {
3272
3273 CNRINFO cnri;
3274 ULONG flWindowAttr = (CV_TREE | CV_TEXT | CV_MINI |
3275 CV_FLOW | CA_TREELINE);
3276
3277 memset(&cnri, 0, sizeof(cnri));
3278 cnri.cb = sizeof(cnri);
3279 WinSendMsg(WinWindowFromID
3280 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3281 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3282 cnri.flWindowAttr = flWindowAttr;
3283 WinSendMsg(WinWindowFromID
3284 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3285 CM_SETCNRINFO, MPFROMP(&cnri),
3286 MPFROMLONG(CMA_FLWINDOWATTR));
3287 }
3288 break;
3289
3290 case CFG9_DEFAULT:
3291 fSwitchTree = TRUE;
3292 fSwitchTreeOnFocus = FALSE;
3293 fSwitchTreeExpand = TRUE;
3294 fCollapseFirst = TRUE;
3295 fSelectedAlways = FALSE;
3296 fTileBackwards = FALSE;
3297 fExternalViewer = FALSE;
3298 fExternalArcboxes = FALSE;
3299 fExternalCollector = FALSE;
3300 fExternalINIs = FALSE;
3301 fCopyDefault = FALSE;
3302 fFollowTree = FALSE;
3303 fLoadSubject = TRUE;
3304 fLoadLongnames = TRUE;
3305 fDontMoveMouse = FALSE;
3306 fUnHilite = TRUE;
3307 fUserListSwitches = FALSE;
3308 fDCOpens = FALSE;
3309 fLinkSetsIcon = FALSE;
3310 fConfirmDelete = TRUE;
3311 fSyncUpdates = FALSE;
3312 fRealIdle = FALSE;
3313 fNoIconsFiles = FALSE;
3314 fNoIconsDirs = FALSE;
3315 fFolderAfterExtract = FALSE;
3316 fVerify = FALSE;
3317 DosSetVerify(fVerify);
3318 fNoSearch = TRUE;
3319 fForceUpper = FALSE;
3320 fForceLower = FALSE;
3321 fArcStuffVisible = TRUE;
3322 fVTreeOpensWPS = FALSE;
3323 fRemoteBug = FALSE;
3324 fDragndropDlg = TRUE;
3325 fMinOnOpen = FALSE;
3326 fQuickArcFind = TRUE;
3327 fNoRemovableScan = FALSE;
3328 FilesToGet = FILESTOGET_MAX;
3329 fFreeTree = FALSE;
3330 fSplitStatus = TRUE;
3331 fAutoTile = TRUE;
3332 fSaveState = TRUE;
3333 fStartMinimized = FALSE;
3334 fDataMin = TRUE;
3335 ulCnrType = CCS_EXTENDSEL;
3336 fNoTreeGap = FALSE;
3337 MaxComLineStrg = MAXCOMLINESTRGDEFAULT;
3338 fGuessType = TRUE;
3339 fUseNewViewer = TRUE;
3340 fDataToFore = TRUE;
3341 fDataShowDrives = TRUE;
3342 fKeepCmdLine = TRUE;
3343 fCustomFileDlg = TRUE;
3344 fToolbarHelp = TRUE;
3345 fOtherHelp = TRUE;
3346 fDrivebarHelp = TRUE;
3347 fShowTarget = TRUE;
3348 fRScanLocal = TRUE;
3349 fRScanRemote = FALSE;
3350 fRScanVirtual = FALSE;
3351 fRScanSlow = FALSE;
3352 fRScanNoWrite = FALSE;
3353 fEjectRemovableScan = TRUE;
3354 fEjectCDScan = FALSE;
3355 fEjectFlpyScan = FALSE;
3356 fShowDriveOnly = TRUE;
3357 fShowFSTypeInTree = FALSE;
3358 fShowDriveLabelInTree = FALSE;
3359 fAlertBeepOff = FALSE;
3360 fErrorBeepOff = FALSE;
3361 fTrashCan = FALSE;
3362 {
3363 ULONG flWindowAttr;
3364
3365 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
3366 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3367 &flWindowAttr, sizeof(ULONG));
3368 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3369 &flWindowAttr, sizeof(ULONG));
3370 }
3371 dsDirCnrDefault.detailslongname = FALSE;
3372 dsDirCnrDefault.detailssubject = FALSE;
3373 dsDirCnrDefault.detailsea = TRUE;
3374 dsDirCnrDefault.detailssize = TRUE;
3375 dsDirCnrDefault.detailsicon = TRUE;
3376 dsDirCnrDefault.detailslwdate = TRUE;
3377 dsDirCnrDefault.detailslwtime = TRUE;
3378 dsDirCnrDefault.detailsladate = FALSE;
3379 dsDirCnrDefault.detailslatime = FALSE;
3380 dsDirCnrDefault.detailscrdate = FALSE;
3381 dsDirCnrDefault.detailscrtime = FALSE;
3382 dsDirCnrDefault.detailsattr = TRUE;
3383 dsDirCnrDefault.fSubjectInLeftPane = FALSE;
3384 dsDirCnrDefault.fSubjectLengthMax = TRUE;
3385 dsDirCnrDefault.SubjectDisplayWidth = 0;
3386 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3387 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3388 WriteDetailsSwitches(PCSZ_COLLECTOR, &dsDirCnrDefault, FALSE);
3389 if (hwndMain) {
3390
3391 SWP swp;
3392
3393 if (WinQueryWindowPos(hwndMain, &swp)) {
3394 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3395 swp.cx / 5,
3396 swp.cy -
3397 (WinQuerySysValue(HWND_DESKTOP, SV_CYICON) * 2),
3398 SWP_MOVE | SWP_SIZE);
3399 }
3400 if (!fToolbar) {
3401 WinSendMsg(hwndMain, WM_COMMAND,
3402 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
3403 fToolbar = TRUE;
3404 }
3405 if (!fDrivebar) {
3406 WinSendMsg(hwndMain, WM_COMMAND,
3407 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
3408 fDrivebar = TRUE;
3409 }
3410 if (!fMoreButtons) {
3411 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
3412 MPVOID);
3413 fMoreButtons = TRUE;
3414 }
3415 if (!fUserComboBox) {
3416 WinSendMsg(hwndMain, WM_COMMAND,
3417 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
3418 fUserComboBox = TRUE;
3419 }
3420 }
3421 if (hwndTree) {
3422
3423 CNRINFO cnri;
3424 ULONG flWindowAttr = (CV_TREE | CV_TEXT |
3425 CV_FLOW | CA_TREELINE | CV_MINI);
3426
3427 memset(&cnri, 0, sizeof(cnri));
3428 cnri.cb = sizeof(cnri);
3429 WinSendMsg(WinWindowFromID
3430 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3431 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3432 cnri.flWindowAttr = flWindowAttr;
3433 WinSendMsg(WinWindowFromID
3434 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3435 CM_SETCNRINFO, MPFROMP(&cnri),
3436 MPFROMLONG(CMA_FLWINDOWATTR));
3437 }
3438 break;
3439
3440 case CFG9_WINDOZETHINK:
3441 fTileBackwards = FALSE;
3442 ulCnrType = CCS_MULTIPLESEL;
3443 fFollowTree = TRUE;
3444 fTopDir = FALSE;
3445 fSwitchTree = TRUE;
3446 fSwitchTreeOnFocus = FALSE;
3447 fSwitchTreeExpand = TRUE;
3448 fCollapseFirst = TRUE;
3449 fDCOpens = FALSE;
3450 {
3451 ULONG flWindowAttr;
3452
3453 flWindowAttr = CV_NAME | CV_FLOW | CA_DETAILSVIEWTITLES;
3454 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3455 &flWindowAttr, sizeof(ULONG));
3456 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3457 &flWindowAttr, sizeof(ULONG));
3458 }
3459 fLinkSetsIcon = FALSE;
3460 fFreeTree = FALSE;
3461 fNoTreeGap = TRUE;
3462 fExternalArcboxes = TRUE;
3463 fExternalViewer = TRUE;
3464 fExternalCollector = TRUE;
3465 fExternalINIs = TRUE;
3466 fUserListSwitches = TRUE;
3467 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
3468 MPVOID);
3469 if (hwndTree) {
3470
3471 CNRINFO cnri;
3472 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_ICON |
3473 CV_FLOW | CA_TREELINE;
3474
3475 memset(&cnri, 0, sizeof(cnri));
3476 cnri.cb = sizeof(cnri);
3477 WinSendMsg(WinWindowFromID
3478 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3479 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3480 cnri.flWindowAttr = flWindowAttr;
3481 WinSendMsg(WinWindowFromID
3482 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3483 CM_SETCNRINFO, MPFROMP(&cnri),
3484 MPFROMLONG(CMA_FLWINDOWATTR));
3485 }
3486 if (hwndMain) {
3487 if (fAutoView)
3488 WinSendMsg(hwndMain, WM_COMMAND,
3489 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3490 if (!fDrivebar)
3491 WinSendMsg(hwndMain, WM_COMMAND,
3492 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
3493 {
3494 SWP swp;
3495
3496 if (WinQueryWindowPos(hwndMain, &swp)) {
3497 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3498 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
3499 }
3500 }
3501 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
3502 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1L), MPVOID);
3503 }
3504 return 0;
3505
3506 case CFG9_DOSTHINK:
3507 fTileBackwards = TRUE;
3508 ulCnrType = CCS_MULTIPLESEL;
3509 fSwitchTree = TRUE;
3510 fSwitchTreeOnFocus = FALSE;
3511 fSwitchTreeExpand = TRUE;
3512 fCollapseFirst = TRUE;
3513 fFollowTree = TRUE;
3514 fTopDir = FALSE;
3515 if (hwndMain) {
3516 if (!fTextTools)
3517 WinSendMsg(hwndMain, WM_COMMAND,
3518 MPFROM2SHORT(IDM_TEXTTOOLS, 0), MPVOID);
3519 }
3520 {
3521 ULONG flWindowAttr;
3522
3523 flWindowAttr = CV_TEXT | CV_FLOW | CA_DETAILSVIEWTITLES;
3524 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3525 &flWindowAttr, sizeof(ULONG));
3526 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3527 &flWindowAttr, sizeof(ULONG));
3528 }
3529 if (hwndTree) {
3530
3531 CNRINFO cnri;
3532 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
3533
3534 memset(&cnri, 0, sizeof(cnri));
3535 cnri.cb = sizeof(cnri);
3536 WinSendMsg(WinWindowFromID
3537 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3538 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3539 cnri.flWindowAttr = flWindowAttr;
3540 WinSendMsg(WinWindowFromID
3541 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3542 CM_SETCNRINFO, MPFROMP(&cnri),
3543 MPFROMLONG(CMA_FLWINDOWATTR));
3544 }
3545 /* intentional fallthru */
3546 case CFG9_1X:
3547 if (SHORT1FROMMP(mp1) == CFG9_1X) {
3548 fTileBackwards = FALSE;
3549 ulCnrType = CCS_MULTIPLESEL | CCS_EXTENDSEL;
3550 fSwitchTree = FALSE;
3551 fSwitchTreeOnFocus = FALSE;
3552 fSwitchTreeExpand = FALSE;
3553 fCollapseFirst = FALSE;
3554 fFollowTree = FALSE;
3555 fNoSearch = TRUE;
3556 }
3557 fAutoTile = TRUE;
3558 fSaveState = TRUE;
3559 fDCOpens = FALSE;
3560 fLinkSetsIcon = FALSE;
3561 fFreeTree = FALSE;
3562 fNoTreeGap = TRUE;
3563 fExternalArcboxes = TRUE;
3564 fExternalViewer = TRUE;
3565 fExternalCollector = TRUE;
3566 fExternalINIs = TRUE;
3567 fUserListSwitches = TRUE;
3568 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
3569 MPVOID);
3570 if (hwndTree) {
3571
3572 CNRINFO cnri;
3573 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
3574
3575 memset(&cnri, 0, sizeof(cnri));
3576 cnri.cb = sizeof(cnri);
3577 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
3578 TREE_CNR),
3579 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3580 cnri.flWindowAttr = flWindowAttr;
3581 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
3582 TREE_CNR),
3583 CM_SETCNRINFO,
3584 MPFROMP(&cnri), MPFROMLONG(CMA_FLWINDOWATTR));
3585 }
3586 if (hwndMain) {
3587 if (fAutoView)
3588 WinSendMsg(hwndMain, WM_COMMAND,
3589 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3590 if (fUserComboBox)
3591 WinSendMsg(hwndMain, WM_COMMAND,
3592 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
3593 {
3594 SWP swp;
3595
3596 if (WinQueryWindowPos(hwndMain, &swp)) {
3597 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3598 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
3599 }
3600 }
3601 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
3602 PostMsg(MainObjectHwnd, UM_SETDIR, MPVOID, MPVOID);
3603 }
3604 return 0;
3605
3606 case CFG9_GREGG:
3607 fSwitchTree = TRUE;
3608 fSwitchTreeOnFocus = FALSE;
3609 fSwitchTreeExpand = TRUE;
3610 fCollapseFirst = TRUE;
3611 fSelectedAlways = FALSE;
3612 fTileBackwards = FALSE;
3613 fExternalViewer = TRUE;
3614 fExternalArcboxes = TRUE;
3615 fExternalCollector = TRUE;
3616 fExternalINIs = TRUE;
3617 fCopyDefault = FALSE;
3618 fFollowTree = FALSE;
3619 fLoadSubject = TRUE;
3620 fLoadLongnames = TRUE;
3621 fDontMoveMouse = FALSE;
3622 fUnHilite = TRUE;
3623 fUserListSwitches = FALSE;
3624 fDCOpens = FALSE;
3625 fLinkSetsIcon = FALSE;
3626 fConfirmDelete = TRUE;
3627 fSyncUpdates = FALSE;
3628 fRealIdle = TRUE;
3629 fNoIconsFiles = FALSE;
3630 fNoIconsDirs = FALSE;
3631 fFolderAfterExtract = FALSE;
3632 fVerify = FALSE;
3633 DosSetVerify(fVerify);
3634 fNoSearch = FALSE;
3635 fForceUpper = FALSE;
3636 fForceLower = FALSE;
3637 fArcStuffVisible = TRUE;
3638 fVTreeOpensWPS = FALSE;
3639 fRemoteBug = FALSE;
3640 fDragndropDlg = TRUE;
3641 fMinOnOpen = FALSE;
3642 fQuickArcFind = TRUE;
3643 fNoRemovableScan = FALSE;
3644 FilesToGet = FILESTOGET_MAX;
3645 fFreeTree = FALSE;
3646 fSplitStatus = TRUE;
3647 fAutoTile = TRUE;
3648 fSaveState = TRUE;
3649 fStartMinimized = FALSE;
3650 fDataMin = TRUE;
3651 ulCnrType = CCS_EXTENDSEL;
3652 fNoTreeGap = TRUE;
3653 MaxComLineStrg = MAXCOMLINESTRGDEFAULT;
3654 fGuessType = TRUE;
3655 fUseNewViewer = TRUE;
3656 fDataToFore = TRUE;
3657 fDataShowDrives = TRUE;
3658 fKeepCmdLine = TRUE;
3659 fCustomFileDlg = TRUE;
3660 fToolbarHelp = TRUE;
3661 fOtherHelp = TRUE;
3662 fDrivebarHelp = TRUE;
3663 fShowTarget = TRUE;
3664 fRScanLocal = TRUE;
3665 fRScanRemote = TRUE;
3666 fRScanVirtual = FALSE;
3667 fRScanSlow = FALSE;
3668 fRScanNoWrite = FALSE;
3669 fEjectRemovableScan = TRUE;
3670 fEjectCDScan = TRUE;
3671 fEjectFlpyScan = FALSE;
3672 fShowDriveOnly = FALSE;
3673 fShowFSTypeInTree = FALSE;
3674 fShowDriveLabelInTree = TRUE;
3675 fAlertBeepOff = TRUE;
3676 fErrorBeepOff = FALSE;
3677 fTrashCan = TRUE;
3678 {
3679 ULONG flWindowAttr;
3680
3681 flWindowAttr = (CV_DETAIL | CV_MINI | CA_DETAILSVIEWTITLES);
3682 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3683 &flWindowAttr, sizeof(ULONG));
3684 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3685 &flWindowAttr, sizeof(ULONG));
3686 }
3687 dsDirCnrDefault.detailslongname = FALSE;
3688 dsDirCnrDefault.detailssubject = FALSE;
3689 dsDirCnrDefault.detailsea = TRUE;
3690 dsDirCnrDefault.detailssize = TRUE;
3691 dsDirCnrDefault.detailsicon = TRUE;
3692 dsDirCnrDefault.detailslwdate = TRUE;
3693 dsDirCnrDefault.detailslwtime = TRUE;
3694 dsDirCnrDefault.detailsladate = FALSE;
3695 dsDirCnrDefault.detailslatime = FALSE;
3696 dsDirCnrDefault.detailscrdate = FALSE;
3697 dsDirCnrDefault.detailscrtime = FALSE;
3698 dsDirCnrDefault.detailsattr = TRUE;
3699 dsDirCnrDefault.fSubjectInLeftPane = TRUE;
3700 dsDirCnrDefault.fSubjectLengthMax = TRUE;
3701 dsDirCnrDefault.SubjectDisplayWidth = 0;
3702 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3703 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3704 WriteDetailsSwitches(PCSZ_COLLECTOR, &dsDirCnrDefault, FALSE);
3705 if (hwndMain) {
3706
3707 SWP swp;
3708
3709 if (WinQueryWindowPos(hwndMain, &swp)) {
3710 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3711 swp.cx / 5,
3712 swp.cy -
3713 (WinQuerySysValue(HWND_DESKTOP, SV_CYICON) * 2),
3714 SWP_MOVE | SWP_SIZE);
3715 }
3716 if (!fToolbar) {
3717 WinSendMsg(hwndMain, WM_COMMAND,
3718 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
3719 fToolbar = TRUE;
3720 }
3721 if (!fDrivebar) {
3722 WinSendMsg(hwndMain, WM_COMMAND,
3723 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
3724 fDrivebar = TRUE;
3725 }
3726 if (!fMoreButtons) {
3727 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
3728 MPVOID);
3729 fMoreButtons = TRUE;
3730 }
3731 if (!fUserComboBox) {
3732 WinSendMsg(hwndMain, WM_COMMAND,
3733 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
3734 fUserComboBox = TRUE;
3735 }
3736 }
3737 if (hwndTree) {
3738
3739 CNRINFO cnri;
3740 ULONG flWindowAttr = (CV_TREE | CV_TEXT |
3741 CV_FLOW | CA_TREELINE | CV_MINI);
3742
3743 memset(&cnri, 0, sizeof(cnri));
3744 cnri.cb = sizeof(cnri);
3745 WinSendMsg(WinWindowFromID
3746 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3747 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3748 cnri.flWindowAttr = flWindowAttr;
3749 WinSendMsg(WinWindowFromID
3750 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3751 CM_SETCNRINFO, MPFROMP(&cnri),
3752 MPFROMLONG(CMA_FLWINDOWATTR));
3753 }
3754 break;
3755
3756 case DID_CANCEL:
3757 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
3758
3759 case DID_OK:
3760 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
3761 return 0;
3762
3763 default:
3764 return 0;
3765 }
3766 // Save new details settings and refresh windows
3767 WriteDetailsSwitches(PCSZ_DIRCNR, &dsDirCnrDefault, FALSE);
3768 if (hwndMain) {
3769 // Save state and restore to refresh windows with new settings
3770 if (SaveDirCnrState(hwndMain, PCSZ_FM2TEMPTEXT) > 0) {
3771 // Tell window procedure to close container windows
3772 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
3773 // Restore saved state
3774 PostMsg(MainObjectHwnd, UM_RESTORE, (PSZ) PCSZ_FM2TEMPTEXT, MPVOID);
3775 }
3776 }
3777 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
3778 UM_UNDO, MPVOID, MPVOID);
3779 return 0;
3780
3781 case WM_CLOSE:
3782 break;
3783 }
3784 return WinDefDlgProc(hwnd, msg, mp1, mp2);
3785}
3786
3787struct
3788{
3789 USHORT usMenuId;
3790 USHORT usFrameId;
3791 ULONG ulTitle;
3792 PFNWP pfnPageProc;
3793 HWND hwnd;
3794 ULONG ulHelpId;
3795 ULONG ulPageId;
3796} np[] = {
3797 { IDM_DIRCNRSETTINGS, CFGD_FRAME, IDS_NOTEDIRCNRS1TEXT, CfgDDlgProc, 0, 0, 0 },
3798 { IDM_DIRVIEWSETTINGS, CFG5_FRAME, IDS_NOTEDIRVIEW1TEXT, Cfg5DlgProc, 0, 0, 0},
3799 { IDM_DIRSORTSETTINGS, CFG6_FRAME, IDS_NOTEDIRSORT1TEXT, Cfg6DlgProc, 0, 0, 0 },
3800 { IDM_COLLECTORVIEWSETTINGS, CFG5_FRAME, IDS_NOTECOLVIEW1TEXT, Cfg7DlgProc, 0, 0, 0 },
3801 { IDM_COLLECTORSORTSETTINGS, CFG6_FRAME, IDS_NOTECOLSORT1TEXT, Cfg8DlgProc, 0, 0, 0 },
3802 { IDM_ARCHIVERSETTINGS, CFGA_FRAME, IDS_NOTEARCHIVER1TEXT, CfgADlgProc, 0, 0, 0 },
3803 { IDM_TREECNRVIEWSETTINGS, CFGT_FRAME, IDS_NOTETREE1TEXT, CfgTDlgProc, 0, 0, 0 },
3804 { IDM_TREECNRSORTSETTINGS, CFGTS_FRAME, IDS_NOTETREESORT1TEXT, CfgTSDlgProc, 0, 0, 0 },
3805 { IDM_VIEWERSETTINGS, CFGV_FRAME, IDS_NOTEVIEWERS1TEXT, CfgVDlgProc, 0, 0, 0 },
3806 { IDM_VIEWERSETTINGS2, CFGH_FRAME, IDS_NOTEVIEWERS3TEXT, CfgHDlgProc, 0, 0, 0 },
3807 { IDM_COMPARESETTINGS, CFGC_FRAME, IDS_NOTECOMPARE1TEXT, CfgCDlgProc, 0, 0, 0 },
3808 { IDM_MONOLITHICSETTINGS, CFGM_FRAME, IDS_NOTEMONOLITHIC1TEXT, CfgMDlgProc, 0, 0, 0 },
3809 { IDM_GENERALSETTINGS, CFGG_FRAME, IDS_NOTEGENERAL1TEXT, CfgGDlgProc, 0, 0, 0 },
3810 { IDM_SCANSETTINGS, CFGS_FRAME, IDS_NOTESCANNING1TEXT, CfgSDlgProc, 0, 0, 0 },
3811 { IDM_BUBBLESSETTINGS, CFGB_FRAME, IDS_NOTEBUBBLE1TEXT, CfgBDlgProc, 0, 0, 0 },
3812 { IDM_QUICKSETTINGS, CFG9_FRAME, IDS_NOTEQUICK1TEXT, Cfg9DlgProc, 0, 0, 0 },
3813 { 0, 0, 0, NULL, 0, 0, 0 } // usFrameId 0 is end marker
3814};
3815
3816static PSZ pszIK_LastSettingsPage = "LastSettingsPage";
3817
3818MRESULT EXPENTRY CfgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
3819{
3820 HWND hwndTemp;
3821 USHORT attrib = BKA_FIRST;
3822 INT x;
3823 ULONG ulPageId;
3824 UINT uPageIndex;
3825 HAB hab;
3826 static HACCEL haccelCfg = NULLHANDLE;
3827
3828 switch (msg) {
3829 case WM_INITDLG:
3830 hwndNotebook = hwnd;
3831 uPageIndex = 0;
3832 hab = WinQueryAnchorBlock(hwnd);
3833 if (haccelCfg == NULLHANDLE) {
3834 haccelCfg = WinLoadAccelTable(hab, FM3ModHandle, CFG_FRAME);
3835 if (haccelCfg == NULLHANDLE)
3836 Win_Error(hwndNotebook, HWND_DESKTOP, pszSrcFile, __LINE__, PCSZ_WINLOADACCELTABLE);
3837 }
3838 if (haccelCfg != NULLHANDLE) {
3839 if (!WinSetAccelTable(hab, haccelCfg, hwndNotebook))
3840 Win_Error(hwndNotebook, HWND_DESKTOP, pszSrcFile, __LINE__, PCSZ_WINSETACCELTABLE);
3841 // else
3842 // DbgMsg(pszSrcFile, __LINE__, "WinSetAccelTable MAIN_DRIVELIST %x %x", hwndFrame, haccelDriveList);
3843 }
3844
3845 // If generic call, try to find conditional cascade default
3846 // 15 Feb 08 SHL fixme to be gone when/if IDM_NOTEBOOK gone?
3847 if (mp2 == MPFROMLONG(IDM_NOTEBOOK)) {
3848 DbgMsg(pszSrcFile, __LINE__, "Trying to translate IDM_NOTEBOOK");
3849 hwndTemp = WinQueryWindow(hwnd, QW_OWNER);
3850 if (hwndTemp != HWND_DESKTOP) {
3851 HWND hwndMenu;
3852 // Owner is frame if not applet
3853 hwndMenu = WinWindowFromID(hwndTemp, FID_MENU);
3854 if (hwndMenu == NULLHANDLE)
3855 Runtime_Error(pszSrcFile, __LINE__, "FID_MENU");
3856 else {
3857 MENUITEM mi;
3858 BOOL ok;
3859 memset(&mi, 0, sizeof(mi));
3860 ok = (BOOL)WinSendMsg(hwndMenu,
3861 MM_QUERYITEM,
3862 MPFROM2SHORT(IDM_NOTEBOOKSUBMENU, TRUE),
3863 MPFROMP(&mi));
3864 if (!ok)
3865 Runtime_Error(pszSrcFile, __LINE__, "IDM_NOTEBOOKSUBMENU");
3866 else {
3867 mp2 = WinSendMsg(mi.hwndSubMenu, MM_QUERYDEFAULTITEMID, MPVOID, MPVOID);
3868 //if (!mp2) // causes spurious error message on new installs GKY 1-9-09
3869 // mp2 = MPFROMLONG(IDM_QUICKSETTINGS);
3870 //Runtime_Error(pszSrcFile, __LINE__, "MM_QUERYDEFAULTITEMID");
3871 }
3872 }
3873 }
3874 }
3875
3876 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
3877 WinSendDlgItemMsg(hwnd,
3878 CFG_NOTEBOOK,
3879 BKM_SETDIMENSIONS,
3880 MPFROM2SHORT(82, 24), MPFROMLONG(BKA_MAJORTAB));
3881 WinSendDlgItemMsg(hwnd,
3882 CFG_NOTEBOOK,
3883 BKM_SETDIMENSIONS,
3884 MPFROM2SHORT(20, 20), MPFROMLONG(BKA_PAGEBUTTON));
3885 WinSendDlgItemMsg(hwnd,
3886 CFG_NOTEBOOK,
3887 BKM_SETDIMENSIONS,
3888 MPFROM2SHORT(0, 0), MPFROMLONG(BKA_MINORTAB));
3889
3890 // Build and insert notebook pages
3891 for (x = 0; np[x].usFrameId; x++) {
3892 hwndTemp = WinLoadDlg(HWND_DESKTOP,
3893 HWND_DESKTOP,
3894 np[x].pfnPageProc, FM3ModHandle, np[x].usFrameId, MPVOID);
3895 if (!hwndTemp) {
3896 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
3897 "Can not load settings page %u", x);
3898 }
3899 else {
3900 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG)hwnd);
3901 np[x].hwnd = hwndTemp;
3902 np[x].ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3903 CFG_NOTEBOOK,
3904 BKM_INSERTPAGE,
3905 MPFROMLONG(BKA_FIRST),
3906 MPFROM2SHORT(BKA_AUTOPAGESIZE |
3907 BKA_STATUSTEXTON |
3908 BKA_MAJOR, attrib));
3909 attrib = BKA_LAST;
3910 WinSendDlgItemMsg(hwnd,
3911 CFG_NOTEBOOK,
3912 BKM_SETPAGEWINDOWHWND,
3913 MPFROMLONG(np[x].ulPageId), MPFROMLONG(np[x].hwnd));
3914 WinSendDlgItemMsg(hwnd,
3915 CFG_NOTEBOOK,
3916 BKM_SETTABTEXT,
3917 MPFROMLONG(np[x].ulPageId),
3918 MPFROMP(GetPString(np[x].ulTitle)));
3919 WinSendDlgItemMsg(hwnd,
3920 CFG_NOTEBOOK,
3921 BKM_SETSTATUSLINETEXT,
3922 MPFROMLONG(np[x].ulPageId),
3923 MPFROMP(GetPString(np[x].ulTitle + 1)));
3924
3925 if (LONGFROMMP(mp2) == np[x].usMenuId)
3926 uPageIndex = x; // Remember selected page
3927 }
3928 } // for pages
3929
3930 // If quick settings page requested, assume request is for first time init
3931 // Turn to cfg page and show help
3932 // Page will not be available if running fm/2 lite or if load error
3933 // 15 Feb 08 SHL fixme to do just once?
3934 if (mp2 == MPFROMLONG(IDM_QUICKSETTINGS) &&
3935 x-- > 0 &&
3936 np[x].hwnd &&
3937 np[x].usFrameId == CFG9_FRAME)
3938 {
3939 // 10 Jan 08 SHL fixme to document what UM_SETDIR 1 means
3940 //PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1), MPVOID);
3941 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3942 BKM_TURNTOPAGE, MPFROMLONG(np[x].ulPageId), MPVOID);
3943 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x].hwnd), MPVOID);
3944 PostMsg(np[x].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
3945 }
3946 else if (uPageIndex >= x) {
3947 Runtime_Error(pszSrcFile, __LINE__, "uPageIndex corrupted (%u)",
3948 uPageIndex);
3949 uPageIndex = 0;
3950 }
3951 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3952 BKM_TURNTOPAGE, MPFROMLONG(np[uPageIndex].ulPageId), MPVOID);
3953 // 15 Feb 08 SHL fixme to put focus on first field of page
3954
3955 break;
3956
3957 case UM_FOCUSME:
3958 if (mp1)
3959 WinSetActiveWindow(HWND_DESKTOP, (HWND) mp1);
3960 break;
3961
3962 case UM_SETUP:
3963 WinSetActiveWindow(HWND_DESKTOP, WinQueryWindow(hwnd, QW_OWNER));
3964 WinSetActiveWindow(HWND_DESKTOP, hwnd);
3965 return 0;
3966
3967 case WM_HELP:
3968 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
3969 break;
3970
3971 case WM_CHAR:
3972 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
3973 switch (CHARMSG(&msg)->vkey) {
3974 case VK_F3:
3975 case VK_ENTER:
3976 case VK_NEWLINE:
3977 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
3978 return 0;
3979 break;
3980 case VK_ESC:
3981 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
3982 return 0;
3983 break;
3984 case VK_F1:
3985 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
3986 return 0;
3987 break;
3988 }
3989 }
3990 break;
3991
3992 case WM_COMMAND:
3993 switch (SHORT1FROMMP(mp1)) {
3994 case DID_OK:
3995 SaveLastPageIndex(hwnd);
3996 WinDismissDlg(hwnd, 1);
3997 break;
3998
3999 case DID_CANCEL:
4000 // Tell current page to undo itself in case changed and still alive
4001 SaveLastPageIndex(hwnd);
4002 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
4003 CFG_NOTEBOOK,
4004 BKM_QUERYPAGEID,
4005 MPFROMLONG(0),
4006 MPFROM2SHORT(BKA_TOP, 0));
4007 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
4008 CFG_NOTEBOOK,
4009 BKM_QUERYPAGEWINDOWHWND,
4010 MPFROMLONG(ulPageId), MPVOID);
4011 if (hwndTemp)
4012 WinSendMsg(hwndTemp, UM_UNDO, MPVOID, MPVOID);
4013
4014 WinDismissDlg(hwnd, 0);
4015 break;
4016
4017 case IDM_HELP: /* relay message to appropriate page's window */
4018 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
4019 CFG_NOTEBOOK,
4020 BKM_QUERYPAGEID,
4021 MPFROMLONG(0),
4022 MPFROM2SHORT(BKA_TOP, 0));
4023 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
4024 CFG_NOTEBOOK,
4025 BKM_QUERYPAGEWINDOWHWND,
4026 MPFROMLONG(ulPageId), MPVOID);
4027 if (hwndTemp)
4028 PostMsg(hwndTemp, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
4029 break;
4030 }
4031 return 0;
4032
4033 case UM_UNDO:
4034 for (x = 0; np[x].usFrameId; x++) {
4035 if (np[x].hwnd)
4036 WinSendMsg(np[x].hwnd, UM_UNDO, MPVOID, MPVOID);
4037 }
4038 break;
4039
4040 case WM_DESTROY:
4041 if (np[0].usFrameId) {
4042 for (x = 1; np[x].usFrameId; x++) {
4043 if (np[x].hwnd) {
4044 WinSendMsg(np[x].hwnd, WM_CLOSE, MPVOID, MPVOID);
4045 np[x].hwnd = (HWND) 0;
4046 np[x].ulPageId = 0;
4047 }
4048 }
4049 WinSendMsg(np[0].hwnd, WM_CLOSE, MPVOID, MPVOID);
4050 np[0].hwnd = (HWND) 0;
4051 np[0].ulPageId = 0;
4052 }
4053 hwndNotebook = (HWND) 0;
4054 break;
4055 case WM_CLOSE:
4056 //SaveLastPageIndex(hwnd);
4057 break;
4058 }
4059 return WinDefDlgProc(hwnd, msg, mp1, mp2);
4060}
4061/**
4062 * Initialize config submenu
4063 * @param hwndMenu is window handle
4064 * @param fIsLite is true if called for fm/2 lite
4065 */
4066
4067VOID CfgMenuInit(HWND hwndMenu, BOOL fIsLite)
4068{
4069 UINT uPageIndex;
4070 ULONG ulSize = sizeof(uPageIndex);
4071 UINT x;
4072 PrfQueryProfileData(fmprof, appname, pszIK_LastSettingsPage, &uPageIndex, &ulSize);
4073 for (x = 0; x < uPageIndex && np[x].usFrameId; x++)
4074 ; // Search
4075 if (np[x].usMenuId)
4076 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[uPageIndex].usMenuId);
4077 // If lite, delete excess items from menus and tables
4078 if (fIsLite) {
4079 WinSendMsg(hwndMenu,
4080 MM_DELETEITEM,
4081 MPFROM2SHORT(IDM_QUICKSETTINGS, FALSE), MPVOID);
4082 // If fm/2 lite drop quick setting page
4083 for (x = 0; np[x].usFrameId && np[x].usFrameId != CFG9_FRAME; x++)
4084 ; // Scan
4085 np[x].usFrameId = 0;
4086 }
4087}
4088
4089static VOID SaveLastPageIndex(HWND hwnd)
4090{
4091 HWND hwndOwner;
4092 HWND hwndMenu;
4093 UINT x;
4094 ULONG ulPageId;
4095
4096 // Owner is frame if not applet
4097 hwndOwner = WinQueryWindow(hwnd, QW_OWNER);
4098 if (hwndOwner != HWND_DESKTOP) {
4099 ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
4100 CFG_NOTEBOOK,
4101 BKM_QUERYPAGEID,
4102 MPFROMLONG(0),
4103 MPFROM2SHORT(BKA_TOP, 0));
4104 if (!ulPageId)
4105 Runtime_Error(pszSrcFile, __LINE__, "BKM_QUERYPAGEID");
4106 else {
4107 for (x = 0; np[x].usMenuId && np[x].ulPageId != ulPageId; x++)
4108 ; // Scan
4109 if (!np[x].usMenuId)
4110 Runtime_Error(pszSrcFile, __LINE__, "bad menu id %lu", ulPageId);
4111 else {
4112 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage,
4113 (PVOID)&x, sizeof(x));
4114 hwndMenu = WinWindowFromID(hwndOwner, FID_MENU);
4115 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[x].usMenuId);
4116 }
4117 }
4118 }
4119}
4120
4121#pragma alloc_text(NOTEBOOK,CfgTDlgProc,CfgTSDlgProc,CfgMDlgProc)
4122#pragma alloc_text(NOTEBOOK2,CfgADlgProc,CfgSDlgProc,CfgVDlgProc,CfgHDlgProc)
4123#pragma alloc_text(NOTEBOOK3,CfgDDlgProc,Cfg5DlgProc,Cfg6DlgProc)
4124#pragma alloc_text(NOTEBOOK4,Cfg7DlgProc,Cfg8DlgProc,CfgCDlgProc)
4125#pragma alloc_text(NOTEBOOK5,CfgGDlgProc,CfgDlgProc,CfgBDlgProc)
4126#pragma alloc_text(NOTEBOOK5,CfgMenuInit,SaveLastPageIndex)
Note: See TracBrowser for help on using the repository browser.