source: trunk/dll/notebook.c@ 1093

Last change on this file since 1093 was 1093, checked in by Gregg Young, 17 years ago

Reverted CS 1092because of intermitant trap when a variable was removed.

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