source: trunk/dll/notebook.c@ 1303

Last change on this file since 1303 was 1225, checked in by John Small, 17 years ago

Ticket 187: Moved typedef's and some #define's from fm3dll.h

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