source: trunk/dll/notebook.c@ 927

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

Free pszWorkBuf memory for NormalizeCmdLine calls. Add comments for ticket 161 fix.

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