source: trunk/dll/notebook.c@ 1402

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

Remove variable aurgs from docopy & unlinkf (not used); Move more strings to PCSZs and string table; Move PCSZs to compile time initialization; Fix hang on startup caused by a drive scan and a dircnr scan trying to update a drive in the tree at the same time (related to the "treeswitch options); Code cleanup mainly removal of old printfs, SayMsgs, DbgMsg and unneeded %s.

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