source: trunk/dll/notebook.c@ 961

Last change on this file since 961 was 961, checked in by Steven Levine, 18 years ago

Restore SaveDirCnrState internal state save logic - accidentally removed
Move save shutdown state name to strings (IDS_SHUTDOWNSTATE, ShutdownState)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 105.6 KB
RevLine 
[123]1
2/***********************************************************************
3
4 $Id: notebook.c 961 2008-02-18 07:25:13Z stevenhl $
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) {
1399 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
[551]1400 PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
1401 }
1402 }
[2]1403 }
[551]1404 }
1405 PrfWriteProfileData(fmprof, appname, "SyncUpdates",
1406 &fSyncUpdates, sizeof(BOOL));
1407 if (!(ulCnrType & (CCS_EXTENDSEL | CCS_MULTIPLESEL)))
1408 saymsg(MB_ENTER | MB_ICONEXCLAMATION,
1409 HWND_DESKTOP,
1410 GetPString(IDS_WARNINGTEXT),
1411 GetPString(IDS_SELECTTYPEERRORTEXT));
[961]1412 break; // WM_CLOSE
[2]1413 }
[551]1414 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1415}
1416
[551]1417MRESULT EXPENTRY CfgMDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1418{
[551]1419 switch (msg) {
1420 case WM_INITDLG:
1421 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1422 break;
[2]1423
[551]1424 case UM_UNDO:
1425 WinCheckButton(hwnd, CFGM_EXTERNALINIS, fExternalINIs);
1426 WinCheckButton(hwnd, CFGM_EXTERNALARCBOXES, fExternalArcboxes);
1427 WinCheckButton(hwnd, CFGM_EXTERNALVIEWER, fExternalViewer);
1428 WinCheckButton(hwnd, CFGM_EXTERNALCOLLECTOR, fExternalCollector);
1429 WinCheckButton(hwnd, CFGM_SAVESTATE, fSaveState);
1430 WinCheckButton(hwnd, CFGM_AUTOTILE, (fAutoTile));
1431 WinCheckButton(hwnd, CFGM_FREETREE, (fFreeTree));
1432 WinCheckButton(hwnd, CFGM_SPLITSTATUS, (fSplitStatus));
1433 WinCheckButton(hwnd, CFGM_NOTREEGAP, (fNoTreeGap));
1434 WinCheckButton(hwnd, CFGM_STARTMIN, (fStartMinimized));
1435 WinCheckButton(hwnd, CFGM_STARTMAX, (fStartMaximized));
1436 WinCheckButton(hwnd, CFGM_DATAMIN, (fDataMin));
1437 WinCheckButton(hwnd, CFGM_TILEBACKWARDS, (fTileBackwards));
1438 {
1439 long th;
[2]1440
[551]1441 th = (fAutoAddDirs && fAutoAddAllDirs) ? 2 : (fAutoAddDirs) ? 1 : 0;
1442 WinCheckButton(hwnd, CFGM_RECENTDIRS, th);
1443 WinSendMsg(hwnd, UM_RESTORE, MPFROM2SHORT(CFGM_RECENTDIRS, 0), MPVOID);
1444 }
1445 WinCheckButton(hwnd, CFGM_USERLISTSWITCHES, fUserListSwitches);
1446 WinCheckButton(hwnd, CFGM_WSANIMATE, (fwsAnimate != 0));
1447 WinCheckButton(hwnd, CFGM_SEPARATEPARMS, fSeparateParms);
1448 WinCheckButton(hwnd, CFGM_BLUELED, fBlueLED);
1449 WinCheckButton(hwnd, CFGM_SHOWTARGET, fShowTarget);
1450 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), !(fStartMinimized));
1451 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), !(fStartMaximized));
1452 return 0;
[2]1453
[551]1454 case UM_RESTORE:
1455 {
1456 long test;
1457 BOOL th, oh;
1458 char s[80];
[2]1459
[551]1460 test = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1461 th = (test != 0);
1462 oh = (test == 1);
1463 *s = 0;
1464 switch (SHORT1FROMMP(mp1)) {
1465 case CFGM_RECENTDIRS:
1466 sprintf(s,
1467 GetPString(IDS_RECENTHELPWHICHTEXT),
1468 (!oh && th) ?
1469 GetPString(IDS_RECENTONLYTEXT) :
1470 (oh && th) ?
1471 GetPString(IDS_ALLONLYTEXT) : GetPString(IDS_NONE));
1472 break;
[2]1473 }
[551]1474 if (*s)
1475 WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), s);
1476 }
1477 return 0;
[2]1478
[551]1479 case WM_CONTROL:
1480 switch (SHORT1FROMMP(mp1)) {
1481 case CFGM_RECENTDIRS:
1482 WinSendMsg(hwnd, UM_RESTORE, mp1, MPVOID);
1483 break;
1484 case CFGM_STARTMIN:
1485 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN)) {
1486 WinCheckButton(hwnd, CFGM_STARTMAX, FALSE);
1487 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), FALSE);
[2]1488 }
[551]1489 else
1490 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), TRUE);
1491 break;
1492 case CFGM_STARTMAX:
1493 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX)) {
1494 WinCheckButton(hwnd, CFGM_STARTMIN, FALSE);
1495 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), FALSE);
1496 }
1497 else
1498 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), TRUE);
1499 break;
1500 }
1501 return 0;
[2]1502
[551]1503 case WM_COMMAND:
1504 switch (SHORT1FROMMP(mp1)) {
1505 case IDM_UNDO:
1506 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1507 break;
[2]1508
[551]1509 case DID_CANCEL:
1510 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1511
[551]1512 case DID_OK:
1513 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1514 break;
[2]1515
[551]1516 case IDM_HELP:
1517 if (hwndHelp)
1518 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1519 MPFROM2SHORT(HELP_CFGM, 0), MPFROMSHORT(HM_RESOURCEID));
1520 break;
1521 }
1522 return 0;
[2]1523
[551]1524 case WM_CLOSE:
1525 if (hwndMain && !strcmp(realappname, FM3Str)) {
1526 if (fFreeTree != WinQueryButtonCheckstate(hwnd, CFGM_FREETREE))
1527 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_FREETREE, 0), MPVOID);
1528 if (fAutoTile != WinQueryButtonCheckstate(hwnd, CFGM_AUTOTILE))
1529 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_AUTOTILE, 0), MPVOID);
1530 if (fSplitStatus != WinQueryButtonCheckstate(hwnd, CFGM_SPLITSTATUS)) {
1531 fSplitStatus = (fSplitStatus) ? FALSE : TRUE;
1532 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_BLINK, 0), MPVOID);
1533 PrfWriteProfileData(fmprof, FM3Str, "SplitStatus", &fSplitStatus,
1534 sizeof(BOOL));
[2]1535 }
[551]1536 }
1537 fUserListSwitches = WinQueryButtonCheckstate(hwnd, CFGM_USERLISTSWITCHES);
1538 PrfWriteProfileData(fmprof, FM3Str, "UserListSwitches",
1539 (PVOID) & fUserListSwitches, sizeof(BOOL));
1540 fExternalINIs = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALINIS);
1541 PrfWriteProfileData(fmprof, FM3Str, "ExternalINIs",
1542 (PVOID) & fExternalINIs, sizeof(BOOL));
1543 fExternalArcboxes = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALARCBOXES);
1544 PrfWriteProfileData(fmprof, FM3Str, "ExternalArcboxes",
1545 (PVOID) & fExternalArcboxes, sizeof(BOOL));
1546 fExternalCollector =
1547 WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALCOLLECTOR);
1548 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
1549 (PVOID) & fExternalCollector, sizeof(BOOL));
1550 fExternalViewer = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALVIEWER);
1551 PrfWriteProfileData(fmprof, FM3Str, "ExternalViewer",
1552 (PVOID) & fExternalViewer, sizeof(BOOL));
1553 {
1554 long test;
[2]1555
[551]1556 test = WinQueryButtonCheckstate(hwnd, CFGM_RECENTDIRS);
1557 fAutoAddDirs = (test != 0);
1558 fAutoAddAllDirs = (test == 2);
1559 }
1560 PrfWriteProfileData(fmprof,
1561 appname,
1562 "AutoAddDirs", (PVOID) & fAutoAddDirs, sizeof(BOOL));
1563 PrfWriteProfileData(fmprof,
1564 appname,
1565 "AutoAddAllDirs",
1566 (PVOID) & fAutoAddAllDirs, sizeof(BOOL));
1567 fwsAnimate = WinQueryButtonCheckstate(hwnd, CFGM_WSANIMATE);
1568 if (fwsAnimate)
1569 fwsAnimate = WS_ANIMATE;
1570 PrfWriteProfileData(fmprof,
1571 appname,
1572 "WS_ANIMATE", (PVOID) & fwsAnimate, sizeof(ULONG));
1573 fSaveState = WinQueryButtonCheckstate(hwnd, CFGM_SAVESTATE);
1574 PrfWriteProfileData(fmprof,
1575 FM3Str,
1576 "SaveState", (PVOID) & fSaveState, sizeof(BOOL));
1577 fStartMinimized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN);
1578 PrfWriteProfileData(fmprof,
1579 appname,
1580 "StartMinimized",
1581 (PVOID) & fStartMinimized, sizeof(BOOL));
1582 fStartMaximized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX);
1583 PrfWriteProfileData(fmprof,
1584 appname,
1585 "StartMaximized",
1586 (PVOID) & fStartMaximized, sizeof(BOOL));
1587 fDataMin = WinQueryButtonCheckstate(hwnd, CFGM_DATAMIN);
1588 PrfWriteProfileData(fmprof,
1589 FM3Str, "DataMin", (PVOID) & fDataMin, sizeof(BOOL));
1590 fTileBackwards = WinQueryButtonCheckstate(hwnd, CFGM_TILEBACKWARDS);
1591 PrfWriteProfileData(fmprof,
1592 FM3Str,
1593 "TileBackwards",
1594 (PVOID) & fTileBackwards, sizeof(BOOL));
1595 fNoTreeGap = WinQueryButtonCheckstate(hwnd, CFGM_NOTREEGAP);
1596 PrfWriteProfileData(fmprof,
1597 FM3Str,
1598 "NoTreeGap", (PVOID) & fNoTreeGap, sizeof(BOOL));
1599 fBlueLED = WinQueryButtonCheckstate(hwnd, CFGM_BLUELED);
1600 PrfWriteProfileData(fmprof,
1601 appname, "BlueLED", (PVOID) & fBlueLED, sizeof(BOOL));
1602 {
1603 BOOL dummy;
[2]1604
[551]1605 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SHOWTARGET);
1606 if (dummy != fShowTarget) {
1607 fShowTarget = dummy;
1608 PrfWriteProfileData(fmprof,
1609 appname,
1610 "ShowTarget",
1611 (PVOID) & fShowTarget, sizeof(BOOL));
1612 if (hwndMain)
1613 PostMsg(WinQueryWindow(hwndMain, QW_PARENT),
1614 WM_UPDATEFRAME, MPFROMLONG(FCF_SIZEBORDER), MPVOID);
1615 SetTargetDir(hwnd, TRUE);
[2]1616 }
[551]1617 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SEPARATEPARMS);
1618 if (dummy != fSeparateParms) {
1619 fSeparateParms = dummy;
1620 PrfWriteProfileData(fmprof,
1621 FM3Str,
1622 "SeparateParms",
1623 (PVOID) & fSeparateParms, sizeof(BOOL));
1624 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
1625 UM_UNDO, MPVOID, MPVOID);
1626 }
1627 }
1628 break;
[2]1629 }
[551]1630 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1631}
1632
[551]1633MRESULT EXPENTRY Cfg5DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1634{
[2]1635 static MASK mask;
1636
[551]1637 switch (msg) {
1638 case WM_INITDLG:
[796]1639 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
1640 MPFROMSHORT(8), MPVOID);
1641 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
1642 MPFROMLONG(1000), MPFROMLONG(50));
[551]1643 WinSendDlgItemMsg(hwnd,
1644 CFG5_FILTER,
1645 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
1646 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1647 break;
[2]1648
[551]1649 case UM_FOCUSME:
1650 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
1651 return 0;
[2]1652
[551]1653 case UM_UNDO:
1654 {
[917]1655 ULONG flWindowAttr = 0;
1656 ULONG ulSize = sizeof(ULONG);
[2]1657
[551]1658 if (!PrfQueryProfileData(fmprof,
1659 appname,
[917]1660 "DirflWindowAttr", &flWindowAttr, &ulSize))
[551]1661 flWindowAttr = (CV_NAME | CV_MINI | CA_DETAILSVIEWTITLES | CV_FLOW);
1662 if (flWindowAttr & CV_ICON)
1663 WinCheckButton(hwnd, CFG5_ICON, TRUE);
1664 if (flWindowAttr & CV_NAME)
1665 WinCheckButton(hwnd, CFG5_NAME, TRUE);
1666 if (flWindowAttr & CV_TEXT)
1667 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
1668 if (flWindowAttr & CV_DETAIL)
1669 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
1670 if (flWindowAttr & CV_MINI)
1671 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
1672 if (flWindowAttr & CA_DETAILSVIEWTITLES)
1673 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
1674 WinCheckButton(hwnd, CFG5_SHOWLNAMES, detailslongname);
1675 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, detailssubject);
1676 WinCheckButton(hwnd, CFG5_SHOWEAS, detailsea);
1677 WinCheckButton(hwnd, CFG5_SHOWSIZE, detailssize);
1678 WinCheckButton(hwnd, CFG5_SHOWICON, detailsicon);
1679 WinCheckButton(hwnd, CFG5_SHOWLWDATE, detailslwdate);
1680 WinCheckButton(hwnd, CFG5_SHOWLWTIME, detailslwtime);
1681 WinCheckButton(hwnd, CFG5_SHOWLADATE, detailsladate);
1682 WinCheckButton(hwnd, CFG5_SHOWLATIME, detailslatime);
1683 WinCheckButton(hwnd, CFG5_SHOWCRDATE, detailscrdate);
1684 WinCheckButton(hwnd, CFG5_SHOWCRTIME, detailscrtime);
1685 WinCheckButton(hwnd, CFG5_SHOWATTR, detailsattr);
1686 memset(&mask, 0, sizeof(mask));
1687 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1688 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
[917]1689 ulSize = sizeof(MASK);
1690 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, &ulSize))
[551]1691 SetMask(NULL, &mask);
1692 if (!mask.attrFile)
1693 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1694 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
1695 strcpy(mask.prompt, GetPString(IDS_DEFDIRFILTERTITLETEXT));
1696 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
[796]1697 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, fSubjectInLeftPane);
1698 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, fSubjectLengthMax);
1699 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
[930]1700 MPFROMLONG(SubjectDisplayWidth), MPVOID);
[551]1701 }
1702 return 0;
[2]1703
[551]1704 case UM_SETUP5:
1705 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
1706 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
1707 SetMask(NULL, &mask);
1708 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
1709 }
1710 return 0;
[2]1711
[551]1712 case WM_CONTROL:
1713 switch (SHORT1FROMMP(mp1)) {
1714 case CFG5_FILTER:
1715 switch (SHORT2FROMMP(mp1)) {
1716 case EN_SETFOCUS:
1717 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1718 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1719 break;
[2]1720 }
[551]1721 break;
1722 }
1723 return 0;
[2]1724
[551]1725 case WM_COMMAND:
1726 switch (SHORT1FROMMP(mp1)) {
1727 case IDM_UNDO:
1728 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1729 break;
[2]1730
[551]1731 case DID_CANCEL:
1732 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1733
[551]1734 case DID_OK:
1735 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1736 break;
[2]1737
[551]1738 case IDM_HELP:
1739 if (hwndHelp)
1740 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1741 MPFROM2SHORT(HELP_CFG5, 0), MPFROMSHORT(HM_RESOURCEID));
1742 break;
1743 }
1744 return 0;
[2]1745
[551]1746 case WM_CLOSE:
1747 {
1748 ULONG flWindowAttr = 0;
[2]1749
[551]1750 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
1751 flWindowAttr |= CV_ICON;
1752 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
1753 flWindowAttr |= CV_NAME;
1754 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
1755 flWindowAttr |= CV_TEXT;
1756 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
1757 flWindowAttr |= CV_DETAIL;
1758 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
1759 flWindowAttr |= CV_MINI;
1760 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
1761 flWindowAttr |= CA_DETAILSVIEWTITLES;
1762 flWindowAttr |= CV_FLOW;
[2]1763 PrfWriteProfileData(fmprof,
[551]1764 appname,
1765 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
1766 }
1767 detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
1768 PrfWriteProfileData(fmprof, appname, "DetailsLongname",
1769 &detailslongname, sizeof(BOOL));
1770 detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
1771 PrfWriteProfileData(fmprof, appname, "DetailsSubject",
1772 &detailssubject, sizeof(BOOL));
1773 PrfWriteProfileData(fmprof, appname, "DetailsEA",
1774 &detailsea, sizeof(BOOL));
1775 detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
1776 PrfWriteProfileData(fmprof, appname, "DetailsSize",
1777 &detailssize, sizeof(BOOL));
1778 detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
1779 PrfWriteProfileData(fmprof, appname, "DetailsIcon",
1780 &detailsicon, sizeof(BOOL));
1781 detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
1782 PrfWriteProfileData(fmprof, appname, "DetailsLWDate",
1783 &detailslwdate, sizeof(BOOL));
1784 detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
1785 PrfWriteProfileData(fmprof, appname, "DetailsLWTime",
1786 &detailslwtime, sizeof(BOOL));
1787 detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
1788 PrfWriteProfileData(fmprof, appname, "DetailsLADate",
1789 &detailsladate, sizeof(BOOL));
1790 detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
1791 PrfWriteProfileData(fmprof, appname, "DetailsLATime",
1792 &detailslatime, sizeof(BOOL));
1793 detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
1794 PrfWriteProfileData(fmprof, appname, "DetailsCRDate",
1795 &detailscrdate, sizeof(BOOL));
1796 detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
1797 PrfWriteProfileData(fmprof, appname, "DetailsCRTime",
1798 &detailscrtime, sizeof(BOOL));
1799 detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
1800 PrfWriteProfileData(fmprof, appname, "DetailsAttr",
1801 &detailsattr, sizeof(BOOL));
[796]1802 fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
1803 PrfWriteProfileData(fmprof, appname, "SubjectInLeftPane",
1804 &fSubjectInLeftPane, sizeof(BOOL));
1805 fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
1806 PrfWriteProfileData(fmprof, appname, "SubjectLengthMax",
[922]1807 &fSubjectLengthMax, sizeof(BOOL));
[551]1808 *mask.prompt = 0;
1809 PrfWriteProfileData(fmprof, appname, "DirFilter", &mask, sizeof(MASK));
[796]1810 {
[917]1811 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
1812 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
1813 MPFROMP(&SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
1814 if (SubjectDisplayWidth < 50)
1815 SubjectDisplayWidth = 0;
1816 else if (SubjectDisplayWidth > 1000)
1817 SubjectDisplayWidth = 1000;
1818 }
1819 else
1820 SubjectDisplayWidth = 0;
1821 PrfWriteProfileData(fmprof,
1822 appname, "SubjectDisplayWidth",
1823 &SubjectDisplayWidth, sizeof(ULONG));
1824 PrfWriteProfileData(fmprof,
1825 appname, "DirCnr.SubjectDisplayWidth",
1826 &SubjectDisplayWidth, sizeof(ULONG));
[796]1827 }
[551]1828 break;
[2]1829 }
[551]1830 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1831}
1832
[551]1833MRESULT EXPENTRY Cfg6DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1834{
[551]1835 switch (msg) {
1836 case WM_INITDLG:
1837 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1838 break;
[2]1839
[551]1840 case UM_UNDO:
1841 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
1842 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
1843 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
1844 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
1845 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
1846 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
1847 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
1848 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
1849 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
1850 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
1851 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
1852 if (sortFlags & SORT_FIRSTEXTENSION)
1853 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
1854 else if (sortFlags & SORT_LASTEXTENSION)
1855 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
1856 else if (sortFlags & SORT_SIZE)
1857 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
1858 else if (sortFlags & SORT_EASIZE)
1859 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
1860 else if (sortFlags & SORT_LWDATE)
1861 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
1862 else if (sortFlags & SORT_LADATE)
1863 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
1864 else if (sortFlags & SORT_CRDATE)
1865 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
1866 else if (sortFlags & SORT_FILENAME)
1867 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
1868 else
1869 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
1870 if (sortFlags & SORT_DIRSFIRST)
1871 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
1872 else if (sortFlags & SORT_DIRSLAST)
1873 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
1874 if (sortFlags & SORT_REVERSE)
1875 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
1876 return 0;
[2]1877
[551]1878 case WM_CONTROL:
1879 switch (SHORT1FROMMP(mp1)) {
1880 case CFG6_SORTDIRSFIRST:
1881 case CFG6_SORTDIRSLAST:
1882 {
1883 BOOL temp;
[2]1884
[551]1885 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1886 if (temp) {
1887 switch (SHORT1FROMMP(mp1)) {
1888 case CFG6_SORTDIRSFIRST:
1889 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
1890 break;
1891 case CFG6_SORTDIRSLAST:
1892 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
1893 break;
1894 }
1895 }
[2]1896 }
[551]1897 break;
1898 }
1899 return 0;
[2]1900
[551]1901 case WM_COMMAND:
1902 switch (SHORT1FROMMP(mp1)) {
1903 case IDM_UNDO:
1904 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1905 break;
[2]1906
[551]1907 case DID_CANCEL:
1908 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1909
[551]1910 case DID_OK:
1911 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1912 break;
[2]1913
[551]1914 case IDM_HELP:
1915 if (hwndHelp)
1916 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1917 MPFROM2SHORT(HELP_CFG6, 0), MPFROMSHORT(HM_RESOURCEID));
1918 break;
1919 }
1920 return 0;
[2]1921
[551]1922 case WM_CLOSE:
1923 sortFlags = 0;
1924 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
1925 sortFlags |= SORT_FILENAME;
1926 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
1927 sortFlags |= SORT_SIZE;
1928 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
1929 sortFlags |= SORT_EASIZE;
1930 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
1931 sortFlags |= SORT_FIRSTEXTENSION;
1932 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
1933 sortFlags |= SORT_LASTEXTENSION;
1934 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
1935 sortFlags |= SORT_LWDATE;
1936 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
1937 sortFlags |= SORT_LADATE;
1938 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
1939 sortFlags |= SORT_CRDATE;
1940 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
1941 sortFlags |= SORT_DIRSFIRST;
1942 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
1943 sortFlags |= SORT_DIRSLAST;
1944 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
1945 sortFlags |= SORT_REVERSE;
1946 PrfWriteProfileData(fmprof, appname, "Sort", &sortFlags, sizeof(INT));
1947 break;
[2]1948 }
[551]1949 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1950}
1951
[551]1952MRESULT EXPENTRY Cfg7DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1953{
[2]1954 static MASK mask;
1955
[551]1956 switch (msg) {
1957 case WM_INITDLG:
[922]1958 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
1959 MPFROMSHORT(8), MPVOID);
1960 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
1961 MPFROMLONG(1000), MPFROMLONG(50));
[551]1962 WinSendDlgItemMsg(hwnd, CFG5_FILTER, EM_SETTEXTLIMIT,
1963 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
1964 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1965 break;
[2]1966
[551]1967 case UM_FOCUSME:
1968 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
1969 return 0;
[2]1970
[551]1971 case UM_UNDO:
1972 WinCheckButton(hwnd, CFG5_EXTERNALCOLLECTOR, fExternalCollector);
1973 {
[917]1974 ULONG flWindowAttr = 0;
1975 ULONG ulSize = sizeof(ULONG);
[2]1976
[551]1977 if (!PrfQueryProfileData(fmprof,
1978 appname,
[917]1979 "CollectorflWindowAttr", &flWindowAttr, &ulSize))
[551]1980 flWindowAttr = (CV_NAME | CA_DETAILSVIEWTITLES | CV_MINI | CV_FLOW);
1981 if (flWindowAttr & CV_ICON)
1982 WinCheckButton(hwnd, CFG5_ICON, TRUE);
1983 if (flWindowAttr & CV_NAME)
1984 WinCheckButton(hwnd, CFG5_NAME, TRUE);
1985 if (flWindowAttr & CV_TEXT)
1986 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
1987 if (flWindowAttr & CV_DETAIL)
1988 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
1989 if (flWindowAttr & CV_MINI)
1990 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
1991 if (flWindowAttr & CA_DETAILSVIEWTITLES)
1992 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
1993 memset(&mask, 0, sizeof(mask));
1994 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1995 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
[917]1996 ulSize = sizeof(MASK);
[551]1997 if (PrfQueryProfileData(fmprof,
[917]1998 appname, "CollectorFilter", &mask, &ulSize)) {
[551]1999 SetMask(NULL, &mask);
[2]2000 }
[551]2001 if (!mask.attrFile)
2002 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2003 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2004 strcpy(mask.prompt, GetPString(IDS_DEFCOLFILTERTITLETEXT));
2005 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2006 }
2007 {
2008 DIRCNRDATA dcd;
[2]2009
[551]2010 memset(&dcd, 0, sizeof(dcd));
2011 LoadDetailsSwitches("Collector", &dcd);
2012 WinCheckButton(hwnd, CFG5_SHOWLNAMES, dcd.detailslongname);
2013 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, dcd.detailssubject);
2014 WinCheckButton(hwnd, CFG5_SHOWEAS, dcd.detailsea);
2015 WinCheckButton(hwnd, CFG5_SHOWSIZE, dcd.detailssize);
2016 WinCheckButton(hwnd, CFG5_SHOWICON, dcd.detailsicon);
2017 WinCheckButton(hwnd, CFG5_SHOWLWDATE, dcd.detailslwdate);
2018 WinCheckButton(hwnd, CFG5_SHOWLWTIME, dcd.detailslwtime);
2019 WinCheckButton(hwnd, CFG5_SHOWLADATE, dcd.detailsladate);
2020 WinCheckButton(hwnd, CFG5_SHOWLATIME, dcd.detailslatime);
2021 WinCheckButton(hwnd, CFG5_SHOWCRDATE, dcd.detailscrdate);
2022 WinCheckButton(hwnd, CFG5_SHOWCRTIME, dcd.detailscrtime);
2023 WinCheckButton(hwnd, CFG5_SHOWATTR, dcd.detailsattr);
[922]2024 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, dcd.fSubjectInLeftPane);
2025 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, dcd.fSubjectLengthMax);
2026 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
[930]2027 MPFROMLONG(dcd.SubjectDisplayWidth), MPVOID);
[922]2028
[551]2029 }
2030 return 0;
[2]2031
[551]2032 case UM_SETUP5:
2033 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2034 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2035 SetMask(NULL, &mask);
2036 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2037 }
2038 return 0;
[2]2039
[551]2040 case WM_CONTROL:
2041 switch (SHORT1FROMMP(mp1)) {
2042 case CFG5_FILTER:
2043 switch (SHORT2FROMMP(mp1)) {
2044 case EN_SETFOCUS:
2045 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2046 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2047 break;
[2]2048 }
[551]2049 break;
2050 }
2051 return 0;
[2]2052
[551]2053 case WM_COMMAND:
2054 switch (SHORT1FROMMP(mp1)) {
2055 case IDM_UNDO:
2056 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2057 break;
[2]2058
[551]2059 case DID_CANCEL:
2060 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2061
[551]2062 case DID_OK:
2063 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2064 break;
[2]2065
[551]2066 case IDM_HELP:
2067 if (hwndHelp)
2068 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2069 MPFROM2SHORT(HELP_CFG7, 0), MPFROMSHORT(HM_RESOURCEID));
2070 break;
2071 }
2072 return 0;
[2]2073
[551]2074 case WM_CLOSE:
2075 fExternalCollector = WinQueryButtonCheckstate(hwnd,
2076 CFG5_EXTERNALCOLLECTOR);
2077 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
2078 &fExternalCollector, sizeof(BOOL));
2079 {
2080 ULONG flWindowAttr = 0;
[2]2081
[551]2082 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2083 flWindowAttr |= CV_ICON;
2084 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2085 flWindowAttr |= CV_NAME;
2086 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2087 flWindowAttr |= CV_TEXT;
2088 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2089 flWindowAttr |= CV_DETAIL;
2090 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2091 flWindowAttr |= CV_MINI;
2092 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2093 flWindowAttr |= CA_DETAILSVIEWTITLES;
2094 flWindowAttr |= CV_FLOW;
2095 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2096 &flWindowAttr, sizeof(ULONG));
2097 }
2098 {
2099 DIRCNRDATA dcd;
[2]2100
[551]2101 memset(&dcd, 0, sizeof(dcd));
2102 dcd.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
2103 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLongname",
2104 &dcd.detailslongname, sizeof(BOOL));
2105 dcd.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
2106 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSubject",
2107 &dcd.detailssubject, sizeof(BOOL));
2108 dcd.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS);
2109 PrfWriteProfileData(fmprof, appname, "Collector.DetailsEA",
2110 &dcd.detailsea, sizeof(BOOL));
2111 dcd.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
2112 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSize",
2113 &dcd.detailssize, sizeof(BOOL));
2114 dcd.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
2115 PrfWriteProfileData(fmprof, appname, "Collector.DetailsIcon",
2116 &dcd.detailsicon, sizeof(BOOL));
2117 dcd.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
2118 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWDate",
2119 &dcd.detailslwdate, sizeof(BOOL));
2120 dcd.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
2121 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWTime",
2122 &dcd.detailslwtime, sizeof(BOOL));
2123 dcd.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
2124 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLADate",
2125 &dcd.detailsladate, sizeof(BOOL));
2126 dcd.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
2127 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLATime",
2128 &dcd.detailslatime, sizeof(BOOL));
2129 dcd.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
2130 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRDate",
2131 &dcd.detailscrdate, sizeof(BOOL));
2132 dcd.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
2133 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRTime",
2134 &dcd.detailscrtime, sizeof(BOOL));
2135 dcd.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
2136 PrfWriteProfileData(fmprof, appname, "Collector.DetailsAttr",
[930]2137 &dcd.detailsattr, sizeof(BOOL));
[922]2138 dcd.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
2139 PrfWriteProfileData(fmprof, appname, "Collector.SubjectInLeftPane",
[953]2140 &dcd.fSubjectInLeftPane, sizeof(BOOL));
[922]2141 dcd.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
2142 PrfWriteProfileData(fmprof, appname, "Collector.SubjectLengthMax",
2143 &dcd.fSubjectLengthMax, sizeof(BOOL));
[551]2144 *mask.prompt = 0;
2145 PrfWriteProfileData(fmprof,
[930]2146 appname, "CollectorFilter", &mask, sizeof(MASK));
[922]2147 {
2148 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2149 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
2150 MPFROMP(&dcd.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2151 if (dcd.SubjectDisplayWidth < 50)
2152 dcd.SubjectDisplayWidth = 0;
2153 else if (dcd.SubjectDisplayWidth > 1000)
2154 dcd.SubjectDisplayWidth = 1000;
2155 }
2156 else
2157 dcd.SubjectDisplayWidth = 0;
2158 PrfWriteProfileData(fmprof,
2159 appname, "Collector.SubjectDisplayWidth",
2160 &dcd.SubjectDisplayWidth, sizeof(ULONG));
2161 }
[551]2162 }
2163 break;
[2]2164 }
[551]2165 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2166}
2167
[551]2168MRESULT EXPENTRY Cfg8DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2169{
[551]2170 switch (msg) {
2171 case WM_INITDLG:
2172 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2173 break;
[2]2174
[551]2175 case UM_UNDO:
2176 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2177 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2178 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2179 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2180 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2181 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2182 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2183 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2184 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2185 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2186 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2187 if (CollectorsortFlags & SORT_FIRSTEXTENSION)
2188 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2189 else if (CollectorsortFlags & SORT_LASTEXTENSION)
2190 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2191 else if (CollectorsortFlags & SORT_SIZE)
2192 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2193 else if (CollectorsortFlags & SORT_EASIZE)
2194 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2195 else if (CollectorsortFlags & SORT_LWDATE)
2196 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2197 else if (CollectorsortFlags & SORT_LADATE)
2198 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2199 else if (CollectorsortFlags & SORT_CRDATE)
2200 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2201 else if (CollectorsortFlags & SORT_FILENAME)
2202 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2203 else
2204 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2205 if (CollectorsortFlags & SORT_DIRSFIRST)
2206 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2207 else if (CollectorsortFlags & SORT_DIRSLAST)
2208 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2209 if (CollectorsortFlags & SORT_REVERSE)
2210 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2211 return 0;
[2]2212
[551]2213 case WM_CONTROL:
2214 switch (SHORT1FROMMP(mp1)) {
2215 case CFG6_SORTDIRSFIRST:
2216 case CFG6_SORTDIRSLAST:
2217 {
2218 BOOL temp;
[2]2219
[551]2220 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2221 if (temp) {
2222 switch (SHORT1FROMMP(mp1)) {
2223 case CFG6_SORTDIRSFIRST:
2224 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2225 break;
2226 case CFG6_SORTDIRSLAST:
2227 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2228 break;
2229 }
2230 }
[2]2231 }
[551]2232 break;
2233 }
2234 return 0;
[2]2235
[551]2236 case WM_COMMAND:
2237 switch (SHORT1FROMMP(mp1)) {
2238 case IDM_UNDO:
2239 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2240 break;
[2]2241
[551]2242 case DID_CANCEL:
2243 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2244
[551]2245 case DID_OK:
2246 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2247 break;
[2]2248
[551]2249 case IDM_HELP:
2250 if (hwndHelp)
2251 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2252 MPFROM2SHORT(HELP_CFG8, 0), MPFROMSHORT(HM_RESOURCEID));
2253 break;
2254 }
2255 return 0;
[2]2256
[551]2257 case WM_CLOSE:
2258 CollectorsortFlags = 0;
2259 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2260 CollectorsortFlags |= SORT_FILENAME;
2261 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2262 CollectorsortFlags |= SORT_SIZE;
2263 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2264 CollectorsortFlags |= SORT_EASIZE;
2265 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2266 CollectorsortFlags |= SORT_FIRSTEXTENSION;
2267 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2268 CollectorsortFlags |= SORT_LASTEXTENSION;
2269 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2270 CollectorsortFlags |= SORT_LWDATE;
2271 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2272 CollectorsortFlags |= SORT_LADATE;
2273 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2274 CollectorsortFlags |= SORT_CRDATE;
2275 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2276 CollectorsortFlags |= SORT_DIRSFIRST;
2277 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2278 CollectorsortFlags |= SORT_DIRSLAST;
2279 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2280 CollectorsortFlags |= SORT_REVERSE;
2281 PrfWriteProfileData(fmprof,
2282 appname,
2283 "CollectorSort", &CollectorsortFlags, sizeof(INT));
2284 break;
[2]2285 }
[551]2286 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2287}
2288
[551]2289MRESULT EXPENTRY Cfg9DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2290{
[551]2291 switch (msg) {
2292 case WM_INITDLG:
2293 break;
[2]2294
[551]2295 case WM_COMMAND:
2296 switch (SHORT1FROMMP(mp1)) {
2297 case IDM_HELP:
2298 if (hwndHelp)
2299 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2300 MPFROM2SHORT(HELP_CFG9, 0), MPFROMSHORT(HM_RESOURCEID));
2301 return 0;
2302 case CFG9_MAXIMUMUI:
2303 if (hwndMain) {
2304 if (MenuInvisible)
2305 WinSendMsg(hwndMain, WM_COMMAND,
2306 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2307 if (!fAutoView)
2308 WinSendMsg(hwndMain, WM_COMMAND,
2309 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2310 if (!fDrivebar)
2311 WinSendMsg(hwndMain, WM_COMMAND,
2312 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2313 if (!fToolbar)
2314 WinSendMsg(hwndMain, WM_COMMAND,
2315 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2316 if (!fMoreButtons)
2317 WinSendMsg(hwndMain, WM_COMMAND,
2318 MPFROM2SHORT(IDM_MOREBUTTONS, 0), MPVOID);
2319 if (!fUserComboBox)
2320 WinSendMsg(hwndMain, WM_COMMAND,
2321 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2322 }
2323 return 0;
2324 case CFG9_MINIMUMUI:
2325 if (hwndMain) {
2326 if (!MenuInvisible)
2327 WinSendMsg(hwndMain, WM_COMMAND,
2328 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2329 if (fAutoView)
2330 WinSendMsg(hwndMain, WM_COMMAND,
2331 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2332 if (fToolbar)
2333 WinSendMsg(hwndMain, WM_COMMAND,
2334 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2335 if (fMoreButtons)
2336 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2337 MPVOID);
2338 if (fUserComboBox)
2339 WinSendMsg(hwndMain, WM_COMMAND,
2340 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2341 saymsg(MB_ENTER | MB_ICONASTERISK,
2342 hwnd,
2343 GetPString(IDS_DONTFORGETTEXT),
2344 GetPString(IDS_UNHIDEMENUWARNTEXT));
2345 }
2346 return 0;
2347 case CFG9_MAXINFOPRETTY:
2348 fLoadSubject = TRUE;
2349 fLoadLongnames = TRUE;
2350 fNoIconsFiles = FALSE;
2351 fNoIconsDirs = FALSE;
2352 fForceUpper = FALSE;
2353 fForceLower = FALSE;
2354 fArcStuffVisible = TRUE;
2355 fSplitStatus = TRUE;
2356 fDragndropDlg = TRUE;
2357 {
2358 ULONG flWindowAttr;
[2]2359
[551]2360 flWindowAttr = CV_DETAIL | CV_FLOW | CA_DETAILSVIEWTITLES;
2361 PrfWriteProfileData(fmprof,
2362 appname,
2363 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2364 PrfWriteProfileData(fmprof,
2365 appname,
2366 "CollectorflWindowAttr",
2367 &flWindowAttr, sizeof(ULONG));
2368 PrfWriteProfileData(fmprof, appname, "DirCnr.Fontnamesize", NULL, 0);
2369 PrfWriteProfileData(fmprof,
2370 appname, "Collector.Fontnamesize", NULL, 0);
2371 }
2372 detailslongname = TRUE;
2373 detailssubject = TRUE;
2374 detailsea = TRUE;
2375 detailssize = TRUE;
2376 detailsicon = TRUE;
2377 detailslwdate = TRUE;
2378 detailslwtime = TRUE;
2379 detailsladate = TRUE;
2380 detailslatime = TRUE;
2381 detailscrdate = TRUE;
2382 detailscrtime = TRUE;
2383 detailsattr = TRUE;
2384 if (hwndTree) {
[2]2385
[551]2386 CNRINFO cnri;
2387 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
[2]2388
[551]2389 memset(&cnri, 0, sizeof(cnri));
2390 cnri.cb = sizeof(cnri);
2391 WinSendMsg(WinWindowFromID
2392 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2393 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2394 cnri.flWindowAttr = flWindowAttr;
2395 WinSendMsg(WinWindowFromID
2396 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2397 CM_SETCNRINFO, MPFROMP(&cnri),
2398 MPFROMLONG(CMA_FLWINDOWATTR));
2399 }
2400 break;
[2]2401
[551]2402 case CFG9_MAXINFOPLAIN:
2403 fLoadSubject = TRUE;
2404 fLoadLongnames = TRUE;
2405 fNoIconsFiles = TRUE;
2406 fNoIconsDirs = TRUE;
2407 fForceUpper = FALSE;
2408 fForceLower = FALSE;
2409 fArcStuffVisible = TRUE;
2410 fSplitStatus = TRUE;
2411 fDragndropDlg = TRUE;
2412 {
2413 ULONG flWindowAttr;
[2]2414
[551]2415 flWindowAttr = CV_DETAIL | CV_FLOW | CV_MINI;
2416 PrfWriteProfileData(fmprof,
2417 appname,
2418 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2419 PrfWriteProfileData(fmprof,
2420 appname,
2421 "CollectorflWindowAttr",
2422 &flWindowAttr, sizeof(ULONG));
2423 PrfWriteProfileData(fmprof,
2424 appname,
2425 "DirCnr.Fontnamesize",
2426 GetPString(IDS_8HELVTEXT),
2427 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2428 PrfWriteProfileData(fmprof,
2429 appname,
2430 "Collector.Fontnamesize",
2431 GetPString(IDS_8HELVTEXT),
2432 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2433 }
2434 detailslongname = TRUE;
2435 detailssubject = TRUE;
2436 detailsea = TRUE;
2437 detailssize = TRUE;
2438 detailsicon = TRUE;
2439 detailslwdate = TRUE;
2440 detailslwtime = TRUE;
2441 detailsladate = TRUE;
2442 detailslatime = TRUE;
2443 detailscrdate = TRUE;
2444 detailscrtime = TRUE;
2445 detailsattr = TRUE;
2446 if (hwndTree) {
[2]2447
[551]2448 CNRINFO cnri;
2449 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_TEXT |
2450 CV_FLOW | CA_TREELINE;
[2]2451
[551]2452 memset(&cnri, 0, sizeof(cnri));
2453 cnri.cb = sizeof(cnri);
2454 WinSendMsg(WinWindowFromID
2455 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2456 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2457 cnri.flWindowAttr = flWindowAttr;
2458 WinSendMsg(WinWindowFromID
2459 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2460 CM_SETCNRINFO, MPFROMP(&cnri),
2461 MPFROMLONG(CMA_FLWINDOWATTR));
2462 }
2463 break;
2464 case CFG9_MAXFILENAMES:
2465 if (hwndMain && fAutoView)
2466 WinSendMsg(hwndMain, WM_COMMAND,
2467 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2468 fForceUpper = FALSE;
2469 fForceLower = TRUE;
2470 fExternalViewer = TRUE;
2471 fExternalArcboxes = TRUE;
2472 fExternalCollector = TRUE;
2473 fExternalINIs = TRUE;
2474 fLoadSubject = FALSE;
2475 fLoadLongnames = FALSE;
2476 fNoIconsFiles = TRUE;
2477 fNoIconsDirs = TRUE;
2478 {
2479 ULONG flWindowAttr;
[2]2480
[551]2481 flWindowAttr = CV_TEXT | CV_FLOW;
2482 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2483 &flWindowAttr, sizeof(ULONG));
2484 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2485 &flWindowAttr, sizeof(ULONG));
2486 PrfWriteProfileData(fmprof, appname, "DirCnr.Fontnamesize",
2487 GetPString(IDS_8HELVTEXT),
2488 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2489 PrfWriteProfileData(fmprof, appname, "Collector.Fontnamesize",
2490 GetPString(IDS_8HELVTEXT),
2491 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2492 }
2493 if (hwndTree) {
[2]2494
[551]2495 CNRINFO cnri;
2496 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
[2]2497
[551]2498 memset(&cnri, 0, sizeof(cnri));
2499 cnri.cb = sizeof(cnri);
2500 WinSendMsg(WinWindowFromID
2501 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2502 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2503 cnri.flWindowAttr = flWindowAttr;
2504 WinSendMsg(WinWindowFromID
2505 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2506 CM_SETCNRINFO, MPFROMP(&cnri),
2507 MPFROMLONG(CMA_FLWINDOWATTR));
2508 }
2509 break;
2510 case CFG9_MAXSPEED:
2511 fLoadSubject = FALSE;
2512 fLoadLongnames = FALSE;
2513 fVerify = FALSE;
2514 DosSetVerify(FALSE);
[783]2515 FilesToGet = FILESTOGET_MAX;
[551]2516 fQuickArcFind = TRUE;
2517 fMinOnOpen = TRUE;
2518 fRealIdle = FALSE;
2519 fNoIconsFiles = TRUE;
2520 fNoIconsDirs = TRUE;
2521 fSyncUpdates = FALSE;
2522 fArcStuffVisible = FALSE;
2523 fForceUpper = FALSE;
2524 fForceLower = FALSE;
2525 detailslongname = FALSE;
2526 detailssubject = FALSE;
2527 break;
[2]2528
[551]2529 case CFG9_HECTOR:
2530 fSwitchTree = TRUE;
2531 fSwitchTreeOnFocus = FALSE;
2532 fSwitchTreeExpand = TRUE;
2533 fCollapseFirst = TRUE;
2534 fSelectedAlways = FALSE;
2535 fTileBackwards = FALSE;
2536 fExternalViewer = FALSE;
2537 fExternalArcboxes = TRUE;
2538 fExternalCollector = FALSE;
2539 fExternalINIs = TRUE;
2540 fCopyDefault = FALSE;
2541 fFollowTree = FALSE;
2542 fLoadSubject = FALSE;
2543 fLoadLongnames = FALSE;
2544 fDontMoveMouse = FALSE;
2545 fUnHilite = TRUE;
2546 fUserListSwitches = TRUE;
2547 fDCOpens = FALSE;
2548 fLinkSetsIcon = FALSE;
2549 fConfirmDelete = TRUE;
2550 fSyncUpdates = FALSE;
2551 fRealIdle = FALSE;
2552 fNoIconsFiles = FALSE;
2553 fNoIconsDirs = TRUE;
2554 fFolderAfterExtract = FALSE;
2555 fVerify = TRUE;
2556 DosSetVerify(TRUE);
2557 fForceUpper = FALSE;
2558 fForceLower = TRUE;
2559 fArcStuffVisible = FALSE;
2560 fVTreeOpensWPS = FALSE;
2561 fRemoteBug = FALSE;
2562 fDragndropDlg = TRUE;
2563 fMinOnOpen = FALSE;
2564 fQuickArcFind = TRUE;
2565 fNoRemovableScan = TRUE;
[783]2566 FilesToGet = FILESTOGET_MIN;
[551]2567 fFreeTree = FALSE;
2568 fSplitStatus = TRUE;
2569 fAutoTile = TRUE;
2570 fSaveState = TRUE;
2571 fStartMinimized = FALSE;
2572 fStartMaximized = FALSE;
2573 fDataMin = FALSE;
2574 ulCnrType = CCS_EXTENDSEL | CCS_MULTIPLESEL;
2575 fNoTreeGap = TRUE;
2576 {
2577 ULONG flWindowAttr;
[2]2578
[551]2579 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
2580 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2581 &flWindowAttr, sizeof(ULONG));
2582 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2583 &flWindowAttr, sizeof(ULONG));
2584 }
2585 detailslongname = FALSE;
2586 detailssubject = FALSE;
2587 detailsea = TRUE;
2588 detailssize = TRUE;
2589 detailsicon = TRUE;
2590 detailslwdate = TRUE;
2591 detailslwtime = TRUE;
2592 detailsladate = FALSE;
2593 detailslatime = FALSE;
2594 detailscrdate = FALSE;
2595 detailscrtime = FALSE;
2596 detailsattr = TRUE;
2597 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2598 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2599 if (hwndMain) {
[2]2600
[551]2601 SWP swp;
[2]2602
[551]2603 if (WinQueryWindowPos(hwndMain, &swp)) {
2604 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2605 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2606 }
2607 if (MenuInvisible)
2608 WinSendMsg(hwndMain, WM_COMMAND,
2609 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2610 if (fAutoView)
2611 WinSendMsg(hwndMain, WM_COMMAND,
2612 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2613 if (fToolbar)
2614 WinSendMsg(hwndMain, WM_COMMAND,
2615 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2616 if (!fDrivebar)
2617 WinSendMsg(hwndMain, WM_COMMAND,
2618 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2619 if (!fMoreButtons)
2620 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2621 MPVOID);
2622 if (!fUserComboBox)
2623 WinSendMsg(hwndMain, WM_COMMAND,
2624 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2625 }
2626 if (hwndTree) {
[2]2627
[551]2628 CNRINFO cnri;
2629 ULONG flWindowAttr = (CV_TREE | CV_TEXT | CV_MINI |
2630 CV_FLOW | CA_TREELINE);
[2]2631
[551]2632 memset(&cnri, 0, sizeof(cnri));
2633 cnri.cb = sizeof(cnri);
2634 WinSendMsg(WinWindowFromID
2635 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2636 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2637 cnri.flWindowAttr = flWindowAttr;
2638 WinSendMsg(WinWindowFromID
2639 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2640 CM_SETCNRINFO, MPFROMP(&cnri),
2641 MPFROMLONG(CMA_FLWINDOWATTR));
2642 }
2643 break;
[2]2644
[551]2645 case CFG9_DEFAULT:
2646 fSwitchTree = FALSE;
2647 fSwitchTreeOnFocus = FALSE;
2648 fSwitchTreeExpand = FALSE;
2649 fCollapseFirst = FALSE;
2650 fSelectedAlways = FALSE;
2651 fTileBackwards = FALSE;
2652 fExternalViewer = FALSE;
2653 fExternalArcboxes = FALSE;
2654 fExternalCollector = FALSE;
2655 fExternalINIs = FALSE;
2656 fCopyDefault = FALSE;
2657 fFollowTree = FALSE;
2658 fLoadSubject = TRUE;
2659 fLoadLongnames = TRUE;
2660 fDontMoveMouse = FALSE;
2661 fUnHilite = TRUE;
2662 fUserListSwitches = FALSE;
2663 fDCOpens = FALSE;
2664 fLinkSetsIcon = FALSE;
2665 fConfirmDelete = TRUE;
2666 fSyncUpdates = FALSE;
2667 fRealIdle = FALSE;
2668 fNoIconsFiles = FALSE;
2669 fNoIconsDirs = FALSE;
2670 fFolderAfterExtract = FALSE;
2671 fVerify = TRUE;
2672 fNoSearch = TRUE;
2673 DosSetVerify(TRUE);
2674 fForceUpper = FALSE;
2675 fForceLower = TRUE;
2676 fArcStuffVisible = TRUE;
2677 fVTreeOpensWPS = FALSE;
2678 fRemoteBug = TRUE;
2679 fDragndropDlg = TRUE;
2680 fMinOnOpen = FALSE;
2681 fQuickArcFind = TRUE;
2682 fNoRemovableScan = FALSE;
[783]2683 FilesToGet = FILESTOGET_MAX;
[551]2684 fFreeTree = FALSE;
2685 fSplitStatus = TRUE;
2686 fAutoTile = TRUE;
2687 fSaveState = TRUE;
2688 fStartMinimized = FALSE;
2689 fStartMaximized = FALSE;
2690 fDataMin = TRUE;
2691 ulCnrType = CCS_EXTENDSEL;
2692 fNoTreeGap = FALSE;
2693 {
2694 ULONG flWindowAttr;
[2]2695
[551]2696 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
2697 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2698 &flWindowAttr, sizeof(ULONG));
2699 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2700 &flWindowAttr, sizeof(ULONG));
2701 }
2702 detailslongname = FALSE;
2703 detailssubject = FALSE;
2704 detailsea = TRUE;
2705 detailssize = TRUE;
2706 detailsicon = TRUE;
2707 detailslwdate = TRUE;
2708 detailslwtime = TRUE;
2709 detailsladate = FALSE;
2710 detailslatime = FALSE;
2711 detailscrdate = FALSE;
2712 detailscrtime = FALSE;
2713 detailsattr = TRUE;
2714 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2715 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2716 if (hwndMain) {
[2]2717
[551]2718 SWP swp;
[2]2719
[551]2720 if (WinQueryWindowPos(hwndMain, &swp)) {
2721 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2722 swp.cx / 5,
2723 swp.cy -
2724 (WinQuerySysValue(HWND_DESKTOP, SV_CYICON) * 2),
2725 SWP_MOVE | SWP_SIZE);
2726 }
2727 }
2728 if (hwndTree) {
[2]2729
[551]2730 CNRINFO cnri;
2731 ULONG flWindowAttr = (CV_TREE | CV_TEXT |
2732 CV_FLOW | CA_TREELINE | CV_MINI);
[2]2733
[551]2734 memset(&cnri, 0, sizeof(cnri));
2735 cnri.cb = sizeof(cnri);
2736 WinSendMsg(WinWindowFromID
2737 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2738 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2739 cnri.flWindowAttr = flWindowAttr;
2740 WinSendMsg(WinWindowFromID
2741 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2742 CM_SETCNRINFO, MPFROMP(&cnri),
2743 MPFROMLONG(CMA_FLWINDOWATTR));
2744 }
2745 break;
[2]2746
[551]2747 case CFG9_WINDOZETHINK:
2748 fTileBackwards = FALSE;
2749 ulCnrType = CCS_MULTIPLESEL;
2750 fFollowTree = TRUE;
2751 fTopDir = FALSE;
2752 fSwitchTree = TRUE;
2753 fSwitchTreeOnFocus = FALSE;
2754 fSwitchTreeExpand = TRUE;
2755 fCollapseFirst = TRUE;
2756 fDCOpens = FALSE;
2757 {
2758 ULONG flWindowAttr;
[2]2759
[551]2760 flWindowAttr = CV_NAME | CV_FLOW | CA_DETAILSVIEWTITLES;
2761 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2762 &flWindowAttr, sizeof(ULONG));
2763 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2764 &flWindowAttr, sizeof(ULONG));
2765 }
2766 fLinkSetsIcon = FALSE;
2767 fFreeTree = FALSE;
2768 fNoTreeGap = TRUE;
2769 fExternalArcboxes = TRUE;
2770 fExternalViewer = TRUE;
2771 fExternalCollector = TRUE;
2772 fExternalINIs = TRUE;
2773 fUserListSwitches = TRUE;
2774 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
2775 MPVOID);
2776 if (hwndTree) {
[2]2777
[551]2778 CNRINFO cnri;
2779 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_ICON |
2780 CV_FLOW | CA_TREELINE;
[2]2781
[551]2782 memset(&cnri, 0, sizeof(cnri));
2783 cnri.cb = sizeof(cnri);
2784 WinSendMsg(WinWindowFromID
2785 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2786 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2787 cnri.flWindowAttr = flWindowAttr;
2788 WinSendMsg(WinWindowFromID
2789 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2790 CM_SETCNRINFO, MPFROMP(&cnri),
2791 MPFROMLONG(CMA_FLWINDOWATTR));
2792 }
2793 if (hwndMain) {
2794 if (fAutoView)
2795 WinSendMsg(hwndMain, WM_COMMAND,
2796 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2797 if (!fDrivebar)
2798 WinSendMsg(hwndMain, WM_COMMAND,
2799 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2800 {
2801 SWP swp;
[2]2802
[551]2803 if (WinQueryWindowPos(hwndMain, &swp)) {
2804 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2805 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2806 }
2807 }
2808 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
2809 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1L), MPVOID);
2810 }
2811 return 0;
[2]2812
[551]2813 case CFG9_DOSTHINK:
2814 fTileBackwards = TRUE;
2815 ulCnrType = CCS_MULTIPLESEL;
2816 fSwitchTree = TRUE;
2817 fSwitchTreeOnFocus = FALSE;
2818 fSwitchTreeExpand = TRUE;
2819 fCollapseFirst = TRUE;
2820 fFollowTree = TRUE;
2821 fTopDir = FALSE;
2822 if (hwndMain) {
2823 if (!fTextTools)
2824 WinSendMsg(hwndMain, WM_COMMAND,
2825 MPFROM2SHORT(IDM_TEXTTOOLS, 0), MPVOID);
2826 }
2827 {
2828 ULONG flWindowAttr;
[2]2829
[551]2830 flWindowAttr = CV_TEXT | CV_FLOW | CA_DETAILSVIEWTITLES;
2831 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2832 &flWindowAttr, sizeof(ULONG));
2833 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2834 &flWindowAttr, sizeof(ULONG));
2835 }
2836 if (hwndTree) {
[2]2837
[551]2838 CNRINFO cnri;
2839 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
[2]2840
[551]2841 memset(&cnri, 0, sizeof(cnri));
2842 cnri.cb = sizeof(cnri);
2843 WinSendMsg(WinWindowFromID
2844 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2845 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2846 cnri.flWindowAttr = flWindowAttr;
2847 WinSendMsg(WinWindowFromID
2848 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2849 CM_SETCNRINFO, MPFROMP(&cnri),
2850 MPFROMLONG(CMA_FLWINDOWATTR));
2851 }
2852 /* intentional fallthru */
2853 case CFG9_1X:
2854 if (SHORT1FROMMP(mp1) == CFG9_1X) {
2855 fTileBackwards = FALSE;
2856 ulCnrType = CCS_MULTIPLESEL | CCS_EXTENDSEL;
2857 fSwitchTree = FALSE;
2858 fSwitchTreeOnFocus = FALSE;
2859 fSwitchTreeExpand = FALSE;
2860 fCollapseFirst = FALSE;
2861 fFollowTree = FALSE;
2862 fNoSearch = TRUE;
2863 }
2864 fAutoTile = TRUE;
2865 fSaveState = TRUE;
2866 fDCOpens = FALSE;
2867 fLinkSetsIcon = FALSE;
2868 fFreeTree = FALSE;
2869 fNoTreeGap = TRUE;
2870 fExternalArcboxes = TRUE;
2871 fExternalViewer = TRUE;
2872 fExternalCollector = TRUE;
2873 fExternalINIs = TRUE;
2874 fUserListSwitches = TRUE;
2875 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
2876 MPVOID);
2877 if (hwndTree) {
[2]2878
[551]2879 CNRINFO cnri;
2880 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
[2]2881
[551]2882 memset(&cnri, 0, sizeof(cnri));
2883 cnri.cb = sizeof(cnri);
2884 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
2885 TREE_CNR),
2886 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2887 cnri.flWindowAttr = flWindowAttr;
2888 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
2889 TREE_CNR),
2890 CM_SETCNRINFO,
2891 MPFROMP(&cnri), MPFROMLONG(CMA_FLWINDOWATTR));
2892 }
2893 if (hwndMain) {
2894 if (fAutoView)
2895 WinSendMsg(hwndMain, WM_COMMAND,
2896 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2897 if (fUserComboBox)
2898 WinSendMsg(hwndMain, WM_COMMAND,
2899 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2900 {
2901 SWP swp;
[2]2902
[551]2903 if (WinQueryWindowPos(hwndMain, &swp)) {
2904 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2905 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2906 }
2907 }
2908 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
2909 PostMsg(MainObjectHwnd, UM_SETDIR, MPVOID, MPVOID);
2910 }
2911 return 0;
[2]2912
[551]2913 case DID_CANCEL:
2914 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2915
[551]2916 case DID_OK:
2917 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2918 return 0;
[2]2919
[551]2920 default:
2921 return 0;
2922 }
[961]2923 // Save new details settings and refresh windows
[551]2924 PrfWriteProfileData(fmprof, appname, "DetailsLongname",
2925 &detailslongname, sizeof(BOOL));
2926 PrfWriteProfileData(fmprof, appname, "DetailsSubject",
2927 &detailssubject, sizeof(BOOL));
2928 PrfWriteProfileData(fmprof, appname, "DetailsEA",
2929 &detailsea, sizeof(BOOL));
2930 PrfWriteProfileData(fmprof, appname, "DetailsSize",
2931 &detailssize, sizeof(BOOL));
2932 PrfWriteProfileData(fmprof, appname, "DetailsIcon",
2933 &detailsicon, sizeof(BOOL));
2934 PrfWriteProfileData(fmprof, appname, "DetailsLWDate",
2935 &detailslwdate, sizeof(BOOL));
2936 PrfWriteProfileData(fmprof, appname, "DetailsLWTime",
2937 &detailslwtime, sizeof(BOOL));
2938 PrfWriteProfileData(fmprof, appname, "DetailsLADate",
2939 &detailsladate, sizeof(BOOL));
2940 PrfWriteProfileData(fmprof, appname, "DetailsLATime",
2941 &detailslatime, sizeof(BOOL));
2942 PrfWriteProfileData(fmprof, appname, "DetailsCRDate",
2943 &detailscrdate, sizeof(BOOL));
2944 PrfWriteProfileData(fmprof, appname, "DetailsCRTime",
2945 &detailscrtime, sizeof(BOOL));
2946 PrfWriteProfileData(fmprof, appname, "DetailsAttr",
2947 &detailsattr, sizeof(BOOL));
2948 if (hwndMain) {
[961]2949 // Save state and restore to refresh windows with new settings
[789]2950 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
[961]2951 // Tell window procedure to close container windows
[789]2952 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
[961]2953 // Restore saved state
[551]2954 PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
[2]2955 }
[551]2956 }
2957 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
2958 UM_UNDO, MPVOID, MPVOID);
2959 return 0;
[2]2960
[551]2961 case WM_CLOSE:
2962 break;
[2]2963 }
[551]2964 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2965}
2966
[917]2967struct
2968{
2969 USHORT usMenuId;
2970 USHORT usFrameId;
2971 ULONG ulTitle;
2972 PFNWP pfnPageProc;
2973 HWND hwnd;
2974 ULONG ulHelpId;
2975 ULONG ulPageId;
2976} np[] = {
2977 { IDM_DIRCNRSETTINGS, CFGD_FRAME, IDS_NOTEDIRCNRS1TEXT, CfgDDlgProc, 0, 0, 0 },
[953]2978 { IDM_DIRVIEWSETTINGS, CFG5_FRAME, IDS_NOTEDIRVIEW1TEXT, Cfg5DlgProc, 0, 0, 0},
2979 { IDM_DIRSORTSETTINGS, CFG6_FRAME, IDS_NOTEDIRSORT1TEXT, Cfg6DlgProc, 0, 0, 0 },
2980 { IDM_COLLECTORVIEWSETTINGS, CFG5_FRAME, IDS_NOTECOLVIEW1TEXT, Cfg7DlgProc, 0, 0, 0 },
2981 { IDM_COLLECTORSORTSETTINGS, CFG6_FRAME, IDS_NOTECOLSORT1TEXT, Cfg8DlgProc, 0, 0, 0 },
[917]2982 { IDM_ARCHIVERSETTINGS, CFGA_FRAME, IDS_NOTEARCHIVER1TEXT, CfgADlgProc, 0, 0, 0 },
[953]2983 { IDM_TREECNRVIEWSETTINGS, CFGT_FRAME, IDS_NOTETREE1TEXT, CfgTDlgProc, 0, 0, 0 },
2984 { IDM_TREECNRSORTSETTINGS, CFGTS_FRAME, IDS_NOTETREESORT1TEXT, CfgTSDlgProc, 0, 0, 0 },
2985 { IDM_VIEWERSETTINGS, CFGV_FRAME, IDS_NOTEVIEWERS1TEXT, CfgVDlgProc, 0, 0, 0 },
2986 { IDM_VIEWERSETTINGS2, CFGH_FRAME, IDS_NOTEVIEWERS3TEXT, CfgHDlgProc, 0, 0, 0 },
[917]2987 { IDM_COMPARESETTINGS, CFGC_FRAME, IDS_NOTECOMPARE1TEXT, CfgCDlgProc, 0, 0, 0 },
[953]2988 { IDM_MONOLITHICSETTINGS, CFGM_FRAME, IDS_NOTEMONOLITHIC1TEXT, CfgMDlgProc, 0, 0, 0 },
2989 { IDM_GENERALSETTINGS, CFGG_FRAME, IDS_NOTEGENERAL1TEXT, CfgGDlgProc, 0, 0, 0 },
2990 { IDM_SCANSETTINGS, CFGS_FRAME, IDS_NOTESCANNING1TEXT, CfgSDlgProc, 0, 0, 0 },
2991 { IDM_BUBBLESSETTINGS, CFGB_FRAME, IDS_NOTEBUBBLE1TEXT, CfgBDlgProc, 0, 0, 0 },
[917]2992 { IDM_QUICKSETTINGS, CFG9_FRAME, IDS_NOTEQUICK1TEXT, Cfg9DlgProc, 0, 0, 0 },
2993 { 0, 0, 0, NULL, 0, 0, 0 } // usFrameId 0 is end marker
[551]2994};
[2]2995
[953]2996static PSZ pszIK_LastSettingsPage = "LastSettingsPage";
2997
[551]2998MRESULT EXPENTRY CfgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2999{
[551]3000 HWND hwndTemp;
[2]3001 USHORT attrib = BKA_FIRST;
[551]3002 INT x;
[917]3003 ULONG ulPageId;
[953]3004 UINT uPageIndex;
[2]3005
[551]3006 switch (msg) {
3007 case WM_INITDLG:
3008 hwndNotebook = hwnd;
[953]3009 uPageIndex = 0;
3010
3011 // If generic call, try to find conditional cascade default
3012 // 15 Feb 08 SHL fixme to be gone when/if IDM_NOTEBOOK gone?
3013 if (mp2 == MPFROMLONG(IDM_NOTEBOOK)) {
3014 DbgMsg(pszSrcFile, __LINE__, "Trying to translate IDM_NOTEBOOK");
3015 hwndTemp = WinQueryWindow(hwnd, QW_OWNER);
3016 if (hwndTemp != HWND_DESKTOP) {
3017 HWND hwndMenu;
3018 // Owner is frame if not applet
3019 hwndMenu = WinWindowFromID(hwndTemp, FID_MENU);
3020 if (hwndMenu == NULLHANDLE)
3021 Runtime_Error(pszSrcFile, __LINE__, "FID_MENU");
3022 else {
3023 MENUITEM mi;
3024 BOOL ok;
3025 memset(&mi, 0, sizeof(mi));
3026 ok = (BOOL)WinSendMsg(hwndMenu,
3027 MM_QUERYITEM,
3028 MPFROM2SHORT(IDM_NOTEBOOKSUBMENU, TRUE),
3029 MPFROMP(&mi));
3030 if (!ok)
3031 Runtime_Error(pszSrcFile, __LINE__, "IDM_NOTEBOOKSUBMENU");
3032 else {
3033 mp2 = WinSendMsg(mi.hwndSubMenu, MM_QUERYDEFAULTITEMID, MPVOID, MPVOID);
3034 if (!mp2)
3035 Runtime_Error(pszSrcFile, __LINE__, "MM_QUERYDEFAULTITEMID");
3036 }
3037 }
[2]3038 }
[551]3039 }
[953]3040
[551]3041 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
3042 WinSendDlgItemMsg(hwnd,
3043 CFG_NOTEBOOK,
3044 BKM_SETDIMENSIONS,
3045 MPFROM2SHORT(82, 24), MPFROMLONG(BKA_MAJORTAB));
3046 WinSendDlgItemMsg(hwnd,
3047 CFG_NOTEBOOK,
3048 BKM_SETDIMENSIONS,
3049 MPFROM2SHORT(20, 20), MPFROMLONG(BKA_PAGEBUTTON));
3050 WinSendDlgItemMsg(hwnd,
3051 CFG_NOTEBOOK,
3052 BKM_SETDIMENSIONS,
3053 MPFROM2SHORT(0, 0), MPFROMLONG(BKA_MINORTAB));
[953]3054
3055 // Build and insert notebook pages
[917]3056 for (x = 0; np[x].usFrameId; x++) {
[551]3057 hwndTemp = WinLoadDlg(HWND_DESKTOP,
3058 HWND_DESKTOP,
[917]3059 np[x].pfnPageProc, FM3ModHandle, np[x].usFrameId, MPVOID);
3060 if (!hwndTemp) {
3061 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
3062 "Can not load settings page %u", x);
3063 }
3064 else {
3065 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG)hwnd);
[551]3066 np[x].hwnd = hwndTemp;
[917]3067 np[x].ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3068 CFG_NOTEBOOK,
3069 BKM_INSERTPAGE,
3070 MPFROMLONG(BKA_FIRST),
3071 MPFROM2SHORT(BKA_AUTOPAGESIZE |
3072 BKA_STATUSTEXTON |
3073 BKA_MAJOR, attrib));
[551]3074 attrib = BKA_LAST;
3075 WinSendDlgItemMsg(hwnd,
3076 CFG_NOTEBOOK,
3077 BKM_SETPAGEWINDOWHWND,
[917]3078 MPFROMLONG(np[x].ulPageId), MPFROMLONG(np[x].hwnd));
[551]3079 WinSendDlgItemMsg(hwnd,
3080 CFG_NOTEBOOK,
3081 BKM_SETTABTEXT,
[917]3082 MPFROMLONG(np[x].ulPageId),
3083 MPFROMP(GetPString(np[x].ulTitle)));
[551]3084 WinSendDlgItemMsg(hwnd,
3085 CFG_NOTEBOOK,
3086 BKM_SETSTATUSLINETEXT,
[917]3087 MPFROMLONG(np[x].ulPageId),
3088 MPFROMP(GetPString(np[x].ulTitle + 1)));
[953]3089 if (LONGFROMMP(mp2) == np[x].usMenuId)
3090 uPageIndex = x; // Remember selected page
[2]3091 }
[953]3092 } // for pages
3093
[917]3094 // If quick settings page requested, assume request is for first time init
3095 // Turn to cfg page and show help
3096 // Page will not be available if running fm/2 lite or if load error
[953]3097 // 15 Feb 08 SHL fixme to do just once?
[917]3098 if (mp2 == MPFROMLONG(IDM_QUICKSETTINGS) &&
[953]3099 x-- > 0 &&
3100 np[x].hwnd &&
3101 np[x].usFrameId == CFG9_FRAME)
3102 {
[919]3103 // 10 Jan 08 SHL fixme to document what UM_SETDIR 1 means
[917]3104 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1), MPVOID);
3105 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3106 BKM_TURNTOPAGE, MPFROMLONG(np[x].ulPageId), MPVOID);
3107 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x].hwnd), MPVOID);
3108 PostMsg(np[x].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
[551]3109 }
[953]3110 else if (uPageIndex >= x) {
3111 Runtime_Error(pszSrcFile, __LINE__, "uPageIndex corrupted (%u)",
3112 uPageIndex);
3113 uPageIndex = 0;
[551]3114 }
[953]3115 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3116 BKM_TURNTOPAGE, MPFROMLONG(np[uPageIndex].ulPageId), MPVOID);
3117 // 15 Feb 08 SHL fixme to put focus on first field of page
[2]3118
[906]3119 break;
3120
[551]3121 case UM_FOCUSME:
3122 if (mp1)
3123 WinSetActiveWindow(HWND_DESKTOP, (HWND) mp1);
3124 break;
[2]3125
[551]3126 case UM_SETUP:
3127 WinSetActiveWindow(HWND_DESKTOP, WinQueryWindow(hwnd, QW_OWNER));
3128 WinSetActiveWindow(HWND_DESKTOP, hwnd);
3129 return 0;
[2]3130
[551]3131 case WM_COMMAND:
3132 switch (SHORT1FROMMP(mp1)) {
3133 case DID_OK:
3134 WinDismissDlg(hwnd, 1);
3135 break;
[2]3136
[551]3137 case DID_CANCEL:
3138 // Tell current page to undo itself in case changed and still alive
[953]3139 SaveLastPageIndex(hwnd);
[917]3140 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
[551]3141 CFG_NOTEBOOK,
3142 BKM_QUERYPAGEID,
3143 MPFROMLONG(0),
3144 MPFROM2SHORT(BKA_TOP, 0));
3145 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3146 CFG_NOTEBOOK,
3147 BKM_QUERYPAGEWINDOWHWND,
[917]3148 MPFROMLONG(ulPageId), MPVOID);
[551]3149 if (hwndTemp)
3150 WinSendMsg(hwndTemp, UM_UNDO, MPVOID, MPVOID);
[187]3151
[551]3152 WinDismissDlg(hwnd, 0);
3153 break;
[2]3154
[551]3155 case IDM_HELP: /* relay message to appropriate page's window */
[917]3156 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
[551]3157 CFG_NOTEBOOK,
3158 BKM_QUERYPAGEID,
3159 MPFROMLONG(0),
3160 MPFROM2SHORT(BKA_TOP, 0));
3161 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3162 CFG_NOTEBOOK,
3163 BKM_QUERYPAGEWINDOWHWND,
[917]3164 MPFROMLONG(ulPageId), MPVOID);
[551]3165 if (hwndTemp)
3166 PostMsg(hwndTemp, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
[2]3167 break;
[551]3168 }
3169 return 0;
[2]3170
[551]3171 case UM_UNDO:
[917]3172 for (x = 0; np[x].usFrameId; x++) {
[551]3173 if (np[x].hwnd)
3174 WinSendMsg(np[x].hwnd, UM_UNDO, MPVOID, MPVOID);
3175 }
3176 break;
3177
3178 case WM_DESTROY:
[917]3179 if (np[0].usFrameId) {
3180 for (x = 1; np[x].usFrameId; x++) {
[551]3181 if (np[x].hwnd) {
3182 WinSendMsg(np[x].hwnd, WM_CLOSE, MPVOID, MPVOID);
3183 np[x].hwnd = (HWND) 0;
[917]3184 np[x].ulPageId = 0;
[551]3185 }
[2]3186 }
[551]3187 WinSendMsg(np[0].hwnd, WM_CLOSE, MPVOID, MPVOID);
3188 np[0].hwnd = (HWND) 0;
[917]3189 np[0].ulPageId = 0;
[551]3190 }
3191 hwndNotebook = (HWND) 0;
3192 break;
[917]3193 case WM_CLOSE:
[953]3194 SaveLastPageIndex(hwnd);
[917]3195 break;
[2]3196 }
[551]3197 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]3198}
[953]3199/**
3200 * Initialize config submenu
3201 * @param hwndMenu is window handle
3202 * @param fIsLite is true if called for fm/2 lite
3203 */
[783]3204
[953]3205VOID CfgMenuInit(HWND hwndMenu, BOOL fIsLite)
3206{
3207 UINT uPageIndex;
3208 ULONG ulSize = sizeof(uPageIndex);
3209 UINT x;
3210 PrfQueryProfileData(fmprof, appname, pszIK_LastSettingsPage, &uPageIndex, &ulSize);
3211 for (x = 0; x < uPageIndex && np[x].usFrameId; x++)
3212 ; // Search
3213 if (np[x].usMenuId)
3214 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[uPageIndex].usMenuId);
3215 // If lite, delete excess items from menus and tables
3216 if (fIsLite) {
3217 WinSendMsg(hwndMenu,
3218 MM_DELETEITEM,
3219 MPFROM2SHORT(IDM_QUICKSETTINGS, FALSE), MPVOID);
3220 // If fm/2 lite drop quick setting page
3221 for (x = 0; np[x].usFrameId && np[x].usFrameId != CFG9_FRAME; x++)
3222 ; // Scan
3223 np[x].usFrameId = 0;
3224 }
3225}
3226
3227static VOID SaveLastPageIndex(HWND hwnd)
3228{
3229 HWND hwndOwner;
3230 HWND hwndMenu;
3231 UINT x;
3232 ULONG ulPageId;
3233
3234 // Owner is frame if not applet
3235 hwndOwner = WinQueryWindow(hwnd, QW_OWNER);
3236 if (hwndOwner != HWND_DESKTOP) {
3237 ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3238 CFG_NOTEBOOK,
3239 BKM_QUERYPAGEID,
3240 MPFROMLONG(0),
3241 MPFROM2SHORT(BKA_TOP, 0));
3242 if (!ulPageId)
3243 Runtime_Error(pszSrcFile, __LINE__, "BKM_QUERYPAGEID");
3244 else {
3245 for (x = 0; np[x].usMenuId && np[x].ulPageId != ulPageId; x++)
3246 ; // Scan
3247 if (!np[x].usMenuId)
3248 Runtime_Error(pszSrcFile, __LINE__, "bad menu id %lu", ulPageId);
3249 else {
3250 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage,
3251 (PVOID)&x, sizeof(x));
3252 hwndMenu = WinWindowFromID(hwndOwner, FID_MENU);
3253 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[x].usMenuId);
3254 }
3255 }
3256 }
3257}
3258
[783]3259#pragma alloc_text(NOTEBOOK,CfgTDlgProc,CfgTSDlgProc,CfgMDlgProc)
[892]3260#pragma alloc_text(NOTEBOOK2,CfgADlgProc,CfgSDlgProc,CfgVDlgProc,CfgHDlgProc)
[783]3261#pragma alloc_text(NOTEBOOK3,CfgDDlgProc,Cfg5DlgProc,Cfg6DlgProc)
3262#pragma alloc_text(NOTEBOOK4,Cfg7DlgProc,Cfg8DlgProc,CfgCDlgProc)
3263#pragma alloc_text(NOTEBOOK5,CfgGDlgProc,CfgDlgProc,CfgBDlgProc)
[953]3264#pragma alloc_text(NOTEBOOK5,CfgMenuInit,SaveLastPageIndex)
Note: See TracBrowser for help on using the repository browser.