source: trunk/dll/notebook.c@ 1431

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

Changed 3 way button to radio buttons and added rescan on change to add systype/label to tree enhancement.

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