source: trunk/dll/notebook.c@ 1878

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

Remove debug code

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