source: trunk/dll/notebook.c@ 940

Last change on this file since 940 was 940, checked in by Gregg Young, 18 years ago

Minor cleanup, added comments and History for recent changes

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