source: trunk/dll/notebook.c@ 1097

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

Ticket 114: Improved code to avoid traps possibly caused by strings being freed
prematurely.

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