source: trunk/dll/notebook.c@ 1844

Last change on this file since 1844 was 1844, checked in by Steven Levine, 10 years ago

Add RESTORE_STATE_... definitions and use

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