source: trunk/dll/notebook.c@ 1483

Last change on this file since 1483 was 1483, checked in by Gregg Young, 16 years ago

Updated Quick page "Default" to match current defaults; added Gregg's way option to Quick page. (Notebook.c code changes and notebook.ipf document changes were committed in CS 1482)

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