source: trunk/dll/notebook.c@ 975

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

Ticket 230: Added comments.

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