source: trunk/dll/notebook.c@ 930

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

Some code "cleanup" for ticket 150.

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