source: trunk/dll/notebook.c@ 1877

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

Remove debug code

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