source: trunk/dll/notebook.c

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

Remove dead code and comments from remaining c files. #if 0 and #if NEVER were not addressed

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