source: trunk/dll/notebook.c@ 1354

Last change on this file since 1354 was 1354, checked in by Gregg Young, 17 years ago

Added driveflags to over ride write verify for USB removable drives that fail when it is on (Ticket 323); A flag to prevent directory name from being broadcast to drives in the tree cnr prior to a recursive scan of the drive (causes dbl directory names Ticket 321) Add option for multithreaded recursive scan of user selected drives at startup (Ticket 322).

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