source: trunk/dll/notebook.c@ 1103

Last change on this file since 1103 was 1103, checked in by Gregg Young, 17 years ago

Make sure pszTemp is freed on PostMsg failure

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