source: trunk/dll/notebook.c@ 923

Last change on this file since 923 was 923, checked in by John Small, 18 years ago

Updated for ticket 150: fixed/improved save and restore of the state
of directory containers when FM/2 is closed and re-opened.

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