source: trunk/dll/notebook.c@ 1211

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

Ticket 187: Move data declarations/definitions out of fm3dll.h

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