source: trunk/dll/notebook.c@ 1880

Last change on this file since 1880 was 1880, checked in by Gregg Young, 10 years ago

Remove dead code and comments from remaining c files. #if 0 and #if NEVER were not addressed

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