source: trunk/dll/notebook.c@ 985

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

Update sizes dialog (ticket 44); Make max command line length user settable (ticket 199); use xfree for free in most cases (ticket 212); initial code to check for valid ini file (ticket 102); Some additional refactoring and structure rework; Some documentation updates;

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