source: trunk/dll/notebook.c@ 971

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

Ticket 230: Fix/improve code related to various state or presparam values
stored in the INI file.

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