source: trunk/dll/notebook.c@ 1039

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

Removed unnecessary xfrees and included fortify.h where needed; moved several misplaced (x)frees;

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