source: trunk/dll/notebook.c@ 1478

Last change on this file since 1478 was 1478, checked in by Gregg Young, 16 years ago

Fix trap on rescan following change of label/drive type or environment on SMP; Ticket 408

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