source: trunk/dll/notebook.c@ 1161

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

Ticket 187: Draft 1: Functions only

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