source: trunk/dll/notebook.c@ 1096

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

Enviroment changesbacked out before 3.12 release. Ned to fix trap

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 121.7 KB
RevLine 
[123]1
2/***********************************************************************
3
4 $Id: notebook.c 1096 2008-07-22 01:58:05Z 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{
[1096]1170 BOOL fShowEnvChanged = FALSE;
1171 BOOL fTreeEnvVarListChanged = FALSE;
1172
[551]1173 switch (msg) {
1174 case WM_INITDLG:
[1083]1175 WinSendDlgItemMsg(hwnd, CFGT_ENVVARLIST, EM_SETTEXTLIMIT,
1176 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
[551]1177 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1178 break;
[2]1179
[551]1180 case UM_UNDO:
1181 WinCheckButton(hwnd, CFGT_FOLLOWTREE, fFollowTree);
1182 WinCheckButton(hwnd, CFGT_TOPDIR, fTopDir);
1183 WinCheckButton(hwnd, CFGT_DCOPENS, fDCOpens);
1184 WinCheckButton(hwnd, CFGT_VTREEOPENSWPS, fVTreeOpensWPS);
1185 WinCheckButton(hwnd, CFGT_COLLAPSEFIRST, fCollapseFirst);
1186 WinCheckButton(hwnd, CFGT_SWITCHTREEONFOCUS, fSwitchTreeOnFocus);
1187 WinCheckButton(hwnd, CFGT_SWITCHTREE, fSwitchTree);
1188 WinCheckButton(hwnd, CFGT_SWITCHTREEEXPAND, fSwitchTreeExpand);
1189 WinCheckButton(hwnd, CFGT_SHOWENV, fShowEnv);
[1083]1190 WinSetDlgItemText(hwnd, CFGT_ENVVARLIST, pszTreeEnvVarList);
[551]1191 return 0;
[2]1192
[1080]1193 case WM_HELP:
1194 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1195 break;
1196
1197 case WM_CHAR:
1198 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1199 switch (CHARMSG(&msg)->vkey) {
1200 case VK_F3:
1201 case VK_ENTER:
1202 case VK_NEWLINE:
1203 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1204 return 0;
1205 break;
1206 case VK_ESC:
1207 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1208 return 0;
1209 break;
1210 case VK_F1:
1211 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1212 return 0;
1213 break;
1214 }
1215 }
1216 break;
1217
[551]1218 case WM_COMMAND:
1219 switch (SHORT1FROMMP(mp1)) {
1220 case IDM_UNDO:
1221 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1222 break;
[2]1223
[551]1224 case DID_CANCEL:
1225 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1226
[551]1227 case DID_OK:
1228 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1229 break;
[2]1230
[551]1231 case IDM_HELP:
1232 if (hwndHelp)
1233 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1234 MPFROM2SHORT(HELP_CFGT, 0), MPFROMSHORT(HM_RESOURCEID));
1235 break;
1236 }
1237 return 0;
[2]1238
[551]1239 case WM_CLOSE:
1240 fVTreeOpensWPS = WinQueryButtonCheckstate(hwnd, CFGT_VTREEOPENSWPS);
1241 PrfWriteProfileData(fmprof, FM3Str, "VTreeOpensWPS", &fVTreeOpensWPS,
1242 sizeof(BOOL));
1243 fCollapseFirst = WinQueryButtonCheckstate(hwnd, CFGT_COLLAPSEFIRST);
1244 PrfWriteProfileData(fmprof, appname, "CollapseFirst", &fCollapseFirst,
1245 sizeof(BOOL));
1246 fSwitchTreeOnFocus = WinQueryButtonCheckstate(hwnd,
1247 CFGT_SWITCHTREEONFOCUS);
1248 PrfWriteProfileData(fmprof, appname, "SwitchTreeOnFocus",
1249 &fSwitchTreeOnFocus, sizeof(BOOL));
1250 fSwitchTreeExpand = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREEEXPAND);
1251 PrfWriteProfileData(fmprof, appname, "SwitchTreeExpand",
1252 &fSwitchTreeExpand, sizeof(BOOL));
1253 fSwitchTree = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREE);
1254 PrfWriteProfileData(fmprof, appname, "SwitchTree", &fSwitchTree,
1255 sizeof(BOOL));
1256 fFollowTree = WinQueryButtonCheckstate(hwnd, CFGT_FOLLOWTREE);
1257 PrfWriteProfileData(fmprof, appname, "FollowTree", &fFollowTree,
1258 sizeof(BOOL));
1259 fTopDir = WinQueryButtonCheckstate(hwnd, CFGT_TOPDIR);
1260 PrfWriteProfileData(fmprof, appname, "TopDir", (PVOID) & fTopDir,
1261 sizeof(BOOL));
1262 fDCOpens = WinQueryButtonCheckstate(hwnd, CFGT_DCOPENS);
1263 PrfWriteProfileData(fmprof, FM3Str, "DoubleClickOpens", &fDCOpens,
1264 sizeof(BOOL));
[1096]1265 fShowEnvChanged = (fShowEnv != WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV));
[551]1266 fShowEnv = WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV);
1267 PrfWriteProfileData(fmprof, appname, "ShowEnv", &fShowEnv, sizeof(BOOL));
[1083]1268 {
[1096]1269 char * pszTemp = xmalloc(WinQueryDlgItemTextLength(hwnd, CFGT_ENVVARLIST) + 1, pszSrcFile, __LINE__);
[1083]1270 if (pszTemp)
1271 {
1272 WinQueryDlgItemText(hwnd, CFGT_ENVVARLIST, MaxComLineStrg, pszTemp);
1273 strupr(pszTemp);
[1096]1274 if (strcmp(pszTemp, pszTreeEnvVarList)) {
1275 fTreeEnvVarListChanged = TRUE;
[1083]1276 strcpy(pszTreeEnvVarList, pszTemp);
1277 PrfWriteProfileString(fmprof, appname, "TreeEnvVarList", pszTreeEnvVarList);
1278 }
1279 free(pszTemp);
1280 } else {
[1096]1281 Runtime_Error(pszSrcFile, __LINE__, "Unable to allocate memory");
[1083]1282 }
[1096]1283 if (hwndTree && (fShowEnvChanged || (fShowEnv && fTreeEnvVarListChanged)))
1284 {
1285 PCNRITEM pci = WinSendMsg(WinWindowFromID
1286 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), CM_QUERYRECORDEMPHASIS,
1287 MPFROMLONG(CMA_FIRST),
1288 MPFROMSHORT(CRA_SELECTED));
1289 PostMsg(WinWindowFromID
1290 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), WM_COMMAND,
1291 MPFROM2SHORT(IDM_RESCAN, 0), MPVOID);
1292 PostMsg(hwndTree, UM_SHOWME, MPFROMP(pci->pszFileName), MPVOID);
1293
1294 }
[1083]1295 }
[551]1296 break;
[2]1297 }
[551]1298 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1299}
1300
[551]1301MRESULT EXPENTRY CfgGDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1302{
[551]1303 switch (msg) {
1304 case WM_INITDLG:
[985]1305 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_SETTEXTLIMIT,
1306 MPFROMSHORT(8), MPVOID);
1307 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_OVERRIDESETLIMITS,
1308 MPFROMLONG(CMDLNLNGTH_MAX), MPFROMLONG(CMDLNLNGTH_MIN));
[551]1309 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1310 break;
[2]1311
[1080]1312 case WM_HELP:
1313 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1314 break;
1315
1316 case WM_CHAR:
1317 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1318 switch (CHARMSG(&msg)->vkey) {
1319 case VK_F3:
1320 case VK_ENTER:
1321 case VK_NEWLINE:
1322 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1323 return 0;
1324 break;
1325 case VK_ESC:
1326 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1327 return 0;
1328 break;
1329 case VK_F1:
1330 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1331 return 0;
1332 break;
1333 }
1334 }
1335 break;
1336
[551]1337 case UM_UNDO:
1338 WinCheckButton(hwnd, CFGG_CONFIRMDELETE, fConfirmDelete);
1339 WinCheckButton(hwnd, CFGG_VERIFYWRITES, fVerify);
1340 WinCheckButton(hwnd, CFGG_LINKSETSICON, fLinkSetsIcon);
1341 WinCheckButton(hwnd, CFGG_DONTMOVEMOUSE, fDontMoveMouse);
1342 WinCheckButton(hwnd, CFGG_DEFAULTCOPY, fCopyDefault);
1343 WinCheckButton(hwnd, CFGG_IDLECOPY, fRealIdle);
1344 WinCheckButton(hwnd, CFGG_DNDDLG, fDragndropDlg);
1345 WinCheckButton(hwnd, CFGG_DEFAULTDELETEPERM, fDefaultDeletePerm);
1346 {
[575]1347 long th = fNoFinger ? 2 : (fNoDead ? 1 : 0);
[551]1348 WinCheckButton(hwnd, CFGG_NODEAD, th);
1349 }
1350 WinCheckButton(hwnd, CFGG_BORING, fDullMin);
1351 WinCheckButton(hwnd, CFGG_CUSTOMFILEDLG, fCustomFileDlg);
1352 WinCheckButton(hwnd, CFGG_FM2DELETES, fFM2Deletes);
1353 WinCheckButton(hwnd, CFGG_CONFIRMTARGET, fConfirmTarget);
1354 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
[1041]1355 WinCheckButton(hwnd, CFGG_TRASHCAN, fTrashCan);
[985]1356 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_SETCURRENTVALUE,
1357 MPFROMLONG(MaxComLineStrg), MPVOID);
[551]1358 return 0;
[2]1359
[551]1360 case UM_FOCUSME:
1361 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, IDM_HELP));
1362 return 0;
[2]1363
[551]1364 case UM_SETUP5:
1365 SetTargetDir(hwnd, FALSE);
1366 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1367 return 0;
[2]1368
[551]1369 case WM_CONTROL:
1370 switch (SHORT1FROMMP(mp1)) {
1371 case CFGG_TARGETDIR:
1372 switch (SHORT2FROMMP(mp1)) {
1373 case EN_SETFOCUS:
1374 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1375 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1376 break;
[2]1377 }
[551]1378 break;
1379 }
1380 return 0;
[2]1381
[551]1382 case WM_COMMAND:
1383 switch (SHORT1FROMMP(mp1)) {
1384 case IDM_UNDO:
1385 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1386 break;
[2]1387
[551]1388 case DID_CANCEL:
1389 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1390
[551]1391 case DID_OK:
1392 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1393 break;
[2]1394
[551]1395 case IDM_HELP:
1396 if (hwndHelp)
1397 WinSendMsg(hwndHelp,
1398 HM_DISPLAY_HELP,
1399 MPFROM2SHORT(HELP_CFGG, 0), MPFROMSHORT(HM_RESOURCEID));
1400 break;
1401 }
1402 return 0;
[2]1403
[551]1404 case WM_CLOSE:
1405 {
1406 long test;
[2]1407
[551]1408 test = WinQueryButtonCheckstate(hwnd, CFGG_NODEAD);
1409 fNoDead = (test == 1);
1410 fNoFinger = (test == 2);
1411 PrfWriteProfileData(fmprof, FM3Str, "NoDead", &fNoDead, sizeof(BOOL));
[2]1412 PrfWriteProfileData(fmprof,
[551]1413 FM3Str, "NoFinger", &fNoFinger, sizeof(BOOL));
1414 WinDestroyPointer(hptrFinger);
1415 if (!fNoDead)
1416 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER_ICON);
1417 else
1418 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER2_ICON);
1419 }
1420 fLinkSetsIcon = WinQueryButtonCheckstate(hwnd, CFGG_LINKSETSICON);
1421 PrfWriteProfileData(fmprof,
1422 appname,
1423 "LinkSetsIcon", &fLinkSetsIcon, sizeof(BOOL));
1424 fCustomFileDlg = WinQueryButtonCheckstate(hwnd, CFGG_CUSTOMFILEDLG);
1425 PrfWriteProfileData(fmprof,
1426 FM3Str,
1427 "CustomFileDlg", &fCustomFileDlg, sizeof(BOOL));
1428 fDullMin = WinQueryButtonCheckstate(hwnd, CFGG_BORING);
1429 PrfWriteProfileData(fmprof,
1430 FM3Str, "DullDatabar", &fDullMin, sizeof(BOOL));
1431 fConfirmDelete = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMDELETE);
1432 PrfWriteProfileData(fmprof,
1433 appname,
1434 "ConfirmDelete", &fConfirmDelete, sizeof(BOOL));
1435 fDontMoveMouse = WinQueryButtonCheckstate(hwnd, CFGG_DONTMOVEMOUSE);
1436 PrfWriteProfileData(fmprof,
1437 appname,
1438 "DontMoveMouse", &fDontMoveMouse, sizeof(BOOL));
1439 fCopyDefault = WinQueryButtonCheckstate(hwnd, CFGG_DEFAULTCOPY);
1440 PrfWriteProfileData(fmprof, appname, "DefaultCopy",
1441 &fCopyDefault, sizeof(BOOL));
1442 fRealIdle = WinQueryButtonCheckstate(hwnd, CFGG_IDLECOPY);
1443 PrfWriteProfileData(fmprof, appname, "IdleCopy",
1444 &fRealIdle, sizeof(BOOL));
1445 fDragndropDlg = WinQueryButtonCheckstate(hwnd, CFGG_DNDDLG);
1446 PrfWriteProfileData(fmprof, appname, "Drag&DropDlg",
1447 &fDragndropDlg, sizeof(BOOL));
1448 fVerify = WinQueryButtonCheckstate(hwnd, CFGG_VERIFYWRITES);
1449 PrfWriteProfileData(fmprof, appname, "VerifyWrites",
1450 &fVerify, sizeof(BOOL));
1451 DosSetVerify(fVerify);
1452 fDefaultDeletePerm = WinQueryButtonCheckstate(hwnd,
1453 CFGG_DEFAULTDELETEPERM);
1454 PrfWriteProfileData(fmprof, appname, "DefaultDeletePerm",
1455 &fDefaultDeletePerm, sizeof(BOOL));
1456 fFM2Deletes = WinQueryButtonCheckstate(hwnd, CFGG_FM2DELETES);
1457 PrfWriteProfileData(fmprof, FM3Str, "FM2Deletes",
[1041]1458 &fFM2Deletes, sizeof(BOOL));
1459 fTrashCan = WinQueryButtonCheckstate(hwnd, CFGG_TRASHCAN);
1460 PrfWriteProfileData(fmprof, FM3Str, "TrashCan",
1461 &fTrashCan, sizeof(BOOL));
[551]1462 fConfirmTarget = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMTARGET);
1463 PrfWriteProfileData(fmprof, appname, "ConfirmTarget",
[985]1464 &fConfirmTarget, sizeof(BOOL));
1465 {
1466 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_QUERYVALUE,
1467 MPFROMP(&MaxComLineStrg), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
1468 if (MaxComLineStrg < CMDLNLNGTH_MIN)
1469 MaxComLineStrg = CMDLNLNGTH_MIN;
1470 else if (MaxComLineStrg > CMDLNLNGTH_MAX)
1471 MaxComLineStrg = CMDLNLNGTH_MAX;
1472 PrfWriteProfileData(fmprof,
1473 appname, "MaxComLineStrg", &MaxComLineStrg, sizeof(ULONG));
1474 }
[551]1475 break;
[2]1476 }
[551]1477 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1478}
1479
[551]1480MRESULT EXPENTRY CfgCDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1481{
[551]1482 switch (msg) {
1483 case WM_INITDLG:
1484 WinSendDlgItemMsg(hwnd, CFGC_COMPARE, EM_SETTEXTLIMIT,
[985]1485 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID);
[551]1486 WinSendDlgItemMsg(hwnd, CFGC_DIRCOMPARE, EM_SETTEXTLIMIT,
[985]1487 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID);
[551]1488 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1489 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1490 break;
[2]1491
[1080]1492 case WM_HELP:
1493 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1494 break;
1495
1496 case WM_CHAR:
1497 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1498 switch (CHARMSG(&msg)->vkey) {
1499 case VK_F3:
1500 case VK_ENTER:
1501 case VK_NEWLINE:
1502 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1503 return 0;
1504 break;
1505 case VK_ESC:
1506 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1507 return 0;
1508 break;
1509 case VK_F1:
1510 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1511 return 0;
1512 break;
1513 }
1514 }
1515 break;
1516
[551]1517 case UM_UNDO:
1518 WinSetDlgItemText(hwnd, CFGC_COMPARE, compare);
1519 WinSetDlgItemText(hwnd, CFGC_DIRCOMPARE, dircompare);
1520 return 0;
[2]1521
[551]1522 case WM_CONTROL:
1523 switch (SHORT1FROMMP(mp1)) {
1524 case CFGC_COMPARE:
1525 case CFGC_DIRCOMPARE:
1526 switch (SHORT2FROMMP(mp1)) {
1527 case EN_KILLFOCUS:
1528 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1529 break;
1530 case EN_SETFOCUS:
1531 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), TRUE);
1532 break;
[2]1533 }
[551]1534 break;
1535 }
1536 return 0;
[2]1537
[551]1538 case WM_COMMAND:
1539 switch (SHORT1FROMMP(mp1)) {
1540 case IDM_UNDO:
1541 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1542 break;
[2]1543
[551]1544 case DID_CANCEL:
1545 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1546
[551]1547 case DID_OK:
1548 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1549 break;
[2]1550
[551]1551 case IDM_HELP:
1552 if (hwndHelp)
1553 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1554 MPFROM2SHORT(HELP_CFGC, 0), MPFROMSHORT(HM_RESOURCEID));
1555 break;
[2]1556
[551]1557 case CFGC_FIND:
1558 {
[888]1559 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
[551]1560 USHORT id;
1561 HWND hwndFocus;
[2]1562
[551]1563 strcpy(filename, "*.EXE");
1564 hwndFocus = WinQueryFocus(HWND_DESKTOP);
1565 if (hwndFocus) {
1566 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
1567 switch (id) {
1568 case CFGC_COMPARE:
1569 case CFGC_DIRCOMPARE:
[917]1570 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
1571 BldQuotedFileName(szfilename, filename);
[888]1572 strcat(szfilename, " %a");
1573 WinSetDlgItemText(hwnd, id, szfilename);
[551]1574 }
1575 break;
1576 default:
1577 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
1578 break;
1579 }
1580 }
[2]1581 }
[551]1582 break;
1583 }
1584 return 0;
[2]1585
[551]1586 case WM_CLOSE:
[888]1587 {
[985]1588 CHAR *szCLBuf;
[920]1589 PSZ pszWorkBuf;
[888]1590
[985]1591 szCLBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__);
1592 if (!szCLBuf)
1593 return 0; //already complained
1594 pszWorkBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__);
1595 if (!pszWorkBuf) {
[1039]1596 free(szCLBuf);
[959]1597 return 0; //already complained
[985]1598 }
1599 WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, MaxComLineStrg, szCLBuf);
1600 szCLBuf[MaxComLineStrg - 1] = 0;
[930]1601 if (strcmp(szCLBuf, dircompare)){
1602 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1603 memcpy(dircompare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1604 if (!strchr(dircompare, '%') && strlen(dircompare) > 3)
1605 strcat(dircompare, " %a");
1606 }
[888]1607 PrfWriteProfileString(fmprof, appname, "DirCompare", dircompare);
[985]1608 WinQueryDlgItemText(hwnd, CFGC_COMPARE, MaxComLineStrg, szCLBuf);
1609 szCLBuf[MaxComLineStrg - 1] = 0;
1610 if (strcmp(szCLBuf, compare)){
1611 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1612 memcpy(compare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1613 if (!strchr(compare, '%') && strlen(compare) > 3)
1614 strcat(compare, " %a");
1615 }
[1039]1616 free(pszWorkBuf);
1617 free(szCLBuf);
[888]1618 PrfWriteProfileString(fmprof, appname, "Compare", compare);
1619 break;
1620 }
[2]1621 }
[917]1622 if (fCancelAction) {
[906]1623 fCancelAction = FALSE;
1624 WinDlgBox(HWND_DESKTOP,
[917]1625 hwnd,
1626 CfgDlgProc,
1627 FM3ModHandle,
1628 CFG_FRAME,
1629 MPFROMLONG(IDM_COMPARESETTINGS));
[906]1630 }
[551]1631 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1632}
1633
[551]1634MRESULT EXPENTRY CfgDDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1635{
[1080]1636
[551]1637 switch (msg) {
1638 case WM_INITDLG:
1639 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1640 break;
[2]1641
[551]1642 case UM_UNDO:
1643 WinCheckButton(hwnd, CFGD_UNHILITE, fUnHilite);
1644 WinCheckButton(hwnd, CFGD_SYNCUPDATES, fSyncUpdates);
1645 WinCheckButton(hwnd, CFGD_LOOKINDIR, fLookInDir);
1646 WinCheckButton(hwnd, CFGD_MINONOPEN, fMinOnOpen);
1647 WinCheckButton(hwnd, CFGD_SELECTEDALWAYS, fSelectedAlways);
1648 WinCheckButton(hwnd, CFGD_NOSEARCH, fNoSearch);
1649 WinCheckButton(hwnd, CFGD_EXTENDEDSEL,
1650 ((ulCnrType & CCS_EXTENDSEL) != 0));
1651 WinCheckButton(hwnd, CFGD_MULTIPLESEL,
1652 ((ulCnrType & CCS_MULTIPLESEL) != 0));
1653 WinCheckButton(hwnd, CFGD_LEAVETREE, fLeaveTree);
1654 WinCheckButton(hwnd, CFGD_NOFOLDMENU, fNoFoldMenu);
1655 return 0;
[2]1656
[1080]1657 case WM_HELP:
1658 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1659 break;
1660
1661 case WM_CHAR:
1662 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1663 switch (CHARMSG(&msg)->vkey) {
1664 case VK_F3:
1665 case VK_ENTER:
1666 case VK_NEWLINE:
1667 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1668 return 0;
1669 break;
1670 case VK_ESC:
1671 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1672 return 0;
1673 break;
1674 case VK_F1:
1675 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1676 return 0;
1677 break;
1678 }
1679 }
1680 break;
1681
[551]1682 case WM_COMMAND:
1683 switch (SHORT1FROMMP(mp1)) {
1684 case IDM_UNDO:
1685 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1686 break;
[2]1687
[551]1688 case DID_CANCEL:
1689 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1690
[551]1691 case DID_OK:
1692 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1693 break;
[2]1694
[551]1695 case IDM_HELP:
1696 if (hwndHelp)
1697 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1698 MPFROM2SHORT(HELP_CFGD, 0), MPFROMSHORT(HM_RESOURCEID));
1699 break;
1700 }
1701 return 0;
[2]1702
[551]1703 case WM_CLOSE:
1704 ulCnrType = 0;
1705 if (WinQueryButtonCheckstate(hwnd, CFGD_EXTENDEDSEL))
1706 ulCnrType |= CCS_EXTENDSEL;
1707 if (WinQueryButtonCheckstate(hwnd, CFGD_MULTIPLESEL))
1708 ulCnrType |= CCS_MULTIPLESEL;
1709 PrfWriteProfileData(fmprof, appname, "ContainerType",
1710 (PVOID) & ulCnrType, sizeof(BOOL));
1711 fMinOnOpen = WinQueryButtonCheckstate(hwnd, CFGD_MINONOPEN);
1712 PrfWriteProfileData(fmprof, FM3Str, "MinDirOnOpen", &fMinOnOpen,
1713 sizeof(BOOL));
1714 fLeaveTree = WinQueryButtonCheckstate(hwnd, CFGD_LEAVETREE);
1715 PrfWriteProfileData(fmprof, appname, "LeaveTree", &fLeaveTree,
1716 sizeof(BOOL));
1717 fNoFoldMenu = WinQueryButtonCheckstate(hwnd, CFGD_NOFOLDMENU);
1718 PrfWriteProfileData(fmprof, appname, "NoFoldMenu", &fNoFoldMenu,
1719 sizeof(BOOL));
1720 fSelectedAlways = WinQueryButtonCheckstate(hwnd, CFGD_SELECTEDALWAYS);
1721 PrfWriteProfileData(fmprof, appname, "SelectedAlways", &fSelectedAlways,
1722 sizeof(BOOL));
1723 fNoSearch = WinQueryButtonCheckstate(hwnd, CFGD_NOSEARCH);
1724 PrfWriteProfileData(fmprof, appname, "NoSearch", &fNoSearch,
1725 sizeof(BOOL));
1726 fLookInDir = WinQueryButtonCheckstate(hwnd, CFGD_LOOKINDIR);
1727 PrfWriteProfileData(fmprof, FM3Str, "LookInDir", (PVOID) & fLookInDir,
1728 sizeof(BOOL));
1729 fUnHilite = WinQueryButtonCheckstate(hwnd, CFGD_UNHILITE);
1730 PrfWriteProfileData(fmprof, appname, "UnHilite",
1731 &fUnHilite, sizeof(BOOL));
1732 {
[961]1733 BOOL fOldSyncUpdates = WinQueryButtonCheckstate(hwnd, CFGD_SYNCUPDATES);
[2]1734
[961]1735 if (fOldSyncUpdates != fSyncUpdates) {
1736 fSyncUpdates = fOldSyncUpdates;
[551]1737 if (hwndMain && !strcmp(realappname, FM3Str)) {
[961]1738 // Save state and restore to refresh windows with new settings
[789]1739 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
[971]1740 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
1741// PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
1742 PostMsg(MainObjectHwnd, UM_RESTORE, GetPString(IDS_FM2TEMPTEXT), MPVOID);
[551]1743 }
1744 }
[2]1745 }
[551]1746 }
1747 PrfWriteProfileData(fmprof, appname, "SyncUpdates",
1748 &fSyncUpdates, sizeof(BOOL));
1749 if (!(ulCnrType & (CCS_EXTENDSEL | CCS_MULTIPLESEL)))
1750 saymsg(MB_ENTER | MB_ICONEXCLAMATION,
1751 HWND_DESKTOP,
1752 GetPString(IDS_WARNINGTEXT),
1753 GetPString(IDS_SELECTTYPEERRORTEXT));
[961]1754 break; // WM_CLOSE
[2]1755 }
[551]1756 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1757}
1758
[551]1759MRESULT EXPENTRY CfgMDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]1760{
[551]1761 switch (msg) {
1762 case WM_INITDLG:
1763 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1764 break;
[2]1765
[1080]1766 case WM_HELP:
1767 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
1768 break;
1769
1770 case WM_CHAR:
1771 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
1772 switch (CHARMSG(&msg)->vkey) {
1773 case VK_F3:
1774 case VK_ENTER:
1775 case VK_NEWLINE:
1776 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
1777 return 0;
1778 break;
1779 case VK_ESC:
1780 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
1781 return 0;
1782 break;
1783 case VK_F1:
1784 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
1785 return 0;
1786 break;
1787 }
1788 }
1789 break;
1790
[551]1791 case UM_UNDO:
1792 WinCheckButton(hwnd, CFGM_EXTERNALINIS, fExternalINIs);
1793 WinCheckButton(hwnd, CFGM_EXTERNALARCBOXES, fExternalArcboxes);
1794 WinCheckButton(hwnd, CFGM_EXTERNALVIEWER, fExternalViewer);
1795 WinCheckButton(hwnd, CFGM_EXTERNALCOLLECTOR, fExternalCollector);
1796 WinCheckButton(hwnd, CFGM_SAVESTATE, fSaveState);
1797 WinCheckButton(hwnd, CFGM_AUTOTILE, (fAutoTile));
1798 WinCheckButton(hwnd, CFGM_FREETREE, (fFreeTree));
1799 WinCheckButton(hwnd, CFGM_SPLITSTATUS, (fSplitStatus));
1800 WinCheckButton(hwnd, CFGM_NOTREEGAP, (fNoTreeGap));
1801 WinCheckButton(hwnd, CFGM_STARTMIN, (fStartMinimized));
1802 WinCheckButton(hwnd, CFGM_STARTMAX, (fStartMaximized));
1803 WinCheckButton(hwnd, CFGM_DATAMIN, (fDataMin));
1804 WinCheckButton(hwnd, CFGM_TILEBACKWARDS, (fTileBackwards));
1805 {
1806 long th;
[2]1807
[551]1808 th = (fAutoAddDirs && fAutoAddAllDirs) ? 2 : (fAutoAddDirs) ? 1 : 0;
1809 WinCheckButton(hwnd, CFGM_RECENTDIRS, th);
1810 WinSendMsg(hwnd, UM_RESTORE, MPFROM2SHORT(CFGM_RECENTDIRS, 0), MPVOID);
1811 }
1812 WinCheckButton(hwnd, CFGM_USERLISTSWITCHES, fUserListSwitches);
1813 WinCheckButton(hwnd, CFGM_WSANIMATE, (fwsAnimate != 0));
1814 WinCheckButton(hwnd, CFGM_SEPARATEPARMS, fSeparateParms);
1815 WinCheckButton(hwnd, CFGM_BLUELED, fBlueLED);
1816 WinCheckButton(hwnd, CFGM_SHOWTARGET, fShowTarget);
1817 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), !(fStartMinimized));
1818 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), !(fStartMaximized));
1819 return 0;
[2]1820
[551]1821 case UM_RESTORE:
1822 {
1823 long test;
1824 BOOL th, oh;
1825 char s[80];
[2]1826
[551]1827 test = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1828 th = (test != 0);
1829 oh = (test == 1);
1830 *s = 0;
1831 switch (SHORT1FROMMP(mp1)) {
1832 case CFGM_RECENTDIRS:
1833 sprintf(s,
1834 GetPString(IDS_RECENTHELPWHICHTEXT),
1835 (!oh && th) ?
1836 GetPString(IDS_RECENTONLYTEXT) :
1837 (oh && th) ?
1838 GetPString(IDS_ALLONLYTEXT) : GetPString(IDS_NONE));
1839 break;
[2]1840 }
[551]1841 if (*s)
1842 WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), s);
1843 }
1844 return 0;
[2]1845
[551]1846 case WM_CONTROL:
1847 switch (SHORT1FROMMP(mp1)) {
1848 case CFGM_RECENTDIRS:
1849 WinSendMsg(hwnd, UM_RESTORE, mp1, MPVOID);
1850 break;
1851 case CFGM_STARTMIN:
1852 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN)) {
1853 WinCheckButton(hwnd, CFGM_STARTMAX, FALSE);
1854 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), FALSE);
[2]1855 }
[551]1856 else
1857 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), TRUE);
1858 break;
1859 case CFGM_STARTMAX:
1860 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX)) {
1861 WinCheckButton(hwnd, CFGM_STARTMIN, FALSE);
1862 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), FALSE);
1863 }
1864 else
1865 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), TRUE);
1866 break;
1867 }
1868 return 0;
[2]1869
[551]1870 case WM_COMMAND:
1871 switch (SHORT1FROMMP(mp1)) {
1872 case IDM_UNDO:
1873 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1874 break;
[2]1875
[551]1876 case DID_CANCEL:
1877 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]1878
[551]1879 case DID_OK:
1880 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1881 break;
[2]1882
[551]1883 case IDM_HELP:
1884 if (hwndHelp)
1885 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1886 MPFROM2SHORT(HELP_CFGM, 0), MPFROMSHORT(HM_RESOURCEID));
1887 break;
1888 }
1889 return 0;
[2]1890
[551]1891 case WM_CLOSE:
1892 if (hwndMain && !strcmp(realappname, FM3Str)) {
1893 if (fFreeTree != WinQueryButtonCheckstate(hwnd, CFGM_FREETREE))
1894 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_FREETREE, 0), MPVOID);
1895 if (fAutoTile != WinQueryButtonCheckstate(hwnd, CFGM_AUTOTILE))
1896 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_AUTOTILE, 0), MPVOID);
1897 if (fSplitStatus != WinQueryButtonCheckstate(hwnd, CFGM_SPLITSTATUS)) {
1898 fSplitStatus = (fSplitStatus) ? FALSE : TRUE;
1899 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_BLINK, 0), MPVOID);
1900 PrfWriteProfileData(fmprof, FM3Str, "SplitStatus", &fSplitStatus,
1901 sizeof(BOOL));
[2]1902 }
[551]1903 }
1904 fUserListSwitches = WinQueryButtonCheckstate(hwnd, CFGM_USERLISTSWITCHES);
1905 PrfWriteProfileData(fmprof, FM3Str, "UserListSwitches",
1906 (PVOID) & fUserListSwitches, sizeof(BOOL));
1907 fExternalINIs = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALINIS);
1908 PrfWriteProfileData(fmprof, FM3Str, "ExternalINIs",
1909 (PVOID) & fExternalINIs, sizeof(BOOL));
1910 fExternalArcboxes = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALARCBOXES);
1911 PrfWriteProfileData(fmprof, FM3Str, "ExternalArcboxes",
1912 (PVOID) & fExternalArcboxes, sizeof(BOOL));
1913 fExternalCollector =
1914 WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALCOLLECTOR);
1915 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
1916 (PVOID) & fExternalCollector, sizeof(BOOL));
1917 fExternalViewer = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALVIEWER);
1918 PrfWriteProfileData(fmprof, FM3Str, "ExternalViewer",
1919 (PVOID) & fExternalViewer, sizeof(BOOL));
1920 {
1921 long test;
[2]1922
[551]1923 test = WinQueryButtonCheckstate(hwnd, CFGM_RECENTDIRS);
1924 fAutoAddDirs = (test != 0);
1925 fAutoAddAllDirs = (test == 2);
1926 }
1927 PrfWriteProfileData(fmprof,
1928 appname,
1929 "AutoAddDirs", (PVOID) & fAutoAddDirs, sizeof(BOOL));
1930 PrfWriteProfileData(fmprof,
1931 appname,
1932 "AutoAddAllDirs",
1933 (PVOID) & fAutoAddAllDirs, sizeof(BOOL));
1934 fwsAnimate = WinQueryButtonCheckstate(hwnd, CFGM_WSANIMATE);
1935 if (fwsAnimate)
1936 fwsAnimate = WS_ANIMATE;
1937 PrfWriteProfileData(fmprof,
1938 appname,
1939 "WS_ANIMATE", (PVOID) & fwsAnimate, sizeof(ULONG));
1940 fSaveState = WinQueryButtonCheckstate(hwnd, CFGM_SAVESTATE);
1941 PrfWriteProfileData(fmprof,
1942 FM3Str,
1943 "SaveState", (PVOID) & fSaveState, sizeof(BOOL));
1944 fStartMinimized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN);
1945 PrfWriteProfileData(fmprof,
1946 appname,
1947 "StartMinimized",
1948 (PVOID) & fStartMinimized, sizeof(BOOL));
1949 fStartMaximized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX);
1950 PrfWriteProfileData(fmprof,
1951 appname,
1952 "StartMaximized",
1953 (PVOID) & fStartMaximized, sizeof(BOOL));
1954 fDataMin = WinQueryButtonCheckstate(hwnd, CFGM_DATAMIN);
1955 PrfWriteProfileData(fmprof,
1956 FM3Str, "DataMin", (PVOID) & fDataMin, sizeof(BOOL));
1957 fTileBackwards = WinQueryButtonCheckstate(hwnd, CFGM_TILEBACKWARDS);
1958 PrfWriteProfileData(fmprof,
1959 FM3Str,
1960 "TileBackwards",
1961 (PVOID) & fTileBackwards, sizeof(BOOL));
1962 fNoTreeGap = WinQueryButtonCheckstate(hwnd, CFGM_NOTREEGAP);
1963 PrfWriteProfileData(fmprof,
1964 FM3Str,
1965 "NoTreeGap", (PVOID) & fNoTreeGap, sizeof(BOOL));
1966 fBlueLED = WinQueryButtonCheckstate(hwnd, CFGM_BLUELED);
1967 PrfWriteProfileData(fmprof,
1968 appname, "BlueLED", (PVOID) & fBlueLED, sizeof(BOOL));
1969 {
1970 BOOL dummy;
[2]1971
[551]1972 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SHOWTARGET);
1973 if (dummy != fShowTarget) {
1974 fShowTarget = dummy;
1975 PrfWriteProfileData(fmprof,
1976 appname,
1977 "ShowTarget",
1978 (PVOID) & fShowTarget, sizeof(BOOL));
1979 if (hwndMain)
1980 PostMsg(WinQueryWindow(hwndMain, QW_PARENT),
1981 WM_UPDATEFRAME, MPFROMLONG(FCF_SIZEBORDER), MPVOID);
1982 SetTargetDir(hwnd, TRUE);
[2]1983 }
[551]1984 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SEPARATEPARMS);
1985 if (dummy != fSeparateParms) {
1986 fSeparateParms = dummy;
1987 PrfWriteProfileData(fmprof,
1988 FM3Str,
1989 "SeparateParms",
1990 (PVOID) & fSeparateParms, sizeof(BOOL));
1991 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
1992 UM_UNDO, MPVOID, MPVOID);
1993 }
1994 }
1995 break;
[2]1996 }
[551]1997 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]1998}
1999
[551]2000MRESULT EXPENTRY Cfg5DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2001{
[2]2002 static MASK mask;
2003
[551]2004 switch (msg) {
2005 case WM_INITDLG:
[796]2006 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
2007 MPFROMSHORT(8), MPVOID);
2008 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
2009 MPFROMLONG(1000), MPFROMLONG(50));
[551]2010 WinSendDlgItemMsg(hwnd,
2011 CFG5_FILTER,
2012 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
2013 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2014 break;
[2]2015
[1080]2016 case WM_HELP:
2017 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2018 break;
2019
2020 case WM_CHAR:
2021 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2022 switch (CHARMSG(&msg)->vkey) {
2023 case VK_F3:
2024 case VK_ENTER:
2025 case VK_NEWLINE:
2026 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2027 return 0;
2028 break;
2029 case VK_ESC:
2030 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2031 return 0;
2032 break;
2033 case VK_F1:
2034 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2035 return 0;
2036 break;
2037 }
2038 }
2039 break;
2040
[551]2041 case UM_FOCUSME:
2042 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
2043 return 0;
[2]2044
[551]2045 case UM_UNDO:
2046 {
[917]2047 ULONG flWindowAttr = 0;
2048 ULONG ulSize = sizeof(ULONG);
[2]2049
[551]2050 if (!PrfQueryProfileData(fmprof,
2051 appname,
[917]2052 "DirflWindowAttr", &flWindowAttr, &ulSize))
[551]2053 flWindowAttr = (CV_NAME | CV_MINI | CA_DETAILSVIEWTITLES | CV_FLOW);
2054 if (flWindowAttr & CV_ICON)
2055 WinCheckButton(hwnd, CFG5_ICON, TRUE);
2056 if (flWindowAttr & CV_NAME)
2057 WinCheckButton(hwnd, CFG5_NAME, TRUE);
2058 if (flWindowAttr & CV_TEXT)
2059 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
2060 if (flWindowAttr & CV_DETAIL)
2061 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
2062 if (flWindowAttr & CV_MINI)
2063 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
2064 if (flWindowAttr & CA_DETAILSVIEWTITLES)
2065 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
[1065]2066 WinCheckButton(hwnd, CFG5_SHOWLNAMES, dsDirCnrDefault.detailslongname);
2067 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, dsDirCnrDefault.detailssubject);
2068 WinCheckButton(hwnd, CFG5_SHOWEAS, dsDirCnrDefault.detailsea);
2069 WinCheckButton(hwnd, CFG5_SHOWSIZE, dsDirCnrDefault.detailssize);
2070 WinCheckButton(hwnd, CFG5_SHOWICON, dsDirCnrDefault.detailsicon);
2071 WinCheckButton(hwnd, CFG5_SHOWLWDATE, dsDirCnrDefault.detailslwdate);
2072 WinCheckButton(hwnd, CFG5_SHOWLWTIME, dsDirCnrDefault.detailslwtime);
2073 WinCheckButton(hwnd, CFG5_SHOWLADATE, dsDirCnrDefault.detailsladate);
2074 WinCheckButton(hwnd, CFG5_SHOWLATIME, dsDirCnrDefault.detailslatime);
2075 WinCheckButton(hwnd, CFG5_SHOWCRDATE, dsDirCnrDefault.detailscrdate);
2076 WinCheckButton(hwnd, CFG5_SHOWCRTIME, dsDirCnrDefault.detailscrtime);
2077 WinCheckButton(hwnd, CFG5_SHOWATTR, dsDirCnrDefault.detailsattr);
[551]2078 memset(&mask, 0, sizeof(mask));
2079 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2080 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
[917]2081 ulSize = sizeof(MASK);
2082 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, &ulSize))
[551]2083 SetMask(NULL, &mask);
2084 if (!mask.attrFile)
2085 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2086 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2087 strcpy(mask.prompt, GetPString(IDS_DEFDIRFILTERTITLETEXT));
2088 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
[1065]2089 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, dsDirCnrDefault.fSubjectInLeftPane);
2090 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, dsDirCnrDefault.fSubjectLengthMax);
[796]2091 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
[1065]2092 MPFROMLONG(dsDirCnrDefault.SubjectDisplayWidth), MPVOID);
[551]2093 }
2094 return 0;
[2]2095
[551]2096 case UM_SETUP5:
2097 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2098 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2099 SetMask(NULL, &mask);
2100 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2101 }
2102 return 0;
[2]2103
[551]2104 case WM_CONTROL:
2105 switch (SHORT1FROMMP(mp1)) {
2106 case CFG5_FILTER:
2107 switch (SHORT2FROMMP(mp1)) {
2108 case EN_SETFOCUS:
2109 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2110 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2111 break;
[2]2112 }
[551]2113 break;
2114 }
2115 return 0;
[2]2116
[551]2117 case WM_COMMAND:
2118 switch (SHORT1FROMMP(mp1)) {
2119 case IDM_UNDO:
2120 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2121 break;
[2]2122
[551]2123 case DID_CANCEL:
2124 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2125
[551]2126 case DID_OK:
2127 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2128 break;
[2]2129
[551]2130 case IDM_HELP:
2131 if (hwndHelp)
2132 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2133 MPFROM2SHORT(HELP_CFG5, 0), MPFROMSHORT(HM_RESOURCEID));
2134 break;
2135 }
2136 return 0;
[2]2137
[551]2138 case WM_CLOSE:
2139 {
2140 ULONG flWindowAttr = 0;
[2]2141
[551]2142 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2143 flWindowAttr |= CV_ICON;
2144 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2145 flWindowAttr |= CV_NAME;
2146 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2147 flWindowAttr |= CV_TEXT;
2148 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2149 flWindowAttr |= CV_DETAIL;
2150 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2151 flWindowAttr |= CV_MINI;
2152 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2153 flWindowAttr |= CA_DETAILSVIEWTITLES;
2154 flWindowAttr |= CV_FLOW;
[2]2155 PrfWriteProfileData(fmprof,
[551]2156 appname,
2157 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2158 }
[1065]2159 dsDirCnrDefault.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
[997]2160 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname",
[1065]2161 &dsDirCnrDefault.detailslongname, sizeof(BOOL));
2162 dsDirCnrDefault.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
[997]2163 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject",
[1065]2164 &dsDirCnrDefault.detailssubject, sizeof(BOOL));
2165 dsDirCnrDefault.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
[997]2166 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA",
[1065]2167 &dsDirCnrDefault.detailsea, sizeof(BOOL));
2168 dsDirCnrDefault.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
[997]2169 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize",
[1065]2170 &dsDirCnrDefault.detailssize, sizeof(BOOL));
2171 dsDirCnrDefault.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
[997]2172 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon",
[1065]2173 &dsDirCnrDefault.detailsicon, sizeof(BOOL));
2174 dsDirCnrDefault.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
[997]2175 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate",
[1065]2176 &dsDirCnrDefault.detailslwdate, sizeof(BOOL));
2177 dsDirCnrDefault.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
[997]2178 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime",
[1065]2179 &dsDirCnrDefault.detailslwtime, sizeof(BOOL));
2180 dsDirCnrDefault.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
[997]2181 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate",
[1065]2182 &dsDirCnrDefault.detailsladate, sizeof(BOOL));
2183 dsDirCnrDefault.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
[997]2184 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime",
[1065]2185 &dsDirCnrDefault.detailslatime, sizeof(BOOL));
2186 dsDirCnrDefault.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
[997]2187 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate",
[1065]2188 &dsDirCnrDefault.detailscrdate, sizeof(BOOL));
2189 dsDirCnrDefault.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
[997]2190 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime",
[1065]2191 &dsDirCnrDefault.detailscrtime, sizeof(BOOL));
2192 dsDirCnrDefault.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
[997]2193 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr",
[1065]2194 &dsDirCnrDefault.detailsattr, sizeof(BOOL));
2195 dsDirCnrDefault.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
[997]2196 PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectInLeftPane",
[1065]2197 &dsDirCnrDefault.fSubjectInLeftPane, sizeof(BOOL));
2198 dsDirCnrDefault.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
[997]2199 PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectLengthMax",
[1065]2200 &dsDirCnrDefault.fSubjectLengthMax, sizeof(BOOL));
[551]2201 *mask.prompt = 0;
2202 PrfWriteProfileData(fmprof, appname, "DirFilter", &mask, sizeof(MASK));
[796]2203 {
[917]2204 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2205 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
[1065]2206 MPFROMP(&dsDirCnrDefault.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2207 if (dsDirCnrDefault.SubjectDisplayWidth < 50)
2208 dsDirCnrDefault.SubjectDisplayWidth = 0;
2209 else if (dsDirCnrDefault.SubjectDisplayWidth > 1000)
2210 dsDirCnrDefault.SubjectDisplayWidth = 1000;
[917]2211 }
2212 else
[1065]2213 dsDirCnrDefault.SubjectDisplayWidth = 0;
[917]2214 PrfWriteProfileData(fmprof,
[997]2215 appname, "DirCnr.SubjectDisplayWidth",
[1065]2216 &dsDirCnrDefault.SubjectDisplayWidth, sizeof(ULONG));
[796]2217 }
[551]2218 break;
[2]2219 }
[551]2220 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2221}
2222
[551]2223MRESULT EXPENTRY Cfg6DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2224{
[551]2225 switch (msg) {
2226 case WM_INITDLG:
2227 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2228 break;
[2]2229
[1080]2230 case WM_HELP:
2231 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2232 break;
2233
2234 case WM_CHAR:
2235 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2236 switch (CHARMSG(&msg)->vkey) {
2237 case VK_F3:
2238 case VK_ENTER:
2239 case VK_NEWLINE:
2240 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2241 return 0;
2242 break;
2243 case VK_ESC:
2244 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2245 return 0;
2246 break;
2247 case VK_F1:
2248 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2249 return 0;
2250 break;
2251 }
2252 }
2253 break;
2254
[551]2255 case UM_UNDO:
2256 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2257 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2258 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2259 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2260 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2261 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2262 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2263 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2264 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2265 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2266 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2267 if (sortFlags & SORT_FIRSTEXTENSION)
2268 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2269 else if (sortFlags & SORT_LASTEXTENSION)
2270 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2271 else if (sortFlags & SORT_SIZE)
2272 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2273 else if (sortFlags & SORT_EASIZE)
2274 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2275 else if (sortFlags & SORT_LWDATE)
2276 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2277 else if (sortFlags & SORT_LADATE)
2278 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2279 else if (sortFlags & SORT_CRDATE)
2280 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2281 else if (sortFlags & SORT_FILENAME)
2282 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2283 else
2284 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2285 if (sortFlags & SORT_DIRSFIRST)
2286 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2287 else if (sortFlags & SORT_DIRSLAST)
2288 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2289 if (sortFlags & SORT_REVERSE)
2290 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2291 return 0;
[2]2292
[551]2293 case WM_CONTROL:
2294 switch (SHORT1FROMMP(mp1)) {
2295 case CFG6_SORTDIRSFIRST:
2296 case CFG6_SORTDIRSLAST:
2297 {
2298 BOOL temp;
[2]2299
[551]2300 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2301 if (temp) {
2302 switch (SHORT1FROMMP(mp1)) {
2303 case CFG6_SORTDIRSFIRST:
2304 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2305 break;
2306 case CFG6_SORTDIRSLAST:
2307 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2308 break;
2309 }
2310 }
[2]2311 }
[551]2312 break;
2313 }
2314 return 0;
[2]2315
[551]2316 case WM_COMMAND:
2317 switch (SHORT1FROMMP(mp1)) {
2318 case IDM_UNDO:
2319 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2320 break;
[2]2321
[551]2322 case DID_CANCEL:
2323 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2324
[551]2325 case DID_OK:
2326 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2327 break;
[2]2328
[551]2329 case IDM_HELP:
2330 if (hwndHelp)
2331 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2332 MPFROM2SHORT(HELP_CFG6, 0), MPFROMSHORT(HM_RESOURCEID));
2333 break;
2334 }
2335 return 0;
[2]2336
[551]2337 case WM_CLOSE:
2338 sortFlags = 0;
2339 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2340 sortFlags |= SORT_FILENAME;
2341 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2342 sortFlags |= SORT_SIZE;
2343 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2344 sortFlags |= SORT_EASIZE;
2345 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2346 sortFlags |= SORT_FIRSTEXTENSION;
2347 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2348 sortFlags |= SORT_LASTEXTENSION;
2349 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2350 sortFlags |= SORT_LWDATE;
2351 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2352 sortFlags |= SORT_LADATE;
2353 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2354 sortFlags |= SORT_CRDATE;
2355 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2356 sortFlags |= SORT_DIRSFIRST;
2357 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2358 sortFlags |= SORT_DIRSLAST;
2359 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2360 sortFlags |= SORT_REVERSE;
2361 PrfWriteProfileData(fmprof, appname, "Sort", &sortFlags, sizeof(INT));
2362 break;
[2]2363 }
[551]2364 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2365}
2366
[551]2367MRESULT EXPENTRY Cfg7DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2368{
[2]2369 static MASK mask;
2370
[551]2371 switch (msg) {
2372 case WM_INITDLG:
[922]2373 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
2374 MPFROMSHORT(8), MPVOID);
2375 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
2376 MPFROMLONG(1000), MPFROMLONG(50));
[551]2377 WinSendDlgItemMsg(hwnd, CFG5_FILTER, EM_SETTEXTLIMIT,
2378 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
2379 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2380 break;
[2]2381
[1080]2382 case WM_HELP:
2383 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2384 break;
2385
2386 case WM_CHAR:
2387 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2388 switch (CHARMSG(&msg)->vkey) {
2389 case VK_F3:
2390 case VK_ENTER:
2391 case VK_NEWLINE:
2392 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2393 return 0;
2394 break;
2395 case VK_ESC:
2396 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2397 return 0;
2398 break;
2399 case VK_F1:
2400 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2401 return 0;
2402 break;
2403 }
2404 }
2405 break;
2406
[551]2407 case UM_FOCUSME:
2408 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
2409 return 0;
[2]2410
[551]2411 case UM_UNDO:
2412 WinCheckButton(hwnd, CFG5_EXTERNALCOLLECTOR, fExternalCollector);
2413 {
[917]2414 ULONG flWindowAttr = 0;
2415 ULONG ulSize = sizeof(ULONG);
[2]2416
[551]2417 if (!PrfQueryProfileData(fmprof,
2418 appname,
[917]2419 "CollectorflWindowAttr", &flWindowAttr, &ulSize))
[551]2420 flWindowAttr = (CV_NAME | CA_DETAILSVIEWTITLES | CV_MINI | CV_FLOW);
2421 if (flWindowAttr & CV_ICON)
2422 WinCheckButton(hwnd, CFG5_ICON, TRUE);
2423 if (flWindowAttr & CV_NAME)
2424 WinCheckButton(hwnd, CFG5_NAME, TRUE);
2425 if (flWindowAttr & CV_TEXT)
2426 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
2427 if (flWindowAttr & CV_DETAIL)
2428 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
2429 if (flWindowAttr & CV_MINI)
2430 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
2431 if (flWindowAttr & CA_DETAILSVIEWTITLES)
2432 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
2433 memset(&mask, 0, sizeof(mask));
2434 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2435 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
[917]2436 ulSize = sizeof(MASK);
[551]2437 if (PrfQueryProfileData(fmprof,
[917]2438 appname, "CollectorFilter", &mask, &ulSize)) {
[551]2439 SetMask(NULL, &mask);
[2]2440 }
[551]2441 if (!mask.attrFile)
2442 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
2443 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
2444 strcpy(mask.prompt, GetPString(IDS_DEFCOLFILTERTITLETEXT));
2445 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2446 }
2447 {
[1065]2448 DETAILS_SETTINGS ds;
[2]2449
[1065]2450 memset(&ds, 0, sizeof(ds));
2451 LoadDetailsSwitches("Collector", &ds);
2452 WinCheckButton(hwnd, CFG5_SHOWLNAMES, ds.detailslongname);
2453 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, ds.detailssubject);
2454 WinCheckButton(hwnd, CFG5_SHOWEAS, ds.detailsea);
2455 WinCheckButton(hwnd, CFG5_SHOWSIZE, ds.detailssize);
2456 WinCheckButton(hwnd, CFG5_SHOWICON, ds.detailsicon);
2457 WinCheckButton(hwnd, CFG5_SHOWLWDATE, ds.detailslwdate);
2458 WinCheckButton(hwnd, CFG5_SHOWLWTIME, ds.detailslwtime);
2459 WinCheckButton(hwnd, CFG5_SHOWLADATE, ds.detailsladate);
2460 WinCheckButton(hwnd, CFG5_SHOWLATIME, ds.detailslatime);
2461 WinCheckButton(hwnd, CFG5_SHOWCRDATE, ds.detailscrdate);
2462 WinCheckButton(hwnd, CFG5_SHOWCRTIME, ds.detailscrtime);
2463 WinCheckButton(hwnd, CFG5_SHOWATTR, ds.detailsattr);
2464 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, ds.fSubjectInLeftPane);
2465 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, ds.fSubjectLengthMax);
[922]2466 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
[1065]2467 MPFROMLONG(ds.SubjectDisplayWidth), MPVOID);
[922]2468
[551]2469 }
2470 return 0;
[2]2471
[551]2472 case UM_SETUP5:
2473 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2474 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2475 SetMask(NULL, &mask);
2476 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2477 }
2478 return 0;
[2]2479
[551]2480 case WM_CONTROL:
2481 switch (SHORT1FROMMP(mp1)) {
2482 case CFG5_FILTER:
2483 switch (SHORT2FROMMP(mp1)) {
2484 case EN_SETFOCUS:
2485 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2486 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2487 break;
[2]2488 }
[551]2489 break;
2490 }
2491 return 0;
[2]2492
[551]2493 case WM_COMMAND:
2494 switch (SHORT1FROMMP(mp1)) {
2495 case IDM_UNDO:
2496 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2497 break;
[2]2498
[551]2499 case DID_CANCEL:
2500 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2501
[551]2502 case DID_OK:
2503 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2504 break;
[2]2505
[551]2506 case IDM_HELP:
2507 if (hwndHelp)
2508 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2509 MPFROM2SHORT(HELP_CFG7, 0), MPFROMSHORT(HM_RESOURCEID));
2510 break;
2511 }
2512 return 0;
[2]2513
[551]2514 case WM_CLOSE:
2515 fExternalCollector = WinQueryButtonCheckstate(hwnd,
2516 CFG5_EXTERNALCOLLECTOR);
2517 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
2518 &fExternalCollector, sizeof(BOOL));
2519 {
2520 ULONG flWindowAttr = 0;
[2]2521
[551]2522 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2523 flWindowAttr |= CV_ICON;
2524 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2525 flWindowAttr |= CV_NAME;
2526 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2527 flWindowAttr |= CV_TEXT;
2528 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2529 flWindowAttr |= CV_DETAIL;
2530 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2531 flWindowAttr |= CV_MINI;
2532 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2533 flWindowAttr |= CA_DETAILSVIEWTITLES;
2534 flWindowAttr |= CV_FLOW;
2535 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2536 &flWindowAttr, sizeof(ULONG));
2537 }
2538 {
[1065]2539 DETAILS_SETTINGS ds;
[2]2540
[1065]2541 memset(&ds, 0, sizeof(ds));
2542 ds.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
[551]2543 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLongname",
[1065]2544 &ds.detailslongname, sizeof(BOOL));
2545 ds.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
[551]2546 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSubject",
[1065]2547 &ds.detailssubject, sizeof(BOOL));
2548 ds.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS);
[551]2549 PrfWriteProfileData(fmprof, appname, "Collector.DetailsEA",
[1065]2550 &ds.detailsea, sizeof(BOOL));
2551 ds.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
[551]2552 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSize",
[1065]2553 &ds.detailssize, sizeof(BOOL));
2554 ds.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
[551]2555 PrfWriteProfileData(fmprof, appname, "Collector.DetailsIcon",
[1065]2556 &ds.detailsicon, sizeof(BOOL));
2557 ds.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
[551]2558 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWDate",
[1065]2559 &ds.detailslwdate, sizeof(BOOL));
2560 ds.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
[551]2561 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWTime",
[1065]2562 &ds.detailslwtime, sizeof(BOOL));
2563 ds.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
[551]2564 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLADate",
[1065]2565 &ds.detailsladate, sizeof(BOOL));
2566 ds.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
[551]2567 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLATime",
[1065]2568 &ds.detailslatime, sizeof(BOOL));
2569 ds.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
[551]2570 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRDate",
[1065]2571 &ds.detailscrdate, sizeof(BOOL));
2572 ds.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
[551]2573 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRTime",
[1065]2574 &ds.detailscrtime, sizeof(BOOL));
2575 ds.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
[551]2576 PrfWriteProfileData(fmprof, appname, "Collector.DetailsAttr",
[1065]2577 &ds.detailsattr, sizeof(BOOL));
2578 ds.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
[922]2579 PrfWriteProfileData(fmprof, appname, "Collector.SubjectInLeftPane",
[1065]2580 &ds.fSubjectInLeftPane, sizeof(BOOL));
2581 ds.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
[922]2582 PrfWriteProfileData(fmprof, appname, "Collector.SubjectLengthMax",
[1065]2583 &ds.fSubjectLengthMax, sizeof(BOOL));
[551]2584 *mask.prompt = 0;
2585 PrfWriteProfileData(fmprof,
[930]2586 appname, "CollectorFilter", &mask, sizeof(MASK));
[922]2587 {
2588 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2589 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
[1065]2590 MPFROMP(&ds.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2591 if (ds.SubjectDisplayWidth < 50)
2592 ds.SubjectDisplayWidth = 0;
2593 else if (ds.SubjectDisplayWidth > 1000)
2594 ds.SubjectDisplayWidth = 1000;
[922]2595 }
2596 else
[1065]2597 ds.SubjectDisplayWidth = 0;
[922]2598 PrfWriteProfileData(fmprof,
2599 appname, "Collector.SubjectDisplayWidth",
[1065]2600 &ds.SubjectDisplayWidth, sizeof(ULONG));
[922]2601 }
[551]2602 }
2603 break;
[2]2604 }
[551]2605 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2606}
2607
[551]2608MRESULT EXPENTRY Cfg8DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2609{
[551]2610 switch (msg) {
2611 case WM_INITDLG:
2612 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2613 break;
[2]2614
[1080]2615 case WM_HELP:
2616 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2617 break;
2618
2619 case WM_CHAR:
2620 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2621 switch (CHARMSG(&msg)->vkey) {
2622 case VK_F3:
2623 case VK_ENTER:
2624 case VK_NEWLINE:
2625 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2626 return 0;
2627 break;
2628 case VK_ESC:
2629 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2630 return 0;
2631 break;
2632 case VK_F1:
2633 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2634 return 0;
2635 break;
2636 }
2637 }
2638 break;
2639
[551]2640 case UM_UNDO:
2641 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2642 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2643 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2644 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2645 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2646 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2647 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2648 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2649 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2650 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2651 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2652 if (CollectorsortFlags & SORT_FIRSTEXTENSION)
2653 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2654 else if (CollectorsortFlags & SORT_LASTEXTENSION)
2655 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2656 else if (CollectorsortFlags & SORT_SIZE)
2657 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2658 else if (CollectorsortFlags & SORT_EASIZE)
2659 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2660 else if (CollectorsortFlags & SORT_LWDATE)
2661 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2662 else if (CollectorsortFlags & SORT_LADATE)
2663 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2664 else if (CollectorsortFlags & SORT_CRDATE)
2665 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2666 else if (CollectorsortFlags & SORT_FILENAME)
2667 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2668 else
2669 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2670 if (CollectorsortFlags & SORT_DIRSFIRST)
2671 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2672 else if (CollectorsortFlags & SORT_DIRSLAST)
2673 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2674 if (CollectorsortFlags & SORT_REVERSE)
2675 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2676 return 0;
[2]2677
[551]2678 case WM_CONTROL:
2679 switch (SHORT1FROMMP(mp1)) {
2680 case CFG6_SORTDIRSFIRST:
2681 case CFG6_SORTDIRSLAST:
2682 {
2683 BOOL temp;
[2]2684
[551]2685 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2686 if (temp) {
2687 switch (SHORT1FROMMP(mp1)) {
2688 case CFG6_SORTDIRSFIRST:
2689 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2690 break;
2691 case CFG6_SORTDIRSLAST:
2692 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2693 break;
2694 }
2695 }
[2]2696 }
[551]2697 break;
2698 }
2699 return 0;
[2]2700
[551]2701 case WM_COMMAND:
2702 switch (SHORT1FROMMP(mp1)) {
2703 case IDM_UNDO:
2704 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2705 break;
[2]2706
[551]2707 case DID_CANCEL:
2708 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]2709
[551]2710 case DID_OK:
2711 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2712 break;
[2]2713
[551]2714 case IDM_HELP:
2715 if (hwndHelp)
2716 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2717 MPFROM2SHORT(HELP_CFG8, 0), MPFROMSHORT(HM_RESOURCEID));
2718 break;
2719 }
2720 return 0;
[2]2721
[551]2722 case WM_CLOSE:
2723 CollectorsortFlags = 0;
2724 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2725 CollectorsortFlags |= SORT_FILENAME;
2726 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2727 CollectorsortFlags |= SORT_SIZE;
2728 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2729 CollectorsortFlags |= SORT_EASIZE;
2730 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2731 CollectorsortFlags |= SORT_FIRSTEXTENSION;
2732 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2733 CollectorsortFlags |= SORT_LASTEXTENSION;
2734 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2735 CollectorsortFlags |= SORT_LWDATE;
2736 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2737 CollectorsortFlags |= SORT_LADATE;
2738 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2739 CollectorsortFlags |= SORT_CRDATE;
2740 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2741 CollectorsortFlags |= SORT_DIRSFIRST;
2742 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2743 CollectorsortFlags |= SORT_DIRSLAST;
2744 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2745 CollectorsortFlags |= SORT_REVERSE;
2746 PrfWriteProfileData(fmprof,
2747 appname,
2748 "CollectorSort", &CollectorsortFlags, sizeof(INT));
2749 break;
[2]2750 }
[551]2751 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]2752}
2753
[551]2754MRESULT EXPENTRY Cfg9DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]2755{
[551]2756 switch (msg) {
2757 case WM_INITDLG:
2758 break;
[2]2759
[1080]2760 case WM_HELP:
2761 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
2762 break;
2763
2764 case WM_CHAR:
2765 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
2766 switch (CHARMSG(&msg)->vkey) {
2767 case VK_F3:
2768 case VK_ENTER:
2769 case VK_NEWLINE:
2770 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
2771 return 0;
2772 break;
2773 case VK_ESC:
2774 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
2775 return 0;
2776 break;
2777 case VK_F1:
2778 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
2779 return 0;
2780 break;
2781 }
2782 }
2783 break;
2784
[551]2785 case WM_COMMAND:
2786 switch (SHORT1FROMMP(mp1)) {
2787 case IDM_HELP:
2788 if (hwndHelp)
2789 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2790 MPFROM2SHORT(HELP_CFG9, 0), MPFROMSHORT(HM_RESOURCEID));
2791 return 0;
2792 case CFG9_MAXIMUMUI:
2793 if (hwndMain) {
2794 if (MenuInvisible)
2795 WinSendMsg(hwndMain, WM_COMMAND,
2796 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2797 if (!fAutoView)
2798 WinSendMsg(hwndMain, WM_COMMAND,
2799 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2800 if (!fDrivebar)
2801 WinSendMsg(hwndMain, WM_COMMAND,
2802 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2803 if (!fToolbar)
2804 WinSendMsg(hwndMain, WM_COMMAND,
2805 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2806 if (!fMoreButtons)
2807 WinSendMsg(hwndMain, WM_COMMAND,
2808 MPFROM2SHORT(IDM_MOREBUTTONS, 0), MPVOID);
2809 if (!fUserComboBox)
2810 WinSendMsg(hwndMain, WM_COMMAND,
2811 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2812 }
2813 return 0;
2814 case CFG9_MINIMUMUI:
2815 if (hwndMain) {
2816 if (!MenuInvisible)
2817 WinSendMsg(hwndMain, WM_COMMAND,
2818 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2819 if (fAutoView)
2820 WinSendMsg(hwndMain, WM_COMMAND,
2821 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2822 if (fToolbar)
2823 WinSendMsg(hwndMain, WM_COMMAND,
2824 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2825 if (fMoreButtons)
2826 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2827 MPVOID);
2828 if (fUserComboBox)
2829 WinSendMsg(hwndMain, WM_COMMAND,
2830 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2831 saymsg(MB_ENTER | MB_ICONASTERISK,
2832 hwnd,
2833 GetPString(IDS_DONTFORGETTEXT),
2834 GetPString(IDS_UNHIDEMENUWARNTEXT));
2835 }
2836 return 0;
2837 case CFG9_MAXINFOPRETTY:
2838 fLoadSubject = TRUE;
2839 fLoadLongnames = TRUE;
2840 fNoIconsFiles = FALSE;
2841 fNoIconsDirs = FALSE;
2842 fForceUpper = FALSE;
2843 fForceLower = FALSE;
2844 fArcStuffVisible = TRUE;
2845 fSplitStatus = TRUE;
2846 fDragndropDlg = TRUE;
2847 {
2848 ULONG flWindowAttr;
[2]2849
[551]2850 flWindowAttr = CV_DETAIL | CV_FLOW | CA_DETAILSVIEWTITLES;
2851 PrfWriteProfileData(fmprof,
2852 appname,
2853 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2854 PrfWriteProfileData(fmprof,
2855 appname,
2856 "CollectorflWindowAttr",
2857 &flWindowAttr, sizeof(ULONG));
2858 PrfWriteProfileData(fmprof,
2859 appname, "Collector.Fontnamesize", NULL, 0);
2860 }
[1065]2861 dsDirCnrDefault.detailslongname = TRUE;
2862 dsDirCnrDefault.detailssubject = TRUE;
2863 dsDirCnrDefault.detailsea = TRUE;
2864 dsDirCnrDefault.detailssize = TRUE;
2865 dsDirCnrDefault.detailsicon = TRUE;
2866 dsDirCnrDefault.detailslwdate = TRUE;
2867 dsDirCnrDefault.detailslwtime = TRUE;
2868 dsDirCnrDefault.detailsladate = TRUE;
2869 dsDirCnrDefault.detailslatime = TRUE;
2870 dsDirCnrDefault.detailscrdate = TRUE;
2871 dsDirCnrDefault.detailscrtime = TRUE;
2872 dsDirCnrDefault.detailsattr = TRUE;
[551]2873 if (hwndTree) {
[2]2874
[551]2875 CNRINFO cnri;
2876 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
[2]2877
[551]2878 memset(&cnri, 0, sizeof(cnri));
2879 cnri.cb = sizeof(cnri);
2880 WinSendMsg(WinWindowFromID
2881 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2882 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2883 cnri.flWindowAttr = flWindowAttr;
2884 WinSendMsg(WinWindowFromID
2885 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2886 CM_SETCNRINFO, MPFROMP(&cnri),
2887 MPFROMLONG(CMA_FLWINDOWATTR));
2888 }
2889 break;
[2]2890
[551]2891 case CFG9_MAXINFOPLAIN:
2892 fLoadSubject = TRUE;
2893 fLoadLongnames = TRUE;
2894 fNoIconsFiles = TRUE;
2895 fNoIconsDirs = TRUE;
2896 fForceUpper = FALSE;
2897 fForceLower = FALSE;
2898 fArcStuffVisible = TRUE;
2899 fSplitStatus = TRUE;
2900 fDragndropDlg = TRUE;
2901 {
2902 ULONG flWindowAttr;
[2]2903
[551]2904 flWindowAttr = CV_DETAIL | CV_FLOW | CV_MINI;
2905 PrfWriteProfileData(fmprof,
2906 appname,
2907 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2908 PrfWriteProfileData(fmprof,
2909 appname,
2910 "CollectorflWindowAttr",
2911 &flWindowAttr, sizeof(ULONG));
2912 PrfWriteProfileData(fmprof,
2913 appname,
2914 "Collector.Fontnamesize",
2915 GetPString(IDS_8HELVTEXT),
2916 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2917 }
[1065]2918 dsDirCnrDefault.detailslongname = TRUE;
2919 dsDirCnrDefault.detailssubject = TRUE;
2920 dsDirCnrDefault.detailsea = TRUE;
2921 dsDirCnrDefault.detailssize = TRUE;
2922 dsDirCnrDefault.detailsicon = TRUE;
2923 dsDirCnrDefault.detailslwdate = TRUE;
2924 dsDirCnrDefault.detailslwtime = TRUE;
2925 dsDirCnrDefault.detailsladate = TRUE;
2926 dsDirCnrDefault.detailslatime = TRUE;
2927 dsDirCnrDefault.detailscrdate = TRUE;
2928 dsDirCnrDefault.detailscrtime = TRUE;
2929 dsDirCnrDefault.detailsattr = TRUE;
[551]2930 if (hwndTree) {
[2]2931
[551]2932 CNRINFO cnri;
2933 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_TEXT |
2934 CV_FLOW | CA_TREELINE;
[2]2935
[551]2936 memset(&cnri, 0, sizeof(cnri));
2937 cnri.cb = sizeof(cnri);
2938 WinSendMsg(WinWindowFromID
2939 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2940 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2941 cnri.flWindowAttr = flWindowAttr;
2942 WinSendMsg(WinWindowFromID
2943 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2944 CM_SETCNRINFO, MPFROMP(&cnri),
2945 MPFROMLONG(CMA_FLWINDOWATTR));
2946 }
2947 break;
2948 case CFG9_MAXFILENAMES:
2949 if (hwndMain && fAutoView)
2950 WinSendMsg(hwndMain, WM_COMMAND,
2951 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2952 fForceUpper = FALSE;
2953 fForceLower = TRUE;
2954 fExternalViewer = TRUE;
2955 fExternalArcboxes = TRUE;
2956 fExternalCollector = TRUE;
2957 fExternalINIs = TRUE;
2958 fLoadSubject = FALSE;
2959 fLoadLongnames = FALSE;
2960 fNoIconsFiles = TRUE;
2961 fNoIconsDirs = TRUE;
2962 {
2963 ULONG flWindowAttr;
[2]2964
[551]2965 flWindowAttr = CV_TEXT | CV_FLOW;
2966 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2967 &flWindowAttr, sizeof(ULONG));
2968 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2969 &flWindowAttr, sizeof(ULONG));
2970 PrfWriteProfileData(fmprof, appname, "Collector.Fontnamesize",
2971 GetPString(IDS_8HELVTEXT),
2972 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2973 }
2974 if (hwndTree) {
[2]2975
[551]2976 CNRINFO cnri;
2977 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
[2]2978
[551]2979 memset(&cnri, 0, sizeof(cnri));
2980 cnri.cb = sizeof(cnri);
2981 WinSendMsg(WinWindowFromID
2982 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2983 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2984 cnri.flWindowAttr = flWindowAttr;
2985 WinSendMsg(WinWindowFromID
2986 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2987 CM_SETCNRINFO, MPFROMP(&cnri),
2988 MPFROMLONG(CMA_FLWINDOWATTR));
2989 }
2990 break;
2991 case CFG9_MAXSPEED:
2992 fLoadSubject = FALSE;
2993 fLoadLongnames = FALSE;
2994 fVerify = FALSE;
2995 DosSetVerify(FALSE);
[783]2996 FilesToGet = FILESTOGET_MAX;
[551]2997 fQuickArcFind = TRUE;
2998 fMinOnOpen = TRUE;
2999 fRealIdle = FALSE;
3000 fNoIconsFiles = TRUE;
3001 fNoIconsDirs = TRUE;
3002 fSyncUpdates = FALSE;
3003 fArcStuffVisible = FALSE;
3004 fForceUpper = FALSE;
3005 fForceLower = FALSE;
[1065]3006 dsDirCnrDefault.detailslongname = FALSE;
3007 dsDirCnrDefault.detailssubject = FALSE;
[551]3008 break;
[2]3009
[551]3010 case CFG9_HECTOR:
3011 fSwitchTree = TRUE;
3012 fSwitchTreeOnFocus = FALSE;
3013 fSwitchTreeExpand = TRUE;
3014 fCollapseFirst = TRUE;
3015 fSelectedAlways = FALSE;
3016 fTileBackwards = FALSE;
3017 fExternalViewer = FALSE;
3018 fExternalArcboxes = TRUE;
3019 fExternalCollector = FALSE;
3020 fExternalINIs = TRUE;
3021 fCopyDefault = FALSE;
3022 fFollowTree = FALSE;
3023 fLoadSubject = FALSE;
3024 fLoadLongnames = FALSE;
3025 fDontMoveMouse = FALSE;
3026 fUnHilite = TRUE;
3027 fUserListSwitches = TRUE;
3028 fDCOpens = FALSE;
3029 fLinkSetsIcon = FALSE;
3030 fConfirmDelete = TRUE;
3031 fSyncUpdates = FALSE;
3032 fRealIdle = FALSE;
3033 fNoIconsFiles = FALSE;
3034 fNoIconsDirs = TRUE;
3035 fFolderAfterExtract = FALSE;
3036 fVerify = TRUE;
3037 DosSetVerify(TRUE);
3038 fForceUpper = FALSE;
3039 fForceLower = TRUE;
3040 fArcStuffVisible = FALSE;
3041 fVTreeOpensWPS = FALSE;
3042 fRemoteBug = FALSE;
3043 fDragndropDlg = TRUE;
3044 fMinOnOpen = FALSE;
3045 fQuickArcFind = TRUE;
3046 fNoRemovableScan = TRUE;
[783]3047 FilesToGet = FILESTOGET_MIN;
[551]3048 fFreeTree = FALSE;
3049 fSplitStatus = TRUE;
3050 fAutoTile = TRUE;
3051 fSaveState = TRUE;
3052 fStartMinimized = FALSE;
3053 fStartMaximized = FALSE;
3054 fDataMin = FALSE;
3055 ulCnrType = CCS_EXTENDSEL | CCS_MULTIPLESEL;
3056 fNoTreeGap = TRUE;
3057 {
3058 ULONG flWindowAttr;
[2]3059
[551]3060 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
3061 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3062 &flWindowAttr, sizeof(ULONG));
3063 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3064 &flWindowAttr, sizeof(ULONG));
3065 }
[1065]3066 dsDirCnrDefault.detailslongname = FALSE;
3067 dsDirCnrDefault.detailssubject = FALSE;
3068 dsDirCnrDefault.detailsea = TRUE;
3069 dsDirCnrDefault.detailssize = TRUE;
3070 dsDirCnrDefault.detailsicon = TRUE;
3071 dsDirCnrDefault.detailslwdate = TRUE;
3072 dsDirCnrDefault.detailslwtime = TRUE;
3073 dsDirCnrDefault.detailsladate = FALSE;
3074 dsDirCnrDefault.detailslatime = FALSE;
3075 dsDirCnrDefault.detailscrdate = FALSE;
3076 dsDirCnrDefault.detailscrtime = FALSE;
3077 dsDirCnrDefault.detailsattr = TRUE;
[551]3078 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3079 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3080 if (hwndMain) {
[2]3081
[551]3082 SWP swp;
[2]3083
[551]3084 if (WinQueryWindowPos(hwndMain, &swp)) {
3085 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3086 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
3087 }
3088 if (MenuInvisible)
3089 WinSendMsg(hwndMain, WM_COMMAND,
3090 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
3091 if (fAutoView)
3092 WinSendMsg(hwndMain, WM_COMMAND,
3093 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3094 if (fToolbar)
3095 WinSendMsg(hwndMain, WM_COMMAND,
3096 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
3097 if (!fDrivebar)
3098 WinSendMsg(hwndMain, WM_COMMAND,
3099 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
3100 if (!fMoreButtons)
3101 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
3102 MPVOID);
3103 if (!fUserComboBox)
3104 WinSendMsg(hwndMain, WM_COMMAND,
3105 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
3106 }
3107 if (hwndTree) {
[2]3108
[551]3109 CNRINFO cnri;
3110 ULONG flWindowAttr = (CV_TREE | CV_TEXT | CV_MINI |
3111 CV_FLOW | CA_TREELINE);
[2]3112
[551]3113 memset(&cnri, 0, sizeof(cnri));
3114 cnri.cb = sizeof(cnri);
3115 WinSendMsg(WinWindowFromID
3116 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3117 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3118 cnri.flWindowAttr = flWindowAttr;
3119 WinSendMsg(WinWindowFromID
3120 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3121 CM_SETCNRINFO, MPFROMP(&cnri),
3122 MPFROMLONG(CMA_FLWINDOWATTR));
3123 }
3124 break;
[2]3125
[551]3126 case CFG9_DEFAULT:
3127 fSwitchTree = FALSE;
3128 fSwitchTreeOnFocus = FALSE;
3129 fSwitchTreeExpand = FALSE;
3130 fCollapseFirst = FALSE;
3131 fSelectedAlways = FALSE;
3132 fTileBackwards = FALSE;
3133 fExternalViewer = FALSE;
3134 fExternalArcboxes = FALSE;
3135 fExternalCollector = FALSE;
3136 fExternalINIs = FALSE;
3137 fCopyDefault = FALSE;
3138 fFollowTree = FALSE;
3139 fLoadSubject = TRUE;
3140 fLoadLongnames = TRUE;
3141 fDontMoveMouse = FALSE;
3142 fUnHilite = TRUE;
3143 fUserListSwitches = FALSE;
3144 fDCOpens = FALSE;
3145 fLinkSetsIcon = FALSE;
3146 fConfirmDelete = TRUE;
3147 fSyncUpdates = FALSE;
3148 fRealIdle = FALSE;
3149 fNoIconsFiles = FALSE;
3150 fNoIconsDirs = FALSE;
3151 fFolderAfterExtract = FALSE;
3152 fVerify = TRUE;
3153 fNoSearch = TRUE;
3154 DosSetVerify(TRUE);
3155 fForceUpper = FALSE;
3156 fForceLower = TRUE;
3157 fArcStuffVisible = TRUE;
3158 fVTreeOpensWPS = FALSE;
3159 fRemoteBug = TRUE;
3160 fDragndropDlg = TRUE;
3161 fMinOnOpen = FALSE;
3162 fQuickArcFind = TRUE;
3163 fNoRemovableScan = FALSE;
[783]3164 FilesToGet = FILESTOGET_MAX;
[551]3165 fFreeTree = FALSE;
3166 fSplitStatus = TRUE;
3167 fAutoTile = TRUE;
3168 fSaveState = TRUE;
3169 fStartMinimized = FALSE;
3170 fStartMaximized = FALSE;
3171 fDataMin = TRUE;
3172 ulCnrType = CCS_EXTENDSEL;
3173 fNoTreeGap = FALSE;
3174 {
3175 ULONG flWindowAttr;
[2]3176
[551]3177 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
3178 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3179 &flWindowAttr, sizeof(ULONG));
3180 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3181 &flWindowAttr, sizeof(ULONG));
3182 }
[1065]3183 dsDirCnrDefault.detailslongname = FALSE;
3184 dsDirCnrDefault.detailssubject = FALSE;
3185 dsDirCnrDefault.detailsea = TRUE;
3186 dsDirCnrDefault.detailssize = TRUE;
3187 dsDirCnrDefault.detailsicon = TRUE;
3188 dsDirCnrDefault.detailslwdate = TRUE;
3189 dsDirCnrDefault.detailslwtime = TRUE;
3190 dsDirCnrDefault.detailsladate = FALSE;
3191 dsDirCnrDefault.detailslatime = FALSE;
3192 dsDirCnrDefault.detailscrdate = FALSE;
3193 dsDirCnrDefault.detailscrtime = FALSE;
3194 dsDirCnrDefault.detailsattr = TRUE;
[551]3195 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3196 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
3197 if (hwndMain) {
[2]3198
[551]3199 SWP swp;
[2]3200
[551]3201 if (WinQueryWindowPos(hwndMain, &swp)) {
3202 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3203 swp.cx / 5,
3204 swp.cy -
3205 (WinQuerySysValue(HWND_DESKTOP, SV_CYICON) * 2),
3206 SWP_MOVE | SWP_SIZE);
3207 }
3208 }
3209 if (hwndTree) {
[2]3210
[551]3211 CNRINFO cnri;
3212 ULONG flWindowAttr = (CV_TREE | CV_TEXT |
3213 CV_FLOW | CA_TREELINE | CV_MINI);
[2]3214
[551]3215 memset(&cnri, 0, sizeof(cnri));
3216 cnri.cb = sizeof(cnri);
3217 WinSendMsg(WinWindowFromID
3218 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3219 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3220 cnri.flWindowAttr = flWindowAttr;
3221 WinSendMsg(WinWindowFromID
3222 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3223 CM_SETCNRINFO, MPFROMP(&cnri),
3224 MPFROMLONG(CMA_FLWINDOWATTR));
3225 }
3226 break;
[2]3227
[551]3228 case CFG9_WINDOZETHINK:
3229 fTileBackwards = FALSE;
3230 ulCnrType = CCS_MULTIPLESEL;
3231 fFollowTree = TRUE;
3232 fTopDir = FALSE;
3233 fSwitchTree = TRUE;
3234 fSwitchTreeOnFocus = FALSE;
3235 fSwitchTreeExpand = TRUE;
3236 fCollapseFirst = TRUE;
3237 fDCOpens = FALSE;
3238 {
3239 ULONG flWindowAttr;
[2]3240
[551]3241 flWindowAttr = CV_NAME | CV_FLOW | CA_DETAILSVIEWTITLES;
3242 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3243 &flWindowAttr, sizeof(ULONG));
3244 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3245 &flWindowAttr, sizeof(ULONG));
3246 }
3247 fLinkSetsIcon = FALSE;
3248 fFreeTree = FALSE;
3249 fNoTreeGap = TRUE;
3250 fExternalArcboxes = TRUE;
3251 fExternalViewer = TRUE;
3252 fExternalCollector = TRUE;
3253 fExternalINIs = TRUE;
3254 fUserListSwitches = TRUE;
3255 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
3256 MPVOID);
3257 if (hwndTree) {
[2]3258
[551]3259 CNRINFO cnri;
3260 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_ICON |
3261 CV_FLOW | CA_TREELINE;
[2]3262
[551]3263 memset(&cnri, 0, sizeof(cnri));
3264 cnri.cb = sizeof(cnri);
3265 WinSendMsg(WinWindowFromID
3266 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3267 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3268 cnri.flWindowAttr = flWindowAttr;
3269 WinSendMsg(WinWindowFromID
3270 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3271 CM_SETCNRINFO, MPFROMP(&cnri),
3272 MPFROMLONG(CMA_FLWINDOWATTR));
3273 }
3274 if (hwndMain) {
3275 if (fAutoView)
3276 WinSendMsg(hwndMain, WM_COMMAND,
3277 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3278 if (!fDrivebar)
3279 WinSendMsg(hwndMain, WM_COMMAND,
3280 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
3281 {
3282 SWP swp;
[2]3283
[551]3284 if (WinQueryWindowPos(hwndMain, &swp)) {
3285 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3286 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
3287 }
3288 }
3289 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
3290 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1L), MPVOID);
3291 }
3292 return 0;
[2]3293
[551]3294 case CFG9_DOSTHINK:
3295 fTileBackwards = TRUE;
3296 ulCnrType = CCS_MULTIPLESEL;
3297 fSwitchTree = TRUE;
3298 fSwitchTreeOnFocus = FALSE;
3299 fSwitchTreeExpand = TRUE;
3300 fCollapseFirst = TRUE;
3301 fFollowTree = TRUE;
3302 fTopDir = FALSE;
3303 if (hwndMain) {
3304 if (!fTextTools)
3305 WinSendMsg(hwndMain, WM_COMMAND,
3306 MPFROM2SHORT(IDM_TEXTTOOLS, 0), MPVOID);
3307 }
3308 {
3309 ULONG flWindowAttr;
[2]3310
[551]3311 flWindowAttr = CV_TEXT | CV_FLOW | CA_DETAILSVIEWTITLES;
3312 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
3313 &flWindowAttr, sizeof(ULONG));
3314 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
3315 &flWindowAttr, sizeof(ULONG));
3316 }
3317 if (hwndTree) {
[2]3318
[551]3319 CNRINFO cnri;
3320 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
[2]3321
[551]3322 memset(&cnri, 0, sizeof(cnri));
3323 cnri.cb = sizeof(cnri);
3324 WinSendMsg(WinWindowFromID
3325 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3326 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3327 cnri.flWindowAttr = flWindowAttr;
3328 WinSendMsg(WinWindowFromID
3329 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
3330 CM_SETCNRINFO, MPFROMP(&cnri),
3331 MPFROMLONG(CMA_FLWINDOWATTR));
3332 }
3333 /* intentional fallthru */
3334 case CFG9_1X:
3335 if (SHORT1FROMMP(mp1) == CFG9_1X) {
3336 fTileBackwards = FALSE;
3337 ulCnrType = CCS_MULTIPLESEL | CCS_EXTENDSEL;
3338 fSwitchTree = FALSE;
3339 fSwitchTreeOnFocus = FALSE;
3340 fSwitchTreeExpand = FALSE;
3341 fCollapseFirst = FALSE;
3342 fFollowTree = FALSE;
3343 fNoSearch = TRUE;
3344 }
3345 fAutoTile = TRUE;
3346 fSaveState = TRUE;
3347 fDCOpens = FALSE;
3348 fLinkSetsIcon = FALSE;
3349 fFreeTree = FALSE;
3350 fNoTreeGap = TRUE;
3351 fExternalArcboxes = TRUE;
3352 fExternalViewer = TRUE;
3353 fExternalCollector = TRUE;
3354 fExternalINIs = TRUE;
3355 fUserListSwitches = TRUE;
3356 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
3357 MPVOID);
3358 if (hwndTree) {
[2]3359
[551]3360 CNRINFO cnri;
3361 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
[2]3362
[551]3363 memset(&cnri, 0, sizeof(cnri));
3364 cnri.cb = sizeof(cnri);
3365 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
3366 TREE_CNR),
3367 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
3368 cnri.flWindowAttr = flWindowAttr;
3369 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
3370 TREE_CNR),
3371 CM_SETCNRINFO,
3372 MPFROMP(&cnri), MPFROMLONG(CMA_FLWINDOWATTR));
3373 }
3374 if (hwndMain) {
3375 if (fAutoView)
3376 WinSendMsg(hwndMain, WM_COMMAND,
3377 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
3378 if (fUserComboBox)
3379 WinSendMsg(hwndMain, WM_COMMAND,
3380 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
3381 {
3382 SWP swp;
[2]3383
[551]3384 if (WinQueryWindowPos(hwndMain, &swp)) {
3385 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
3386 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
3387 }
3388 }
3389 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
3390 PostMsg(MainObjectHwnd, UM_SETDIR, MPVOID, MPVOID);
3391 }
3392 return 0;
[2]3393
[551]3394 case DID_CANCEL:
3395 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
[187]3396
[551]3397 case DID_OK:
3398 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
3399 return 0;
[2]3400
[551]3401 default:
3402 return 0;
3403 }
[961]3404 // Save new details settings and refresh windows
[997]3405 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname",
[1065]3406 &dsDirCnrDefault.detailslongname, sizeof(BOOL));
[997]3407 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject",
[1065]3408 &dsDirCnrDefault.detailssubject, sizeof(BOOL));
[997]3409 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA",
[1065]3410 &dsDirCnrDefault.detailsea, sizeof(BOOL));
[997]3411 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize",
[1065]3412 &dsDirCnrDefault.detailssize, sizeof(BOOL));
[997]3413 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon",
[1065]3414 &dsDirCnrDefault.detailsicon, sizeof(BOOL));
[997]3415 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate",
[1065]3416 &dsDirCnrDefault.detailslwdate, sizeof(BOOL));
[997]3417 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime",
[1065]3418 &dsDirCnrDefault.detailslwtime, sizeof(BOOL));
[997]3419 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate",
[1065]3420 &dsDirCnrDefault.detailsladate, sizeof(BOOL));
[997]3421 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime",
[1065]3422 &dsDirCnrDefault.detailslatime, sizeof(BOOL));
[997]3423 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate",
[1065]3424 &dsDirCnrDefault.detailscrdate, sizeof(BOOL));
[997]3425 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime",
[1065]3426 &dsDirCnrDefault.detailscrtime, sizeof(BOOL));
[997]3427 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr",
[1065]3428 &dsDirCnrDefault.detailsattr, sizeof(BOOL));
[551]3429 if (hwndMain) {
[961]3430 // Save state and restore to refresh windows with new settings
[789]3431 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
[961]3432 // Tell window procedure to close container windows
[971]3433 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
[961]3434 // Restore saved state
[971]3435 PostMsg(MainObjectHwnd, UM_RESTORE, GetPString(IDS_FM2TEMPTEXT), MPVOID);
[2]3436 }
[551]3437 }
3438 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
3439 UM_UNDO, MPVOID, MPVOID);
3440 return 0;
[2]3441
[551]3442 case WM_CLOSE:
3443 break;
[2]3444 }
[551]3445 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]3446}
3447
[917]3448struct
3449{
3450 USHORT usMenuId;
3451 USHORT usFrameId;
3452 ULONG ulTitle;
3453 PFNWP pfnPageProc;
3454 HWND hwnd;
3455 ULONG ulHelpId;
3456 ULONG ulPageId;
3457} np[] = {
3458 { IDM_DIRCNRSETTINGS, CFGD_FRAME, IDS_NOTEDIRCNRS1TEXT, CfgDDlgProc, 0, 0, 0 },
[953]3459 { IDM_DIRVIEWSETTINGS, CFG5_FRAME, IDS_NOTEDIRVIEW1TEXT, Cfg5DlgProc, 0, 0, 0},
3460 { IDM_DIRSORTSETTINGS, CFG6_FRAME, IDS_NOTEDIRSORT1TEXT, Cfg6DlgProc, 0, 0, 0 },
3461 { IDM_COLLECTORVIEWSETTINGS, CFG5_FRAME, IDS_NOTECOLVIEW1TEXT, Cfg7DlgProc, 0, 0, 0 },
3462 { IDM_COLLECTORSORTSETTINGS, CFG6_FRAME, IDS_NOTECOLSORT1TEXT, Cfg8DlgProc, 0, 0, 0 },
[917]3463 { IDM_ARCHIVERSETTINGS, CFGA_FRAME, IDS_NOTEARCHIVER1TEXT, CfgADlgProc, 0, 0, 0 },
[953]3464 { IDM_TREECNRVIEWSETTINGS, CFGT_FRAME, IDS_NOTETREE1TEXT, CfgTDlgProc, 0, 0, 0 },
3465 { IDM_TREECNRSORTSETTINGS, CFGTS_FRAME, IDS_NOTETREESORT1TEXT, CfgTSDlgProc, 0, 0, 0 },
3466 { IDM_VIEWERSETTINGS, CFGV_FRAME, IDS_NOTEVIEWERS1TEXT, CfgVDlgProc, 0, 0, 0 },
3467 { IDM_VIEWERSETTINGS2, CFGH_FRAME, IDS_NOTEVIEWERS3TEXT, CfgHDlgProc, 0, 0, 0 },
[917]3468 { IDM_COMPARESETTINGS, CFGC_FRAME, IDS_NOTECOMPARE1TEXT, CfgCDlgProc, 0, 0, 0 },
[953]3469 { IDM_MONOLITHICSETTINGS, CFGM_FRAME, IDS_NOTEMONOLITHIC1TEXT, CfgMDlgProc, 0, 0, 0 },
3470 { IDM_GENERALSETTINGS, CFGG_FRAME, IDS_NOTEGENERAL1TEXT, CfgGDlgProc, 0, 0, 0 },
3471 { IDM_SCANSETTINGS, CFGS_FRAME, IDS_NOTESCANNING1TEXT, CfgSDlgProc, 0, 0, 0 },
3472 { IDM_BUBBLESSETTINGS, CFGB_FRAME, IDS_NOTEBUBBLE1TEXT, CfgBDlgProc, 0, 0, 0 },
[917]3473 { IDM_QUICKSETTINGS, CFG9_FRAME, IDS_NOTEQUICK1TEXT, Cfg9DlgProc, 0, 0, 0 },
3474 { 0, 0, 0, NULL, 0, 0, 0 } // usFrameId 0 is end marker
[551]3475};
[2]3476
[953]3477static PSZ pszIK_LastSettingsPage = "LastSettingsPage";
3478
[551]3479MRESULT EXPENTRY CfgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[187]3480{
[551]3481 HWND hwndTemp;
[2]3482 USHORT attrib = BKA_FIRST;
[551]3483 INT x;
[917]3484 ULONG ulPageId;
[953]3485 UINT uPageIndex;
[1080]3486 HAB hab;
3487 static HACCEL haccelCfg = NULLHANDLE;
[2]3488
[551]3489 switch (msg) {
3490 case WM_INITDLG:
3491 hwndNotebook = hwnd;
[953]3492 uPageIndex = 0;
[1080]3493 hab = WinQueryAnchorBlock(hwnd);
3494 if (haccelCfg == NULLHANDLE) {
3495 haccelCfg = WinLoadAccelTable(hab, FM3ModHandle, CFG_FRAME);
3496 if (haccelCfg == NULLHANDLE)
3497 Win_Error(hwndNotebook, HWND_DESKTOP, pszSrcFile, __LINE__, "WinLoadAccelTable");
3498 }
3499 if (haccelCfg != NULLHANDLE) {
3500 if (!WinSetAccelTable(hab, haccelCfg, hwndNotebook))
3501 Win_Error(hwndNotebook, HWND_DESKTOP, pszSrcFile, __LINE__, "WinSetAccelTable");
3502 // else
3503 // DbgMsg(pszSrcFile, __LINE__, "WinSetAccelTable MAIN_DRIVELIST %x %x", hwndFrame, haccelDriveList);
3504 }
[953]3505
3506 // If generic call, try to find conditional cascade default
3507 // 15 Feb 08 SHL fixme to be gone when/if IDM_NOTEBOOK gone?
3508 if (mp2 == MPFROMLONG(IDM_NOTEBOOK)) {
3509 DbgMsg(pszSrcFile, __LINE__, "Trying to translate IDM_NOTEBOOK");
3510 hwndTemp = WinQueryWindow(hwnd, QW_OWNER);
3511 if (hwndTemp != HWND_DESKTOP) {
3512 HWND hwndMenu;
3513 // Owner is frame if not applet
3514 hwndMenu = WinWindowFromID(hwndTemp, FID_MENU);
3515 if (hwndMenu == NULLHANDLE)
3516 Runtime_Error(pszSrcFile, __LINE__, "FID_MENU");
3517 else {
3518 MENUITEM mi;
3519 BOOL ok;
3520 memset(&mi, 0, sizeof(mi));
3521 ok = (BOOL)WinSendMsg(hwndMenu,
3522 MM_QUERYITEM,
3523 MPFROM2SHORT(IDM_NOTEBOOKSUBMENU, TRUE),
3524 MPFROMP(&mi));
3525 if (!ok)
3526 Runtime_Error(pszSrcFile, __LINE__, "IDM_NOTEBOOKSUBMENU");
3527 else {
3528 mp2 = WinSendMsg(mi.hwndSubMenu, MM_QUERYDEFAULTITEMID, MPVOID, MPVOID);
3529 if (!mp2)
3530 Runtime_Error(pszSrcFile, __LINE__, "MM_QUERYDEFAULTITEMID");
3531 }
3532 }
[2]3533 }
[551]3534 }
[953]3535
[551]3536 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
3537 WinSendDlgItemMsg(hwnd,
3538 CFG_NOTEBOOK,
3539 BKM_SETDIMENSIONS,
3540 MPFROM2SHORT(82, 24), MPFROMLONG(BKA_MAJORTAB));
3541 WinSendDlgItemMsg(hwnd,
3542 CFG_NOTEBOOK,
3543 BKM_SETDIMENSIONS,
3544 MPFROM2SHORT(20, 20), MPFROMLONG(BKA_PAGEBUTTON));
3545 WinSendDlgItemMsg(hwnd,
3546 CFG_NOTEBOOK,
3547 BKM_SETDIMENSIONS,
3548 MPFROM2SHORT(0, 0), MPFROMLONG(BKA_MINORTAB));
[953]3549
3550 // Build and insert notebook pages
[917]3551 for (x = 0; np[x].usFrameId; x++) {
[551]3552 hwndTemp = WinLoadDlg(HWND_DESKTOP,
3553 HWND_DESKTOP,
[917]3554 np[x].pfnPageProc, FM3ModHandle, np[x].usFrameId, MPVOID);
3555 if (!hwndTemp) {
3556 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
3557 "Can not load settings page %u", x);
3558 }
3559 else {
3560 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG)hwnd);
[551]3561 np[x].hwnd = hwndTemp;
[917]3562 np[x].ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3563 CFG_NOTEBOOK,
3564 BKM_INSERTPAGE,
3565 MPFROMLONG(BKA_FIRST),
3566 MPFROM2SHORT(BKA_AUTOPAGESIZE |
3567 BKA_STATUSTEXTON |
3568 BKA_MAJOR, attrib));
[551]3569 attrib = BKA_LAST;
3570 WinSendDlgItemMsg(hwnd,
3571 CFG_NOTEBOOK,
3572 BKM_SETPAGEWINDOWHWND,
[917]3573 MPFROMLONG(np[x].ulPageId), MPFROMLONG(np[x].hwnd));
[551]3574 WinSendDlgItemMsg(hwnd,
3575 CFG_NOTEBOOK,
3576 BKM_SETTABTEXT,
[917]3577 MPFROMLONG(np[x].ulPageId),
3578 MPFROMP(GetPString(np[x].ulTitle)));
[551]3579 WinSendDlgItemMsg(hwnd,
3580 CFG_NOTEBOOK,
3581 BKM_SETSTATUSLINETEXT,
[917]3582 MPFROMLONG(np[x].ulPageId),
3583 MPFROMP(GetPString(np[x].ulTitle + 1)));
[1096]3584
[953]3585 if (LONGFROMMP(mp2) == np[x].usMenuId)
3586 uPageIndex = x; // Remember selected page
[2]3587 }
[953]3588 } // for pages
3589
[917]3590 // If quick settings page requested, assume request is for first time init
3591 // Turn to cfg page and show help
3592 // Page will not be available if running fm/2 lite or if load error
[953]3593 // 15 Feb 08 SHL fixme to do just once?
[917]3594 if (mp2 == MPFROMLONG(IDM_QUICKSETTINGS) &&
[953]3595 x-- > 0 &&
3596 np[x].hwnd &&
3597 np[x].usFrameId == CFG9_FRAME)
3598 {
[919]3599 // 10 Jan 08 SHL fixme to document what UM_SETDIR 1 means
[917]3600 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1), MPVOID);
3601 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3602 BKM_TURNTOPAGE, MPFROMLONG(np[x].ulPageId), MPVOID);
3603 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x].hwnd), MPVOID);
3604 PostMsg(np[x].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
[551]3605 }
[953]3606 else if (uPageIndex >= x) {
3607 Runtime_Error(pszSrcFile, __LINE__, "uPageIndex corrupted (%u)",
3608 uPageIndex);
3609 uPageIndex = 0;
[551]3610 }
[953]3611 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3612 BKM_TURNTOPAGE, MPFROMLONG(np[uPageIndex].ulPageId), MPVOID);
3613 // 15 Feb 08 SHL fixme to put focus on first field of page
[2]3614
[906]3615 break;
3616
[551]3617 case UM_FOCUSME:
3618 if (mp1)
3619 WinSetActiveWindow(HWND_DESKTOP, (HWND) mp1);
3620 break;
[2]3621
[551]3622 case UM_SETUP:
3623 WinSetActiveWindow(HWND_DESKTOP, WinQueryWindow(hwnd, QW_OWNER));
3624 WinSetActiveWindow(HWND_DESKTOP, hwnd);
3625 return 0;
[2]3626
[1080]3627 case WM_HELP:
3628 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, mp2);
3629 break;
3630
3631 case WM_CHAR:
3632 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) {
3633 switch (CHARMSG(&msg)->vkey) {
3634 case VK_F3:
3635 case VK_ENTER:
3636 case VK_NEWLINE:
3637 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID);
3638 return 0;
3639 break;
3640 case VK_ESC:
3641 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID);
3642 return 0;
3643 break;
3644 case VK_F1:
3645 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID);
3646 return 0;
3647 break;
3648 }
3649 }
3650 break;
3651
[551]3652 case WM_COMMAND:
3653 switch (SHORT1FROMMP(mp1)) {
3654 case DID_OK:
3655 WinDismissDlg(hwnd, 1);
3656 break;
[2]3657
[551]3658 case DID_CANCEL:
3659 // Tell current page to undo itself in case changed and still alive
[953]3660 SaveLastPageIndex(hwnd);
[917]3661 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
[551]3662 CFG_NOTEBOOK,
3663 BKM_QUERYPAGEID,
3664 MPFROMLONG(0),
3665 MPFROM2SHORT(BKA_TOP, 0));
3666 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3667 CFG_NOTEBOOK,
3668 BKM_QUERYPAGEWINDOWHWND,
[917]3669 MPFROMLONG(ulPageId), MPVOID);
[551]3670 if (hwndTemp)
3671 WinSendMsg(hwndTemp, UM_UNDO, MPVOID, MPVOID);
[187]3672
[551]3673 WinDismissDlg(hwnd, 0);
3674 break;
[2]3675
[551]3676 case IDM_HELP: /* relay message to appropriate page's window */
[917]3677 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
[551]3678 CFG_NOTEBOOK,
3679 BKM_QUERYPAGEID,
3680 MPFROMLONG(0),
3681 MPFROM2SHORT(BKA_TOP, 0));
3682 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3683 CFG_NOTEBOOK,
3684 BKM_QUERYPAGEWINDOWHWND,
[917]3685 MPFROMLONG(ulPageId), MPVOID);
[551]3686 if (hwndTemp)
3687 PostMsg(hwndTemp, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
[2]3688 break;
[551]3689 }
3690 return 0;
[2]3691
[551]3692 case UM_UNDO:
[917]3693 for (x = 0; np[x].usFrameId; x++) {
[551]3694 if (np[x].hwnd)
3695 WinSendMsg(np[x].hwnd, UM_UNDO, MPVOID, MPVOID);
3696 }
3697 break;
3698
3699 case WM_DESTROY:
[917]3700 if (np[0].usFrameId) {
3701 for (x = 1; np[x].usFrameId; x++) {
[551]3702 if (np[x].hwnd) {
3703 WinSendMsg(np[x].hwnd, WM_CLOSE, MPVOID, MPVOID);
3704 np[x].hwnd = (HWND) 0;
[917]3705 np[x].ulPageId = 0;
[551]3706 }
[2]3707 }
[551]3708 WinSendMsg(np[0].hwnd, WM_CLOSE, MPVOID, MPVOID);
3709 np[0].hwnd = (HWND) 0;
[917]3710 np[0].ulPageId = 0;
[551]3711 }
3712 hwndNotebook = (HWND) 0;
3713 break;
[917]3714 case WM_CLOSE:
[953]3715 SaveLastPageIndex(hwnd);
[917]3716 break;
[2]3717 }
[551]3718 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]3719}
[953]3720/**
3721 * Initialize config submenu
3722 * @param hwndMenu is window handle
3723 * @param fIsLite is true if called for fm/2 lite
3724 */
[783]3725
[953]3726VOID CfgMenuInit(HWND hwndMenu, BOOL fIsLite)
3727{
3728 UINT uPageIndex;
3729 ULONG ulSize = sizeof(uPageIndex);
3730 UINT x;
3731 PrfQueryProfileData(fmprof, appname, pszIK_LastSettingsPage, &uPageIndex, &ulSize);
3732 for (x = 0; x < uPageIndex && np[x].usFrameId; x++)
3733 ; // Search
3734 if (np[x].usMenuId)
3735 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[uPageIndex].usMenuId);
3736 // If lite, delete excess items from menus and tables
3737 if (fIsLite) {
3738 WinSendMsg(hwndMenu,
3739 MM_DELETEITEM,
3740 MPFROM2SHORT(IDM_QUICKSETTINGS, FALSE), MPVOID);
3741 // If fm/2 lite drop quick setting page
3742 for (x = 0; np[x].usFrameId && np[x].usFrameId != CFG9_FRAME; x++)
3743 ; // Scan
3744 np[x].usFrameId = 0;
3745 }
3746}
3747
3748static VOID SaveLastPageIndex(HWND hwnd)
3749{
3750 HWND hwndOwner;
3751 HWND hwndMenu;
3752 UINT x;
3753 ULONG ulPageId;
3754
3755 // Owner is frame if not applet
3756 hwndOwner = WinQueryWindow(hwnd, QW_OWNER);
3757 if (hwndOwner != HWND_DESKTOP) {
3758 ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3759 CFG_NOTEBOOK,
3760 BKM_QUERYPAGEID,
3761 MPFROMLONG(0),
3762 MPFROM2SHORT(BKA_TOP, 0));
3763 if (!ulPageId)
3764 Runtime_Error(pszSrcFile, __LINE__, "BKM_QUERYPAGEID");
3765 else {
3766 for (x = 0; np[x].usMenuId && np[x].ulPageId != ulPageId; x++)
3767 ; // Scan
3768 if (!np[x].usMenuId)
3769 Runtime_Error(pszSrcFile, __LINE__, "bad menu id %lu", ulPageId);
3770 else {
3771 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage,
3772 (PVOID)&x, sizeof(x));
3773 hwndMenu = WinWindowFromID(hwndOwner, FID_MENU);
3774 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[x].usMenuId);
3775 }
3776 }
3777 }
3778}
3779
[783]3780#pragma alloc_text(NOTEBOOK,CfgTDlgProc,CfgTSDlgProc,CfgMDlgProc)
[892]3781#pragma alloc_text(NOTEBOOK2,CfgADlgProc,CfgSDlgProc,CfgVDlgProc,CfgHDlgProc)
[783]3782#pragma alloc_text(NOTEBOOK3,CfgDDlgProc,Cfg5DlgProc,Cfg6DlgProc)
3783#pragma alloc_text(NOTEBOOK4,Cfg7DlgProc,Cfg8DlgProc,CfgCDlgProc)
3784#pragma alloc_text(NOTEBOOK5,CfgGDlgProc,CfgDlgProc,CfgBDlgProc)
[953]3785#pragma alloc_text(NOTEBOOK5,CfgMenuInit,SaveLastPageIndex)
Note: See TracBrowser for help on using the repository browser.