source: trunk/dll/notebook.c@ 1049

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

Fix for another memory leak

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 107.5 KB
RevLine 
[123]1
2/***********************************************************************
3
4 $Id: notebook.c 1049 2008-07-07 04:03:27Z gyoung $
5
6 Configuration notebook
7
8 Copyright (c) 1993-98 M. Kimes
[907]9 Copyright (c) 2004, 2008 Steven H. Levine
[123]10
[130]11 01 Aug 04 SHL Rework lstrip/rstrip usage
12 23 May 05 SHL Use QWL_USER
[187]13 04 Jun 05 SHL Support Cancel button; make Esc key more consistent
[302]14 29 May 06 SHL Comments
[355]15 17 Jul 06 SHL Use Runtime_Error
[443]16 15 Aug 06 SHL Rework SetMask args
[756]17 03 Aug 07 GKY Enlarged and made setable everywhere Findbuf (speed file loading)
[783]18 13 Aug 07 SHL Move #pragma alloc_text to end for OpenWatcom compat
[789]19 13 Aug 07 SHL Rework FilesToGet min/max to match how DosFindFirst/Next works
20 19 Aug 07 SHL Sync with SaveDirCnrState mods
[796]21 21 Aug 07 GKY Make Subject column in dircnr sizable and movable from the rigth to the left pane
[878]22 26 Nov 07 GKY Allow a currently nonvalid path in the ext path field with warning
[920]23 06 Jan 08 GKY Use NormalizeCmdLine to check program strings on entry
[917]24 10 Jan 08 SHL Remember last settings page
25 10 Jan 08 SHL Rework page select logic
[940]26 13 Jan 08 GKY Get Subjectwidth/Subjectleft working in the collector.
[972]27 19 Jan 08 JBS Ticket 150: fix/improve save and restore of dir cnr state at FM/2 close/reopen
[953]28 15 Feb 08 SHL Rework to support settings menu conditional cascade. Make more generic
[961]29 16 Feb 08 SHL Restore SaveDirCnrState internal state save logic - accidentally removed
[972]30 22 Feb 08 JBS Ticket 230: Fix/improve various code related to state or presparam values in the INI file.
[985]31 29 Feb 08 GKY Changes to enable user settable command line length
[998]32 08 Mar 08 JBS Ticket 230: Replace prefixless INI keys for default directory containers with
[1041]33 keys using a "DirCnr." prefix
34 06 Jul 08 GKY Update delete/undelete to include move to and open XWP trashcan
[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);
225 if (!strchr(virus, '%') && strlen(virus) > 3)
226 strcat(virus, " %p");
[906]227 }
[1049]228 free(pszWorkBuf);
229 free(szCLBuf);
[906]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);
[1041]1117 WinCheckButton(hwnd, CFGG_TRASHCAN, fTrashCan);
[985]1118 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_SETCURRENTVALUE,
1119 MPFROMLONG(MaxComLineStrg), MPVOID);
[551]1120 return 0;
[2]1121
[551]1122 case UM_FOCUSME:
1123 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, IDM_HELP));
1124 return 0;
[2]1125
[551]1126 case UM_SETUP5:
1127 SetTargetDir(hwnd, FALSE);
1128 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1129 return 0;
[2]1130
[551]1131 case WM_CONTROL:
1132 switch (SHORT1FROMMP(mp1)) {
1133 case CFGG_TARGETDIR:
1134 switch (SHORT2FROMMP(mp1)) {
1135 case EN_SETFOCUS:
1136 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1137 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1138 break;
[2]1139 }
[551]1140 break;
1141 }
1142 return 0;
[2]1143
[551]1144 case WM_COMMAND:
1145 switch (SHORT1FROMMP(mp1)) {
1146 case IDM_UNDO:
1147 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1148 break;
[2]1149
[551]1150 case DID_CANCEL:
1151 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1152
[551]1153 case DID_OK:
1154 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1155 break;
[2]1156
[551]1157 case IDM_HELP:
1158 if (hwndHelp)
1159 WinSendMsg(hwndHelp,
1160 HM_DISPLAY_HELP,
1161 MPFROM2SHORT(HELP_CFGG, 0), MPFROMSHORT(HM_RESOURCEID));
1162 break;
1163 }
1164 return 0;
[2]1165
[551]1166 case WM_CLOSE:
1167 {
1168 long test;
[2]1169
[551]1170 test = WinQueryButtonCheckstate(hwnd, CFGG_NODEAD);
1171 fNoDead = (test == 1);
1172 fNoFinger = (test == 2);
1173 PrfWriteProfileData(fmprof, FM3Str, "NoDead", &fNoDead, sizeof(BOOL));
[2]1174 PrfWriteProfileData(fmprof,
[551]1175 FM3Str, "NoFinger", &fNoFinger, sizeof(BOOL));
1176 WinDestroyPointer(hptrFinger);
1177 if (!fNoDead)
1178 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER_ICON);
1179 else
1180 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER2_ICON);
1181 }
1182 fLinkSetsIcon = WinQueryButtonCheckstate(hwnd, CFGG_LINKSETSICON);
1183 PrfWriteProfileData(fmprof,
1184 appname,
1185 "LinkSetsIcon", &fLinkSetsIcon, sizeof(BOOL));
1186 fCustomFileDlg = WinQueryButtonCheckstate(hwnd, CFGG_CUSTOMFILEDLG);
1187 PrfWriteProfileData(fmprof,
1188 FM3Str,
1189 "CustomFileDlg", &fCustomFileDlg, sizeof(BOOL));
1190 fDullMin = WinQueryButtonCheckstate(hwnd, CFGG_BORING);
1191 PrfWriteProfileData(fmprof,
1192 FM3Str, "DullDatabar", &fDullMin, sizeof(BOOL));
1193 fConfirmDelete = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMDELETE);
1194 PrfWriteProfileData(fmprof,
1195 appname,
1196 "ConfirmDelete", &fConfirmDelete, sizeof(BOOL));
1197 fDontMoveMouse = WinQueryButtonCheckstate(hwnd, CFGG_DONTMOVEMOUSE);
1198 PrfWriteProfileData(fmprof,
1199 appname,
1200 "DontMoveMouse", &fDontMoveMouse, sizeof(BOOL));
1201 fCopyDefault = WinQueryButtonCheckstate(hwnd, CFGG_DEFAULTCOPY);
1202 PrfWriteProfileData(fmprof, appname, "DefaultCopy",
1203 &fCopyDefault, sizeof(BOOL));
1204 fRealIdle = WinQueryButtonCheckstate(hwnd, CFGG_IDLECOPY);
1205 PrfWriteProfileData(fmprof, appname, "IdleCopy",
1206 &fRealIdle, sizeof(BOOL));
1207 fDragndropDlg = WinQueryButtonCheckstate(hwnd, CFGG_DNDDLG);
1208 PrfWriteProfileData(fmprof, appname, "Drag&DropDlg",
1209 &fDragndropDlg, sizeof(BOOL));
1210 fVerify = WinQueryButtonCheckstate(hwnd, CFGG_VERIFYWRITES);
1211 PrfWriteProfileData(fmprof, appname, "VerifyWrites",
1212 &fVerify, sizeof(BOOL));
1213 DosSetVerify(fVerify);
1214 fDefaultDeletePerm = WinQueryButtonCheckstate(hwnd,
1215 CFGG_DEFAULTDELETEPERM);
1216 PrfWriteProfileData(fmprof, appname, "DefaultDeletePerm",
1217 &fDefaultDeletePerm, sizeof(BOOL));
1218 fFM2Deletes = WinQueryButtonCheckstate(hwnd, CFGG_FM2DELETES);
1219 PrfWriteProfileData(fmprof, FM3Str, "FM2Deletes",
[1041]1220 &fFM2Deletes, sizeof(BOOL));
1221 fTrashCan = WinQueryButtonCheckstate(hwnd, CFGG_TRASHCAN);
1222 PrfWriteProfileData(fmprof, FM3Str, "TrashCan",
1223 &fTrashCan, sizeof(BOOL));
[551]1224 fConfirmTarget = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMTARGET);
1225 PrfWriteProfileData(fmprof, appname, "ConfirmTarget",
[985]1226 &fConfirmTarget, sizeof(BOOL));
1227 {
1228 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_QUERYVALUE,
1229 MPFROMP(&MaxComLineStrg), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
1230 if (MaxComLineStrg < CMDLNLNGTH_MIN)
1231 MaxComLineStrg = CMDLNLNGTH_MIN;
1232 else if (MaxComLineStrg > CMDLNLNGTH_MAX)
1233 MaxComLineStrg = CMDLNLNGTH_MAX;
1234 PrfWriteProfileData(fmprof,
1235 appname, "MaxComLineStrg", &MaxComLineStrg, sizeof(ULONG));
1236 }
[551]1237 break;
[2]1238 }
[551]1239 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1240}
1241
[551]1242MRESULT EXPENTRY CfgCDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1243{
[551]1244 switch (msg) {
1245 case WM_INITDLG:
1246 WinSendDlgItemMsg(hwnd, CFGC_COMPARE, EM_SETTEXTLIMIT,
[985]1247 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID);
[551]1248 WinSendDlgItemMsg(hwnd, CFGC_DIRCOMPARE, EM_SETTEXTLIMIT,
[985]1249 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID);
[551]1250 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1251 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1252 break;
[2]1253
[551]1254 case UM_UNDO:
1255 WinSetDlgItemText(hwnd, CFGC_COMPARE, compare);
1256 WinSetDlgItemText(hwnd, CFGC_DIRCOMPARE, dircompare);
1257 return 0;
[2]1258
[551]1259 case WM_CONTROL:
1260 switch (SHORT1FROMMP(mp1)) {
1261 case CFGC_COMPARE:
1262 case CFGC_DIRCOMPARE:
1263 switch (SHORT2FROMMP(mp1)) {
1264 case EN_KILLFOCUS:
1265 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1266 break;
1267 case EN_SETFOCUS:
1268 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), TRUE);
1269 break;
[2]1270 }
[551]1271 break;
1272 }
1273 return 0;
[2]1274
[551]1275 case WM_COMMAND:
1276 switch (SHORT1FROMMP(mp1)) {
1277 case IDM_UNDO:
1278 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1279 break;
[2]1280
[551]1281 case DID_CANCEL:
1282 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1283
[551]1284 case DID_OK:
1285 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1286 break;
[2]1287
[551]1288 case IDM_HELP:
1289 if (hwndHelp)
1290 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1291 MPFROM2SHORT(HELP_CFGC, 0), MPFROMSHORT(HM_RESOURCEID));
1292 break;
[2]1293
[551]1294 case CFGC_FIND:
1295 {
[888]1296 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
[551]1297 USHORT id;
1298 HWND hwndFocus;
[2]1299
[551]1300 strcpy(filename, "*.EXE");
1301 hwndFocus = WinQueryFocus(HWND_DESKTOP);
1302 if (hwndFocus) {
1303 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
1304 switch (id) {
1305 case CFGC_COMPARE:
1306 case CFGC_DIRCOMPARE:
[917]1307 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
1308 BldQuotedFileName(szfilename, filename);
[888]1309 strcat(szfilename, " %a");
1310 WinSetDlgItemText(hwnd, id, szfilename);
[551]1311 }
1312 break;
1313 default:
1314 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
1315 break;
1316 }
1317 }
[2]1318 }
[551]1319 break;
1320 }
1321 return 0;
[2]1322
[551]1323 case WM_CLOSE:
[888]1324 {
[985]1325 CHAR *szCLBuf;
[920]1326 PSZ pszWorkBuf;
[888]1327
[985]1328 szCLBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__);
1329 if (!szCLBuf)
1330 return 0; //already complained
1331 pszWorkBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__);
1332 if (!pszWorkBuf) {
[1039]1333 free(szCLBuf);
[959]1334 return 0; //already complained
[985]1335 }
1336 WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, MaxComLineStrg, szCLBuf);
1337 szCLBuf[MaxComLineStrg - 1] = 0;
[930]1338 if (strcmp(szCLBuf, dircompare)){
1339 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1340 memcpy(dircompare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1341 if (!strchr(dircompare, '%') && strlen(dircompare) > 3)
1342 strcat(dircompare, " %a");
1343 }
[888]1344 PrfWriteProfileString(fmprof, appname, "DirCompare", dircompare);
[985]1345 WinQueryDlgItemText(hwnd, CFGC_COMPARE, MaxComLineStrg, szCLBuf);
1346 szCLBuf[MaxComLineStrg - 1] = 0;
1347 if (strcmp(szCLBuf, compare)){
1348 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1349 memcpy(compare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1350 if (!strchr(compare, '%') && strlen(compare) > 3)
1351 strcat(compare, " %a");
1352 }
[1039]1353 free(pszWorkBuf);
1354 free(szCLBuf);
[888]1355 PrfWriteProfileString(fmprof, appname, "Compare", compare);
1356 break;
1357 }
[2]1358 }
[917]1359 if (fCancelAction) {
[906]1360 fCancelAction = FALSE;
1361 WinDlgBox(HWND_DESKTOP,
[917]1362 hwnd,
1363 CfgDlgProc,
1364 FM3ModHandle,
1365 CFG_FRAME,
1366 MPFROMLONG(IDM_COMPARESETTINGS));
[906]1367 }
[551]1368 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1369}
1370
[551]1371MRESULT EXPENTRY CfgDDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1372{
[551]1373 switch (msg) {
1374 case WM_INITDLG:
1375 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1376 break;
[2]1377
[551]1378 case UM_UNDO:
1379 WinCheckButton(hwnd, CFGD_UNHILITE, fUnHilite);
1380 WinCheckButton(hwnd, CFGD_SYNCUPDATES, fSyncUpdates);
1381 WinCheckButton(hwnd, CFGD_LOOKINDIR, fLookInDir);
1382 WinCheckButton(hwnd, CFGD_MINONOPEN, fMinOnOpen);
1383 WinCheckButton(hwnd, CFGD_SELECTEDALWAYS, fSelectedAlways);
1384 WinCheckButton(hwnd, CFGD_NOSEARCH, fNoSearch);
1385 WinCheckButton(hwnd, CFGD_EXTENDEDSEL,
1386 ((ulCnrType & CCS_EXTENDSEL) != 0));
1387 WinCheckButton(hwnd, CFGD_MULTIPLESEL,
1388 ((ulCnrType & CCS_MULTIPLESEL) != 0));
1389 WinCheckButton(hwnd, CFGD_LEAVETREE, fLeaveTree);
1390 WinCheckButton(hwnd, CFGD_NOFOLDMENU, fNoFoldMenu);
1391 return 0;
[2]1392
[551]1393 case WM_COMMAND:
1394 switch (SHORT1FROMMP(mp1)) {
1395 case IDM_UNDO:
1396 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1397 break;
[2]1398
[551]1399 case DID_CANCEL:
1400 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1401
[551]1402 case DID_OK:
1403 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1404 break;
[2]1405
[551]1406 case IDM_HELP:
1407 if (hwndHelp)
1408 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1409 MPFROM2SHORT(HELP_CFGD, 0), MPFROMSHORT(HM_RESOURCEID));
1410 break;
1411 }
1412 return 0;
[2]1413
[551]1414 case WM_CLOSE:
1415 ulCnrType = 0;
1416 if (WinQueryButtonCheckstate(hwnd, CFGD_EXTENDEDSEL))
1417 ulCnrType |= CCS_EXTENDSEL;
1418 if (WinQueryButtonCheckstate(hwnd, CFGD_MULTIPLESEL))
1419 ulCnrType |= CCS_MULTIPLESEL;
1420 PrfWriteProfileData(fmprof, appname, "ContainerType",
1421 (PVOID) & ulCnrType, sizeof(BOOL));
1422 fMinOnOpen = WinQueryButtonCheckstate(hwnd, CFGD_MINONOPEN);
1423 PrfWriteProfileData(fmprof, FM3Str, "MinDirOnOpen", &fMinOnOpen,
1424 sizeof(BOOL));
1425 fLeaveTree = WinQueryButtonCheckstate(hwnd, CFGD_LEAVETREE);
1426 PrfWriteProfileData(fmprof, appname, "LeaveTree", &fLeaveTree,
1427 sizeof(BOOL));
1428 fNoFoldMenu = WinQueryButtonCheckstate(hwnd, CFGD_NOFOLDMENU);
1429 PrfWriteProfileData(fmprof, appname, "NoFoldMenu", &fNoFoldMenu,
1430 sizeof(BOOL));
1431 fSelectedAlways = WinQueryButtonCheckstate(hwnd, CFGD_SELECTEDALWAYS);
1432 PrfWriteProfileData(fmprof, appname, "SelectedAlways", &fSelectedAlways,
1433 sizeof(BOOL));
1434 fNoSearch = WinQueryButtonCheckstate(hwnd, CFGD_NOSEARCH);
1435 PrfWriteProfileData(fmprof, appname, "NoSearch", &fNoSearch,
1436 sizeof(BOOL));
1437 fLookInDir = WinQueryButtonCheckstate(hwnd, CFGD_LOOKINDIR);
1438 PrfWriteProfileData(fmprof, FM3Str, "LookInDir", (PVOID) & fLookInDir,
1439 sizeof(BOOL));
1440 fUnHilite = WinQueryButtonCheckstate(hwnd, CFGD_UNHILITE);
1441 PrfWriteProfileData(fmprof, appname, "UnHilite",
1442 &fUnHilite, sizeof(BOOL));
1443 {
[961]1444 BOOL fOldSyncUpdates = WinQueryButtonCheckstate(hwnd, CFGD_SYNCUPDATES);
[2]1445
[961]1446 if (fOldSyncUpdates != fSyncUpdates) {
1447 fSyncUpdates = fOldSyncUpdates;
[551]1448 if (hwndMain && !strcmp(realappname, FM3Str)) {
[961]1449 // Save state and restore to refresh windows with new settings
[789]1450 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
[971]1451 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
1452// PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
1453 PostMsg(MainObjectHwnd, UM_RESTORE, GetPString(IDS_FM2TEMPTEXT), MPVOID);
[551]1454 }
1455 }
[2]1456 }
[551]1457 }
1458 PrfWriteProfileData(fmprof, appname, "SyncUpdates",
1459 &fSyncUpdates, sizeof(BOOL));
1460 if (!(ulCnrType & (CCS_EXTENDSEL | CCS_MULTIPLESEL)))
1461 saymsg(MB_ENTER | MB_ICONEXCLAMATION,
1462 HWND_DESKTOP,
1463 GetPString(IDS_WARNINGTEXT),
1464 GetPString(IDS_SELECTTYPEERRORTEXT));
[961]1465 break; // WM_CLOSE
[2]1466 }
[551]1467 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1468}
1469
[551]1470MRESULT EXPENTRY CfgMDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1471{
[551]1472 switch (msg) {
1473 case WM_INITDLG:
1474 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1475 break;
[2]1476
[551]1477 case UM_UNDO:
1478 WinCheckButton(hwnd, CFGM_EXTERNALINIS, fExternalINIs);
1479 WinCheckButton(hwnd, CFGM_EXTERNALARCBOXES, fExternalArcboxes);
1480 WinCheckButton(hwnd, CFGM_EXTERNALVIEWER, fExternalViewer);
1481 WinCheckButton(hwnd, CFGM_EXTERNALCOLLECTOR, fExternalCollector);
1482 WinCheckButton(hwnd, CFGM_SAVESTATE, fSaveState);
1483 WinCheckButton(hwnd, CFGM_AUTOTILE, (fAutoTile));
1484 WinCheckButton(hwnd, CFGM_FREETREE, (fFreeTree));
1485 WinCheckButton(hwnd, CFGM_SPLITSTATUS, (fSplitStatus));
1486 WinCheckButton(hwnd, CFGM_NOTREEGAP, (fNoTreeGap));
1487 WinCheckButton(hwnd, CFGM_STARTMIN, (fStartMinimized));
1488 WinCheckButton(hwnd, CFGM_STARTMAX, (fStartMaximized));
1489 WinCheckButton(hwnd, CFGM_DATAMIN, (fDataMin));
1490 WinCheckButton(hwnd, CFGM_TILEBACKWARDS, (fTileBackwards));
1491 {
1492 long th;
[2]1493
[551]1494 th = (fAutoAddDirs && fAutoAddAllDirs) ? 2 : (fAutoAddDirs) ? 1 : 0;
1495 WinCheckButton(hwnd, CFGM_RECENTDIRS, th);
1496 WinSendMsg(hwnd, UM_RESTORE, MPFROM2SHORT(CFGM_RECENTDIRS, 0), MPVOID);
1497 }
1498 WinCheckButton(hwnd, CFGM_USERLISTSWITCHES, fUserListSwitches);
1499 WinCheckButton(hwnd, CFGM_WSANIMATE, (fwsAnimate != 0));
1500 WinCheckButton(hwnd, CFGM_SEPARATEPARMS, fSeparateParms);
1501 WinCheckButton(hwnd, CFGM_BLUELED, fBlueLED);
1502 WinCheckButton(hwnd, CFGM_SHOWTARGET, fShowTarget);
1503 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), !(fStartMinimized));
1504 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), !(fStartMaximized));
1505 return 0;
[2]1506
[551]1507 case UM_RESTORE:
1508 {
1509 long test;
1510 BOOL th, oh;
1511 char s[80];
[2]1512
[551]1513 test = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1514 th = (test != 0);
1515 oh = (test == 1);
1516 *s = 0;
1517 switch (SHORT1FROMMP(mp1)) {
1518 case CFGM_RECENTDIRS:
1519 sprintf(s,
1520 GetPString(IDS_RECENTHELPWHICHTEXT),
1521 (!oh && th) ?
1522 GetPString(IDS_RECENTONLYTEXT) :
1523 (oh && th) ?
1524 GetPString(IDS_ALLONLYTEXT) : GetPString(IDS_NONE));
1525 break;
[2]1526 }
[551]1527 if (*s)
1528 WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), s);
1529 }
1530 return 0;
[2]1531
[551]1532 case WM_CONTROL:
1533 switch (SHORT1FROMMP(mp1)) {
1534 case CFGM_RECENTDIRS:
1535 WinSendMsg(hwnd, UM_RESTORE, mp1, MPVOID);
1536 break;
1537 case CFGM_STARTMIN:
1538 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN)) {
1539 WinCheckButton(hwnd, CFGM_STARTMAX, FALSE);
1540 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), FALSE);
[2]1541 }
[551]1542 else
1543 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), TRUE);
1544 break;
1545 case CFGM_STARTMAX:
1546 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX)) {
1547 WinCheckButton(hwnd, CFGM_STARTMIN, FALSE);
1548 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), FALSE);
1549 }
1550 else
1551 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), TRUE);
1552 break;
1553 }
1554 return 0;
[2]1555
[551]1556 case WM_COMMAND:
1557 switch (SHORT1FROMMP(mp1)) {
1558 case IDM_UNDO:
1559 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1560 break;
[2]1561
[551]1562 case DID_CANCEL:
1563 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1564
[551]1565 case DID_OK:
1566 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1567 break;
[2]1568
[551]1569 case IDM_HELP:
1570 if (hwndHelp)
1571 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1572 MPFROM2SHORT(HELP_CFGM, 0), MPFROMSHORT(HM_RESOURCEID));
1573 break;
1574 }
1575 return 0;
[2]1576
[551]1577 case WM_CLOSE:
1578 if (hwndMain && !strcmp(realappname, FM3Str)) {
1579 if (fFreeTree != WinQueryButtonCheckstate(hwnd, CFGM_FREETREE))
1580 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_FREETREE, 0), MPVOID);
1581 if (fAutoTile != WinQueryButtonCheckstate(hwnd, CFGM_AUTOTILE))
1582 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_AUTOTILE, 0), MPVOID);
1583 if (fSplitStatus != WinQueryButtonCheckstate(hwnd, CFGM_SPLITSTATUS)) {
1584 fSplitStatus = (fSplitStatus) ? FALSE : TRUE;
1585 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_BLINK, 0), MPVOID);
1586 PrfWriteProfileData(fmprof, FM3Str, "SplitStatus", &fSplitStatus,
1587 sizeof(BOOL));
[2]1588 }
[551]1589 }
1590 fUserListSwitches = WinQueryButtonCheckstate(hwnd, CFGM_USERLISTSWITCHES);
1591 PrfWriteProfileData(fmprof, FM3Str, "UserListSwitches",
1592 (PVOID) & fUserListSwitches, sizeof(BOOL));
1593 fExternalINIs = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALINIS);
1594 PrfWriteProfileData(fmprof, FM3Str, "ExternalINIs",
1595 (PVOID) & fExternalINIs, sizeof(BOOL));
1596 fExternalArcboxes = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALARCBOXES);
1597 PrfWriteProfileData(fmprof, FM3Str, "ExternalArcboxes",
1598 (PVOID) & fExternalArcboxes, sizeof(BOOL));
1599 fExternalCollector =
1600 WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALCOLLECTOR);
1601 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
1602 (PVOID) & fExternalCollector, sizeof(BOOL));
1603 fExternalViewer = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALVIEWER);
1604 PrfWriteProfileData(fmprof, FM3Str, "ExternalViewer",
1605 (PVOID) & fExternalViewer, sizeof(BOOL));
1606 {
1607 long test;
[2]1608
[551]1609 test = WinQueryButtonCheckstate(hwnd, CFGM_RECENTDIRS);
1610 fAutoAddDirs = (test != 0);
1611 fAutoAddAllDirs = (test == 2);
1612 }
1613 PrfWriteProfileData(fmprof,
1614 appname,
1615 "AutoAddDirs", (PVOID) & fAutoAddDirs, sizeof(BOOL));
1616 PrfWriteProfileData(fmprof,
1617 appname,
1618 "AutoAddAllDirs",
1619 (PVOID) & fAutoAddAllDirs, sizeof(BOOL));
1620 fwsAnimate = WinQueryButtonCheckstate(hwnd, CFGM_WSANIMATE);
1621 if (fwsAnimate)
1622 fwsAnimate = WS_ANIMATE;
1623 PrfWriteProfileData(fmprof,
1624 appname,
1625 "WS_ANIMATE", (PVOID) & fwsAnimate, sizeof(ULONG));
1626 fSaveState = WinQueryButtonCheckstate(hwnd, CFGM_SAVESTATE);
1627 PrfWriteProfileData(fmprof,
1628 FM3Str,
1629 "SaveState", (PVOID) & fSaveState, sizeof(BOOL));
1630 fStartMinimized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN);
1631 PrfWriteProfileData(fmprof,
1632 appname,
1633 "StartMinimized",
1634 (PVOID) & fStartMinimized, sizeof(BOOL));
1635 fStartMaximized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX);
1636 PrfWriteProfileData(fmprof,
1637 appname,
1638 "StartMaximized",
1639 (PVOID) & fStartMaximized, sizeof(BOOL));
1640 fDataMin = WinQueryButtonCheckstate(hwnd, CFGM_DATAMIN);
1641 PrfWriteProfileData(fmprof,
1642 FM3Str, "DataMin", (PVOID) & fDataMin, sizeof(BOOL));
1643 fTileBackwards = WinQueryButtonCheckstate(hwnd, CFGM_TILEBACKWARDS);
1644 PrfWriteProfileData(fmprof,
1645 FM3Str,
1646 "TileBackwards",
1647 (PVOID) & fTileBackwards, sizeof(BOOL));
1648 fNoTreeGap = WinQueryButtonCheckstate(hwnd, CFGM_NOTREEGAP);
1649 PrfWriteProfileData(fmprof,
1650 FM3Str,
1651 "NoTreeGap", (PVOID) & fNoTreeGap, sizeof(BOOL));
1652 fBlueLED = WinQueryButtonCheckstate(hwnd, CFGM_BLUELED);
1653 PrfWriteProfileData(fmprof,
1654 appname, "BlueLED", (PVOID) & fBlueLED, sizeof(BOOL));
1655 {
1656 BOOL dummy;
[2]1657
[551]1658 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SHOWTARGET);
1659 if (dummy != fShowTarget) {
1660 fShowTarget = dummy;
1661 PrfWriteProfileData(fmprof,
1662 appname,
1663 "ShowTarget",
1664 (PVOID) & fShowTarget, sizeof(BOOL));
1665 if (hwndMain)
1666 PostMsg(WinQueryWindow(hwndMain, QW_PARENT),
1667 WM_UPDATEFRAME, MPFROMLONG(FCF_SIZEBORDER), MPVOID);
1668 SetTargetDir(hwnd, TRUE);
[2]1669 }
[551]1670 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SEPARATEPARMS);
1671 if (dummy != fSeparateParms) {
1672 fSeparateParms = dummy;
1673 PrfWriteProfileData(fmprof,
1674 FM3Str,
1675 "SeparateParms",
1676 (PVOID) & fSeparateParms, sizeof(BOOL));
1677 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
1678 UM_UNDO, MPVOID, MPVOID);
1679 }
1680 }
1681 break;
[2]1682 }
[551]1683 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1684}
1685
[551]1686MRESULT EXPENTRY Cfg5DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1687{
[2]1688 static MASK mask;
1689
[551]1690 switch (msg) {
1691 case WM_INITDLG:
[796]1692 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
1693 MPFROMSHORT(8), MPVOID);
1694 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
1695 MPFROMLONG(1000), MPFROMLONG(50));
[551]1696 WinSendDlgItemMsg(hwnd,
1697 CFG5_FILTER,
1698 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
1699 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1700 break;
[2]1701
[551]1702 case UM_FOCUSME:
1703 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
1704 return 0;
[2]1705
[551]1706 case UM_UNDO:
1707 {
[917]1708 ULONG flWindowAttr = 0;
1709 ULONG ulSize = sizeof(ULONG);
[2]1710
[551]1711 if (!PrfQueryProfileData(fmprof,
1712 appname,
[917]1713 "DirflWindowAttr", &flWindowAttr, &ulSize))
[551]1714 flWindowAttr = (CV_NAME | CV_MINI | CA_DETAILSVIEWTITLES | CV_FLOW);
1715 if (flWindowAttr & CV_ICON)
1716 WinCheckButton(hwnd, CFG5_ICON, TRUE);
1717 if (flWindowAttr & CV_NAME)
1718 WinCheckButton(hwnd, CFG5_NAME, TRUE);
1719 if (flWindowAttr & CV_TEXT)
1720 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
1721 if (flWindowAttr & CV_DETAIL)
1722 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
1723 if (flWindowAttr & CV_MINI)
1724 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
1725 if (flWindowAttr & CA_DETAILSVIEWTITLES)
1726 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
1727 WinCheckButton(hwnd, CFG5_SHOWLNAMES, detailslongname);
1728 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, detailssubject);
1729 WinCheckButton(hwnd, CFG5_SHOWEAS, detailsea);
1730 WinCheckButton(hwnd, CFG5_SHOWSIZE, detailssize);
1731 WinCheckButton(hwnd, CFG5_SHOWICON, detailsicon);
1732 WinCheckButton(hwnd, CFG5_SHOWLWDATE, detailslwdate);
1733 WinCheckButton(hwnd, CFG5_SHOWLWTIME, detailslwtime);
1734 WinCheckButton(hwnd, CFG5_SHOWLADATE, detailsladate);
1735 WinCheckButton(hwnd, CFG5_SHOWLATIME, detailslatime);
1736 WinCheckButton(hwnd, CFG5_SHOWCRDATE, detailscrdate);
1737 WinCheckButton(hwnd, CFG5_SHOWCRTIME, detailscrtime);
1738 WinCheckButton(hwnd, CFG5_SHOWATTR, detailsattr);
1739 memset(&mask, 0, sizeof(mask));
1740 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1741 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
[917]1742 ulSize = sizeof(MASK);
1743 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, &ulSize))
[551]1744 SetMask(NULL, &mask);
1745 if (!mask.attrFile)
1746 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1747 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
1748 strcpy(mask.prompt, GetPString(IDS_DEFDIRFILTERTITLETEXT));
1749 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
[796]1750 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, fSubjectInLeftPane);
1751 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, fSubjectLengthMax);
1752 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
[930]1753 MPFROMLONG(SubjectDisplayWidth), MPVOID);
[551]1754 }
1755 return 0;
[2]1756
[551]1757 case UM_SETUP5:
1758 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
1759 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
1760 SetMask(NULL, &mask);
1761 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
1762 }
1763 return 0;
[2]1764
[551]1765 case WM_CONTROL:
1766 switch (SHORT1FROMMP(mp1)) {
1767 case CFG5_FILTER:
1768 switch (SHORT2FROMMP(mp1)) {
1769 case EN_SETFOCUS:
1770 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1771 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1772 break;
[2]1773 }
[551]1774 break;
1775 }
1776 return 0;
[2]1777
[551]1778 case WM_COMMAND:
1779 switch (SHORT1FROMMP(mp1)) {
1780 case IDM_UNDO:
1781 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1782 break;
[2]1783
[551]1784 case DID_CANCEL:
1785 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1786
[551]1787 case DID_OK:
1788 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1789 break;
[2]1790
[551]1791 case IDM_HELP:
1792 if (hwndHelp)
1793 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1794 MPFROM2SHORT(HELP_CFG5, 0), MPFROMSHORT(HM_RESOURCEID));
1795 break;
1796 }
1797 return 0;
[2]1798
[551]1799 case WM_CLOSE:
1800 {
1801 ULONG flWindowAttr = 0;
[2]1802
[551]1803 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
1804 flWindowAttr |= CV_ICON;
1805 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
1806 flWindowAttr |= CV_NAME;
1807 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
1808 flWindowAttr |= CV_TEXT;
1809 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
1810 flWindowAttr |= CV_DETAIL;
1811 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
1812 flWindowAttr |= CV_MINI;
1813 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
1814 flWindowAttr |= CA_DETAILSVIEWTITLES;
1815 flWindowAttr |= CV_FLOW;
[2]1816 PrfWriteProfileData(fmprof,
[551]1817 appname,
1818 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
1819 }
1820 detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
[997]1821 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname",
[551]1822 &detailslongname, sizeof(BOOL));
1823 detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
[997]1824 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject",
[551]1825 &detailssubject, sizeof(BOOL));
[997]1826 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA",
[551]1827 &detailsea, sizeof(BOOL));
1828 detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
[997]1829 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize",
[551]1830 &detailssize, sizeof(BOOL));
1831 detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
[997]1832 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon",
[551]1833 &detailsicon, sizeof(BOOL));
1834 detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
[997]1835 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate",
[551]1836 &detailslwdate, sizeof(BOOL));
1837 detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
[997]1838 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime",
[551]1839 &detailslwtime, sizeof(BOOL));
1840 detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
[997]1841 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate",
[551]1842 &detailsladate, sizeof(BOOL));
1843 detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
[997]1844 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime",
[551]1845 &detailslatime, sizeof(BOOL));
1846 detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
[997]1847 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate",
[551]1848 &detailscrdate, sizeof(BOOL));
1849 detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
[997]1850 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime",
[551]1851 &detailscrtime, sizeof(BOOL));
1852 detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
[997]1853 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr",
[551]1854 &detailsattr, sizeof(BOOL));
[796]1855 fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
[997]1856 PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectInLeftPane",
[796]1857 &fSubjectInLeftPane, sizeof(BOOL));
1858 fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
[997]1859 PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectLengthMax",
[922]1860 &fSubjectLengthMax, sizeof(BOOL));
[551]1861 *mask.prompt = 0;
1862 PrfWriteProfileData(fmprof, appname, "DirFilter", &mask, sizeof(MASK));
[796]1863 {
[917]1864 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
1865 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
1866 MPFROMP(&SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
1867 if (SubjectDisplayWidth < 50)
1868 SubjectDisplayWidth = 0;
1869 else if (SubjectDisplayWidth > 1000)
1870 SubjectDisplayWidth = 1000;
1871 }
1872 else
1873 SubjectDisplayWidth = 0;
1874 PrfWriteProfileData(fmprof,
[997]1875 appname, "DirCnr.SubjectDisplayWidth",
[917]1876 &SubjectDisplayWidth, sizeof(ULONG));
[796]1877 }
[551]1878 break;
[2]1879 }
[551]1880 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1881}
1882
[551]1883MRESULT EXPENTRY Cfg6DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1884{
[551]1885 switch (msg) {
1886 case WM_INITDLG:
1887 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1888 break;
[2]1889
[551]1890 case UM_UNDO:
1891 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
1892 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
1893 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
1894 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
1895 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
1896 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
1897 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
1898 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
1899 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
1900 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
1901 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
1902 if (sortFlags & SORT_FIRSTEXTENSION)
1903 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
1904 else if (sortFlags & SORT_LASTEXTENSION)
1905 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
1906 else if (sortFlags & SORT_SIZE)
1907 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
1908 else if (sortFlags & SORT_EASIZE)
1909 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
1910 else if (sortFlags & SORT_LWDATE)
1911 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
1912 else if (sortFlags & SORT_LADATE)
1913 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
1914 else if (sortFlags & SORT_CRDATE)
1915 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
1916 else if (sortFlags & SORT_FILENAME)
1917 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
1918 else
1919 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
1920 if (sortFlags & SORT_DIRSFIRST)
1921 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
1922 else if (sortFlags & SORT_DIRSLAST)
1923 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
1924 if (sortFlags & SORT_REVERSE)
1925 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
1926 return 0;
[2]1927
[551]1928 case WM_CONTROL:
1929 switch (SHORT1FROMMP(mp1)) {
1930 case CFG6_SORTDIRSFIRST:
1931 case CFG6_SORTDIRSLAST:
1932 {
1933 BOOL temp;
[2]1934
[551]1935 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1936 if (temp) {
1937 switch (SHORT1FROMMP(mp1)) {
1938 case CFG6_SORTDIRSFIRST:
1939 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
1940 break;
1941 case CFG6_SORTDIRSLAST:
1942 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
1943 break;
1944 }
1945 }
[2]1946 }
[551]1947 break;
1948 }
1949 return 0;
[2]1950
[551]1951 case WM_COMMAND:
1952 switch (SHORT1FROMMP(mp1)) {
1953 case IDM_UNDO:
1954 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1955 break;
[2]1956
[551]1957 case DID_CANCEL:
1958 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1959
[551]1960 case DID_OK:
1961 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1962 break;
[2]1963
[551]1964 case IDM_HELP:
1965 if (hwndHelp)
1966 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1967 MPFROM2SHORT(HELP_CFG6, 0), MPFROMSHORT(HM_RESOURCEID));
1968 break;
1969 }
1970 return 0;
[2]1971
[551]1972 case WM_CLOSE:
1973 sortFlags = 0;
1974 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
1975 sortFlags |= SORT_FILENAME;
1976 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
1977 sortFlags |= SORT_SIZE;
1978 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
1979 sortFlags |= SORT_EASIZE;
1980 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
1981 sortFlags |= SORT_FIRSTEXTENSION;
1982 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
1983 sortFlags |= SORT_LASTEXTENSION;
1984 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
1985 sortFlags |= SORT_LWDATE;
1986 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
1987 sortFlags |= SORT_LADATE;
1988 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
1989 sortFlags |= SORT_CRDATE;
1990 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
1991 sortFlags |= SORT_DIRSFIRST;
1992 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
1993 sortFlags |= SORT_DIRSLAST;
1994 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
1995 sortFlags |= SORT_REVERSE;
1996 PrfWriteProfileData(fmprof, appname, "Sort", &sortFlags, sizeof(INT));
1997 break;
[2]1998 }
[551]1999 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2000}
2001
[551]2002MRESULT EXPENTRY Cfg7DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2003{
[2]2004 static MASK mask;
2005
[551]2006 switch (msg) {
2007 case WM_INITDLG:
[922]2008 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
2009 MPFROMSHORT(8), MPVOID);
2010 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
2011 MPFROMLONG(1000), MPFROMLONG(50));
[551]2012 WinSendDlgItemMsg(hwnd, CFG5_FILTER, EM_SETTEXTLIMIT,
2013 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
2014 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2015 break;
[2]2016
[551]2017 case UM_FOCUSME:
2018 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
2019 return 0;
[2]2020
[551]2021 case UM_UNDO:
2022 WinCheckButton(hwnd, CFG5_EXTERNALCOLLECTOR, fExternalCollector);
2023 {
[917]2024 ULONG flWindowAttr = 0;
2025 ULONG ulSize = sizeof(ULONG);
[2]2026
[551]2027 if (!PrfQueryProfileData(fmprof,
2028 appname,
[917]2029 "CollectorflWindowAttr", &flWindowAttr, &ulSize))
[551]2030 flWindowAttr = (CV_NAME | CA_DETAILSVIEWTITLES | CV_MINI | CV_FLOW);
2031 if (flWindowAttr & CV_ICON)
2032 WinCheckButton(hwnd, CFG5_ICON, TRUE);
2033 if (flWindowAttr & CV_NAME)
2034 WinCheckButton(hwnd, CFG5_NAME, TRUE);
2035 if (flWindowAttr & CV_TEXT)
2036 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
2037 if (flWindowAttr & CV_DETAIL)
2038 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
2039 if (flWindowAttr & CV_MINI)
2040 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
2041 if (flWindowAttr & CA_DETAILSVIEWTITLES)
2042 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
2043 memset(&mask, 0, sizeof(mask));
2044 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2045 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
[917]2046 ulSize = sizeof(MASK);
[551]2047 if (PrfQueryProfileData(fmprof,
[917]2048 appname, "CollectorFilter", &mask, &ulSize)) {
[551]2049 SetMask(NULL, &mask);
[2]2050 }
[551]2051 if (!mask.attrFile)
2052 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2053 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2054 strcpy(mask.prompt, GetPString(IDS_DEFCOLFILTERTITLETEXT));
2055 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2056 }
2057 {
2058 DIRCNRDATA dcd;
[2]2059
[551]2060 memset(&dcd, 0, sizeof(dcd));
2061 LoadDetailsSwitches("Collector", &dcd);
2062 WinCheckButton(hwnd, CFG5_SHOWLNAMES, dcd.detailslongname);
2063 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, dcd.detailssubject);
2064 WinCheckButton(hwnd, CFG5_SHOWEAS, dcd.detailsea);
2065 WinCheckButton(hwnd, CFG5_SHOWSIZE, dcd.detailssize);
2066 WinCheckButton(hwnd, CFG5_SHOWICON, dcd.detailsicon);
2067 WinCheckButton(hwnd, CFG5_SHOWLWDATE, dcd.detailslwdate);
2068 WinCheckButton(hwnd, CFG5_SHOWLWTIME, dcd.detailslwtime);
2069 WinCheckButton(hwnd, CFG5_SHOWLADATE, dcd.detailsladate);
2070 WinCheckButton(hwnd, CFG5_SHOWLATIME, dcd.detailslatime);
2071 WinCheckButton(hwnd, CFG5_SHOWCRDATE, dcd.detailscrdate);
2072 WinCheckButton(hwnd, CFG5_SHOWCRTIME, dcd.detailscrtime);
2073 WinCheckButton(hwnd, CFG5_SHOWATTR, dcd.detailsattr);
[922]2074 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, dcd.fSubjectInLeftPane);
2075 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, dcd.fSubjectLengthMax);
2076 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
[930]2077 MPFROMLONG(dcd.SubjectDisplayWidth), MPVOID);
[922]2078
[551]2079 }
2080 return 0;
[2]2081
[551]2082 case UM_SETUP5:
2083 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2084 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2085 SetMask(NULL, &mask);
2086 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2087 }
2088 return 0;
[2]2089
[551]2090 case WM_CONTROL:
2091 switch (SHORT1FROMMP(mp1)) {
2092 case CFG5_FILTER:
2093 switch (SHORT2FROMMP(mp1)) {
2094 case EN_SETFOCUS:
2095 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2096 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2097 break;
[2]2098 }
[551]2099 break;
2100 }
2101 return 0;
[2]2102
[551]2103 case WM_COMMAND:
2104 switch (SHORT1FROMMP(mp1)) {
2105 case IDM_UNDO:
2106 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2107 break;
[2]2108
[551]2109 case DID_CANCEL:
2110 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2111
[551]2112 case DID_OK:
2113 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2114 break;
[2]2115
[551]2116 case IDM_HELP:
2117 if (hwndHelp)
2118 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2119 MPFROM2SHORT(HELP_CFG7, 0), MPFROMSHORT(HM_RESOURCEID));
2120 break;
2121 }
2122 return 0;
[2]2123
[551]2124 case WM_CLOSE:
2125 fExternalCollector = WinQueryButtonCheckstate(hwnd,
2126 CFG5_EXTERNALCOLLECTOR);
2127 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
2128 &fExternalCollector, sizeof(BOOL));
2129 {
2130 ULONG flWindowAttr = 0;
[2]2131
[551]2132 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2133 flWindowAttr |= CV_ICON;
2134 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2135 flWindowAttr |= CV_NAME;
2136 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2137 flWindowAttr |= CV_TEXT;
2138 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2139 flWindowAttr |= CV_DETAIL;
2140 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2141 flWindowAttr |= CV_MINI;
2142 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2143 flWindowAttr |= CA_DETAILSVIEWTITLES;
2144 flWindowAttr |= CV_FLOW;
2145 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2146 &flWindowAttr, sizeof(ULONG));
2147 }
2148 {
2149 DIRCNRDATA dcd;
[2]2150
[551]2151 memset(&dcd, 0, sizeof(dcd));
2152 dcd.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
2153 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLongname",
2154 &dcd.detailslongname, sizeof(BOOL));
2155 dcd.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
2156 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSubject",
2157 &dcd.detailssubject, sizeof(BOOL));
2158 dcd.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS);
2159 PrfWriteProfileData(fmprof, appname, "Collector.DetailsEA",
2160 &dcd.detailsea, sizeof(BOOL));
2161 dcd.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
2162 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSize",
2163 &dcd.detailssize, sizeof(BOOL));
2164 dcd.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
2165 PrfWriteProfileData(fmprof, appname, "Collector.DetailsIcon",
2166 &dcd.detailsicon, sizeof(BOOL));
2167 dcd.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
2168 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWDate",
2169 &dcd.detailslwdate, sizeof(BOOL));
2170 dcd.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
2171 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWTime",
2172 &dcd.detailslwtime, sizeof(BOOL));
2173 dcd.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
2174 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLADate",
2175 &dcd.detailsladate, sizeof(BOOL));
2176 dcd.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
2177 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLATime",
2178 &dcd.detailslatime, sizeof(BOOL));
2179 dcd.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
2180 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRDate",
2181 &dcd.detailscrdate, sizeof(BOOL));
2182 dcd.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
2183 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRTime",
2184 &dcd.detailscrtime, sizeof(BOOL));
2185 dcd.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
2186 PrfWriteProfileData(fmprof, appname, "Collector.DetailsAttr",
[930]2187 &dcd.detailsattr, sizeof(BOOL));
[922]2188 dcd.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
2189 PrfWriteProfileData(fmprof, appname, "Collector.SubjectInLeftPane",
[953]2190 &dcd.fSubjectInLeftPane, sizeof(BOOL));
[922]2191 dcd.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
2192 PrfWriteProfileData(fmprof, appname, "Collector.SubjectLengthMax",
2193 &dcd.fSubjectLengthMax, sizeof(BOOL));
[551]2194 *mask.prompt = 0;
2195 PrfWriteProfileData(fmprof,
[930]2196 appname, "CollectorFilter", &mask, sizeof(MASK));
[922]2197 {
2198 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2199 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
2200 MPFROMP(&dcd.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2201 if (dcd.SubjectDisplayWidth < 50)
2202 dcd.SubjectDisplayWidth = 0;
2203 else if (dcd.SubjectDisplayWidth > 1000)
2204 dcd.SubjectDisplayWidth = 1000;
2205 }
2206 else
2207 dcd.SubjectDisplayWidth = 0;
2208 PrfWriteProfileData(fmprof,
2209 appname, "Collector.SubjectDisplayWidth",
2210 &dcd.SubjectDisplayWidth, sizeof(ULONG));
2211 }
[551]2212 }
2213 break;
[2]2214 }
[551]2215 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2216}
2217
[551]2218MRESULT EXPENTRY Cfg8DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2219{
[551]2220 switch (msg) {
2221 case WM_INITDLG:
2222 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2223 break;
[2]2224
[551]2225 case UM_UNDO:
2226 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2227 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2228 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2229 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2230 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2231 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2232 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2233 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2234 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2235 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2236 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2237 if (CollectorsortFlags & SORT_FIRSTEXTENSION)
2238 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2239 else if (CollectorsortFlags & SORT_LASTEXTENSION)
2240 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2241 else if (CollectorsortFlags & SORT_SIZE)
2242 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2243 else if (CollectorsortFlags & SORT_EASIZE)
2244 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2245 else if (CollectorsortFlags & SORT_LWDATE)
2246 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2247 else if (CollectorsortFlags & SORT_LADATE)
2248 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2249 else if (CollectorsortFlags & SORT_CRDATE)
2250 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2251 else if (CollectorsortFlags & SORT_FILENAME)
2252 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2253 else
2254 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2255 if (CollectorsortFlags & SORT_DIRSFIRST)
2256 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2257 else if (CollectorsortFlags & SORT_DIRSLAST)
2258 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2259 if (CollectorsortFlags & SORT_REVERSE)
2260 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2261 return 0;
[2]2262
[551]2263 case WM_CONTROL:
2264 switch (SHORT1FROMMP(mp1)) {
2265 case CFG6_SORTDIRSFIRST:
2266 case CFG6_SORTDIRSLAST:
2267 {
2268 BOOL temp;
[2]2269
[551]2270 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2271 if (temp) {
2272 switch (SHORT1FROMMP(mp1)) {
2273 case CFG6_SORTDIRSFIRST:
2274 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2275 break;
2276 case CFG6_SORTDIRSLAST:
2277 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2278 break;
2279 }
2280 }
[2]2281 }
[551]2282 break;
2283 }
2284 return 0;
[2]2285
[551]2286 case WM_COMMAND:
2287 switch (SHORT1FROMMP(mp1)) {
2288 case IDM_UNDO:
2289 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2290 break;
[2]2291
[551]2292 case DID_CANCEL:
2293 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2294
[551]2295 case DID_OK:
2296 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2297 break;
[2]2298
[551]2299 case IDM_HELP:
2300 if (hwndHelp)
2301 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2302 MPFROM2SHORT(HELP_CFG8, 0), MPFROMSHORT(HM_RESOURCEID));
2303 break;
2304 }
2305 return 0;
[2]2306
[551]2307 case WM_CLOSE:
2308 CollectorsortFlags = 0;
2309 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2310 CollectorsortFlags |= SORT_FILENAME;
2311 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2312 CollectorsortFlags |= SORT_SIZE;
2313 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2314 CollectorsortFlags |= SORT_EASIZE;
2315 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2316 CollectorsortFlags |= SORT_FIRSTEXTENSION;
2317 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2318 CollectorsortFlags |= SORT_LASTEXTENSION;
2319 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2320 CollectorsortFlags |= SORT_LWDATE;
2321 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2322 CollectorsortFlags |= SORT_LADATE;
2323 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2324 CollectorsortFlags |= SORT_CRDATE;
2325 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2326 CollectorsortFlags |= SORT_DIRSFIRST;
2327 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2328 CollectorsortFlags |= SORT_DIRSLAST;
2329 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2330 CollectorsortFlags |= SORT_REVERSE;
2331 PrfWriteProfileData(fmprof,
2332 appname,
2333 "CollectorSort", &CollectorsortFlags, sizeof(INT));
2334 break;
[2]2335 }
[551]2336 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2337}
2338
[551]2339MRESULT EXPENTRY Cfg9DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2340{
[551]2341 switch (msg) {
2342 case WM_INITDLG:
2343 break;
[2]2344
[551]2345 case WM_COMMAND:
2346 switch (SHORT1FROMMP(mp1)) {
2347 case IDM_HELP:
2348 if (hwndHelp)
2349 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2350 MPFROM2SHORT(HELP_CFG9, 0), MPFROMSHORT(HM_RESOURCEID));
2351 return 0;
2352 case CFG9_MAXIMUMUI:
2353 if (hwndMain) {
2354 if (MenuInvisible)
2355 WinSendMsg(hwndMain, WM_COMMAND,
2356 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2357 if (!fAutoView)
2358 WinSendMsg(hwndMain, WM_COMMAND,
2359 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2360 if (!fDrivebar)
2361 WinSendMsg(hwndMain, WM_COMMAND,
2362 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2363 if (!fToolbar)
2364 WinSendMsg(hwndMain, WM_COMMAND,
2365 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2366 if (!fMoreButtons)
2367 WinSendMsg(hwndMain, WM_COMMAND,
2368 MPFROM2SHORT(IDM_MOREBUTTONS, 0), MPVOID);
2369 if (!fUserComboBox)
2370 WinSendMsg(hwndMain, WM_COMMAND,
2371 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2372 }
2373 return 0;
2374 case CFG9_MINIMUMUI:
2375 if (hwndMain) {
2376 if (!MenuInvisible)
2377 WinSendMsg(hwndMain, WM_COMMAND,
2378 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2379 if (fAutoView)
2380 WinSendMsg(hwndMain, WM_COMMAND,
2381 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2382 if (fToolbar)
2383 WinSendMsg(hwndMain, WM_COMMAND,
2384 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2385 if (fMoreButtons)
2386 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2387 MPVOID);
2388 if (fUserComboBox)
2389 WinSendMsg(hwndMain, WM_COMMAND,
2390 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2391 saymsg(MB_ENTER | MB_ICONASTERISK,
2392 hwnd,
2393 GetPString(IDS_DONTFORGETTEXT),
2394 GetPString(IDS_UNHIDEMENUWARNTEXT));
2395 }
2396 return 0;
2397 case CFG9_MAXINFOPRETTY:
2398 fLoadSubject = TRUE;
2399 fLoadLongnames = TRUE;
2400 fNoIconsFiles = FALSE;
2401 fNoIconsDirs = FALSE;
2402 fForceUpper = FALSE;
2403 fForceLower = FALSE;
2404 fArcStuffVisible = TRUE;
2405 fSplitStatus = TRUE;
2406 fDragndropDlg = TRUE;
2407 {
2408 ULONG flWindowAttr;
[2]2409
[551]2410 flWindowAttr = CV_DETAIL | CV_FLOW | CA_DETAILSVIEWTITLES;
2411 PrfWriteProfileData(fmprof,
2412 appname,
2413 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2414 PrfWriteProfileData(fmprof,
2415 appname,
2416 "CollectorflWindowAttr",
2417 &flWindowAttr, sizeof(ULONG));
2418 PrfWriteProfileData(fmprof,
2419 appname, "Collector.Fontnamesize", NULL, 0);
2420 }
2421 detailslongname = TRUE;
2422 detailssubject = TRUE;
2423 detailsea = TRUE;
2424 detailssize = TRUE;
2425 detailsicon = TRUE;
2426 detailslwdate = TRUE;
2427 detailslwtime = TRUE;
2428 detailsladate = TRUE;
2429 detailslatime = TRUE;
2430 detailscrdate = TRUE;
2431 detailscrtime = TRUE;
2432 detailsattr = TRUE;
2433 if (hwndTree) {
[2]2434
[551]2435 CNRINFO cnri;
2436 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
[2]2437
[551]2438 memset(&cnri, 0, sizeof(cnri));
2439 cnri.cb = sizeof(cnri);
2440 WinSendMsg(WinWindowFromID
2441 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2442 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2443 cnri.flWindowAttr = flWindowAttr;
2444 WinSendMsg(WinWindowFromID
2445 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2446 CM_SETCNRINFO, MPFROMP(&cnri),
2447 MPFROMLONG(CMA_FLWINDOWATTR));
2448 }
2449 break;
[2]2450
[551]2451 case CFG9_MAXINFOPLAIN:
2452 fLoadSubject = TRUE;
2453 fLoadLongnames = TRUE;
2454 fNoIconsFiles = TRUE;
2455 fNoIconsDirs = TRUE;
2456 fForceUpper = FALSE;
2457 fForceLower = FALSE;
2458 fArcStuffVisible = TRUE;
2459 fSplitStatus = TRUE;
2460 fDragndropDlg = TRUE;
2461 {
2462 ULONG flWindowAttr;
[2]2463
[551]2464 flWindowAttr = CV_DETAIL | CV_FLOW | CV_MINI;
2465 PrfWriteProfileData(fmprof,
2466 appname,
2467 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2468 PrfWriteProfileData(fmprof,
2469 appname,
2470 "CollectorflWindowAttr",
2471 &flWindowAttr, sizeof(ULONG));
2472 PrfWriteProfileData(fmprof,
2473 appname,
2474 "Collector.Fontnamesize",
2475 GetPString(IDS_8HELVTEXT),
2476 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2477 }
2478 detailslongname = TRUE;
2479 detailssubject = TRUE;
2480 detailsea = TRUE;
2481 detailssize = TRUE;
2482 detailsicon = TRUE;
2483 detailslwdate = TRUE;
2484 detailslwtime = TRUE;
2485 detailsladate = TRUE;
2486 detailslatime = TRUE;
2487 detailscrdate = TRUE;
2488 detailscrtime = TRUE;
2489 detailsattr = TRUE;
2490 if (hwndTree) {
[2]2491
[551]2492 CNRINFO cnri;
2493 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_TEXT |
2494 CV_FLOW | CA_TREELINE;
[2]2495
[551]2496 memset(&cnri, 0, sizeof(cnri));
2497 cnri.cb = sizeof(cnri);
2498 WinSendMsg(WinWindowFromID
2499 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2500 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2501 cnri.flWindowAttr = flWindowAttr;
2502 WinSendMsg(WinWindowFromID
2503 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2504 CM_SETCNRINFO, MPFROMP(&cnri),
2505 MPFROMLONG(CMA_FLWINDOWATTR));
2506 }
2507 break;
2508 case CFG9_MAXFILENAMES:
2509 if (hwndMain && fAutoView)
2510 WinSendMsg(hwndMain, WM_COMMAND,
2511 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2512 fForceUpper = FALSE;
2513 fForceLower = TRUE;
2514 fExternalViewer = TRUE;
2515 fExternalArcboxes = TRUE;
2516 fExternalCollector = TRUE;
2517 fExternalINIs = TRUE;
2518 fLoadSubject = FALSE;
2519 fLoadLongnames = FALSE;
2520 fNoIconsFiles = TRUE;
2521 fNoIconsDirs = TRUE;
2522 {
2523 ULONG flWindowAttr;
[2]2524
[551]2525 flWindowAttr = CV_TEXT | CV_FLOW;
2526 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2527 &flWindowAttr, sizeof(ULONG));
2528 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2529 &flWindowAttr, sizeof(ULONG));
2530 PrfWriteProfileData(fmprof, appname, "Collector.Fontnamesize",
2531 GetPString(IDS_8HELVTEXT),
2532 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2533 }
2534 if (hwndTree) {
[2]2535
[551]2536 CNRINFO cnri;
2537 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
[2]2538
[551]2539 memset(&cnri, 0, sizeof(cnri));
2540 cnri.cb = sizeof(cnri);
2541 WinSendMsg(WinWindowFromID
2542 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2543 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2544 cnri.flWindowAttr = flWindowAttr;
2545 WinSendMsg(WinWindowFromID
2546 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2547 CM_SETCNRINFO, MPFROMP(&cnri),
2548 MPFROMLONG(CMA_FLWINDOWATTR));
2549 }
2550 break;
2551 case CFG9_MAXSPEED:
2552 fLoadSubject = FALSE;
2553 fLoadLongnames = FALSE;
2554 fVerify = FALSE;
2555 DosSetVerify(FALSE);
[783]2556 FilesToGet = FILESTOGET_MAX;
[551]2557 fQuickArcFind = TRUE;
2558 fMinOnOpen = TRUE;
2559 fRealIdle = FALSE;
2560 fNoIconsFiles = TRUE;
2561 fNoIconsDirs = TRUE;
2562 fSyncUpdates = FALSE;
2563 fArcStuffVisible = FALSE;
2564 fForceUpper = FALSE;
2565 fForceLower = FALSE;
2566 detailslongname = FALSE;
2567 detailssubject = FALSE;
2568 break;
[2]2569
[551]2570 case CFG9_HECTOR:
2571 fSwitchTree = TRUE;
2572 fSwitchTreeOnFocus = FALSE;
2573 fSwitchTreeExpand = TRUE;
2574 fCollapseFirst = TRUE;
2575 fSelectedAlways = FALSE;
2576 fTileBackwards = FALSE;
2577 fExternalViewer = FALSE;
2578 fExternalArcboxes = TRUE;
2579 fExternalCollector = FALSE;
2580 fExternalINIs = TRUE;
2581 fCopyDefault = FALSE;
2582 fFollowTree = FALSE;
2583 fLoadSubject = FALSE;
2584 fLoadLongnames = FALSE;
2585 fDontMoveMouse = FALSE;
2586 fUnHilite = TRUE;
2587 fUserListSwitches = TRUE;
2588 fDCOpens = FALSE;
2589 fLinkSetsIcon = FALSE;
2590 fConfirmDelete = TRUE;
2591 fSyncUpdates = FALSE;
2592 fRealIdle = FALSE;
2593 fNoIconsFiles = FALSE;
2594 fNoIconsDirs = TRUE;
2595 fFolderAfterExtract = FALSE;
2596 fVerify = TRUE;
2597 DosSetVerify(TRUE);
2598 fForceUpper = FALSE;
2599 fForceLower = TRUE;
2600 fArcStuffVisible = FALSE;
2601 fVTreeOpensWPS = FALSE;
2602 fRemoteBug = FALSE;
2603 fDragndropDlg = TRUE;
2604 fMinOnOpen = FALSE;
2605 fQuickArcFind = TRUE;
2606 fNoRemovableScan = TRUE;
[783]2607 FilesToGet = FILESTOGET_MIN;
[551]2608 fFreeTree = FALSE;
2609 fSplitStatus = TRUE;
2610 fAutoTile = TRUE;
2611 fSaveState = TRUE;
2612 fStartMinimized = FALSE;
2613 fStartMaximized = FALSE;
2614 fDataMin = FALSE;
2615 ulCnrType = CCS_EXTENDSEL | CCS_MULTIPLESEL;
2616 fNoTreeGap = TRUE;
2617 {
2618 ULONG flWindowAttr;
[2]2619
[551]2620 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
2621 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2622 &flWindowAttr, sizeof(ULONG));
2623 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2624 &flWindowAttr, sizeof(ULONG));
2625 }
2626 detailslongname = FALSE;
2627 detailssubject = FALSE;
2628 detailsea = TRUE;
2629 detailssize = TRUE;
2630 detailsicon = TRUE;
2631 detailslwdate = TRUE;
2632 detailslwtime = TRUE;
2633 detailsladate = FALSE;
2634 detailslatime = FALSE;
2635 detailscrdate = FALSE;
2636 detailscrtime = FALSE;
2637 detailsattr = TRUE;
2638 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2639 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2640 if (hwndMain) {
[2]2641
[551]2642 SWP swp;
[2]2643
[551]2644 if (WinQueryWindowPos(hwndMain, &swp)) {
2645 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2646 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2647 }
2648 if (MenuInvisible)
2649 WinSendMsg(hwndMain, WM_COMMAND,
2650 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2651 if (fAutoView)
2652 WinSendMsg(hwndMain, WM_COMMAND,
2653 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2654 if (fToolbar)
2655 WinSendMsg(hwndMain, WM_COMMAND,
2656 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2657 if (!fDrivebar)
2658 WinSendMsg(hwndMain, WM_COMMAND,
2659 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2660 if (!fMoreButtons)
2661 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2662 MPVOID);
2663 if (!fUserComboBox)
2664 WinSendMsg(hwndMain, WM_COMMAND,
2665 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2666 }
2667 if (hwndTree) {
[2]2668
[551]2669 CNRINFO cnri;
2670 ULONG flWindowAttr = (CV_TREE | CV_TEXT | CV_MINI |
2671 CV_FLOW | CA_TREELINE);
[2]2672
[551]2673 memset(&cnri, 0, sizeof(cnri));
2674 cnri.cb = sizeof(cnri);
2675 WinSendMsg(WinWindowFromID
2676 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2677 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2678 cnri.flWindowAttr = flWindowAttr;
2679 WinSendMsg(WinWindowFromID
2680 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2681 CM_SETCNRINFO, MPFROMP(&cnri),
2682 MPFROMLONG(CMA_FLWINDOWATTR));
2683 }
2684 break;
[2]2685
[551]2686 case CFG9_DEFAULT:
2687 fSwitchTree = FALSE;
2688 fSwitchTreeOnFocus = FALSE;
2689 fSwitchTreeExpand = FALSE;
2690 fCollapseFirst = FALSE;
2691 fSelectedAlways = FALSE;
2692 fTileBackwards = FALSE;
2693 fExternalViewer = FALSE;
2694 fExternalArcboxes = FALSE;
2695 fExternalCollector = FALSE;
2696 fExternalINIs = FALSE;
2697 fCopyDefault = FALSE;
2698 fFollowTree = FALSE;
2699 fLoadSubject = TRUE;
2700 fLoadLongnames = TRUE;
2701 fDontMoveMouse = FALSE;
2702 fUnHilite = TRUE;
2703 fUserListSwitches = FALSE;
2704 fDCOpens = FALSE;
2705 fLinkSetsIcon = FALSE;
2706 fConfirmDelete = TRUE;
2707 fSyncUpdates = FALSE;
2708 fRealIdle = FALSE;
2709 fNoIconsFiles = FALSE;
2710 fNoIconsDirs = FALSE;
2711 fFolderAfterExtract = FALSE;
2712 fVerify = TRUE;
2713 fNoSearch = TRUE;
2714 DosSetVerify(TRUE);
2715 fForceUpper = FALSE;
2716 fForceLower = TRUE;
2717 fArcStuffVisible = TRUE;
2718 fVTreeOpensWPS = FALSE;
2719 fRemoteBug = TRUE;
2720 fDragndropDlg = TRUE;
2721 fMinOnOpen = FALSE;
2722 fQuickArcFind = TRUE;
2723 fNoRemovableScan = FALSE;
[783]2724 FilesToGet = FILESTOGET_MAX;
[551]2725 fFreeTree = FALSE;
2726 fSplitStatus = TRUE;
2727 fAutoTile = TRUE;
2728 fSaveState = TRUE;
2729 fStartMinimized = FALSE;
2730 fStartMaximized = FALSE;
2731 fDataMin = TRUE;
2732 ulCnrType = CCS_EXTENDSEL;
2733 fNoTreeGap = FALSE;
2734 {
2735 ULONG flWindowAttr;
[2]2736
[551]2737 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
2738 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2739 &flWindowAttr, sizeof(ULONG));
2740 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2741 &flWindowAttr, sizeof(ULONG));
2742 }
2743 detailslongname = FALSE;
2744 detailssubject = FALSE;
2745 detailsea = TRUE;
2746 detailssize = TRUE;
2747 detailsicon = TRUE;
2748 detailslwdate = TRUE;
2749 detailslwtime = TRUE;
2750 detailsladate = FALSE;
2751 detailslatime = FALSE;
2752 detailscrdate = FALSE;
2753 detailscrtime = FALSE;
2754 detailsattr = TRUE;
2755 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2756 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2757 if (hwndMain) {
[2]2758
[551]2759 SWP swp;
[2]2760
[551]2761 if (WinQueryWindowPos(hwndMain, &swp)) {
2762 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2763 swp.cx / 5,
2764 swp.cy -
2765 (WinQuerySysValue(HWND_DESKTOP, SV_CYICON) * 2),
2766 SWP_MOVE | SWP_SIZE);
2767 }
2768 }
2769 if (hwndTree) {
[2]2770
[551]2771 CNRINFO cnri;
2772 ULONG flWindowAttr = (CV_TREE | CV_TEXT |
2773 CV_FLOW | CA_TREELINE | CV_MINI);
[2]2774
[551]2775 memset(&cnri, 0, sizeof(cnri));
2776 cnri.cb = sizeof(cnri);
2777 WinSendMsg(WinWindowFromID
2778 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2779 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2780 cnri.flWindowAttr = flWindowAttr;
2781 WinSendMsg(WinWindowFromID
2782 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2783 CM_SETCNRINFO, MPFROMP(&cnri),
2784 MPFROMLONG(CMA_FLWINDOWATTR));
2785 }
2786 break;
[2]2787
[551]2788 case CFG9_WINDOZETHINK:
2789 fTileBackwards = FALSE;
2790 ulCnrType = CCS_MULTIPLESEL;
2791 fFollowTree = TRUE;
2792 fTopDir = FALSE;
2793 fSwitchTree = TRUE;
2794 fSwitchTreeOnFocus = FALSE;
2795 fSwitchTreeExpand = TRUE;
2796 fCollapseFirst = TRUE;
2797 fDCOpens = FALSE;
2798 {
2799 ULONG flWindowAttr;
[2]2800
[551]2801 flWindowAttr = CV_NAME | CV_FLOW | CA_DETAILSVIEWTITLES;
2802 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2803 &flWindowAttr, sizeof(ULONG));
2804 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2805 &flWindowAttr, sizeof(ULONG));
2806 }
2807 fLinkSetsIcon = FALSE;
2808 fFreeTree = FALSE;
2809 fNoTreeGap = TRUE;
2810 fExternalArcboxes = TRUE;
2811 fExternalViewer = TRUE;
2812 fExternalCollector = TRUE;
2813 fExternalINIs = TRUE;
2814 fUserListSwitches = TRUE;
2815 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
2816 MPVOID);
2817 if (hwndTree) {
[2]2818
[551]2819 CNRINFO cnri;
2820 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_ICON |
2821 CV_FLOW | CA_TREELINE;
[2]2822
[551]2823 memset(&cnri, 0, sizeof(cnri));
2824 cnri.cb = sizeof(cnri);
2825 WinSendMsg(WinWindowFromID
2826 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2827 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2828 cnri.flWindowAttr = flWindowAttr;
2829 WinSendMsg(WinWindowFromID
2830 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2831 CM_SETCNRINFO, MPFROMP(&cnri),
2832 MPFROMLONG(CMA_FLWINDOWATTR));
2833 }
2834 if (hwndMain) {
2835 if (fAutoView)
2836 WinSendMsg(hwndMain, WM_COMMAND,
2837 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2838 if (!fDrivebar)
2839 WinSendMsg(hwndMain, WM_COMMAND,
2840 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2841 {
2842 SWP swp;
[2]2843
[551]2844 if (WinQueryWindowPos(hwndMain, &swp)) {
2845 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2846 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2847 }
2848 }
2849 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
2850 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1L), MPVOID);
2851 }
2852 return 0;
[2]2853
[551]2854 case CFG9_DOSTHINK:
2855 fTileBackwards = TRUE;
2856 ulCnrType = CCS_MULTIPLESEL;
2857 fSwitchTree = TRUE;
2858 fSwitchTreeOnFocus = FALSE;
2859 fSwitchTreeExpand = TRUE;
2860 fCollapseFirst = TRUE;
2861 fFollowTree = TRUE;
2862 fTopDir = FALSE;
2863 if (hwndMain) {
2864 if (!fTextTools)
2865 WinSendMsg(hwndMain, WM_COMMAND,
2866 MPFROM2SHORT(IDM_TEXTTOOLS, 0), MPVOID);
2867 }
2868 {
2869 ULONG flWindowAttr;
[2]2870
[551]2871 flWindowAttr = CV_TEXT | CV_FLOW | CA_DETAILSVIEWTITLES;
2872 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2873 &flWindowAttr, sizeof(ULONG));
2874 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2875 &flWindowAttr, sizeof(ULONG));
2876 }
2877 if (hwndTree) {
[2]2878
[551]2879 CNRINFO cnri;
2880 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
[2]2881
[551]2882 memset(&cnri, 0, sizeof(cnri));
2883 cnri.cb = sizeof(cnri);
2884 WinSendMsg(WinWindowFromID
2885 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2886 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2887 cnri.flWindowAttr = flWindowAttr;
2888 WinSendMsg(WinWindowFromID
2889 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2890 CM_SETCNRINFO, MPFROMP(&cnri),
2891 MPFROMLONG(CMA_FLWINDOWATTR));
2892 }
2893 /* intentional fallthru */
2894 case CFG9_1X:
2895 if (SHORT1FROMMP(mp1) == CFG9_1X) {
2896 fTileBackwards = FALSE;
2897 ulCnrType = CCS_MULTIPLESEL | CCS_EXTENDSEL;
2898 fSwitchTree = FALSE;
2899 fSwitchTreeOnFocus = FALSE;
2900 fSwitchTreeExpand = FALSE;
2901 fCollapseFirst = FALSE;
2902 fFollowTree = FALSE;
2903 fNoSearch = TRUE;
2904 }
2905 fAutoTile = TRUE;
2906 fSaveState = TRUE;
2907 fDCOpens = FALSE;
2908 fLinkSetsIcon = FALSE;
2909 fFreeTree = FALSE;
2910 fNoTreeGap = TRUE;
2911 fExternalArcboxes = TRUE;
2912 fExternalViewer = TRUE;
2913 fExternalCollector = TRUE;
2914 fExternalINIs = TRUE;
2915 fUserListSwitches = TRUE;
2916 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
2917 MPVOID);
2918 if (hwndTree) {
[2]2919
[551]2920 CNRINFO cnri;
2921 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
[2]2922
[551]2923 memset(&cnri, 0, sizeof(cnri));
2924 cnri.cb = sizeof(cnri);
2925 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
2926 TREE_CNR),
2927 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2928 cnri.flWindowAttr = flWindowAttr;
2929 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
2930 TREE_CNR),
2931 CM_SETCNRINFO,
2932 MPFROMP(&cnri), MPFROMLONG(CMA_FLWINDOWATTR));
2933 }
2934 if (hwndMain) {
2935 if (fAutoView)
2936 WinSendMsg(hwndMain, WM_COMMAND,
2937 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2938 if (fUserComboBox)
2939 WinSendMsg(hwndMain, WM_COMMAND,
2940 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2941 {
2942 SWP swp;
[2]2943
[551]2944 if (WinQueryWindowPos(hwndMain, &swp)) {
2945 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2946 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2947 }
2948 }
2949 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
2950 PostMsg(MainObjectHwnd, UM_SETDIR, MPVOID, MPVOID);
2951 }
2952 return 0;
[2]2953
[551]2954 case DID_CANCEL:
2955 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2956
[551]2957 case DID_OK:
2958 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2959 return 0;
[2]2960
[551]2961 default:
2962 return 0;
2963 }
[961]2964 // Save new details settings and refresh windows
[997]2965 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname",
[551]2966 &detailslongname, sizeof(BOOL));
[997]2967 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject",
[551]2968 &detailssubject, sizeof(BOOL));
[997]2969 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA",
[551]2970 &detailsea, sizeof(BOOL));
[997]2971 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize",
[551]2972 &detailssize, sizeof(BOOL));
[997]2973 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon",
[551]2974 &detailsicon, sizeof(BOOL));
[997]2975 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate",
[551]2976 &detailslwdate, sizeof(BOOL));
[997]2977 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime",
[551]2978 &detailslwtime, sizeof(BOOL));
[997]2979 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate",
[551]2980 &detailsladate, sizeof(BOOL));
[997]2981 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime",
[551]2982 &detailslatime, sizeof(BOOL));
[997]2983 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate",
[551]2984 &detailscrdate, sizeof(BOOL));
[997]2985 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime",
[551]2986 &detailscrtime, sizeof(BOOL));
[997]2987 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr",
[551]2988 &detailsattr, sizeof(BOOL));
2989 if (hwndMain) {
[961]2990 // Save state and restore to refresh windows with new settings
[789]2991 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
[961]2992 // Tell window procedure to close container windows
[971]2993 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
[961]2994 // Restore saved state
[971]2995 PostMsg(MainObjectHwnd, UM_RESTORE, GetPString(IDS_FM2TEMPTEXT), MPVOID);
[2]2996 }
[551]2997 }
2998 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
2999 UM_UNDO, MPVOID, MPVOID);
3000 return 0;
[2]3001
[551]3002 case WM_CLOSE:
3003 break;
[2]3004 }
[551]3005 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]3006}
3007
[917]3008struct
3009{
3010 USHORT usMenuId;
3011 USHORT usFrameId;
3012 ULONG ulTitle;
3013 PFNWP pfnPageProc;
3014 HWND hwnd;
3015 ULONG ulHelpId;
3016 ULONG ulPageId;
3017} np[] = {
3018 { IDM_DIRCNRSETTINGS, CFGD_FRAME, IDS_NOTEDIRCNRS1TEXT, CfgDDlgProc, 0, 0, 0 },
[953]3019 { IDM_DIRVIEWSETTINGS, CFG5_FRAME, IDS_NOTEDIRVIEW1TEXT, Cfg5DlgProc, 0, 0, 0},
3020 { IDM_DIRSORTSETTINGS, CFG6_FRAME, IDS_NOTEDIRSORT1TEXT, Cfg6DlgProc, 0, 0, 0 },
3021 { IDM_COLLECTORVIEWSETTINGS, CFG5_FRAME, IDS_NOTECOLVIEW1TEXT, Cfg7DlgProc, 0, 0, 0 },
3022 { IDM_COLLECTORSORTSETTINGS, CFG6_FRAME, IDS_NOTECOLSORT1TEXT, Cfg8DlgProc, 0, 0, 0 },
[917]3023 { IDM_ARCHIVERSETTINGS, CFGA_FRAME, IDS_NOTEARCHIVER1TEXT, CfgADlgProc, 0, 0, 0 },
[953]3024 { IDM_TREECNRVIEWSETTINGS, CFGT_FRAME, IDS_NOTETREE1TEXT, CfgTDlgProc, 0, 0, 0 },
3025 { IDM_TREECNRSORTSETTINGS, CFGTS_FRAME, IDS_NOTETREESORT1TEXT, CfgTSDlgProc, 0, 0, 0 },
3026 { IDM_VIEWERSETTINGS, CFGV_FRAME, IDS_NOTEVIEWERS1TEXT, CfgVDlgProc, 0, 0, 0 },
3027 { IDM_VIEWERSETTINGS2, CFGH_FRAME, IDS_NOTEVIEWERS3TEXT, CfgHDlgProc, 0, 0, 0 },
[917]3028 { IDM_COMPARESETTINGS, CFGC_FRAME, IDS_NOTECOMPARE1TEXT, CfgCDlgProc, 0, 0, 0 },
[953]3029 { IDM_MONOLITHICSETTINGS, CFGM_FRAME, IDS_NOTEMONOLITHIC1TEXT, CfgMDlgProc, 0, 0, 0 },
3030 { IDM_GENERALSETTINGS, CFGG_FRAME, IDS_NOTEGENERAL1TEXT, CfgGDlgProc, 0, 0, 0 },
3031 { IDM_SCANSETTINGS, CFGS_FRAME, IDS_NOTESCANNING1TEXT, CfgSDlgProc, 0, 0, 0 },
3032 { IDM_BUBBLESSETTINGS, CFGB_FRAME, IDS_NOTEBUBBLE1TEXT, CfgBDlgProc, 0, 0, 0 },
[917]3033 { IDM_QUICKSETTINGS, CFG9_FRAME, IDS_NOTEQUICK1TEXT, Cfg9DlgProc, 0, 0, 0 },
3034 { 0, 0, 0, NULL, 0, 0, 0 } // usFrameId 0 is end marker
[551]3035};
[2]3036
[953]3037static PSZ pszIK_LastSettingsPage = "LastSettingsPage";
3038
[551]3039MRESULT EXPENTRY CfgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]3040{
[551]3041 HWND hwndTemp;
[2]3042 USHORT attrib = BKA_FIRST;
[551]3043 INT x;
[917]3044 ULONG ulPageId;
[953]3045 UINT uPageIndex;
[2]3046
[551]3047 switch (msg) {
3048 case WM_INITDLG:
3049 hwndNotebook = hwnd;
[953]3050 uPageIndex = 0;
3051
3052 // If generic call, try to find conditional cascade default
3053 // 15 Feb 08 SHL fixme to be gone when/if IDM_NOTEBOOK gone?
3054 if (mp2 == MPFROMLONG(IDM_NOTEBOOK)) {
3055 DbgMsg(pszSrcFile, __LINE__, "Trying to translate IDM_NOTEBOOK");
3056 hwndTemp = WinQueryWindow(hwnd, QW_OWNER);
3057 if (hwndTemp != HWND_DESKTOP) {
3058 HWND hwndMenu;
3059 // Owner is frame if not applet
3060 hwndMenu = WinWindowFromID(hwndTemp, FID_MENU);
3061 if (hwndMenu == NULLHANDLE)
3062 Runtime_Error(pszSrcFile, __LINE__, "FID_MENU");
3063 else {
3064 MENUITEM mi;
3065 BOOL ok;
3066 memset(&mi, 0, sizeof(mi));
3067 ok = (BOOL)WinSendMsg(hwndMenu,
3068 MM_QUERYITEM,
3069 MPFROM2SHORT(IDM_NOTEBOOKSUBMENU, TRUE),
3070 MPFROMP(&mi));
3071 if (!ok)
3072 Runtime_Error(pszSrcFile, __LINE__, "IDM_NOTEBOOKSUBMENU");
3073 else {
3074 mp2 = WinSendMsg(mi.hwndSubMenu, MM_QUERYDEFAULTITEMID, MPVOID, MPVOID);
3075 if (!mp2)
3076 Runtime_Error(pszSrcFile, __LINE__, "MM_QUERYDEFAULTITEMID");
3077 }
3078 }
[2]3079 }
[551]3080 }
[953]3081
[551]3082 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
3083 WinSendDlgItemMsg(hwnd,
3084 CFG_NOTEBOOK,
3085 BKM_SETDIMENSIONS,
3086 MPFROM2SHORT(82, 24), MPFROMLONG(BKA_MAJORTAB));
3087 WinSendDlgItemMsg(hwnd,
3088 CFG_NOTEBOOK,
3089 BKM_SETDIMENSIONS,
3090 MPFROM2SHORT(20, 20), MPFROMLONG(BKA_PAGEBUTTON));
3091 WinSendDlgItemMsg(hwnd,
3092 CFG_NOTEBOOK,
3093 BKM_SETDIMENSIONS,
3094 MPFROM2SHORT(0, 0), MPFROMLONG(BKA_MINORTAB));
[953]3095
3096 // Build and insert notebook pages
[917]3097 for (x = 0; np[x].usFrameId; x++) {
[551]3098 hwndTemp = WinLoadDlg(HWND_DESKTOP,
3099 HWND_DESKTOP,
[917]3100 np[x].pfnPageProc, FM3ModHandle, np[x].usFrameId, MPVOID);
3101 if (!hwndTemp) {
3102 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
3103 "Can not load settings page %u", x);
3104 }
3105 else {
3106 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG)hwnd);
[551]3107 np[x].hwnd = hwndTemp;
[917]3108 np[x].ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3109 CFG_NOTEBOOK,
3110 BKM_INSERTPAGE,
3111 MPFROMLONG(BKA_FIRST),
3112 MPFROM2SHORT(BKA_AUTOPAGESIZE |
3113 BKA_STATUSTEXTON |
3114 BKA_MAJOR, attrib));
[551]3115 attrib = BKA_LAST;
3116 WinSendDlgItemMsg(hwnd,
3117 CFG_NOTEBOOK,
3118 BKM_SETPAGEWINDOWHWND,
[917]3119 MPFROMLONG(np[x].ulPageId), MPFROMLONG(np[x].hwnd));
[551]3120 WinSendDlgItemMsg(hwnd,
3121 CFG_NOTEBOOK,
3122 BKM_SETTABTEXT,
[917]3123 MPFROMLONG(np[x].ulPageId),
3124 MPFROMP(GetPString(np[x].ulTitle)));
[551]3125 WinSendDlgItemMsg(hwnd,
3126 CFG_NOTEBOOK,
3127 BKM_SETSTATUSLINETEXT,
[917]3128 MPFROMLONG(np[x].ulPageId),
3129 MPFROMP(GetPString(np[x].ulTitle + 1)));
[953]3130 if (LONGFROMMP(mp2) == np[x].usMenuId)
3131 uPageIndex = x; // Remember selected page
[2]3132 }
[953]3133 } // for pages
3134
[917]3135 // If quick settings page requested, assume request is for first time init
3136 // Turn to cfg page and show help
3137 // Page will not be available if running fm/2 lite or if load error
[953]3138 // 15 Feb 08 SHL fixme to do just once?
[917]3139 if (mp2 == MPFROMLONG(IDM_QUICKSETTINGS) &&
[953]3140 x-- > 0 &&
3141 np[x].hwnd &&
3142 np[x].usFrameId == CFG9_FRAME)
3143 {
[919]3144 // 10 Jan 08 SHL fixme to document what UM_SETDIR 1 means
[917]3145 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1), MPVOID);
3146 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3147 BKM_TURNTOPAGE, MPFROMLONG(np[x].ulPageId), MPVOID);
3148 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x].hwnd), MPVOID);
3149 PostMsg(np[x].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
[551]3150 }
[953]3151 else if (uPageIndex >= x) {
3152 Runtime_Error(pszSrcFile, __LINE__, "uPageIndex corrupted (%u)",
3153 uPageIndex);
3154 uPageIndex = 0;
[551]3155 }
[953]3156 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3157 BKM_TURNTOPAGE, MPFROMLONG(np[uPageIndex].ulPageId), MPVOID);
3158 // 15 Feb 08 SHL fixme to put focus on first field of page
[2]3159
[906]3160 break;
3161
[551]3162 case UM_FOCUSME:
3163 if (mp1)
3164 WinSetActiveWindow(HWND_DESKTOP, (HWND) mp1);
3165 break;
[2]3166
[551]3167 case UM_SETUP:
3168 WinSetActiveWindow(HWND_DESKTOP, WinQueryWindow(hwnd, QW_OWNER));
3169 WinSetActiveWindow(HWND_DESKTOP, hwnd);
3170 return 0;
[2]3171
[551]3172 case WM_COMMAND:
3173 switch (SHORT1FROMMP(mp1)) {
3174 case DID_OK:
3175 WinDismissDlg(hwnd, 1);
3176 break;
[2]3177
[551]3178 case DID_CANCEL:
3179 // Tell current page to undo itself in case changed and still alive
[953]3180 SaveLastPageIndex(hwnd);
[917]3181 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
[551]3182 CFG_NOTEBOOK,
3183 BKM_QUERYPAGEID,
3184 MPFROMLONG(0),
3185 MPFROM2SHORT(BKA_TOP, 0));
3186 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3187 CFG_NOTEBOOK,
3188 BKM_QUERYPAGEWINDOWHWND,
[917]3189 MPFROMLONG(ulPageId), MPVOID);
[551]3190 if (hwndTemp)
3191 WinSendMsg(hwndTemp, UM_UNDO, MPVOID, MPVOID);
[187]3192
[551]3193 WinDismissDlg(hwnd, 0);
3194 break;
[2]3195
[551]3196 case IDM_HELP: /* relay message to appropriate page's window */
[917]3197 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
[551]3198 CFG_NOTEBOOK,
3199 BKM_QUERYPAGEID,
3200 MPFROMLONG(0),
3201 MPFROM2SHORT(BKA_TOP, 0));
3202 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3203 CFG_NOTEBOOK,
3204 BKM_QUERYPAGEWINDOWHWND,
[917]3205 MPFROMLONG(ulPageId), MPVOID);
[551]3206 if (hwndTemp)
3207 PostMsg(hwndTemp, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
[2]3208 break;
[551]3209 }
3210 return 0;
[2]3211
[551]3212 case UM_UNDO:
[917]3213 for (x = 0; np[x].usFrameId; x++) {
[551]3214 if (np[x].hwnd)
3215 WinSendMsg(np[x].hwnd, UM_UNDO, MPVOID, MPVOID);
3216 }
3217 break;
3218
3219 case WM_DESTROY:
[917]3220 if (np[0].usFrameId) {
3221 for (x = 1; np[x].usFrameId; x++) {
[551]3222 if (np[x].hwnd) {
3223 WinSendMsg(np[x].hwnd, WM_CLOSE, MPVOID, MPVOID);
3224 np[x].hwnd = (HWND) 0;
[917]3225 np[x].ulPageId = 0;
[551]3226 }
[2]3227 }
[551]3228 WinSendMsg(np[0].hwnd, WM_CLOSE, MPVOID, MPVOID);
3229 np[0].hwnd = (HWND) 0;
[917]3230 np[0].ulPageId = 0;
[551]3231 }
3232 hwndNotebook = (HWND) 0;
3233 break;
[917]3234 case WM_CLOSE:
[953]3235 SaveLastPageIndex(hwnd);
[917]3236 break;
[2]3237 }
[551]3238 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]3239}
[953]3240/**
3241 * Initialize config submenu
3242 * @param hwndMenu is window handle
3243 * @param fIsLite is true if called for fm/2 lite
3244 */
[783]3245
[953]3246VOID CfgMenuInit(HWND hwndMenu, BOOL fIsLite)
3247{
3248 UINT uPageIndex;
3249 ULONG ulSize = sizeof(uPageIndex);
3250 UINT x;
3251 PrfQueryProfileData(fmprof, appname, pszIK_LastSettingsPage, &uPageIndex, &ulSize);
3252 for (x = 0; x < uPageIndex && np[x].usFrameId; x++)
3253 ; // Search
3254 if (np[x].usMenuId)
3255 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[uPageIndex].usMenuId);
3256 // If lite, delete excess items from menus and tables
3257 if (fIsLite) {
3258 WinSendMsg(hwndMenu,
3259 MM_DELETEITEM,
3260 MPFROM2SHORT(IDM_QUICKSETTINGS, FALSE), MPVOID);
3261 // If fm/2 lite drop quick setting page
3262 for (x = 0; np[x].usFrameId && np[x].usFrameId != CFG9_FRAME; x++)
3263 ; // Scan
3264 np[x].usFrameId = 0;
3265 }
3266}
3267
3268static VOID SaveLastPageIndex(HWND hwnd)
3269{
3270 HWND hwndOwner;
3271 HWND hwndMenu;
3272 UINT x;
3273 ULONG ulPageId;
3274
3275 // Owner is frame if not applet
3276 hwndOwner = WinQueryWindow(hwnd, QW_OWNER);
3277 if (hwndOwner != HWND_DESKTOP) {
3278 ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3279 CFG_NOTEBOOK,
3280 BKM_QUERYPAGEID,
3281 MPFROMLONG(0),
3282 MPFROM2SHORT(BKA_TOP, 0));
3283 if (!ulPageId)
3284 Runtime_Error(pszSrcFile, __LINE__, "BKM_QUERYPAGEID");
3285 else {
3286 for (x = 0; np[x].usMenuId && np[x].ulPageId != ulPageId; x++)
3287 ; // Scan
3288 if (!np[x].usMenuId)
3289 Runtime_Error(pszSrcFile, __LINE__, "bad menu id %lu", ulPageId);
3290 else {
3291 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage,
3292 (PVOID)&x, sizeof(x));
3293 hwndMenu = WinWindowFromID(hwndOwner, FID_MENU);
3294 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[x].usMenuId);
3295 }
3296 }
3297 }
3298}
3299
[783]3300#pragma alloc_text(NOTEBOOK,CfgTDlgProc,CfgTSDlgProc,CfgMDlgProc)
[892]3301#pragma alloc_text(NOTEBOOK2,CfgADlgProc,CfgSDlgProc,CfgVDlgProc,CfgHDlgProc)
[783]3302#pragma alloc_text(NOTEBOOK3,CfgDDlgProc,Cfg5DlgProc,Cfg6DlgProc)
3303#pragma alloc_text(NOTEBOOK4,Cfg7DlgProc,Cfg8DlgProc,CfgCDlgProc)
3304#pragma alloc_text(NOTEBOOK5,CfgGDlgProc,CfgDlgProc,CfgBDlgProc)
[953]3305#pragma alloc_text(NOTEBOOK5,CfgMenuInit,SaveLastPageIndex)
Note: See TracBrowser for help on using the repository browser.