source: trunk/dll/notebook.c@ 1391

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

Move nontranslated strings to init.c and codepage.c; use those strings in place of GetPString calls. Move other strings to a StringTable; minor cleanup and code changes to codepage.c to use a string array instead of GetPString calls. Ticket 340

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