source: trunk/dll/notebook.c@ 1009

Last change on this file since 1009 was 1009, checked in by Steven Levine, 17 years ago

Add xfree xstrdup Fortify support
Add MT capable Fortify scope logic

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