source: trunk/dll/notebook.c@ 1365

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

Add option to rescan drive tree on media eject Ticket 48; Remove error message when priovious notebook page isn't defined (fixes issue with new installs) Ticket 329

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