source: trunk/dll/notebook.c@ 1429

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

Comments and documentation for previous 5 change sets

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