source: trunk/dll/notebook.c@ 1546

Last change on this file since 1546 was 1546, checked in by Gregg Young, 15 years ago

Add menu item to allow opening of directory container from the collector based on the path of the selected item. (Ticket 362) Add open file button to EAs dialog to allow opening of a new file's eas (Ticket 439). Initial work on populating the help table (It provides F1 help a few more places) (Ticket 95). Some minor code cleanup and help file updates.

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