source: trunk/dll/notebook.c@ 1065

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

Ticket 230: Simplified code and eliminated some local variables by incorporating
all the details view settings (both the global variables and those in the
DIRCNRDATA struct) into a new struct: DETAILS_SETTINGS.

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