source: trunk/dll/notebook.c@ 1186

Last change on this file since 1186 was 1186, checked in by John Small, 17 years ago

Ticket 187: Draft 2: Move remaining function declarations

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