source: trunk/dll/notebook.c@ 1431

Last change on this file since 1431 was 1431, checked in by Gregg Young, 16 years ago

Changed 3 way button to radio buttons and added rescan on change to add systype/label to tree enhancement.

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