source: trunk/dll/notebook.c@ 1358

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

Comments for CS 1354/55

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