source: trunk/dll/notebook.c@ 1400

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

Remainder of changes to rename commafmt.h/c (Ticket 28, 82); Additional strings moved to PCSZs in init.c (Ticket 6); Added WriteDetailsSwitches used it and LoadDetailsSwitches to consolidate inline code (Ticket 343, 344)

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