source: trunk/dll/notebook.c@ 1211

Last change on this file since 1211 was 1211, checked in by John Small, 17 years ago

Ticket 187: Move data declarations/definitions out of fm3dll.h

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