source: trunk/dll/notebook.c@ 1161

Last change on this file since 1161 was 1161, checked in by John Small, 17 years ago

Ticket 187: Draft 1: Functions only

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