source: trunk/dll/notebook.c@ 1482

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

Fixed separate parameters; added the ability to set it either globally or for just one app; some files only contain white space changes.

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