source: trunk/dll/notebook.c@ 1375

Last change on this file since 1375 was 1375, checked in by Gregg Young, 17 years ago

Updated history; comments minor code cleanup for recent changes

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