source: trunk/dll/notebook.c@ 1225

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

Ticket 187: Moved typedef's and some #define's from fm3dll.h

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