- Timestamp:
- Sep 5, 2008, 11:40:35 PM (17 years ago)
- Location:
- trunk/dll
- Files:
-
- 10 edited
-
avl.c (modified) (1 diff)
-
draglist.c (modified) (1 diff)
-
getnames.c (modified) (1 diff)
-
loadbmp.c (modified) (1 diff)
-
mainwnd.c (modified) (2 diffs)
-
saveclip.c (modified) (4 diffs)
-
seeall.c (modified) (83 diffs)
-
select.c (modified) (1 diff)
-
shadow.c (modified) (2 diffs)
-
worker.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/avl.c
r1082 r1158 51 51 #include "strutil.h" // GetPString 52 52 #include "errutil.h" // Runtime_Error 53 #include "avv.h" // ArcReviewDlgProc, rewrite_archiverbb2 54 #include "droplist.h" // FullDrgName 53 55 #include "fm3dll.h" 54 56 #include "fortify.h" -
trunk/dll/draglist.c
r1039 r1158 35 35 36 36 #include "errutil.h" // Dos_Error... 37 #include "draglist.h" 38 #include "valid.h" // IsValidDrive 37 39 #include "fm3dll.h" 38 40 #include "fortify.h" -
trunk/dll/getnames.c
r907 r1158 25 25 #include "errutil.h" // Dos_Error... 26 26 #include "strutil.h" // GetPString 27 #include "getnames.h" 28 #include "walkem.h" // load_udirs, remove_udir 27 29 #include "fm3dll.h" 28 30 -
trunk/dll/loadbmp.c
r1104 r1158 30 30 31 31 #include "errutil.h" // Dos_Error... 32 #include "loadbmp.h" 32 33 #include "fm3dll.h" 33 34 34 35 static PSZ pszSrcFile = __FILE__; 36 37 static HBITMAP LoadBitmapFromFile(CHAR * pszFileName); 35 38 36 39 HBITMAP LoadBitmapFromFileNum(USHORT id) -
trunk/dll/mainwnd.c
r1140 r1158 1 2 1 /*********************************************************************** 3 2 … … 97 96 #include "avl.h" // free_archivers 98 97 #include "walkem.h" // free_setups... 98 #include "key.h" // AboutDlgProc 99 #include "menu.h" // AddToMenu 100 #include "mainwnd.h" 101 #include "cmdline.h" // CmdLine2DlgProc, save_cmdlines 102 #include "common.h" // CommonCreateMainChildren, CommonDriveCmd, CommonMainWndProc 103 #include "notify.h" // DoNotify, HideNote, ShowNote 104 #include "draglist.h" // DragOne 105 #include "chklist.h" // DropListProc 106 #include "avv.h" // EditArchiverDefinition 107 #include "assoc.h" // EditAssociations 108 #include "fm2cmd.h" // FM2Command 109 #include "misc.h" // FindDirCnr, FixSwitchList, PaintSTextWindow, 110 // SetConditionalCascade, SetMenuCheck, SetSysMenu 111 // SwitchCommand 112 #include "instant.h" // InstantDlgProc 113 #include "killproc.h" // KillDlgProc 114 #include "loadbmp.h" // LoadBitmapFromFileNum 115 #include "presparm.h" // SavePresParams 116 #include "treecnr.h" // ShowTreeRec, StartTreeCnr 117 #include "inis.h" // StartIniEditor 118 #include "sysinfo.h" // SysInfoDlgProc 119 #include "viewinf.h" // ViewInfProc 120 #include "walkem.h" // WalkDlgProc, WalkTwoCmpDlgProc, add_setup, add_udir 121 // fill_setups_list, free_ldir, free_udirs, load_udirs 122 // remove_setup, remove_udir, save_setups, save_udirs 123 #include "winlist.h" // WindowList 124 #include "cmdline.h" // add_cmdline 125 #include "assoc.h" // free_associations 99 126 #include "fm3dll.h" 100 127 -
trunk/dll/saveclip.c
r1119 r1158 41 41 #include "strutil.h" // GetPString 42 42 #include "pathutil.h" // BldFullPathName 43 #include "saveclip.h" 44 #include "literal.h" // fixup 43 45 #include "fm3dll.h" 44 46 #include "fortify.h" 45 47 46 48 static PSZ pszSrcFile = __FILE__; 49 50 //static VOID ListToClipboard(HWND hwnd, CHAR ** list, ULONG append); 51 52 static BOOL SaveToClipHab(HAB hab, CHAR * text, BOOL append); 53 47 54 #define MAX_PATTERN_BYTES 80 48 55 … … 101 108 } 102 109 110 #if 0 // JBS 103 111 VOID ListToClipboard(HWND hwnd, CHAR ** list, ULONG append) 104 112 { … … 107 115 ListToClipboardHab(hab, list, append); 108 116 } 117 #endif 109 118 110 119 VOID ListToClipboardHab(HAB hab, CHAR ** list, ULONG append) … … 1006 1015 1007 1016 #pragma alloc_text(FMCLIPBOARDIN,SaveToClip,SaveToClipHab) 1008 #pragma alloc_text(FMCLIPBOARDOUT,ListToClipboard ,ListToClipboardHab)1017 #pragma alloc_text(FMCLIPBOARDOUT,ListToClipboardHab) 1009 1018 #pragma alloc_text(FMCLIPBOARDOUT,ListFromClipboard,ListFromClipboardHab) 1010 1019 #pragma alloc_text(SAVELIST,SaveListDlgProc,SaveAllListDlgProc) -
trunk/dll/seeall.c
r1116 r1158 54 54 #include "fm3dlg.h" 55 55 #include "fm3str.h" 56 #include "pathutil.h" // BldQuotedFullPathName...57 #include "makelist.h" // AddToList58 #include "errutil.h" // Dos_Error...59 #include "strutil.h" // GetPString56 #include "pathutil.h" // BldQuotedFullPathName... 57 #include "makelist.h" // AddToList 58 #include "errutil.h" // Dos_Error... 59 #include "strutil.h" // GetPString 60 60 #include "notebook.h" // targetdirectory 61 #include "copyf.h" // AdjustWildcardName, make_deleteable 62 #include "attribs.h" // AttrListDlgProc 63 #include "chklist.h" // CenterOverWindow, CheckListProc 64 #include "colors.h" // ColorDlgProc 65 #include "draglist.h" // DragList 66 #include "extract.h" // ExtractDlgProc 67 #include "info.h" // FileInfoProc 68 #include "valid.h" // GetDesktopName, IsNewer, TestFDates 69 #include "saveclip.h" // ListToClipboardHab, SaveAllListDlgProc 70 #include "shadow.h" // MakeShadows 71 #include "mkdir.h" // MassMkdir 72 #include "objcnr.h" // ObjCnrDlgProc 73 #include "codepage.h" // PickCodepage 74 #include "printer.h" // PrintDlgProc, PrintListThread 75 #include "rename.h" // RenameProc 76 #include "uudecode.h" // UUD 77 #include "walkem.h" // WalkCopyDlgProc, WalkMoveDlgProc 61 78 #include "fm3dll.h" 79 #include "seeall.h" 80 #include "misc.h" // SetConditionalCascade 62 81 63 82 #include "fortify.h" … … 186 205 WinCheckButton(hwnd, DUPE_CRCS, ((flags & DP_NAMES) != 0)); 187 206 if (!(flags & DP_NAMES)) 188 WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), FALSE);207 WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), FALSE); 189 208 } 190 209 break; … … 194 213 case DUPE_NAMES: 195 214 if (WinQueryButtonCheckstate(hwnd, DUPE_NAMES)) 196 WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), TRUE);215 WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), TRUE); 197 216 else { 198 WinCheckButton(hwnd, DUPE_EXTS, FALSE);199 WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), FALSE);217 WinCheckButton(hwnd, DUPE_EXTS, FALSE); 218 WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), FALSE); 200 219 } 201 220 break; 202 221 case DUPE_SIZES: 203 222 if (!WinQueryButtonCheckstate(hwnd, DUPE_SIZES)) 204 WinCheckButton(hwnd, DUPE_CRCS, FALSE);223 WinCheckButton(hwnd, DUPE_CRCS, FALSE); 205 224 break; 206 225 case DUPE_CRCS: 207 226 if (WinQueryButtonCheckstate(hwnd, DUPE_CRCS)) 208 WinCheckButton(hwnd, DUPE_SIZES, TRUE);227 WinCheckButton(hwnd, DUPE_SIZES, TRUE); 209 228 break; 210 229 } … … 215 234 case DID_OK: 216 235 { 217 USHORT flags = 0;218 219 if (WinQueryButtonCheckstate(hwnd, DUPE_NAMES)) {220 flags |= DP_NAMES;221 if (WinQueryButtonCheckstate(hwnd, DUPE_EXTS))222 flags |= DP_EXTS;223 }224 if (WinQueryButtonCheckstate(hwnd, DUPE_DATES))225 flags |= DP_DATES;226 if (WinQueryButtonCheckstate(hwnd, DUPE_SIZES)) {227 flags |= DP_SIZES;228 if (WinQueryButtonCheckstate(hwnd, DUPE_CRCS))229 flags |= (DP_CRCS | DP_SIZES);230 }231 if (!flags)232 saymsg(MB_ENTER,233 hwnd,234 GetPString(IDS_ERRORTEXT),235 "%s", GetPString(IDS_CHECKONETEXT));236 else237 WinDismissDlg(hwnd, flags);236 USHORT flags = 0; 237 238 if (WinQueryButtonCheckstate(hwnd, DUPE_NAMES)) { 239 flags |= DP_NAMES; 240 if (WinQueryButtonCheckstate(hwnd, DUPE_EXTS)) 241 flags |= DP_EXTS; 242 } 243 if (WinQueryButtonCheckstate(hwnd, DUPE_DATES)) 244 flags |= DP_DATES; 245 if (WinQueryButtonCheckstate(hwnd, DUPE_SIZES)) { 246 flags |= DP_SIZES; 247 if (WinQueryButtonCheckstate(hwnd, DUPE_CRCS)) 248 flags |= (DP_CRCS | DP_SIZES); 249 } 250 if (!flags) 251 saymsg(MB_ENTER, 252 hwnd, 253 GetPString(IDS_ERRORTEXT), 254 "%s", GetPString(IDS_CHECKONETEXT)); 255 else 256 WinDismissDlg(hwnd, flags); 238 257 } 239 258 break; … … 245 264 case IDM_HELP: 246 265 if (hwndHelp) 247 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,248 MPFROM2SHORT(HELP_DUPES, 0), MPFROMSHORT(HM_RESOURCEID));266 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 267 MPFROM2SHORT(HELP_DUPES, 0), MPFROMSHORT(HM_RESOURCEID)); 249 268 break; 250 269 } … … 279 298 register CHAR *p, *pp; 280 299 BOOL dontask = FALSE, wildcarding = FALSE, 281 overold = FALSE, overnew = FALSE;300 overold = FALSE, overnew = FALSE; 282 301 283 302 if (!list || !list[0]) 284 goto Abort;303 goto Abort; 285 304 *path = *wildname = 0; 286 305 287 306 switch (SHORT1FROMMP(mp1)) { 288 307 case IDM_MOVEPRESERVE: 289 {290 CHAR preserve[CCHMAXPATH], *end;291 292 mp1 = MPFROM2SHORT(IDM_MOVE, SHORT2FROMMP(mp1));293 strcpy(preserve, list[0] + 2);294 end = strrchr(preserve, '\\');295 if (end) {296 end++;297 for (x = 1; list[x]; x++) {298 p = preserve;299 pp = list[x] + 2;300 while (p < end && toupper(*p) == toupper(*pp)) {301 p++;302 pp++;303 }304 if (*p == '\\')305 p++;306 if (p < end)307 end = p;308 }309 *end = 0;310 }311 else312 *preserve = 0;313 plen = strlen(preserve);314 if (plen)315 plen += 2;316 }317 break;308 { 309 CHAR preserve[CCHMAXPATH], *end; 310 311 mp1 = MPFROM2SHORT(IDM_MOVE, SHORT2FROMMP(mp1)); 312 strcpy(preserve, list[0] + 2); 313 end = strrchr(preserve, '\\'); 314 if (end) { 315 end++; 316 for (x = 1; list[x]; x++) { 317 p = preserve; 318 pp = list[x] + 2; 319 while (p < end && toupper(*p) == toupper(*pp)) { 320 p++; 321 pp++; 322 } 323 if (*p == '\\') 324 p++; 325 if (p < end) 326 end = p; 327 } 328 *end = 0; 329 } 330 else 331 *preserve = 0; 332 plen = strlen(preserve); 333 if (plen) 334 plen += 2; 335 } 336 break; 318 337 case IDM_COPYPRESERVE: 319 {320 CHAR preserve[CCHMAXPATH], *end;321 322 mp1 = MPFROM2SHORT(IDM_COPY, SHORT2FROMMP(mp1));323 strcpy(preserve, list[0] + 2);324 end = strrchr(preserve, '\\');325 if (end) {326 end++;327 for (x = 1; list[x]; x++) {328 p = preserve;329 pp = list[x] + 2;330 while (p < end && toupper(*p) == toupper(*pp)) {331 p++;332 pp++;333 }334 if (*p == '\\')335 p++;336 if (p < end)337 end = p;338 }339 *end = 0;340 }341 else342 *preserve = 0;343 plen = strlen(preserve);344 if (plen)345 plen += 2;346 }347 break;338 { 339 CHAR preserve[CCHMAXPATH], *end; 340 341 mp1 = MPFROM2SHORT(IDM_COPY, SHORT2FROMMP(mp1)); 342 strcpy(preserve, list[0] + 2); 343 end = strrchr(preserve, '\\'); 344 if (end) { 345 end++; 346 for (x = 1; list[x]; x++) { 347 p = preserve; 348 pp = list[x] + 2; 349 while (p < end && toupper(*p) == toupper(*pp)) { 350 p++; 351 pp++; 352 } 353 if (*p == '\\') 354 p++; 355 if (p < end) 356 end = p; 357 } 358 *end = 0; 359 } 360 else 361 *preserve = 0; 362 plen = strlen(preserve); 363 if (plen) 364 plen += 2; 365 } 366 break; 348 367 case IDM_WILDMOVE: 349 wildcarding = TRUE;350 mp1 = MPFROM2SHORT(IDM_MOVE, SHORT2FROMMP(mp1));351 break;368 wildcarding = TRUE; 369 mp1 = MPFROM2SHORT(IDM_MOVE, SHORT2FROMMP(mp1)); 370 break; 352 371 case IDM_WILDRENAME: 353 wildcarding = TRUE;354 mp1 = MPFROM2SHORT(IDM_RENAME, SHORT2FROMMP(mp1));355 break;372 wildcarding = TRUE; 373 mp1 = MPFROM2SHORT(IDM_RENAME, SHORT2FROMMP(mp1)); 374 break; 356 375 case IDM_WILDCOPY: 357 wildcarding = TRUE;358 mp1 = MPFROM2SHORT(IDM_COPY, SHORT2FROMMP(mp1));359 break;376 wildcarding = TRUE; 377 mp1 = MPFROM2SHORT(IDM_COPY, SHORT2FROMMP(mp1)); 378 break; 360 379 } 361 380 … … 363 382 case IDM_OBJECT: 364 383 case IDM_SHADOW: 365 {366 APIRET rc;367 368 GetDesktopName(path, sizeof(path));369 rc = WinDlgBox(HWND_DESKTOP,370 hwndFrame,371 ObjCnrDlgProc,372 FM3ModHandle, OBJCNR_FRAME, MPFROMP(path));373 if (rc) {374 if (rc > 1)375 strcpy(path, "<WP_DESKTOP>");376 }377 else {378 FreeList(list);379 break;380 }381 MakeShadows(hwndFrame,382 list, (SHORT1FROMMP(mp1) == IDM_SHADOW), path, NULL);383 }384 FreeList(list);385 break;384 { 385 APIRET rc; 386 387 GetDesktopName(path, sizeof(path)); 388 rc = WinDlgBox(HWND_DESKTOP, 389 hwndFrame, 390 ObjCnrDlgProc, 391 FM3ModHandle, OBJCNR_FRAME, MPFROMP(path)); 392 if (rc) { 393 if (rc > 1) 394 strcpy(path, "<WP_DESKTOP>"); 395 } 396 else { 397 FreeList(list); 398 break; 399 } 400 MakeShadows(hwndFrame, 401 list, (SHORT1FROMMP(mp1) == IDM_SHADOW), path, NULL); 402 } 403 FreeList(list); 404 break; 386 405 387 406 case IDM_PRINT: 388 {389 LISTINFO *li;407 { 408 LISTINFO *li; 390 409 # ifdef FORTIFY 391 410 Fortify_EnterScope(); 392 411 # endif 393 li = xmallocz(sizeof(LISTINFO), pszSrcFile, __LINE__);394 if (li) {395 li->hwndS = WinWindowFromID(hwndFrame, FID_CLIENT);396 li->type = IDM_PRINT;397 li->list = list;398 if (WinDlgBox(HWND_DESKTOP,399 li->hwndS,400 PrintDlgProc,401 FM3ModHandle, PRN_FRAME, MPFROMP(li))) {402 if (li && li->list && li->list[0]) {403 strcpy(li->targetpath, printer);404 if (_beginthread(PrintListThread, NULL, 65536, (PVOID) li) ==405 -1) {406 Runtime_Error(pszSrcFile, __LINE__,407 GetPString(IDS_COULDNTSTARTTHREADTEXT));408 FreeListInfo(li);409 }410 }411 }412 }413 }414 break;412 li = xmallocz(sizeof(LISTINFO), pszSrcFile, __LINE__); 413 if (li) { 414 li->hwndS = WinWindowFromID(hwndFrame, FID_CLIENT); 415 li->type = IDM_PRINT; 416 li->list = list; 417 if (WinDlgBox(HWND_DESKTOP, 418 li->hwndS, 419 PrintDlgProc, 420 FM3ModHandle, PRN_FRAME, MPFROMP(li))) { 421 if (li && li->list && li->list[0]) { 422 strcpy(li->targetpath, printer); 423 if (_beginthread(PrintListThread, NULL, 65536, (PVOID) li) == 424 -1) { 425 Runtime_Error(pszSrcFile, __LINE__, 426 GetPString(IDS_COULDNTSTARTTHREADTEXT)); 427 FreeListInfo(li); 428 } 429 } 430 } 431 } 432 } 433 break; 415 434 416 435 case IDM_EAS: 417 if (WinDlgBox(HWND_DESKTOP,418 hwndFrame,419 DisplayEAsProc, FM3ModHandle, EA_FRAME, (PVOID) list)) {420 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),421 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))422 FreeList(list);423 }424 else425 FreeList(list);426 break;436 if (WinDlgBox(HWND_DESKTOP, 437 hwndFrame, 438 DisplayEAsProc, FM3ModHandle, EA_FRAME, (PVOID) list)) { 439 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 440 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID)) 441 FreeList(list); 442 } 443 else 444 FreeList(list); 445 break; 427 446 428 447 case IDM_INFO: 429 if (WinDlgBox(HWND_DESKTOP,430 hwndFrame,431 FileInfoProc,432 FM3ModHandle, FLE_FRAME, (PVOID) list) == 2) {433 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),434 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))435 FreeList(list);436 }437 else438 FreeList(list);439 break;448 if (WinDlgBox(HWND_DESKTOP, 449 hwndFrame, 450 FileInfoProc, 451 FM3ModHandle, FLE_FRAME, (PVOID) list) == 2) { 452 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 453 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID)) 454 FreeList(list); 455 } 456 else 457 FreeList(list); 458 break; 440 459 441 460 case IDM_ARCHIVE: 442 {443 DIRCNRDATA ad;444 CHAR szBuffer[1025];445 446 memset(&ad, 0, sizeof(ad));447 ad.namecanchange = 1;448 ad.info = arcsighead;// Hide dups449 if (!WinDlgBox(HWND_DESKTOP,450 hwndFrame,451 SBoxDlgProc,452 FM3ModHandle,453 ASEL_FRAME, (PVOID) & ad.info) || !ad.info) {454 // we blew it455 FreeList(list);456 break;457 }458 if (!ad.info->create &&459 !ad.info->move &&460 !ad.info->createwdirs &&461 !ad.info->movewdirs && !ad.info->createrecurse) {462 // 14 Aug 07 SHL fixme to tell user why we failed463 FreeList(list);464 break;465 }466 if (!WinDlgBox(HWND_DESKTOP, hwndFrame, ArchiveDlgProc, FM3ModHandle, ARCH_FRAME, (PVOID) & ad) || !*ad.arcname || !*ad.command) {/* we blew it */467 FreeList(list);468 break;469 }470 // Build archiver command line471 strcpy(szBuffer, ad.command);472 strcat(szBuffer, " ");473 strcat(szBuffer, ad.arcname);474 p = &szBuffer[strlen(szBuffer)];475 if (ad.mask.szMask) {476 strcat(szBuffer, " ");477 strcat(szBuffer, ad.mask.szMask);478 }479 strcat(szBuffer, " ");480 x = 0;481 while (list[x]) {482 FILESTATUS3 fsa;483 memset(&fsa, 0, sizeof(fsa));484 DosError(FERR_DISABLEHARDERR);485 DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa));486 if (fsa.attrFile & FILE_DIRECTORY) {487 BldQuotedFullPathName(szBuffer + strlen(szBuffer),488 list[x], "*");489 }490 else491 BldQuotedFileName(szBuffer + strlen(szBuffer), list[x]);492 x++;493 if (!list[x] || strlen(szBuffer) + strlen(list[x]) + 5 > 1024) {494 runemf2(SEPARATE | WINDOWED | WAIT |495 (fArcStuffVisible ? 0 : (BACKGROUND | MINIMIZED)),461 { 462 DIRCNRDATA ad; 463 CHAR szBuffer[1025]; 464 465 memset(&ad, 0, sizeof(ad)); 466 ad.namecanchange = 1; 467 ad.info = arcsighead; // Hide dups 468 if (!WinDlgBox(HWND_DESKTOP, 469 hwndFrame, 470 SBoxDlgProc, 471 FM3ModHandle, 472 ASEL_FRAME, (PVOID) & ad.info) || !ad.info) { 473 // we blew it 474 FreeList(list); 475 break; 476 } 477 if (!ad.info->create && 478 !ad.info->move && 479 !ad.info->createwdirs && 480 !ad.info->movewdirs && !ad.info->createrecurse) { 481 // 14 Aug 07 SHL fixme to tell user why we failed 482 FreeList(list); 483 break; 484 } 485 if (!WinDlgBox(HWND_DESKTOP, hwndFrame, ArchiveDlgProc, FM3ModHandle, ARCH_FRAME, (PVOID) & ad) || !*ad.arcname || !*ad.command) { /* we blew it */ 486 FreeList(list); 487 break; 488 } 489 // Build archiver command line 490 strcpy(szBuffer, ad.command); 491 strcat(szBuffer, " "); 492 strcat(szBuffer, ad.arcname); 493 p = &szBuffer[strlen(szBuffer)]; 494 if (ad.mask.szMask) { 495 strcat(szBuffer, " "); 496 strcat(szBuffer, ad.mask.szMask); 497 } 498 strcat(szBuffer, " "); 499 x = 0; 500 while (list[x]) { 501 FILESTATUS3 fsa; 502 memset(&fsa, 0, sizeof(fsa)); 503 DosError(FERR_DISABLEHARDERR); 504 DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa)); 505 if (fsa.attrFile & FILE_DIRECTORY) { 506 BldQuotedFullPathName(szBuffer + strlen(szBuffer), 507 list[x], "*"); 508 } 509 else 510 BldQuotedFileName(szBuffer + strlen(szBuffer), list[x]); 511 x++; 512 if (!list[x] || strlen(szBuffer) + strlen(list[x]) + 5 > 1024) { 513 runemf2(SEPARATE | WINDOWED | WAIT | 514 (fArcStuffVisible ? 0 : (BACKGROUND | MINIMIZED)), 496 515 HWND_DESKTOP, pszSrcFile, __LINE__, 497 516 NULL, NULL, "%s", szBuffer); 498 DosSleep(1);// Let archiver get started499 *p = 0;500 }501 strcat(szBuffer, " ");502 } // while503 AddToList(ad.arcname, &files, &numfiles, &numalloc);504 }505 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),506 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))507 FreeList(list);508 break;517 DosSleep(1); // Let archiver get started 518 *p = 0; 519 } 520 strcat(szBuffer, " "); 521 } // while 522 AddToList(ad.arcname, &files, &numfiles, &numalloc); 523 } 524 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 525 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID)) 526 FreeList(list); 527 break; 509 528 510 529 case IDM_ATTRS: 511 {512 LISTINFO li;513 514 memset(&li, 0, sizeof(li));515 li.list = list;516 if (WinDlgBox(HWND_DESKTOP,517 hwndFrame,518 AttrListDlgProc,519 FM3ModHandle, ATR_FRAME, MPFROMP(&li))) {520 if (li.list && li.list[0]) {521 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),522 UM_UPDATERECORDLIST, MPFROMP(li.list), MPVOID))523 FreeList(li.list);524 }525 }526 else527 FreeList(list);528 }529 break;530 { 531 LISTINFO li; 532 533 memset(&li, 0, sizeof(li)); 534 li.list = list; 535 if (WinDlgBox(HWND_DESKTOP, 536 hwndFrame, 537 AttrListDlgProc, 538 FM3ModHandle, ATR_FRAME, MPFROMP(&li))) { 539 if (li.list && li.list[0]) { 540 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 541 UM_UPDATERECORDLIST, MPFROMP(li.list), MPVOID)) 542 FreeList(li.list); 543 } 544 } 545 else 546 FreeList(list); 547 } 548 break; 530 549 531 550 case IDM_MOVE: 532 551 case IDM_COPY: 533 if (!*path)534 strcpy(path, targetdir);535 if (!*path)536 strcpy(path, list[0]);537 MakeValidDir(path);552 if (!*path) 553 strcpy(path, targetdir); 554 if (!*path) 555 strcpy(path, list[0]); 556 MakeValidDir(path); 538 557 RetryPath: 539 if (SHORT1FROMMP(mp1) == IDM_MOVE) {540 if (!WinDlgBox(HWND_DESKTOP,541 hwndFrame,542 WalkMoveDlgProc,543 FM3ModHandle, WALK_FRAME, MPFROMP(path)) || !*path) {544 FreeList(list);545 goto Abort;546 }547 }548 else {549 if (!WinDlgBox(HWND_DESKTOP,550 hwndFrame,551 WalkCopyDlgProc,552 FM3ModHandle, WALK_FRAME, MPFROMP(path)) || !*path) {553 FreeList(list);554 goto Abort;555 }556 }557 if (driveflags[toupper(*path) - 'A'] & DRIVE_NOTWRITEABLE) {558 saymsg(MB_CANCEL,559 hwndFrame,560 GetPString(IDS_ERRORTEXT),561 "%s", GetPString(IDS_NOTWRITENOTARGETTEXT));562 goto RetryPath;563 }564 /* intentional fallthru */558 if (SHORT1FROMMP(mp1) == IDM_MOVE) { 559 if (!WinDlgBox(HWND_DESKTOP, 560 hwndFrame, 561 WalkMoveDlgProc, 562 FM3ModHandle, WALK_FRAME, MPFROMP(path)) || !*path) { 563 FreeList(list); 564 goto Abort; 565 } 566 } 567 else { 568 if (!WinDlgBox(HWND_DESKTOP, 569 hwndFrame, 570 WalkCopyDlgProc, 571 FM3ModHandle, WALK_FRAME, MPFROMP(path)) || !*path) { 572 FreeList(list); 573 goto Abort; 574 } 575 } 576 if (driveflags[toupper(*path) - 'A'] & DRIVE_NOTWRITEABLE) { 577 saymsg(MB_CANCEL, 578 hwndFrame, 579 GetPString(IDS_ERRORTEXT), 580 "%s", GetPString(IDS_NOTWRITENOTARGETTEXT)); 581 goto RetryPath; 582 } 583 /* intentional fallthru */ 565 584 case IDM_RENAME: 566 {567 CHAR newname[CCHMAXPATH], *moving, *move, *moved;568 APIRET rc;569 INT type;570 FILESTATUS4L fs4;571 BOOL isnewer, existed;572 573 for (x = 0; list[x]; x++) {574 Retry:575 type = (SHORT1FROMMP(mp1) == IDM_RENAME) ? MOVE :576 (SHORT1FROMMP(mp1) == IDM_MOVE) ? MOVE :577 (SHORT1FROMMP(mp1) == IDM_WPSMOVE) ? WPSMOVE :578 (SHORT1FROMMP(mp1) == IDM_WPSCOPY) ? WPSCOPY : COPY;579 moving = (SHORT1FROMMP(mp1) == IDM_RENAME) ?580 GetPString(IDS_RENAMINGTEXT) :581 (SHORT1FROMMP(mp1) == IDM_MOVE ||582 SHORT1FROMMP(mp1) == IDM_WPSMOVE) ?583 GetPString(IDS_MOVINGTEXT) : GetPString(IDS_COPYINGTEXT);584 move = (SHORT1FROMMP(mp1) == IDM_RENAME) ?585 GetPString(IDS_RENAMETEXT) :586 (SHORT1FROMMP(mp1) == IDM_MOVE ||587 SHORT1FROMMP(mp1) == IDM_WPSMOVE) ?588 GetPString(IDS_MOVETEXT) : GetPString(IDS_COPYTEXT);589 moved = (SHORT1FROMMP(mp1) == IDM_RENAME) ?590 GetPString(IDS_RENAMEDTEXT) :591 (SHORT1FROMMP(mp1) == IDM_MOVE ||592 SHORT1FROMMP(mp1) == IDM_WPSMOVE) ?593 GetPString(IDS_MOVEDTEXT) : GetPString(IDS_COPIEDTEXT);594 if (*path) {595 strcpy(newname, path);596 if (newname[strlen(newname) - 1] != '\\')597 strcat(newname, "\\");598 if (plen)599 p = list[x] + plen;600 else {601 p = strrchr(list[x], '\\');602 if (p)603 p++;604 else605 p = list[x];606 }607 strcat(newname, p);608 }609 else610 strcpy(newname, list[x]);611 if ((wildcarding || SHORT1FROMMP(mp1) == IDM_RENAME) && *wildname) {612 613 CHAR testname[CCHMAXPATH];614 615 strcpy(testname, wildname);616 if (AdjustWildcardName(newname, testname))617 strcpy(newname, testname);618 }619 existed = (IsFile(newname) != -1);620 isnewer = IsNewer(list[x], newname);621 if (existed && SHORT1FROMMP(mp1) != IDM_RENAME && dontask) {622 if (!overold && !overnew)623 break;624 if (!overold && !isnewer)625 break;626 if (!overnew && isnewer)627 break;628 }629 if ((SHORT1FROMMP(mp1) == IDM_RENAME &&630 (!dontask || !*wildname)) ||631 (!dontask && existed) ||632 (!dontask && wildcarding) ||633 (IsFile(newname) == 0 && IsFile(list[x]) == 1)) {634 635 MOVEIT mv;636 637 memset(&mv, 0, sizeof(mv));638 mv.rename = (SHORT1FROMMP(mp1) == IDM_RENAME);639 mv.source = list[x];640 strcpy(mv.target, newname);641 rc = WinDlgBox(HWND_DESKTOP,642 hwndFrame,643 RenameProc,644 FM3ModHandle, REN_FRAME, (PVOID) & mv);645 if (!rc) {646 FreeList(list);647 goto Abort;648 }649 DosSleep(0); //26 Aug 07 GKY 1650 if (mv.skip || !*mv.target)651 break;652 if (mv.dontask)653 dontask = TRUE;654 if (mv.overold)655 overold = TRUE;656 if (mv.overnew)657 overnew = TRUE;658 if (wildcarding || SHORT1FROMMP(mp1) == IDM_RENAME) {659 p = strrchr(mv.target, '\\');660 if (p && (strchr(p, '*') || strchr(p, '?'))) {661 strcpy(wildname, mv.target);662 AdjustWildcardName(list[x], mv.target);663 }664 else665 *wildname = 0;666 }667 strcpy(newname, mv.target);668 existed = (IsFile(newname) != -1);669 isnewer = IsNewer(list[x], newname);670 if (!mv.overwrite) {671 if (existed && SHORT1FROMMP(mp1) != IDM_RENAME && dontask) {672 if (!overold && !overnew)673 break;674 if (!overold && !isnewer)675 break;676 if (!overnew && isnewer)677 break;678 }679 }680 }681 if (!stricmp(list[x], newname))682 break;683 sprintf(message,684 " %s \"%s\" %s \"%s\"",685 moving, list[x], GetPString(IDS_TOTEXT), newname);686 WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS),687 message);688 if (fRealIdle)689 priority_idle();690 if (plen) {691 /* make directory/ies, if required */692 693 CHAR dirpart[CCHMAXPATH];694 695 strcpy(dirpart, newname);696 p = strrchr(dirpart, '\\');697 if (p) {698 *p = 0;699 if (p > dirpart + 3)700 MassMkdir((hwndMain) ? hwndMain : (HWND) 0, dirpart);701 }702 }703 rc = docopyf(type, list[x], "%s", newname);704 priority_normal();705 if (rc) {706 if ((rc == ERROR_DISK_FULL ||707 rc == ERROR_HANDLE_DISK_FULL) &&708 isalpha(*newname) &&709 (driveflags[toupper(*newname) - 'A'] & DRIVE_REMOVABLE) &&710 !(driveflags[toupper(*newname) - 'A'] & DRIVE_NOTWRITEABLE)711 && toupper(*newname) != toupper(*list[x])712 && !DosQueryPathInfo(list[x], FIL_QUERYEASIZEL, &fs4,713 sizeof(fs4))714 && !(fs4.attrFile & FILE_DIRECTORY)) {715 716 FSALLOCATE fsa;717 ULONGLONG ullFreeBytes;718 CHAR *ptr;719 INT cntr;720 721 WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS),722 GetPString(IDS_FITTINGTEXT));723 DosError(FERR_DISABLEHARDERR);724 if (!DosQueryFSInfo(toupper(*newname) - '@',725 FSIL_ALLOC, &fsa, sizeof(fsa))) {726 // Assume large file support727 ullFreeBytes = (ULONGLONG) fsa.cUnitAvail * fsa.cSectorUnit *728 fsa.cbSector;729 if (ullFreeBytes) {730 // Find item that will fit in available space731 for (cntr = x + 1; list[cntr]; cntr++) {732 DosError(FERR_DISABLEHARDERR);733 if (!DosQueryPathInfo(list[cntr],734 FIL_QUERYEASIZEL,735 &fs4, sizeof(fs4)) &&736 !(fs4.attrFile & FILE_DIRECTORY) &&737 // fixme to use CBLIST_TO_EASIZE?738 fs4.cbFile + fs4.cbList <= ullFreeBytes) {739 // Swap with failing item740 ptr = list[x];741 list[x] = list[cntr];742 list[cntr] = ptr;743 goto Retry;744 }745 }746 WinSetWindowText(WinWindowFromID(hwndFrame,747 SEEALL_STATUS),748 GetPString(IDS_COULDNTFITTEXT));749 }750 }751 rc = saymsg(MB_ABORTRETRYIGNORE | MB_ICONEXCLAMATION,752 hwndFrame,753 GetPString(IDS_DISKFULLTEXT),754 "%s", GetPString(IDS_ANOTHERDISKTEXT));755 if (rc == MBID_RETRY)756 goto Retry;757 if (rc == MBID_ABORT) {758 FreeList(list);759 goto Abort;760 }761 }762 else {763 if (LogFileHandle)764 fprintf(LogFileHandle,765 GetPString(IDS_LOGTOFAILEDTEXT),766 move, list[x], newname, rc);767 rc = Dos_Error(MB_ENTERCANCEL,768 rc,769 hwndFrame,770 pszSrcFile,771 __LINE__,772 "%s %s \"%s\" %s\"%s\" %s.",773 move,774 GetPString(IDS_OFTEXT),775 list[x],776 GetPString(IDS_TOTEXT),777 newname, GetPString(IDS_FAILEDTEXT));778 if (rc == MBID_CANCEL) {779 FreeList(list);780 goto Abort;781 }782 }783 }784 else {785 if (LogFileHandle)786 fprintf(LogFileHandle,787 "%s \"%s\" %s \"%s\"\n",788 moved, list[x], GetPString(IDS_TOTEXT), newname);789 AddToList(newname, &files, &numfiles, &numalloc);790 }791 }792 }793 if (SHORT1FROMMP(mp1) != IDM_COPY) {794 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),795 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))796 FreeList(list);797 }798 else799 FreeList(list);800 break;585 { 586 CHAR newname[CCHMAXPATH], *moving, *move, *moved; 587 APIRET rc; 588 INT type; 589 FILESTATUS4L fs4; 590 BOOL isnewer, existed; 591 592 for (x = 0; list[x]; x++) { 593 Retry: 594 type = (SHORT1FROMMP(mp1) == IDM_RENAME) ? MOVE : 595 (SHORT1FROMMP(mp1) == IDM_MOVE) ? MOVE : 596 (SHORT1FROMMP(mp1) == IDM_WPSMOVE) ? WPSMOVE : 597 (SHORT1FROMMP(mp1) == IDM_WPSCOPY) ? WPSCOPY : COPY; 598 moving = (SHORT1FROMMP(mp1) == IDM_RENAME) ? 599 GetPString(IDS_RENAMINGTEXT) : 600 (SHORT1FROMMP(mp1) == IDM_MOVE || 601 SHORT1FROMMP(mp1) == IDM_WPSMOVE) ? 602 GetPString(IDS_MOVINGTEXT) : GetPString(IDS_COPYINGTEXT); 603 move = (SHORT1FROMMP(mp1) == IDM_RENAME) ? 604 GetPString(IDS_RENAMETEXT) : 605 (SHORT1FROMMP(mp1) == IDM_MOVE || 606 SHORT1FROMMP(mp1) == IDM_WPSMOVE) ? 607 GetPString(IDS_MOVETEXT) : GetPString(IDS_COPYTEXT); 608 moved = (SHORT1FROMMP(mp1) == IDM_RENAME) ? 609 GetPString(IDS_RENAMEDTEXT) : 610 (SHORT1FROMMP(mp1) == IDM_MOVE || 611 SHORT1FROMMP(mp1) == IDM_WPSMOVE) ? 612 GetPString(IDS_MOVEDTEXT) : GetPString(IDS_COPIEDTEXT); 613 if (*path) { 614 strcpy(newname, path); 615 if (newname[strlen(newname) - 1] != '\\') 616 strcat(newname, "\\"); 617 if (plen) 618 p = list[x] + plen; 619 else { 620 p = strrchr(list[x], '\\'); 621 if (p) 622 p++; 623 else 624 p = list[x]; 625 } 626 strcat(newname, p); 627 } 628 else 629 strcpy(newname, list[x]); 630 if ((wildcarding || SHORT1FROMMP(mp1) == IDM_RENAME) && *wildname) { 631 632 CHAR testname[CCHMAXPATH]; 633 634 strcpy(testname, wildname); 635 if (AdjustWildcardName(newname, testname)) 636 strcpy(newname, testname); 637 } 638 existed = (IsFile(newname) != -1); 639 isnewer = IsNewer(list[x], newname); 640 if (existed && SHORT1FROMMP(mp1) != IDM_RENAME && dontask) { 641 if (!overold && !overnew) 642 break; 643 if (!overold && !isnewer) 644 break; 645 if (!overnew && isnewer) 646 break; 647 } 648 if ((SHORT1FROMMP(mp1) == IDM_RENAME && 649 (!dontask || !*wildname)) || 650 (!dontask && existed) || 651 (!dontask && wildcarding) || 652 (IsFile(newname) == 0 && IsFile(list[x]) == 1)) { 653 654 MOVEIT mv; 655 656 memset(&mv, 0, sizeof(mv)); 657 mv.rename = (SHORT1FROMMP(mp1) == IDM_RENAME); 658 mv.source = list[x]; 659 strcpy(mv.target, newname); 660 rc = WinDlgBox(HWND_DESKTOP, 661 hwndFrame, 662 RenameProc, 663 FM3ModHandle, REN_FRAME, (PVOID) & mv); 664 if (!rc) { 665 FreeList(list); 666 goto Abort; 667 } 668 DosSleep(0); //26 Aug 07 GKY 1 669 if (mv.skip || !*mv.target) 670 break; 671 if (mv.dontask) 672 dontask = TRUE; 673 if (mv.overold) 674 overold = TRUE; 675 if (mv.overnew) 676 overnew = TRUE; 677 if (wildcarding || SHORT1FROMMP(mp1) == IDM_RENAME) { 678 p = strrchr(mv.target, '\\'); 679 if (p && (strchr(p, '*') || strchr(p, '?'))) { 680 strcpy(wildname, mv.target); 681 AdjustWildcardName(list[x], mv.target); 682 } 683 else 684 *wildname = 0; 685 } 686 strcpy(newname, mv.target); 687 existed = (IsFile(newname) != -1); 688 isnewer = IsNewer(list[x], newname); 689 if (!mv.overwrite) { 690 if (existed && SHORT1FROMMP(mp1) != IDM_RENAME && dontask) { 691 if (!overold && !overnew) 692 break; 693 if (!overold && !isnewer) 694 break; 695 if (!overnew && isnewer) 696 break; 697 } 698 } 699 } 700 if (!stricmp(list[x], newname)) 701 break; 702 sprintf(message, 703 " %s \"%s\" %s \"%s\"", 704 moving, list[x], GetPString(IDS_TOTEXT), newname); 705 WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS), 706 message); 707 if (fRealIdle) 708 priority_idle(); 709 if (plen) { 710 /* make directory/ies, if required */ 711 712 CHAR dirpart[CCHMAXPATH]; 713 714 strcpy(dirpart, newname); 715 p = strrchr(dirpart, '\\'); 716 if (p) { 717 *p = 0; 718 if (p > dirpart + 3) 719 MassMkdir((hwndMain) ? hwndMain : (HWND) 0, dirpart); 720 } 721 } 722 rc = docopyf(type, list[x], "%s", newname); 723 priority_normal(); 724 if (rc) { 725 if ((rc == ERROR_DISK_FULL || 726 rc == ERROR_HANDLE_DISK_FULL) && 727 isalpha(*newname) && 728 (driveflags[toupper(*newname) - 'A'] & DRIVE_REMOVABLE) && 729 !(driveflags[toupper(*newname) - 'A'] & DRIVE_NOTWRITEABLE) 730 && toupper(*newname) != toupper(*list[x]) 731 && !DosQueryPathInfo(list[x], FIL_QUERYEASIZEL, &fs4, 732 sizeof(fs4)) 733 && !(fs4.attrFile & FILE_DIRECTORY)) { 734 735 FSALLOCATE fsa; 736 ULONGLONG ullFreeBytes; 737 CHAR *ptr; 738 INT cntr; 739 740 WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS), 741 GetPString(IDS_FITTINGTEXT)); 742 DosError(FERR_DISABLEHARDERR); 743 if (!DosQueryFSInfo(toupper(*newname) - '@', 744 FSIL_ALLOC, &fsa, sizeof(fsa))) { 745 // Assume large file support 746 ullFreeBytes = (ULONGLONG) fsa.cUnitAvail * fsa.cSectorUnit * 747 fsa.cbSector; 748 if (ullFreeBytes) { 749 // Find item that will fit in available space 750 for (cntr = x + 1; list[cntr]; cntr++) { 751 DosError(FERR_DISABLEHARDERR); 752 if (!DosQueryPathInfo(list[cntr], 753 FIL_QUERYEASIZEL, 754 &fs4, sizeof(fs4)) && 755 !(fs4.attrFile & FILE_DIRECTORY) && 756 // fixme to use CBLIST_TO_EASIZE? 757 fs4.cbFile + fs4.cbList <= ullFreeBytes) { 758 // Swap with failing item 759 ptr = list[x]; 760 list[x] = list[cntr]; 761 list[cntr] = ptr; 762 goto Retry; 763 } 764 } 765 WinSetWindowText(WinWindowFromID(hwndFrame, 766 SEEALL_STATUS), 767 GetPString(IDS_COULDNTFITTEXT)); 768 } 769 } 770 rc = saymsg(MB_ABORTRETRYIGNORE | MB_ICONEXCLAMATION, 771 hwndFrame, 772 GetPString(IDS_DISKFULLTEXT), 773 "%s", GetPString(IDS_ANOTHERDISKTEXT)); 774 if (rc == MBID_RETRY) 775 goto Retry; 776 if (rc == MBID_ABORT) { 777 FreeList(list); 778 goto Abort; 779 } 780 } 781 else { 782 if (LogFileHandle) 783 fprintf(LogFileHandle, 784 GetPString(IDS_LOGTOFAILEDTEXT), 785 move, list[x], newname, rc); 786 rc = Dos_Error(MB_ENTERCANCEL, 787 rc, 788 hwndFrame, 789 pszSrcFile, 790 __LINE__, 791 "%s %s \"%s\" %s\"%s\" %s.", 792 move, 793 GetPString(IDS_OFTEXT), 794 list[x], 795 GetPString(IDS_TOTEXT), 796 newname, GetPString(IDS_FAILEDTEXT)); 797 if (rc == MBID_CANCEL) { 798 FreeList(list); 799 goto Abort; 800 } 801 } 802 } 803 else { 804 if (LogFileHandle) 805 fprintf(LogFileHandle, 806 "%s \"%s\" %s \"%s\"\n", 807 moved, list[x], GetPString(IDS_TOTEXT), newname); 808 AddToList(newname, &files, &numfiles, &numalloc); 809 } 810 } 811 } 812 if (SHORT1FROMMP(mp1) != IDM_COPY) { 813 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 814 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID)) 815 FreeList(list); 816 } 817 else 818 FreeList(list); 819 break; 801 820 802 821 case IDM_UUDECODE: 803 for (x = 0; list[x]; x++)804 UUD(list[x], NULL);805 break;822 for (x = 0; list[x]; x++) 823 UUD(list[x], NULL); 824 break; 806 825 807 826 case IDM_EXTRACT: 808 for (x = 0; list[x]; x++) {809 810 EXTRDATA ex;811 BOOL maskspaces = FALSE;812 813 memset(&ex, 0, sizeof(ex));814 ex.info = find_type(list[x], NULL);815 if (!ex.info || (!ex.info->extract && !ex.info->exwdirs))816 break;817 ex.size = sizeof(ex);818 ex.arcname = list[x];819 strcpy(ex.masks, "*");820 if (!WinDlgBox(HWND_DESKTOP,821 hwndFrame,822 ExtractDlgProc,823 FM3ModHandle,824 EXT_FRAME,825 (PVOID) & ex) ||826 !ex.ret || !*ex.command || !*ex.arcname || !*ex.extractdir)827 break;828 if (IsFile(ex.extractdir) != 0)829 Runtime_Error(pszSrcFile, __LINE__, "directory expected");830 else {831 if (needs_quoting(ex.masks) && !strchr(ex.masks, '\"'))832 maskspaces = TRUE;833 runemf2(SEPARATE | WINDOWED |834 (fArcStuffVisible ? 0 : (BACKGROUND | MINIMIZED)),827 for (x = 0; list[x]; x++) { 828 829 EXTRDATA ex; 830 BOOL maskspaces = FALSE; 831 832 memset(&ex, 0, sizeof(ex)); 833 ex.info = find_type(list[x], NULL); 834 if (!ex.info || (!ex.info->extract && !ex.info->exwdirs)) 835 break; 836 ex.size = sizeof(ex); 837 ex.arcname = list[x]; 838 strcpy(ex.masks, "*"); 839 if (!WinDlgBox(HWND_DESKTOP, 840 hwndFrame, 841 ExtractDlgProc, 842 FM3ModHandle, 843 EXT_FRAME, 844 (PVOID) & ex) || 845 !ex.ret || !*ex.command || !*ex.arcname || !*ex.extractdir) 846 break; 847 if (IsFile(ex.extractdir) != 0) 848 Runtime_Error(pszSrcFile, __LINE__, "directory expected"); 849 else { 850 if (needs_quoting(ex.masks) && !strchr(ex.masks, '\"')) 851 maskspaces = TRUE; 852 runemf2(SEPARATE | WINDOWED | 853 (fArcStuffVisible ? 0 : (BACKGROUND | MINIMIZED)), 835 854 HWND_DESKTOP, pszSrcFile, __LINE__, 836 855 ex.extractdir, NULL, 837 "%s %s %s%s%s",838 ex.command,839 ex.arcname,840 maskspaces ? "\"" : NullStr,841 *ex.masks ? ex.masks : "*",842 maskspaces ? "\"" : NullStr);843 }844 }845 // fixme to not leak?846 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),847 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))848 FreeList(list);849 break;856 "%s %s %s%s%s", 857 ex.command, 858 ex.arcname, 859 maskspaces ? "\"" : NullStr, 860 *ex.masks ? ex.masks : "*", 861 maskspaces ? "\"" : NullStr); 862 } 863 } 864 // fixme to not leak? 865 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 866 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID)) 867 FreeList(list); 868 break; 850 869 851 870 case IDM_SUBJECT: 852 for (x = 0; list[x]; x++) {853 854 INT ret;855 856 if (IsFile(list[x]) == 1) {857 ret = Subject(hwndFrame, list[x]);858 if (!ret)859 break;860 }861 }862 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),863 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))864 FreeList(list);865 break;871 for (x = 0; list[x]; x++) { 872 873 INT ret; 874 875 if (IsFile(list[x]) == 1) { 876 ret = Subject(hwndFrame, list[x]); 877 if (!ret) 878 break; 879 } 880 } 881 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 882 UM_UPDATERECORDLIST, MPFROMP(list), MPVOID)) 883 FreeList(list); 884 break; 866 885 867 886 case IDM_OPENDEFAULT: 868 887 case IDM_OPENSETTINGS: 869 for (x = 0; list[x]; x++) {870 if (IsFile(list[x]) != -1) {871 872 CHAR *s;873 874 switch (SHORT1FROMMP(mp1)) {875 case IDM_OPENSETTINGS:876 s = Settings;877 break;878 default:879 s = Default;880 break;881 }882 OpenObject(list[x], s, hwndFrame);883 }884 }885 FreeList(list);886 break;888 for (x = 0; list[x]; x++) { 889 if (IsFile(list[x]) != -1) { 890 891 CHAR *s; 892 893 switch (SHORT1FROMMP(mp1)) { 894 case IDM_OPENSETTINGS: 895 s = Settings; 896 break; 897 default: 898 s = Default; 899 break; 900 } 901 OpenObject(list[x], s, hwndFrame); 902 } 903 } 904 FreeList(list); 905 break; 887 906 888 907 case IDM_DELETE: 889 908 case IDM_PERMDELETE: 890 {891 CHECKLIST cl;892 INT isdir = 0, sysdir = 0, ro = 0, hs = 0;893 FILESTATUS3 fsa;894 CHAR prompt[CCHMAXPATH * 3];895 APIRET error;896 897 for (x = 0; list[x]; x++) {898 if (IsRoot(list[x])) {899 list = RemoveFromList(list, list[x]);900 if (!list)901 break;902 x--;903 continue;904 }905 DosError(FERR_DISABLEHARDERR);906 if (DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa))) {907 list = RemoveFromList(list, list[x]);908 if (!list)909 break;910 x--;911 continue;912 }913 if (fsa.attrFile & FILE_DIRECTORY) {914 isdir++;915 if (stristr(list[x], ":\\OS2\\") ||916 !stricmp(list[x] + 1, ":\\OS2"))917 sysdir++;918 }919 else {920 if (fsa.attrFile & (FILE_HIDDEN | FILE_SYSTEM))921 hs++;922 if (fsa.attrFile & FILE_READONLY)923 ro++;924 }925 }926 if (!list)927 break;928 if (fConfirmDelete || isdir) {929 memset(&cl, 0, sizeof(cl));930 cl.size = sizeof(cl);931 cl.list = list;932 cl.prompt = prompt;933 cl.flags |= CHECK_FILES;934 cl.cmd = SHORT1FROMMP(mp1);935 sprintf(prompt,936 GetPString(IDS_DELPROMPT1TEXT),937 (SHORT1FROMMP(mp1) == IDM_DELETE) ?938 NullStr :939 GetPString(IDS_PERMANENTLYTEXT), &"s"[list[1] == NULL]);940 if (isdir) {941 sprintf(&prompt[strlen(prompt)],942 GetPString(IDS_DELPROMPT2TEXT),943 isdir,944 (isdir > 1) ?945 GetPString(IDS_ARETEXT) :946 GetPString(IDS_ISTEXT),947 (isdir == 1) ?948 GetPString(IDS_ATEXT) :949 NullStr,950 (isdir > 1) ?951 GetPString(IDS_IESTEXT) : GetPString(IDS_YTEXT));952 if (sysdir)953 sprintf(&prompt[strlen(prompt)],954 GetPString(IDS_DELPROMPT3TEXT),955 sysdir,956 (sysdir == 1) ?957 GetPString(IDS_YTEXT) : GetPString(IDS_IESTEXT));958 }959 if (ro)960 sprintf(&prompt[strlen(prompt)],961 GetPString(IDS_DELPROMPT4TEXT),962 ro,963 &"s"[ro == 1],964 (ro > 1) ?965 GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT));966 if (hs)967 sprintf(&prompt[strlen(prompt)],968 GetPString(IDS_DELPROMPT5TEXT),969 hs,970 &"s"[hs == 1],971 (hs > 1) ?972 GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT));973 if (ro || hs || sysdir)974 DosBeep(300, 100);975 strcat(prompt, GetPString(IDS_DELPROMPT6TEXT));976 if (!WinDlgBox(HWND_DESKTOP,977 WinWindowFromID(hwndFrame, FID_CLIENT),978 CheckListProc,979 FM3ModHandle, CHECK_FRAME, MPFROMP(&cl)))980 break;981 list = cl.list;982 if (!list || !list[0])983 break;984 }985 for (x = 0; list[x]; x++) {986 fsa.attrFile = 0;987 DosError(FERR_DISABLEHARDERR);988 DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa));989 if (fsa.attrFile & FILE_DIRECTORY) {990 sprintf(prompt, GetPString(IDS_DELETINGTEXT), list[x]);991 WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS),992 prompt);993 error = (APIRET) wipeallf("%s%s*",994 list[x],995 (*list[x] &&996 list[x][strlen(list[x]) - 1] !=997 '\\') ? "\\" : NullStr);998 DosError(FERR_DISABLEHARDERR);999 if (!error)1000 error = DosDeleteDir(list[x]);1001 else1002 DosDeleteDir(list[x]);1003 }1004 else {1005 DosError(FERR_DISABLEHARDERR);1006 if (SHORT1FROMMP(mp1) == IDM_DELETE)1007 error = DosDelete(list[x]);1008 else1009 error = DosForceDelete(list[x]);1010 if (error) {1011 DosError(FERR_DISABLEHARDERR);1012 make_deleteable(list[x]);1013 if (SHORT1FROMMP(mp1) == IDM_DELETE)1014 error = DosDelete(list[x]);1015 else1016 error = DosForceDelete(list[x]);1017 }1018 }1019 if (error) {1020 if (LogFileHandle)1021 fprintf(LogFileHandle,1022 GetPString(IDS_DELETEFAILED1TEXT), list[x], error);1023 if (Dos_Error(MB_ENTERCANCEL,1024 error,1025 hwndFrame,1026 pszSrcFile,1027 __LINE__,1028 GetPString(IDS_DELETEFAILED2TEXT),1029 list[x]) == MBID_CANCEL)1030 break;1031 }1032 else if (LogFileHandle)1033 fprintf(LogFileHandle,1034 "%s\n", GetPString(IDS_DELETEDTEXT), list[x]);1035 AddToList(list[x], &files, &numfiles, &numalloc);1036 }1037 }1038 FreeList(list);1039 break;909 { 910 CHECKLIST cl; 911 INT isdir = 0, sysdir = 0, ro = 0, hs = 0; 912 FILESTATUS3 fsa; 913 CHAR prompt[CCHMAXPATH * 3]; 914 APIRET error; 915 916 for (x = 0; list[x]; x++) { 917 if (IsRoot(list[x])) { 918 list = RemoveFromList(list, list[x]); 919 if (!list) 920 break; 921 x--; 922 continue; 923 } 924 DosError(FERR_DISABLEHARDERR); 925 if (DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa))) { 926 list = RemoveFromList(list, list[x]); 927 if (!list) 928 break; 929 x--; 930 continue; 931 } 932 if (fsa.attrFile & FILE_DIRECTORY) { 933 isdir++; 934 if (stristr(list[x], ":\\OS2\\") || 935 !stricmp(list[x] + 1, ":\\OS2")) 936 sysdir++; 937 } 938 else { 939 if (fsa.attrFile & (FILE_HIDDEN | FILE_SYSTEM)) 940 hs++; 941 if (fsa.attrFile & FILE_READONLY) 942 ro++; 943 } 944 } 945 if (!list) 946 break; 947 if (fConfirmDelete || isdir) { 948 memset(&cl, 0, sizeof(cl)); 949 cl.size = sizeof(cl); 950 cl.list = list; 951 cl.prompt = prompt; 952 cl.flags |= CHECK_FILES; 953 cl.cmd = SHORT1FROMMP(mp1); 954 sprintf(prompt, 955 GetPString(IDS_DELPROMPT1TEXT), 956 (SHORT1FROMMP(mp1) == IDM_DELETE) ? 957 NullStr : 958 GetPString(IDS_PERMANENTLYTEXT), &"s"[list[1] == NULL]); 959 if (isdir) { 960 sprintf(&prompt[strlen(prompt)], 961 GetPString(IDS_DELPROMPT2TEXT), 962 isdir, 963 (isdir > 1) ? 964 GetPString(IDS_ARETEXT) : 965 GetPString(IDS_ISTEXT), 966 (isdir == 1) ? 967 GetPString(IDS_ATEXT) : 968 NullStr, 969 (isdir > 1) ? 970 GetPString(IDS_IESTEXT) : GetPString(IDS_YTEXT)); 971 if (sysdir) 972 sprintf(&prompt[strlen(prompt)], 973 GetPString(IDS_DELPROMPT3TEXT), 974 sysdir, 975 (sysdir == 1) ? 976 GetPString(IDS_YTEXT) : GetPString(IDS_IESTEXT)); 977 } 978 if (ro) 979 sprintf(&prompt[strlen(prompt)], 980 GetPString(IDS_DELPROMPT4TEXT), 981 ro, 982 &"s"[ro == 1], 983 (ro > 1) ? 984 GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT)); 985 if (hs) 986 sprintf(&prompt[strlen(prompt)], 987 GetPString(IDS_DELPROMPT5TEXT), 988 hs, 989 &"s"[hs == 1], 990 (hs > 1) ? 991 GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT)); 992 if (ro || hs || sysdir) 993 DosBeep(300, 100); 994 strcat(prompt, GetPString(IDS_DELPROMPT6TEXT)); 995 if (!WinDlgBox(HWND_DESKTOP, 996 WinWindowFromID(hwndFrame, FID_CLIENT), 997 CheckListProc, 998 FM3ModHandle, CHECK_FRAME, MPFROMP(&cl))) 999 break; 1000 list = cl.list; 1001 if (!list || !list[0]) 1002 break; 1003 } 1004 for (x = 0; list[x]; x++) { 1005 fsa.attrFile = 0; 1006 DosError(FERR_DISABLEHARDERR); 1007 DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa)); 1008 if (fsa.attrFile & FILE_DIRECTORY) { 1009 sprintf(prompt, GetPString(IDS_DELETINGTEXT), list[x]); 1010 WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS), 1011 prompt); 1012 error = (APIRET) wipeallf("%s%s*", 1013 list[x], 1014 (*list[x] && 1015 list[x][strlen(list[x]) - 1] != 1016 '\\') ? "\\" : NullStr); 1017 DosError(FERR_DISABLEHARDERR); 1018 if (!error) 1019 error = DosDeleteDir(list[x]); 1020 else 1021 DosDeleteDir(list[x]); 1022 } 1023 else { 1024 DosError(FERR_DISABLEHARDERR); 1025 if (SHORT1FROMMP(mp1) == IDM_DELETE) 1026 error = DosDelete(list[x]); 1027 else 1028 error = DosForceDelete(list[x]); 1029 if (error) { 1030 DosError(FERR_DISABLEHARDERR); 1031 make_deleteable(list[x]); 1032 if (SHORT1FROMMP(mp1) == IDM_DELETE) 1033 error = DosDelete(list[x]); 1034 else 1035 error = DosForceDelete(list[x]); 1036 } 1037 } 1038 if (error) { 1039 if (LogFileHandle) 1040 fprintf(LogFileHandle, 1041 GetPString(IDS_DELETEFAILED1TEXT), list[x], error); 1042 if (Dos_Error(MB_ENTERCANCEL, 1043 error, 1044 hwndFrame, 1045 pszSrcFile, 1046 __LINE__, 1047 GetPString(IDS_DELETEFAILED2TEXT), 1048 list[x]) == MBID_CANCEL) 1049 break; 1050 } 1051 else if (LogFileHandle) 1052 fprintf(LogFileHandle, 1053 "%s\n", GetPString(IDS_DELETEDTEXT), list[x]); 1054 AddToList(list[x], &files, &numfiles, &numalloc); 1055 } 1056 } 1057 FreeList(list); 1058 break; 1040 1059 1041 1060 case IDM_SAVETOLIST: 1042 if (list) {1043 WinDlgBox(HWND_DESKTOP,1044 WinWindowFromID(hwndFrame, FID_CLIENT),1045 SaveAllListDlgProc,1046 FM3ModHandle, SAV_FRAME, MPFROMP(list));1047 FreeList(list);1048 }1049 break;1061 if (list) { 1062 WinDlgBox(HWND_DESKTOP, 1063 WinWindowFromID(hwndFrame, FID_CLIENT), 1064 SaveAllListDlgProc, 1065 FM3ModHandle, SAV_FRAME, MPFROMP(list)); 1066 FreeList(list); 1067 } 1068 break; 1050 1069 1051 1070 case IDM_SAVETOCLIP: … … 1053 1072 case IDM_SAVETOCLIPFILENAME: 1054 1073 case IDM_APPENDTOCLIPFILENAME: 1055 if (list) {1056 ListToClipboardHab(WinQueryAnchorBlock(hwnd),1057 list, SHORT1FROMMP(mp1));1058 FreeList(list);1059 }1060 break;1074 if (list) { 1075 ListToClipboardHab(WinQueryAnchorBlock(hwnd), 1076 list, SHORT1FROMMP(mp1)); 1077 FreeList(list); 1078 } 1079 break; 1061 1080 1062 1081 default: 1063 if (list)1064 FreeList(list);1065 break;1082 if (list) 1083 FreeList(list); 1084 break; 1066 1085 } 1067 1086 … … 1070 1089 case IDM_COPY: 1071 1090 case IDM_RENAME: 1072 sprintf(message, 1073 GetPString(IDS_OPSCOMPLETETEXT), 1074 SHORT1FROMMP(mp1) == IDM_MOVE ? 1075 GetPString(IDS_MOVETEXT) : 1076 SHORT1FROMMP(mp1) == IDM_COPY ? 1077 GetPString(IDS_COPYTEXT) : 1078 SHORT1FROMMP(mp1) == IDM_WPSMOVE ? 1079 GetPString(IDS_WPSMOVETEXT) : 1080 SHORT1FROMMP(mp1) == IDM_WPSCOPY ? 1081 GetPString(IDS_WPSCOPYTEXT) : 1082 GetPString(IDS_RENAMETEXT), 1083 &"s"[x == 1], 1084 SHORT1FROMMP(mp1) == IDM_MOVE || 1085 SHORT1FROMMP(mp1) == IDM_COPY || 1086 SHORT1FROMMP(mp1) == IDM_WPSMOVE || 1087 SHORT1FROMMP(mp1) == IDM_WPSCOPY ? 1088 GetPString(IDS_TOTEXT) : NullStr, 1089 SHORT1FROMMP(mp1) == IDM_MOVE || 1090 SHORT1FROMMP(mp1) == IDM_COPY || 1091 SHORT1FROMMP(mp1) == IDM_WPSMOVE || 1092 SHORT1FROMMP(mp1) == IDM_WPSCOPY ? 1093 path : NullStr, 1094 x != 1 ? GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT)); 1095 WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS), message); 1096 if (toupper(*path) < 'C') 1097 DosBeep(1000, 25); 1098 DosSleep(16); // 05 Aug 07 GKY 33 1099 break; 1091 sprintf(message, 1092 GetPString(IDS_OPSCOMPLETETEXT), 1093 SHORT1FROMMP(mp1) == IDM_MOVE ? 1094 GetPString(IDS_MOVETEXT) : 1095 SHORT1FROMMP(mp1) == IDM_COPY ? 1096 GetPString(IDS_COPYTEXT) : 1097 SHORT1FROMMP(mp1) == IDM_WPSMOVE ? 1098 GetPString(IDS_WPSMOVETEXT) : 1099 SHORT1FROMMP(mp1) == IDM_WPSCOPY ? 1100 GetPString(IDS_WPSCOPYTEXT) : 1101 GetPString(IDS_RENAMETEXT), 1102 &"s"[x == 1], 1103 SHORT1FROMMP(mp1) == IDM_MOVE || 1104 SHORT1FROMMP(mp1) == IDM_COPY || 1105 SHORT1FROMMP(mp1) == IDM_WPSMOVE || 1106 SHORT1FROMMP(mp1) == IDM_WPSCOPY ? 1107 GetPString(IDS_TOTEXT) : NullStr, 1108 SHORT1FROMMP(mp1) == IDM_MOVE || 1109 SHORT1FROMMP(mp1) == IDM_COPY || 1110 SHORT1FROMMP(mp1) == IDM_WPSCOPY ? 1111 path : NullStr, 1112 x != 1 ? GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT)); 1113 WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS), message); 1114 if (toupper(*path) < 'C') 1115 DosBeep(1000, 25); 1116 DosSleep(16); // 05 Aug 07 GKY 33 1117 break; 1100 1118 1101 1119 default: 1102 break;1120 break; 1103 1121 } 1104 1122 Abort: 1105 1123 if (files) { 1106 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),1107 UM_UPDATERECORDLIST, MPFROMP(files), MPVOID))1108 FreeList(files);1124 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 1125 UM_UPDATERECORDLIST, MPFROMP(files), MPVOID)) 1126 FreeList(files); 1109 1127 } 1110 1128 PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 1111 UM_RESCAN, MPVOID, MPVOID);1129 UM_RESCAN, MPVOID, MPVOID); 1112 1130 } 1113 1131 return 0; … … 1141 1159 hmq2 = WinCreateMsgQueue(hab2, 256); 1142 1160 if (hmq2) { 1143 DosError(FERR_DISABLEHARDERR);1144 WinRegisterClass(hab2,1145 WC_OBJECTWINDOW,1146 SeeObjWndProc, 0, sizeof(PVOID));1147 hwndObj = WinCreateWindow(HWND_OBJECT,1148 WC_OBJECTWINDOW,1149 (PSZ) NULL,1150 0,1151 0,1152 0,1153 0,1154 0, 0, HWND_TOP, SEEALL_OBJ, NULL, NULL);1155 if (!hwndObj) {1156 Win_Error2(HWND_OBJECT, HWND_DESKTOP, pszSrcFile, __LINE__,1157 IDS_WINCREATEWINDOW);1158 if (!PostMsg(ad->hwndClient, WM_CLOSE, MPVOID, MPVOID))1159 WinSendMsg(ad->hwndClient, WM_CLOSE, MPVOID, MPVOID);1160 }1161 else {1162 ad->hwndObj = hwndObj;1163 WinSetWindowULong(hwndObj, QWL_USER, ad->hwndFrame);1164 priority_normal();1165 while (WinGetMsg(hab2, &qmsg2, (HWND) 0, 0, 0))1166 WinDispatchMsg(hab2, &qmsg2);1167 WinDestroyWindow(hwndObj);1168 }1169 WinDestroyMsgQueue(hmq2);1161 DosError(FERR_DISABLEHARDERR); 1162 WinRegisterClass(hab2, 1163 WC_OBJECTWINDOW, 1164 SeeObjWndProc, 0, sizeof(PVOID)); 1165 hwndObj = WinCreateWindow(HWND_OBJECT, 1166 WC_OBJECTWINDOW, 1167 (PSZ) NULL, 1168 0, 1169 0, 1170 0, 1171 0, 1172 0, 0, HWND_TOP, SEEALL_OBJ, NULL, NULL); 1173 if (!hwndObj) { 1174 Win_Error2(HWND_OBJECT, HWND_DESKTOP, pszSrcFile, __LINE__, 1175 IDS_WINCREATEWINDOW); 1176 if (!PostMsg(ad->hwndClient, WM_CLOSE, MPVOID, MPVOID)) 1177 WinSendMsg(ad->hwndClient, WM_CLOSE, MPVOID, MPVOID); 1178 } 1179 else { 1180 ad->hwndObj = hwndObj; 1181 WinSetWindowULong(hwndObj, QWL_USER, ad->hwndFrame); 1182 priority_normal(); 1183 while (WinGetMsg(hab2, &qmsg2, (HWND) 0, 0, 0)) 1184 WinDispatchMsg(hab2, &qmsg2); 1185 WinDestroyWindow(hwndObj); 1186 } 1187 WinDestroyMsgQueue(hmq2); 1170 1188 } 1171 1189 else … … 1192 1210 mask.fIsSeeAll = TRUE; 1193 1211 strcpy(mask.prompt, 1194 GetPString((!deselect) ?1195 IDS_SELECTFILTERTEXT : IDS_DESELECTFILTERTEXT));1212 GetPString((!deselect) ? 1213 IDS_SELECTFILTERTEXT : IDS_DESELECTFILTERTEXT)); 1196 1214 if (WinDlgBox(HWND_DESKTOP, 1197 hwnd,1198 PickMaskDlgProc,1199 FM3ModHandle,1200 MSK_FRAME,1201 MPFROMP(&mask)) &&1215 hwnd, 1216 PickMaskDlgProc, 1217 FM3ModHandle, 1218 MSK_FRAME, 1219 MPFROMP(&mask)) && 1202 1220 (*mask.szMask || 1203 1221 mask.attrFile != pAD->mask.attrFile || … … 1207 1225 ret = FALSE; 1208 1226 if (mask.pszMasks[1]) { 1209 for (z = 0; mask.pszMasks[z]; z++) {1210 if (*mask.pszMasks[z]) {1211 if (*mask.pszMasks[z] != '/') {1212 if (wildcard((strchr(mask.pszMasks[z], '\\') ||1213 strchr(mask.pszMasks[z], ':')) ?1214 pAD->afindex[y]->fullname : pAD->afindex[y]->1215 filename, mask.pszMasks[z], FALSE))1216 ret = TRUE;1217 }1218 else {1219 if (wildcard((strchr(mask.pszMasks[z], '\\') ||1220 strchr(mask.pszMasks[z], ':')) ?1221 pAD->afindex[y]->fullname : pAD->afindex[y]->1222 filename, mask.pszMasks[y] + 1, FALSE)) {1223 ret = FALSE;1224 break;1225 }1226 }1227 }1228 }1227 for (z = 0; mask.pszMasks[z]; z++) { 1228 if (*mask.pszMasks[z]) { 1229 if (*mask.pszMasks[z] != '/') { 1230 if (wildcard((strchr(mask.pszMasks[z], '\\') || 1231 strchr(mask.pszMasks[z], ':')) ? 1232 pAD->afindex[y]->fullname : pAD->afindex[y]-> 1233 filename, mask.pszMasks[z], FALSE)) 1234 ret = TRUE; 1235 } 1236 else { 1237 if (wildcard((strchr(mask.pszMasks[z], '\\') || 1238 strchr(mask.pszMasks[z], ':')) ? 1239 pAD->afindex[y]->fullname : pAD->afindex[y]-> 1240 filename, mask.pszMasks[y] + 1, FALSE)) { 1241 ret = FALSE; 1242 break; 1243 } 1244 } 1245 } 1246 } 1229 1247 } 1230 1248 else if (*mask.szMask) { 1231 if (wildcard((strchr(mask.szMask, '\\') ||1232 strchr(mask.szMask, ':')) ?1233 pAD->afindex[y]->fullname : pAD->afindex[y]->filename,1234 mask.szMask, FALSE))1235 ret = TRUE;1249 if (wildcard((strchr(mask.szMask, '\\') || 1250 strchr(mask.szMask, ':')) ? 1251 pAD->afindex[y]->fullname : pAD->afindex[y]->filename, 1252 mask.szMask, FALSE)) 1253 ret = TRUE; 1236 1254 } 1237 1255 else 1238 ret = TRUE;1256 ret = TRUE; 1239 1257 if (ret) { 1240 if ((!(mask.attrFile & FILE_HIDDEN)1241 && (pAD->afindex[y]->attrFile & FILE_HIDDEN))1242 || (!(mask.attrFile & FILE_SYSTEM)1243 && (pAD->afindex[y]->attrFile & FILE_SYSTEM))1244 || (!(mask.attrFile & FILE_READONLY)1245 && (pAD->afindex[y]->attrFile & FILE_READONLY))1246 || (!(mask.attrFile & FILE_ARCHIVED)1247 && (pAD->afindex[y]->attrFile & FILE_ARCHIVED)))1248 ret = FALSE;1249 else1250 if (((mask.antiattr & FILE_HIDDEN)1251 && !(pAD->afindex[y]->attrFile & FILE_HIDDEN))1252 || ((mask.antiattr & FILE_SYSTEM)1253 && !(pAD->afindex[y]->attrFile & FILE_SYSTEM))1254 || ((mask.antiattr & FILE_READONLY)1255 && !(pAD->afindex[y]->attrFile & FILE_READONLY))1256 || ((mask.antiattr & FILE_ARCHIVED)1257 && !(pAD->afindex[y]->attrFile & FILE_ARCHIVED)))1258 ret = FALSE;1258 if ((!(mask.attrFile & FILE_HIDDEN) 1259 && (pAD->afindex[y]->attrFile & FILE_HIDDEN)) 1260 || (!(mask.attrFile & FILE_SYSTEM) 1261 && (pAD->afindex[y]->attrFile & FILE_SYSTEM)) 1262 || (!(mask.attrFile & FILE_READONLY) 1263 && (pAD->afindex[y]->attrFile & FILE_READONLY)) 1264 || (!(mask.attrFile & FILE_ARCHIVED) 1265 && (pAD->afindex[y]->attrFile & FILE_ARCHIVED))) 1266 ret = FALSE; 1267 else 1268 if (((mask.antiattr & FILE_HIDDEN) 1269 && !(pAD->afindex[y]->attrFile & FILE_HIDDEN)) 1270 || ((mask.antiattr & FILE_SYSTEM) 1271 && !(pAD->afindex[y]->attrFile & FILE_SYSTEM)) 1272 || ((mask.antiattr & FILE_READONLY) 1273 && !(pAD->afindex[y]->attrFile & FILE_READONLY)) 1274 || ((mask.antiattr & FILE_ARCHIVED) 1275 && !(pAD->afindex[y]->attrFile & FILE_ARCHIVED))) 1276 ret = FALSE; 1259 1277 } 1260 1278 if (ret) { 1261 if (deselect) {1262 if (pAD->afindex[y]->flags & AF_SELECTED) {1263 pAD->selected--;1264 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;1265 pAD->afindex[y]->flags &= ~AF_SELECTED;1266 }1267 }1268 else {1269 if (~pAD->afindex[y]->flags & AF_SELECTED) {1270 pAD->selected++;1271 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;1272 pAD->afindex[y]->flags |= AF_SELECTED;1273 }1274 }1275 } 1276 } // for1279 if (deselect) { 1280 if (pAD->afindex[y]->flags & AF_SELECTED) { 1281 pAD->selected--; 1282 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile; 1283 pAD->afindex[y]->flags &= ~AF_SELECTED; 1284 } 1285 } 1286 else { 1287 if (~pAD->afindex[y]->flags & AF_SELECTED) { 1288 pAD->selected++; 1289 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile; 1290 pAD->afindex[y]->flags |= AF_SELECTED; 1291 } 1292 } 1293 } 1294 } // for 1277 1295 } 1278 1296 } … … 1287 1305 1288 1306 if (!fAutoTile) 1289 GetNextWindowPos(hwndMain, &swp, NULL, NULL);1307 GetNextWindowPos(hwndMain, &swp, NULL, NULL); 1290 1308 hwndC = StartCollector(hwndMain, 4); 1291 1309 if (hwndC) { 1292 if (!fAutoTile)1293 WinSetWindowPos(hwndC, HWND_TOP, swp.x, swp.y,1294 swp.cx, swp.cy, SWP_MOVE | SWP_SIZE |1295 SWP_SHOW | SWP_ZORDER);1296 else1297 TileChildren(hwndMain, TRUE);1298 WinSetWindowPos(hwndC, HWND_TOP, 0, 0, 0, 0, SWP_ACTIVATE);1299 DosSleep(100);//05 Aug 07 GKY 2501310 if (!fAutoTile) 1311 WinSetWindowPos(hwndC, HWND_TOP, swp.x, swp.y, 1312 swp.cx, swp.cy, SWP_MOVE | SWP_SIZE | 1313 SWP_SHOW | SWP_ZORDER); 1314 else 1315 TileChildren(hwndMain, TRUE); 1316 WinSetWindowPos(hwndC, HWND_TOP, 0, 0, 0, 0, SWP_ACTIVATE); 1317 DosSleep(100);//05 Aug 07 GKY 250 1300 1318 } 1301 1319 } … … 1306 1324 } 1307 1325 if (!PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_COLLECTOR, 0), 1308 MPFROMP(list)))1326 MPFROMP(list))) 1309 1327 FreeList(list); 1310 1328 } … … 1344 1362 y = (ad->invertsort) ? (ad->afindexcnt - 1) - x : x; 1345 1363 if (ad->afindex[y]->flags & AF_SELECTED) { 1346 error = AddToList(ad->afindex[y]->fullname, &list,1347 &numfiles, &numalloc);1348 if (error)1349 break;1350 z++;1351 if (z >= ad->selected)1352 break;1364 error = AddToList(ad->afindex[y]->fullname, &list, 1365 &numfiles, &numalloc); 1366 if (error) 1367 break; 1368 z++; 1369 if (z >= ad->selected) 1370 break; 1353 1371 } 1354 1372 } … … 1371 1389 ret = FALSE; 1372 1390 for (z = 0; list[z]; z++) { 1373 if (!stricmp(list[z], pAD->afindex[y]->fullname)) {1374 ret = TRUE;1375 break;1376 }1391 if (!stricmp(list[z], pAD->afindex[y]->fullname)) { 1392 ret = TRUE; 1393 break; 1394 } 1377 1395 } 1378 1396 } … … 1380 1398 didone = TRUE; 1381 1399 if (command == AFM_UNMARK) { 1382 if (pAD->afindex[y]->flags & AF_SELECTED) {1383 pAD->selected--;1384 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;1385 pAD->afindex[y]->flags &= ~AF_SELECTED;1386 }1400 if (pAD->afindex[y]->flags & AF_SELECTED) { 1401 pAD->selected--; 1402 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile; 1403 pAD->afindex[y]->flags &= ~AF_SELECTED; 1404 } 1387 1405 } 1388 1406 else if (command == AFM_MARK) { 1389 if (~pAD->afindex[y]->flags & AF_SELECTED) {1390 pAD->selected++;1391 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;1392 pAD->afindex[y]->flags |= AF_SELECTED;1393 }1407 if (~pAD->afindex[y]->flags & AF_SELECTED) { 1408 pAD->selected++; 1409 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile; 1410 pAD->afindex[y]->flags |= AF_SELECTED; 1411 } 1394 1412 } 1395 1413 else if (command == AFM_INVERT) { 1396 if (pAD->afindex[y]->flags & AF_SELECTED) {1397 pAD->selected--;1398 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;1399 pAD->afindex[y]->flags &= ~AF_SELECTED;1400 }1401 else {1402 pAD->selected++;1403 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;1404 pAD->afindex[y]->flags |= AF_SELECTED;1405 }1414 if (pAD->afindex[y]->flags & AF_SELECTED) { 1415 pAD->selected--; 1416 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile; 1417 pAD->afindex[y]->flags &= ~AF_SELECTED; 1418 } 1419 else { 1420 pAD->selected++; 1421 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile; 1422 pAD->afindex[y]->flags |= AF_SELECTED; 1423 } 1406 1424 } 1407 1425 else if (command == AFM_MARKDELETED) { 1408 if (pAD->afindex[y]->flags & AF_SELECTED)1409 pAD->afindex[y]->flags |= AF_DELETED;1426 if (pAD->afindex[y]->flags & AF_SELECTED) 1427 pAD->afindex[y]->flags |= AF_DELETED; 1410 1428 } 1411 1429 else if (command == AFM_FILTER) { 1412 if (pAD->afindex[y]->flags & AF_SELECTED)1413 pAD->afindex[y]->flags |= AF_FILTERED;1414 } 1415 } 1416 } // for x1430 if (pAD->afindex[y]->flags & AF_SELECTED) 1431 pAD->afindex[y]->flags |= AF_FILTERED; 1432 } 1433 } 1434 } // for x 1417 1435 return didone; 1418 1436 } … … 1434 1452 ret = FALSE; 1435 1453 for (x = 0; x < ad->afheadcnt; x++) { 1436 if (!stricmp(list[z], ad->afhead[x].fullname)) {1437 ret = TRUE;1438 break;1439 }1454 if (!stricmp(list[z], ad->afhead[x].fullname)) { 1455 ret = TRUE; 1456 break; 1457 } 1440 1458 } 1441 1459 if (ret) { 1442 didone = TRUE;1443 hdir = HDIR_CREATE;1444 ulFindCnt = 1;1445 if (!xDosFindFirst(list[z], &hdir, FILE_NORMAL | FILE_ARCHIVED |1446 FILE_DIRECTORY | FILE_READONLY | FILE_SYSTEM |1447 FILE_HIDDEN, &ffb, sizeof(ffb), &ulFindCnt,1448 FIL_STANDARDL)) {1449 DosFindClose(hdir);1450 if (!(ffb.attrFile & FILE_DIRECTORY)) {1451 ad->afhead[x].attrFile = (USHORT) ffb.attrFile;1452 ad->afhead[x].cbFile = ffb.cbFile;1453 ad->afhead[x].date = ffb.fdateLastWrite;1454 ad->afhead[x].time = ffb.ftimeLastWrite;1455 }1456 else1457 ad->afhead[x].flags |= AF_DELETED;1458 }1459 else1460 ad->afhead[x].flags |= AF_DELETED;1460 didone = TRUE; 1461 hdir = HDIR_CREATE; 1462 ulFindCnt = 1; 1463 if (!xDosFindFirst(list[z], &hdir, FILE_NORMAL | FILE_ARCHIVED | 1464 FILE_DIRECTORY | FILE_READONLY | FILE_SYSTEM | 1465 FILE_HIDDEN, &ffb, sizeof(ffb), &ulFindCnt, 1466 FIL_STANDARDL)) { 1467 DosFindClose(hdir); 1468 if (!(ffb.attrFile & FILE_DIRECTORY)) { 1469 ad->afhead[x].attrFile = (USHORT) ffb.attrFile; 1470 ad->afhead[x].cbFile = ffb.cbFile; 1471 ad->afhead[x].date = ffb.fdateLastWrite; 1472 ad->afhead[x].time = ffb.ftimeLastWrite; 1473 } 1474 else 1475 ad->afhead[x].flags |= AF_DELETED; 1476 } 1477 else 1478 ad->afhead[x].flags |= AF_DELETED; 1461 1479 } 1462 1480 else if (isalpha(*list[z]) && ad->abDrvFlags[toupper(*list[z]) - 'A']) { 1463 didone = TRUE;1464 hdir = HDIR_CREATE;1465 ulFindCnt = 1;1466 if (!xDosFindFirst(list[z], &hdir, FILE_NORMAL | FILE_ARCHIVED |1467 FILE_DIRECTORY | FILE_READONLY | FILE_SYSTEM |1468 FILE_HIDDEN, &ffb, sizeof(ffb), &ulFindCnt,1469 FIL_STANDARDL)) {1470 DosFindClose(hdir);1471 if (!(ffb.attrFile & FILE_DIRECTORY)) {1472 if (!ad->afalloc || ad->afheadcnt > ad->afalloc - 1) {1473 1474 ALLFILES *temp, **templ;1475 1476 temp =1477 xrealloc(ad->afhead, (ad->afalloc + 1) * sizeof(ALLFILES),1478 pszSrcFile, __LINE__);1479 if (!temp) {1480 ad->stopflag = 1;1481 break;1482 }1483 else {1484 ad->afhead = temp;1485 templ =1486 xrealloc(ad->afindex,1487 (ad->afalloc + 1) * sizeof(ALLFILES *), pszSrcFile,1488 __LINE__);1489 if (!templ) {1490 ad->stopflag = 1;1491 break;1492 }1493 else1494 ad->afindex = templ;1495 ad->afalloc++;1496 }1497 }1498 ad->afhead[ad->afheadcnt].fullname =1499 xstrdup(list[z], pszSrcFile, __LINE__);1500 if (ad->afhead[ad->afheadcnt].fullname) {1501 p = strrchr(ad->afhead[ad->afheadcnt].fullname, '\\');1502 if (!p)1503 p = ad->afhead[ad->afheadcnt].fullname;1504 else1505 p++;1506 ad->afhead[ad->afheadcnt].filename = p;1507 ad->afhead[ad->afheadcnt].cbFile = ffb.cbFile;1508 ad->afhead[ad->afheadcnt].date = ffb.fdateLastWrite;1509 ad->afhead[ad->afheadcnt].time = ffb.ftimeLastWrite;1510 ad->afhead[ad->afheadcnt].attrFile = (USHORT) ffb.attrFile;1511 ad->afhead[ad->afheadcnt].flags = 0;1512 if (ad->longest < strlen(ad->afhead[ad->afheadcnt].filename))1513 ad->longest = strlen(ad->afhead[ad->afheadcnt].filename);1514 if (ad->longestw < strlen(ad->afhead[ad->afheadcnt].fullname))1515 ad->longestw = strlen(ad->afhead[ad->afheadcnt].fullname);1516 1517 ad->afheadcnt++;1518 }1519 else {1520 // saymsg(MB_ENTER,HWND_DESKTOP,DEBUG_STRING,"Strdup failed.");1521 ad->stopflag = 1;1522 break;1523 }1524 }1525 }1481 didone = TRUE; 1482 hdir = HDIR_CREATE; 1483 ulFindCnt = 1; 1484 if (!xDosFindFirst(list[z], &hdir, FILE_NORMAL | FILE_ARCHIVED | 1485 FILE_DIRECTORY | FILE_READONLY | FILE_SYSTEM | 1486 FILE_HIDDEN, &ffb, sizeof(ffb), &ulFindCnt, 1487 FIL_STANDARDL)) { 1488 DosFindClose(hdir); 1489 if (!(ffb.attrFile & FILE_DIRECTORY)) { 1490 if (!ad->afalloc || ad->afheadcnt > ad->afalloc - 1) { 1491 1492 ALLFILES *temp, **templ; 1493 1494 temp = 1495 xrealloc(ad->afhead, (ad->afalloc + 1) * sizeof(ALLFILES), 1496 pszSrcFile, __LINE__); 1497 if (!temp) { 1498 ad->stopflag = 1; 1499 break; 1500 } 1501 else { 1502 ad->afhead = temp; 1503 templ = 1504 xrealloc(ad->afindex, 1505 (ad->afalloc + 1) * sizeof(ALLFILES *), pszSrcFile, 1506 __LINE__); 1507 if (!templ) { 1508 ad->stopflag = 1; 1509 break; 1510 } 1511 else 1512 ad->afindex = templ; 1513 ad->afalloc++; 1514 } 1515 } 1516 ad->afhead[ad->afheadcnt].fullname = 1517 xstrdup(list[z], pszSrcFile, __LINE__); 1518 if (ad->afhead[ad->afheadcnt].fullname) { 1519 p = strrchr(ad->afhead[ad->afheadcnt].fullname, '\\'); 1520 if (!p) 1521 p = ad->afhead[ad->afheadcnt].fullname; 1522 else 1523 p++; 1524 ad->afhead[ad->afheadcnt].filename = p; 1525 ad->afhead[ad->afheadcnt].cbFile = ffb.cbFile; 1526 ad->afhead[ad->afheadcnt].date = ffb.fdateLastWrite; 1527 ad->afhead[ad->afheadcnt].time = ffb.ftimeLastWrite; 1528 ad->afhead[ad->afheadcnt].attrFile = (USHORT) ffb.attrFile; 1529 ad->afhead[ad->afheadcnt].flags = 0; 1530 if (ad->longest < strlen(ad->afhead[ad->afheadcnt].filename)) 1531 ad->longest = strlen(ad->afhead[ad->afheadcnt].filename); 1532 if (ad->longestw < strlen(ad->afhead[ad->afheadcnt].fullname)) 1533 ad->longestw = strlen(ad->afhead[ad->afheadcnt].fullname); 1534 1535 ad->afheadcnt++; 1536 } 1537 else { 1538 // saymsg(MB_ENTER,HWND_DESKTOP,DEBUG_STRING,"Strdup failed."); 1539 ad->stopflag = 1; 1540 break; 1541 } 1542 } 1543 } 1526 1544 } 1527 1545 } … … 1624 1642 if (!(pAD->afhead[x].flags & (AF_DELETED | AF_FILTERED))) { 1625 1643 if (pAD->afhead[x].flags & AF_SELECTED) { 1626 pAD->selected++;1627 pAD->ullSelectedBytes += pAD->afhead[x].cbFile;1644 pAD->selected++; 1645 pAD->ullSelectedBytes += pAD->afhead[x].cbFile; 1628 1646 } 1629 1647 pAD->afindex[y++] = &(pAD->afhead[x]); 1630 1648 } 1631 } // for x1649 } // for x 1632 1650 pAD->afindexcnt = y; 1633 1651 PostMsg(hwnd, UM_SETUP3, MPVOID, MPVOID); … … 1658 1676 hmq2 = WinCreateMsgQueue(hab2, 0); 1659 1677 if (hmq2) { 1660 WinCancelShutdown(hmq2, TRUE);1661 IncrThreadUsage();1662 if (ad->cursored <= ad->afindexcnt) {1663 for (x = 0; x < ad->afheadcnt; x++)1664 ad->afhead[x].flags &= (~(AF_DUPE | AF_SELECTED));1665 DosSleep(0); //26 Aug 07 GKY 11666 for (x = 0; x < ad->afheadcnt && !ad->stopflag; x++) {1667 if (!(ad->afhead[x].flags & (AF_DUPE | AF_FILTERED))) {1668 if (!(x % 50)) {1669 sprintf(s,1670 GetPString(IDS_DUPECHECKINGOFTEXT), x, ad->afheadcnt);1671 WinSetWindowText(ad->hwndStatus, s);1672 }1673 for (z = 0; z < ad->afheadcnt && !ad->stopflag; z++) {1674 if (x != z &&1675 !(ad->afhead[z].flags & (AF_DUPE | AF_FILTERED)))1676 {1677 if (ad->dupeflags & DP_SIZES) {1678 if (ad->afhead[x].cbFile != ad->afhead[z].cbFile)1679 goto SkipNonDupe;1680 }1681 if (ad->dupeflags & DP_DATES) {1682 if (*(INT *) & ad->afhead[x].date !=1683 *(INT *) & ad->afhead[z].date ||1684 *(INT *) & ad->afhead[x].time !=1685 *(INT *) & ad->afhead[z].time)1686 goto SkipNonDupe;1687 }1688 if (ad->dupeflags & DP_NAMES) {1689 if (ad->dupeflags & DP_EXTS) {1690 px = strrchr(ad->afhead[x].filename, '.');1691 pz = strrchr(ad->afhead[z].filename, '.');1692 if ((px || pz) && (!px || !pz))1693 goto SkipNonDupe;1694 if (px) {1695 *px = 0;1696 *pz = 0;1697 }1698 }1699 if (stricmp(ad->afhead[x].filename,1700 ad->afhead[z].filename)) {1701 if (ad->dupeflags & DP_EXTS) {1702 if (px) {1703 *px = '.';1704 *pz = '.';1705 }1706 }1707 goto SkipNonDupe;1708 }1709 if (ad->dupeflags & DP_EXTS) {1710 if (px) {1711 *px = '.';1712 *pz = '.';1713 }1714 }1715 }1716 if (ad->dupeflags & DP_CRCS) {1717 if (!(ad->afhead[x].flags & AF_CRCED)) {1718 ad->afhead[x].CRC = CRCFile(ad->afhead[x].fullname,1719 &error);1720 if (!error)1721 ad->afhead[x].flags |= AF_CRCED;1722 }1723 if (!(ad->afhead[z].flags & AF_CRCED)) {1724 ad->afhead[z].CRC = CRCFile(ad->afhead[z].fullname,1725 &error);1726 if (!error)1727 ad->afhead[z].flags |= AF_CRCED;1728 }1729 if ((ad->afhead[x].flags & AF_CRCED) &&1730 (ad->afhead[z].flags & AF_CRCED)) {1731 if (ad->afhead[x].CRC != ad->afhead[z].CRC)1732 goto SkipNonDupe;1733 }1734 DosSleep(0);1735 }1736 ad->afhead[x].flags |= AF_DUPE;1737 ad->afhead[z].flags |= AF_DUPE;1738 SkipNonDupe:1739 ;1740 }1741 } // for1742 DosSleep(0);1743 }1744 } // for1745 for (x = 0; x < ad->afheadcnt && !ad->stopflag; x++) {1746 if (!(ad->afhead[x].flags & AF_DUPE))1747 ad->afhead[x].flags |= AF_FILTERED;1748 }1749 ReSort(hwnd);1750 WinInvalidateRect(hwnd, NULL, FALSE);1751 }1678 WinCancelShutdown(hmq2, TRUE); 1679 IncrThreadUsage(); 1680 if (ad->cursored <= ad->afindexcnt) { 1681 for (x = 0; x < ad->afheadcnt; x++) 1682 ad->afhead[x].flags &= (~(AF_DUPE | AF_SELECTED)); 1683 DosSleep(0); //26 Aug 07 GKY 1 1684 for (x = 0; x < ad->afheadcnt && !ad->stopflag; x++) { 1685 if (!(ad->afhead[x].flags & (AF_DUPE | AF_FILTERED))) { 1686 if (!(x % 50)) { 1687 sprintf(s, 1688 GetPString(IDS_DUPECHECKINGOFTEXT), x, ad->afheadcnt); 1689 WinSetWindowText(ad->hwndStatus, s); 1690 } 1691 for (z = 0; z < ad->afheadcnt && !ad->stopflag; z++) { 1692 if (x != z && 1693 !(ad->afhead[z].flags & (AF_DUPE | AF_FILTERED))) 1694 { 1695 if (ad->dupeflags & DP_SIZES) { 1696 if (ad->afhead[x].cbFile != ad->afhead[z].cbFile) 1697 goto SkipNonDupe; 1698 } 1699 if (ad->dupeflags & DP_DATES) { 1700 if (*(INT *) & ad->afhead[x].date != 1701 *(INT *) & ad->afhead[z].date || 1702 *(INT *) & ad->afhead[x].time != 1703 *(INT *) & ad->afhead[z].time) 1704 goto SkipNonDupe; 1705 } 1706 if (ad->dupeflags & DP_NAMES) { 1707 if (ad->dupeflags & DP_EXTS) { 1708 px = strrchr(ad->afhead[x].filename, '.'); 1709 pz = strrchr(ad->afhead[z].filename, '.'); 1710 if ((px || pz) && (!px || !pz)) 1711 goto SkipNonDupe; 1712 if (px) { 1713 *px = 0; 1714 *pz = 0; 1715 } 1716 } 1717 if (stricmp(ad->afhead[x].filename, 1718 ad->afhead[z].filename)) { 1719 if (ad->dupeflags & DP_EXTS) { 1720 if (px) { 1721 *px = '.'; 1722 *pz = '.'; 1723 } 1724 } 1725 goto SkipNonDupe; 1726 } 1727 if (ad->dupeflags & DP_EXTS) { 1728 if (px) { 1729 *px = '.'; 1730 *pz = '.'; 1731 } 1732 } 1733 } 1734 if (ad->dupeflags & DP_CRCS) { 1735 if (!(ad->afhead[x].flags & AF_CRCED)) { 1736 ad->afhead[x].CRC = CRCFile(ad->afhead[x].fullname, 1737 &error); 1738 if (!error) 1739 ad->afhead[x].flags |= AF_CRCED; 1740 } 1741 if (!(ad->afhead[z].flags & AF_CRCED)) { 1742 ad->afhead[z].CRC = CRCFile(ad->afhead[z].fullname, 1743 &error); 1744 if (!error) 1745 ad->afhead[z].flags |= AF_CRCED; 1746 } 1747 if ((ad->afhead[x].flags & AF_CRCED) && 1748 (ad->afhead[z].flags & AF_CRCED)) { 1749 if (ad->afhead[x].CRC != ad->afhead[z].CRC) 1750 goto SkipNonDupe; 1751 } 1752 DosSleep(0); 1753 } 1754 ad->afhead[x].flags |= AF_DUPE; 1755 ad->afhead[z].flags |= AF_DUPE; 1756 SkipNonDupe: 1757 ; 1758 } 1759 } // for 1760 DosSleep(0); 1761 } 1762 } // for 1763 for (x = 0; x < ad->afheadcnt && !ad->stopflag; x++) { 1764 if (!(ad->afhead[x].flags & AF_DUPE)) 1765 ad->afhead[x].flags |= AF_FILTERED; 1766 } 1767 ReSort(hwnd); 1768 WinInvalidateRect(hwnd, NULL, FALSE); 1769 } 1752 1770 } 1753 1771 } … … 1801 1819 ret = FALSE; 1802 1820 if (ad->mask.pszMasks[1]) { 1803 for (z = 0; ad->mask.pszMasks[z]; z++) {1804 if (*ad->mask.pszMasks[z]) {1805 if (*ad->mask.pszMasks[z] != '/') {1806 if (wildcard((strchr(ad->mask.pszMasks[z], '\\') ||1807 strchr(ad->mask.pszMasks[z], ':')) ?1808 ad->afhead[x].fullname : ad->afhead[x].filename,1809 ad->mask.pszMasks[z], FALSE))1810 ret = TRUE;1811 }1812 else {1813 if (wildcard((strchr(ad->mask.pszMasks[z], '\\') ||1814 strchr(ad->mask.pszMasks[z], ':')) ?1815 ad->afhead[x].fullname : ad->afhead[x].filename,1816 ad->mask.pszMasks[z] + 1, FALSE)) {1817 ret = FALSE;1818 break;1819 }1820 }1821 }1822 }1821 for (z = 0; ad->mask.pszMasks[z]; z++) { 1822 if (*ad->mask.pszMasks[z]) { 1823 if (*ad->mask.pszMasks[z] != '/') { 1824 if (wildcard((strchr(ad->mask.pszMasks[z], '\\') || 1825 strchr(ad->mask.pszMasks[z], ':')) ? 1826 ad->afhead[x].fullname : ad->afhead[x].filename, 1827 ad->mask.pszMasks[z], FALSE)) 1828 ret = TRUE; 1829 } 1830 else { 1831 if (wildcard((strchr(ad->mask.pszMasks[z], '\\') || 1832 strchr(ad->mask.pszMasks[z], ':')) ? 1833 ad->afhead[x].fullname : ad->afhead[x].filename, 1834 ad->mask.pszMasks[z] + 1, FALSE)) { 1835 ret = FALSE; 1836 break; 1837 } 1838 } 1839 } 1840 } 1823 1841 } 1824 1842 else if (*ad->mask.szMask) { 1825 if (wildcard((strchr(ad->mask.szMask, '\\') ||1826 strchr(ad->mask.szMask, ':')) ?1827 ad->afhead[x].fullname : ad->afhead[x].filename,1828 ad->mask.szMask, FALSE))1829 ret = TRUE;1843 if (wildcard((strchr(ad->mask.szMask, '\\') || 1844 strchr(ad->mask.szMask, ':')) ? 1845 ad->afhead[x].fullname : ad->afhead[x].filename, 1846 ad->mask.szMask, FALSE)) 1847 ret = TRUE; 1830 1848 } 1831 1849 else 1832 ret = TRUE;1850 ret = TRUE; 1833 1851 1834 1852 if (ret) { 1835 if ((!(ad->mask.attrFile & FILE_HIDDEN)1836 && (ad->afhead[x].attrFile & FILE_HIDDEN))1837 || (!(ad->mask.attrFile & FILE_SYSTEM)1838 && (ad->afhead[x].attrFile & FILE_SYSTEM))1839 || (!(ad->mask.attrFile & FILE_READONLY)1840 && (ad->afhead[x].attrFile & FILE_READONLY))1841 || (!(ad->mask.attrFile & FILE_ARCHIVED)1842 && (ad->afhead[x].attrFile & FILE_ARCHIVED)))1843 ret = FALSE;1844 else1845 if (((ad->mask.antiattr & FILE_HIDDEN)1846 && !(ad->afhead[x].attrFile & FILE_HIDDEN))1847 || ((ad->mask.antiattr & FILE_SYSTEM)1848 && !(ad->afhead[x].attrFile & FILE_SYSTEM))1849 || ((ad->mask.antiattr & FILE_READONLY)1850 && !(ad->afhead[x].attrFile & FILE_READONLY))1851 || ((ad->mask.antiattr & FILE_ARCHIVED)1852 && !(ad->afhead[x].attrFile & FILE_ARCHIVED)))1853 ret = FALSE;1853 if ((!(ad->mask.attrFile & FILE_HIDDEN) 1854 && (ad->afhead[x].attrFile & FILE_HIDDEN)) 1855 || (!(ad->mask.attrFile & FILE_SYSTEM) 1856 && (ad->afhead[x].attrFile & FILE_SYSTEM)) 1857 || (!(ad->mask.attrFile & FILE_READONLY) 1858 && (ad->afhead[x].attrFile & FILE_READONLY)) 1859 || (!(ad->mask.attrFile & FILE_ARCHIVED) 1860 && (ad->afhead[x].attrFile & FILE_ARCHIVED))) 1861 ret = FALSE; 1862 else 1863 if (((ad->mask.antiattr & FILE_HIDDEN) 1864 && !(ad->afhead[x].attrFile & FILE_HIDDEN)) 1865 || ((ad->mask.antiattr & FILE_SYSTEM) 1866 && !(ad->afhead[x].attrFile & FILE_SYSTEM)) 1867 || ((ad->mask.antiattr & FILE_READONLY) 1868 && !(ad->afhead[x].attrFile & FILE_READONLY)) 1869 || ((ad->mask.antiattr & FILE_ARCHIVED) 1870 && !(ad->afhead[x].attrFile & FILE_ARCHIVED))) 1871 ret = FALSE; 1854 1872 } 1855 1873 1856 1874 if (!ret) 1857 ad->afhead[x].flags |= AF_FILTERED;1875 ad->afhead[x].flags |= AF_FILTERED; 1858 1876 else 1859 ad->afhead[x].flags &= (~AF_FILTERED);1877 ad->afhead[x].flags &= (~AF_FILTERED); 1860 1878 } 1861 1879 ReSort(hwnd); … … 1874 1892 if (pAD->afhead[x].flags & AF_DELETED) { 1875 1893 for (y = x; y < pAD->afheadcnt; y++) { 1876 if (~pAD->afhead[y].flags & AF_DELETED)1877 break;1878 if (pAD->afhead[y].flags & AF_SELECTED &&1879 ~pAD->afhead[y].flags & AF_FILTERED) {1880 pAD->selected--;1881 pAD->ullSelectedBytes -= pAD->afhead[y].cbFile;1882 }1883 xfree(pAD->afhead[y].fullname, pszSrcFile, __LINE__);1894 if (~pAD->afhead[y].flags & AF_DELETED) 1895 break; 1896 if (pAD->afhead[y].flags & AF_SELECTED && 1897 ~pAD->afhead[y].flags & AF_FILTERED) { 1898 pAD->selected--; 1899 pAD->ullSelectedBytes -= pAD->afhead[y].cbFile; 1900 } 1901 xfree(pAD->afhead[y].fullname, pszSrcFile, __LINE__); 1884 1902 } 1885 1903 memmove(&(pAD->afhead[x]), &(pAD->afhead[y]), 1886 (pAD->afheadcnt - y) * sizeof(ALLFILES));1904 (pAD->afheadcnt - y) * sizeof(ALLFILES)); 1887 1905 pAD->afheadcnt -= (y - x); 1888 1906 } 1889 } // for x1907 } // for x 1890 1908 if (pAD->afheadcnt != oldafheadcnt) { 1891 1909 … … 1896 1914 else { 1897 1915 tempa = 1898 xrealloc(pAD->afhead, pAD->afheadcnt * sizeof(ALLFILES), pszSrcFile,1899 __LINE__);1916 xrealloc(pAD->afhead, pAD->afheadcnt * sizeof(ALLFILES), pszSrcFile, 1917 __LINE__); 1900 1918 if (tempa) { 1901 pAD->afhead = tempa;1902 pAD->afalloc = pAD->afheadcnt;1919 pAD->afhead = tempa; 1920 pAD->afalloc = pAD->afheadcnt; 1903 1921 } 1904 1922 templ = 1905 xrealloc(pAD->afindex, pAD->afheadcnt * sizeof(ALLFILES *), pszSrcFile,1906 __LINE__);1923 xrealloc(pAD->afindex, pAD->afheadcnt * sizeof(ALLFILES *), pszSrcFile, 1924 __LINE__); 1907 1925 if (templ) 1908 pAD->afindex = templ;1926 pAD->afindex = templ; 1909 1927 DosPostEventSem(CompactSem); 1910 1928 ReSort(hwnd); … … 1955 1973 ulFindCnt = ulFindMax; 1956 1974 rc = xDosFindFirst(filename, &hdir, FILE_NORMAL | FILE_ARCHIVED | 1957 FILE_READONLY | FILE_DIRECTORY | FILE_SYSTEM |1958 FILE_HIDDEN,1959 pffbArray, ulBufBytes, &ulFindCnt, FIL_STANDARDL);1975 FILE_READONLY | FILE_DIRECTORY | FILE_SYSTEM | 1976 FILE_HIDDEN, 1977 pffbArray, ulBufBytes, &ulFindCnt, FIL_STANDARDL); 1960 1978 if (!rc) { 1961 1979 do { … … 1963 1981 pffbFile = pffbArray; 1964 1982 for (x = 0; x < ulFindCnt; x++) { 1965 if (pffbFile->attrFile & FILE_DIRECTORY) {1966 // Skip . and ..1967 if (pffbFile->achName[0] != '.' ||1968 (pffbFile->achName[1] &&1969 (pffbFile->achName[1] != '.' || pffbFile->achName[2]))) {1970 strcpy(enddir, pffbFile->achName);1971 DoADir(hwnd, filename);1972 }1973 }1974 else {1975 *enddir = 0;1983 if (pffbFile->attrFile & FILE_DIRECTORY) { 1984 // Skip . and .. 1985 if (pffbFile->achName[0] != '.' || 1986 (pffbFile->achName[1] && 1987 (pffbFile->achName[1] != '.' || pffbFile->achName[2]))) { 1988 strcpy(enddir, pffbFile->achName); 1989 DoADir(hwnd, filename); 1990 } 1991 } 1992 else { 1993 *enddir = 0; 1976 1994 strcpy(enddir, pffbFile->achName); 1977 1995 if (strlen(filename) > CCHMAXPATH) { 1978 // Complain if pathnames exceeds max1979 DosFindClose(hdir);1996 // Complain if pathnames exceeds max 1997 DosFindClose(hdir); 1980 1998 free(pffbArray); 1981 1999 free(filename); 1982 if (!fDone) {1983 fDone = TRUE;1984 saymsg(MB_OK | MB_ICONASTERISK,1985 HWND_DESKTOP,1986 GetPString(IDS_WARNINGTEXT),1987 "One or more of your files has a full path name that exceeds the OS/2 maximum");2000 if (!fDone) { 2001 fDone = TRUE; 2002 saymsg(MB_OK | MB_ICONASTERISK, 2003 HWND_DESKTOP, 2004 GetPString(IDS_WARNINGTEXT), 2005 "One or more of your files has a full path name that exceeds the OS/2 maximum"); 1988 2006 } 1989 2007 return; 1990 }1991 if (!ad->afalloc || ad->afheadcnt > ad->afalloc - 1) {1992 1993 ALLFILES *temp;1994 1995 temp = xrealloc(ad->afhead, (ad->afalloc + 1000) *1996 sizeof(ALLFILES), pszSrcFile, __LINE__);1997 if (!temp) {1998 ad->stopflag = 1;1999 break;2000 }2001 else {2002 ad->afhead = temp;2003 if (ad->stopflag)2004 break;2005 ad->afalloc += 1000;2006 }2007 }2008 ad->afhead[ad->afheadcnt].fullname =2009 xstrdup(filename, pszSrcFile, __LINE__);2010 if (!ad->afhead[ad->afheadcnt].fullname) {2011 ad->stopflag = 1;2012 break;2013 }2014 else {2015 ad->afhead[ad->afheadcnt].filename =2016 ad->afhead[ad->afheadcnt].fullname + (enddir - filename);2017 ad->afhead[ad->afheadcnt].cbFile = pffbFile->cbFile;2018 ad->afhead[ad->afheadcnt].date = pffbFile->fdateLastWrite;2019 ad->afhead[ad->afheadcnt].time = pffbFile->ftimeLastWrite;2020 ad->afhead[ad->afheadcnt].attrFile = (USHORT) pffbFile->attrFile;2021 ad->afhead[ad->afheadcnt].flags = 0;2022 ad->afheadcnt++;2023 if (ad->longest < pffbFile->cchName)2024 ad->longest = pffbFile->cchName;2025 if (ad->longestw < pffbFile->cchName + (enddir - filename))2026 ad->longestw = pffbFile->cchName + (enddir - filename);2027 }2028 }2029 pffbFile = (PFILEFINDBUF3L)((PBYTE)pffbFile + pffbFile->oNextEntryOffset);2008 } 2009 if (!ad->afalloc || ad->afheadcnt > ad->afalloc - 1) { 2010 2011 ALLFILES *temp; 2012 2013 temp = xrealloc(ad->afhead, (ad->afalloc + 1000) * 2014 sizeof(ALLFILES), pszSrcFile, __LINE__); 2015 if (!temp) { 2016 ad->stopflag = 1; 2017 break; 2018 } 2019 else { 2020 ad->afhead = temp; 2021 if (ad->stopflag) 2022 break; 2023 ad->afalloc += 1000; 2024 } 2025 } 2026 ad->afhead[ad->afheadcnt].fullname = 2027 xstrdup(filename, pszSrcFile, __LINE__); 2028 if (!ad->afhead[ad->afheadcnt].fullname) { 2029 ad->stopflag = 1; 2030 break; 2031 } 2032 else { 2033 ad->afhead[ad->afheadcnt].filename = 2034 ad->afhead[ad->afheadcnt].fullname + (enddir - filename); 2035 ad->afhead[ad->afheadcnt].cbFile = pffbFile->cbFile; 2036 ad->afhead[ad->afheadcnt].date = pffbFile->fdateLastWrite; 2037 ad->afhead[ad->afheadcnt].time = pffbFile->ftimeLastWrite; 2038 ad->afhead[ad->afheadcnt].attrFile = (USHORT) pffbFile->attrFile; 2039 ad->afhead[ad->afheadcnt].flags = 0; 2040 ad->afheadcnt++; 2041 if (ad->longest < pffbFile->cchName) 2042 ad->longest = pffbFile->cchName; 2043 if (ad->longestw < pffbFile->cchName + (enddir - filename)) 2044 ad->longestw = pffbFile->cchName + (enddir - filename); 2045 } 2046 } 2047 pffbFile = (PFILEFINDBUF3L)((PBYTE)pffbFile + pffbFile->oNextEntryOffset); 2030 2048 } // for 2031 2049 if (ad->stopflag) 2032 break;2050 break; 2033 2051 ulFindCnt = ulFindMax; 2034 2052 rc = xDosFindNext(hdir, 2035 pffbArray,2036 sizeof(FILEFINDBUF3L) * ulFindCnt,2037 &ulFindCnt,2038 FIL_STANDARDL);2053 pffbArray, 2054 sizeof(FILEFINDBUF3L) * ulFindCnt, 2055 &ulFindCnt, 2056 FIL_STANDARDL); 2039 2057 } while (!rc); 2040 2058 DosFindClose(hdir); … … 2043 2061 if (rc && rc != ERROR_NO_MORE_FILES) { 2044 2062 Dos_Error(MB_ENTER, rc, HWND_DESKTOP, pszSrcFile, __LINE__, 2045 GetPString(IDS_CANTFINDDIRTEXT), filename);2063 GetPString(IDS_CANTFINDDIRTEXT), filename); 2046 2064 } 2047 2065 … … 2068 2086 hmq2 = WinCreateMsgQueue(hab2, 0); 2069 2087 if (hmq2) { 2070 WinCancelShutdown(hmq2, TRUE);2071 IncrThreadUsage();2072 if (!*ad->szFindPath) {2073 DosError(FERR_DISABLEHARDERR);2074 if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) {2075 for (x = 2; x < 26 && !ad->stopflag; x++) {2076 if ((ulDriveMap & (1 << x)) && ad->abDrvFlags[x]) {2077 *startname = (CHAR) (x + 'A');2078 DoADir(hwnd, startname);2079 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);2080 DosSleep(0); //26 Aug 07 GKY 12081 }2082 }2083 }2084 }2085 else2086 DoADir(hwnd, ad->szFindPath);2087 DosPostEventSem(CompactSem);2088 WinCancelShutdown(hmq2, TRUE); 2089 IncrThreadUsage(); 2090 if (!*ad->szFindPath) { 2091 DosError(FERR_DISABLEHARDERR); 2092 if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) { 2093 for (x = 2; x < 26 && !ad->stopflag; x++) { 2094 if ((ulDriveMap & (1 << x)) && ad->abDrvFlags[x]) { 2095 *startname = (CHAR) (x + 'A'); 2096 DoADir(hwnd, startname); 2097 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 2098 DosSleep(0); //26 Aug 07 GKY 1 2099 } 2100 } 2101 } 2102 } 2103 else 2104 DoADir(hwnd, ad->szFindPath); 2105 DosPostEventSem(CompactSem); 2088 2106 } 2089 2107 } … … 2093 2111 2094 2112 tempa = 2095 xrealloc(ad->afhead, sizeof(ALLFILES) * ad->afheadcnt, pszSrcFile,2096 __LINE__);2113 xrealloc(ad->afhead, sizeof(ALLFILES) * ad->afheadcnt, pszSrcFile, 2114 __LINE__); 2097 2115 if (tempa) { 2098 ad->afhead = tempa;2099 ad->afalloc = ad->afheadcnt;2116 ad->afhead = tempa; 2117 ad->afalloc = ad->afheadcnt; 2100 2118 } 2101 2119 templ = 2102 xrealloc(ad->afindex, sizeof(ALLFILES *) * ad->afheadcnt, pszSrcFile,2103 __LINE__);2120 xrealloc(ad->afindex, sizeof(ALLFILES *) * ad->afheadcnt, pszSrcFile, 2121 __LINE__); 2104 2122 if (templ) 2105 ad->afindex = templ;2123 ad->afindex = templ; 2106 2124 DosPostEventSem(CompactSem); 2107 2125 } … … 2141 2159 DosError(FERR_DISABLEHARDERR); 2142 2160 if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) { 2143 for (x = 2; x < 26 && !ad->stopflag; x++) {2144 if (!(driveflags[x] & (DRIVE_IGNORE | DRIVE_INVALID))) {2145 if (ulDriveMap & (1 << x)) {2146 *startname = (CHAR) (x + 'A');2147 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX,2148 LM_INSERTITEM,2149 MPFROM2SHORT(LIT_END, 0),2150 MPFROMP(startname));2151 if (sSelect >= 0 && ad->abDrvFlags[x])2152 WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, LM_SELECTITEM,2153 MPFROM2SHORT(sSelect, 0), MPFROMLONG(TRUE));2154 }2155 }2156 }2161 for (x = 2; x < 26 && !ad->stopflag; x++) { 2162 if (!(driveflags[x] & (DRIVE_IGNORE | DRIVE_INVALID))) { 2163 if (ulDriveMap & (1 << x)) { 2164 *startname = (CHAR) (x + 'A'); 2165 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, 2166 LM_INSERTITEM, 2167 MPFROM2SHORT(LIT_END, 0), 2168 MPFROMP(startname)); 2169 if (sSelect >= 0 && ad->abDrvFlags[x]) 2170 WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, LM_SELECTITEM, 2171 MPFROM2SHORT(sSelect, 0), MPFROMLONG(TRUE)); 2172 } 2173 } 2174 } 2157 2175 } 2158 2176 } … … 2166 2184 switch (SHORT2FROMMP(mp1)) { 2167 2185 case LN_ENTER: 2168 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID);2169 break;2186 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID); 2187 break; 2170 2188 } 2171 2189 break; … … 2177 2195 case DID_OK: 2178 2196 { 2179 INT x;2180 SHORT sSelect;2181 CHAR filename[3];2182 ALLDATA *ad = WinQueryWindowPtr(hwnd, QWL_USER);2183 2184 memset(ad->abDrvFlags, 0, sizeof(ad->abDrvFlags));2185 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX,2186 LM_QUERYSELECTION,2187 MPFROM2SHORT(LIT_FIRST, 0),2188 MPVOID);2189 while (sSelect >= 0) {2190 *filename = 0;2191 if (WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, LM_QUERYITEMTEXT,2192 MPFROM2SHORT(sSelect, 2),2193 MPFROMP(filename)) && *filename)2194 ad->abDrvFlags[*filename - 'A'] = 1;2195 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX,2196 LM_QUERYSELECTION,2197 MPFROM2SHORT(sSelect, 0),2198 MPVOID);2199 }2200 for (x = 2; x < 26; x++) {2201 if (ad->abDrvFlags[x]) {2202 WinDismissDlg(hwnd, 1);2203 return 0;2204 }2205 }2197 INT x; 2198 SHORT sSelect; 2199 CHAR filename[3]; 2200 ALLDATA *ad = WinQueryWindowPtr(hwnd, QWL_USER); 2201 2202 memset(ad->abDrvFlags, 0, sizeof(ad->abDrvFlags)); 2203 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, 2204 LM_QUERYSELECTION, 2205 MPFROM2SHORT(LIT_FIRST, 0), 2206 MPVOID); 2207 while (sSelect >= 0) { 2208 *filename = 0; 2209 if (WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, LM_QUERYITEMTEXT, 2210 MPFROM2SHORT(sSelect, 2), 2211 MPFROMP(filename)) && *filename) 2212 ad->abDrvFlags[*filename - 'A'] = 1; 2213 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, 2214 LM_QUERYSELECTION, 2215 MPFROM2SHORT(sSelect, 0), 2216 MPVOID); 2217 } 2218 for (x = 2; x < 26; x++) { 2219 if (ad->abDrvFlags[x]) { 2220 WinDismissDlg(hwnd, 1); 2221 return 0; 2222 } 2223 } 2206 2224 } 2207 2225 WinDismissDlg(hwnd, 0); … … 2210 2228 case IDM_HELP: 2211 2229 if (hwndHelp) 2212 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,2213 MPFROM2SHORT(HELP_DRVSWND, 0), MPFROMSHORT(HM_RESOURCEID));2230 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 2231 MPFROM2SHORT(HELP_DRVSWND, 0), MPFROMSHORT(HM_RESOURCEID)); 2214 2232 break; 2215 2233 … … 2233 2251 sizel.cx = sizel.cy = 0; 2234 2252 hps = GpiCreatePS(WinQueryAnchorBlock(hwnd), WinOpenWindowDC(hwnd), 2235 (PSIZEL) & sizel, PU_PELS | GPIF_DEFAULT | GPIT_MICRO |2236 GPIA_ASSOC);2253 (PSIZEL) & sizel, PU_PELS | GPIF_DEFAULT | GPIT_MICRO | 2254 GPIA_ASSOC); 2237 2255 if (hps) { 2238 2256 GpiSetCp(hps, (ULONG) ad->fattrs.usCodePage); … … 2246 2264 ad->lMaxHeight = ad->lMaxDescender + ad->lMaxAscender; 2247 2265 if (ad->fattrs.usCodePage != FontMetrics.usCodePage) { 2248 ad->fattrs.usCodePage = FontMetrics.usCodePage;2249 Codepage = ad->fattrs.usCodePage;2250 PrfWriteProfileData(fmprof,2251 appname,2252 "Seeall.Codepage",2253 &ad->fattrs.usCodePage, sizeof(USHORT));2266 ad->fattrs.usCodePage = FontMetrics.usCodePage; 2267 Codepage = ad->fattrs.usCodePage; 2268 PrfWriteProfileData(fmprof, 2269 appname, 2270 "Seeall.Codepage", 2271 &ad->fattrs.usCodePage, sizeof(USHORT)); 2254 2272 } 2255 2273 else if (ad->fattrs.usCodePage) { 2256 2274 2257 HMQ hmq;2258 ULONG cps[50], len, x;2259 2260 if (!DosQueryCp(sizeof(cps), cps, &len)) {2261 for (x = 0; x < len / sizeof(ULONG); x++) {2262 if (cps[x] == (ULONG) ad->fattrs.usCodePage) {2263 hmq = WinQueryWindowULong(hwnd, QWL_HMQ);2264 WinSetCp(hmq, ad->fattrs.usCodePage);2265 break;2266 }2267 }2268 }2269 DosSetProcessCp((ULONG) ad->fattrs.usCodePage);2275 HMQ hmq; 2276 ULONG cps[50], len, x; 2277 2278 if (!DosQueryCp(sizeof(cps), cps, &len)) { 2279 for (x = 0; x < len / sizeof(ULONG); x++) { 2280 if (cps[x] == (ULONG) ad->fattrs.usCodePage) { 2281 hmq = WinQueryWindowULong(hwnd, QWL_HMQ); 2282 WinSetCp(hmq, ad->fattrs.usCodePage); 2283 break; 2284 } 2285 } 2286 } 2287 DosSetProcessCp((ULONG) ad->fattrs.usCodePage); 2270 2288 } 2271 2289 GpiSetBackMix(hps, BM_OVERPAINT); … … 2276 2294 2277 2295 static VOID PaintLine(HWND hwnd, HPS hps, ULONG whichfile, ULONG topfile, 2278 RECTL * Rectl)2296 RECTL * Rectl) 2279 2297 { 2280 2298 ALLDATA *ad = WinQueryWindowPtr(hwnd, QWL_USER); … … 2285 2303 y = (ad->invertsort) ? (ad->afindexcnt - 1) - whichfile : whichfile; 2286 2304 ptl.y = (Rectl->yTop - 2287 (ad->lMaxHeight * (((whichfile + 1) - topfile) + 1)));2305 (ad->lMaxHeight * (((whichfile + 1) - topfile) + 1))); 2288 2306 ptl.x = ad->horzscroll; 2289 2307 if (ptl.y < Rectl->yBottom || ptl.y > Rectl->yTop || y > ad->afindexcnt) … … 2293 2311 GpiSetColor(hps, standardcolors[Colors[COLORS_SELECTEDNORMALFORE]]); 2294 2312 GpiSetBackColor(hps, (whichfile == ad->cursored - 1) ? 2295 standardcolors[Colors[COLORS_CURSOREDSELECTEDBACK]] :2296 standardcolors[Colors[COLORS_SELECTEDBACK]]);2313 standardcolors[Colors[COLORS_CURSOREDSELECTEDBACK]] : 2314 standardcolors[Colors[COLORS_SELECTEDBACK]]); 2297 2315 } 2298 2316 else { 2299 2317 GpiSetColor(hps, 2300 ((ad->afindex[y]->attrFile & (FILE_SYSTEM | FILE_HIDDEN)) !=2301 0) ? standardcolors[Colors[COLORS_SYSTEMFORE]] : ((ad->2302 afindex2303 [y]->2304 attrFile &2305 FILE_READONLY)2306 !=2307 0) ?2308 standardcolors[Colors[COLORS_READONLYFORE]] :2309 standardcolors[Colors[COLORS_NORMALFORE]]);2318 ((ad->afindex[y]->attrFile & (FILE_SYSTEM | FILE_HIDDEN)) != 2319 0) ? standardcolors[Colors[COLORS_SYSTEMFORE]] : ((ad-> 2320 afindex 2321 [y]-> 2322 attrFile & 2323 FILE_READONLY) 2324 != 2325 0) ? 2326 standardcolors[Colors[COLORS_READONLYFORE]] : 2327 standardcolors[Colors[COLORS_NORMALFORE]]); 2310 2328 GpiSetBackColor(hps, 2311 (whichfile ==2312 ad->cursored -2313 1) ? standardcolors[Colors[COLORS_CURSOREDNORMALBACK]] :2314 standardcolors[Colors[COLORS_NORMALBACK]]);2329 (whichfile == 2330 ad->cursored - 2331 1) ? standardcolors[Colors[COLORS_CURSOREDNORMALBACK]] : 2332 standardcolors[Colors[COLORS_NORMALBACK]]); 2315 2333 } 2316 2334 CommaFmtULL(szCmmaFmtFileSize, 2317 2335 sizeof(szCmmaFmtFileSize), ad->afindex[y]->cbFile, ' '); 2318 2336 len = sprintf(szBuff, 2319 "%c%-*.*s %-12s %c%c%c%c%c %04u/%02u/%02u %02u:%02u:%02u ",2320 whichfile == ad->cursored - 1 ? '>' : ' ',2321 ad->fullnames ? ad->longestw : ad->longest,2322 ad->fullnames ? ad->longestw : ad->longest,2323 ad->fullnames ? ad->afindex[y]->fullname :2324 ad->afindex[y]->filename,2325 szCmmaFmtFileSize,2326 "-A"[((ad->afindex[y]->attrFile & FILE_ARCHIVED) != 0)],2327 "-R"[((ad->afindex[y]->attrFile & FILE_READONLY) != 0)],2328 "-H"[((ad->afindex[y]->attrFile & FILE_HIDDEN) != 0)],2329 "-S"[((ad->afindex[y]->attrFile & FILE_SYSTEM) != 0)],2330 "-D"[((ad->afindex[y]->attrFile & FILE_DIRECTORY) != 0)],2331 ad->afindex[y]->date.year + 1980,2332 ad->afindex[y]->date.month,2333 ad->afindex[y]->date.day,2334 ad->afindex[y]->time.hours,2335 ad->afindex[y]->time.minutes,2336 ad->afindex[y]->time.twosecs * 2);2337 "%c%-*.*s %-12s %c%c%c%c%c %04u/%02u/%02u %02u:%02u:%02u ", 2338 whichfile == ad->cursored - 1 ? '>' : ' ', 2339 ad->fullnames ? ad->longestw : ad->longest, 2340 ad->fullnames ? ad->longestw : ad->longest, 2341 ad->fullnames ? ad->afindex[y]->fullname : 2342 ad->afindex[y]->filename, 2343 szCmmaFmtFileSize, 2344 "-A"[((ad->afindex[y]->attrFile & FILE_ARCHIVED) != 0)], 2345 "-R"[((ad->afindex[y]->attrFile & FILE_READONLY) != 0)], 2346 "-H"[((ad->afindex[y]->attrFile & FILE_HIDDEN) != 0)], 2347 "-S"[((ad->afindex[y]->attrFile & FILE_SYSTEM) != 0)], 2348 "-D"[((ad->afindex[y]->attrFile & FILE_DIRECTORY) != 0)], 2349 ad->afindex[y]->date.year + 1980, 2350 ad->afindex[y]->date.month, 2351 ad->afindex[y]->date.day, 2352 ad->afindex[y]->time.hours, 2353 ad->afindex[y]->time.minutes, 2354 ad->afindex[y]->time.twosecs * 2); 2337 2355 GpiCharStringAt(hps, &ptl, len, szBuff); 2338 2356 GpiQueryCurrentPosition(hps, &ptl); … … 2340 2358 ad->maxx = ptl.x + abs(ad->horzscroll); 2341 2359 WinSendMsg(ad->hhscroll, SBM_SETTHUMBSIZE, 2342 MPFROM2SHORT((SHORT) Rectl->xRight, (SHORT) ad->maxx), MPVOID);2360 MPFROM2SHORT((SHORT) Rectl->xRight, (SHORT) ad->maxx), MPVOID); 2343 2361 } 2344 2362 } … … 2364 2382 hps = WinGetPS(WinQueryWindow(hwnd, QW_PARENT)); 2365 2383 if (hps) { 2366 WinQueryWindowPos(hwnd, &swp);2367 ptl.x = swp.x - 1;2368 ptl.y = swp.y + swp.cy + 2;2369 GpiMove(hps, &ptl);2370 GpiSetColor(hps, CLR_WHITE);2371 ptl.x = swp.x + swp.cx;2372 GpiLine(hps, &ptl);2373 WinReleasePS(hps);2384 WinQueryWindowPos(hwnd, &swp); 2385 ptl.x = swp.x - 1; 2386 ptl.y = swp.y + swp.cy + 2; 2387 GpiMove(hps, &ptl); 2388 GpiSetColor(hps, CLR_WHITE); 2389 ptl.x = swp.x + swp.cx; 2390 GpiLine(hps, &ptl); 2391 WinReleasePS(hps); 2374 2392 } 2375 2393 } … … 2378 2396 case UM_FOCUSME: 2379 2397 WinSetFocus(HWND_DESKTOP, WinWindowFromID(WinQueryWindow(hwnd, QW_PARENT), 2380 FID_CLIENT));2398 FID_CLIENT)); 2381 2399 return 0; 2382 2400 } … … 2415 2433 2416 2434 if (mr && mp2) { 2417 prectl = (PRECTL) mp1;2418 prectl->yBottom += 22;2419 prectl->yTop -= 24;2435 prectl = (PRECTL) mp1; 2436 prectl->yBottom += 22; 2437 prectl->yTop -= 24; 2420 2438 } 2421 2439 return mr; … … 2436 2454 pswp = (PSWP) mp1; 2437 2455 { 2438 SHORT x;2439 2440 for (x = 0; x < sCount; x++) {2441 if (WinQueryWindowUShort(pswp->hwnd, QWS_ID) == FID_CLIENT) {2442 pswpClient = pswp;2443 break;2444 }2445 pswp++;2446 }2456 SHORT x; 2457 2458 for (x = 0; x < sCount; x++) { 2459 if (WinQueryWindowUShort(pswp->hwnd, QWS_ID) == FID_CLIENT) { 2460 pswpClient = pswp; 2461 break; 2462 } 2463 pswp++; 2464 } 2447 2465 } 2448 2466 pswpNew = (PSWP) mp1 + sCount; … … 2490 2508 pAD->hwndFrame = hwndFrame; 2491 2509 pAD->mask.attrFile = FILE_READONLY | FILE_HIDDEN | 2492 FILE_SYSTEM | FILE_ARCHIVED;2510 FILE_SYSTEM | FILE_ARCHIVED; 2493 2511 pAD->mask.fNoDirs = TRUE; 2494 2512 *(pAD->mask.prompt) = 0; … … 2497 2515 if (Firsttime) { 2498 2516 2499 ULONG size;2500 2501 size = sizeof(USHORT);2502 PrfQueryProfileData(fmprof,2503 appname,2504 "Seeall.Codepage", (PVOID) & Codepage, &size);2505 size = sizeof(BOOL);2506 PrfQueryProfileData(fmprof,2507 appname,2508 "Seeall.Fullnames", (PVOID) & Fullnames, &size);2509 size = sizeof(USHORT);2510 PrfQueryProfileData(fmprof,2511 appname,2512 "Seeall.Sort", (PVOID) & SortType, &size);2513 size = sizeof(BOOL);2514 PrfQueryProfileData(fmprof,2515 appname,2516 "Seeall.SortReverse",2517 (PVOID) & SortReverse, &size);2518 memset(&Fattrs, 0, sizeof(Fattrs));2519 size = sizeof(Fattrs);2520 Fattrs.usRecordLength = sizeof(Fattrs);2521 Fattrs.lMaxBaselineExt = 16;2522 Fattrs.lAveCharWidth = 8;2523 Fattrs.usCodePage = Codepage;2524 strcpy(Fattrs.szFacename, GetPString(IDS_SYSMONOTEXT));2525 PrfQueryProfileData(fmprof,2526 appname,2527 "Seeall.Fattrs", (PVOID) & Fattrs, &size);2528 size = sizeof(LONG) * COLORS_MAX;2529 PrfQueryProfileData(fmprof,2530 appname, "Seeall.Colors", (PVOID) Colors, &size);2531 Firsttime = FALSE;2517 ULONG size; 2518 2519 size = sizeof(USHORT); 2520 PrfQueryProfileData(fmprof, 2521 appname, 2522 "Seeall.Codepage", (PVOID) & Codepage, &size); 2523 size = sizeof(BOOL); 2524 PrfQueryProfileData(fmprof, 2525 appname, 2526 "Seeall.Fullnames", (PVOID) & Fullnames, &size); 2527 size = sizeof(USHORT); 2528 PrfQueryProfileData(fmprof, 2529 appname, 2530 "Seeall.Sort", (PVOID) & SortType, &size); 2531 size = sizeof(BOOL); 2532 PrfQueryProfileData(fmprof, 2533 appname, 2534 "Seeall.SortReverse", 2535 (PVOID) & SortReverse, &size); 2536 memset(&Fattrs, 0, sizeof(Fattrs)); 2537 size = sizeof(Fattrs); 2538 Fattrs.usRecordLength = sizeof(Fattrs); 2539 Fattrs.lMaxBaselineExt = 16; 2540 Fattrs.lAveCharWidth = 8; 2541 Fattrs.usCodePage = Codepage; 2542 strcpy(Fattrs.szFacename, GetPString(IDS_SYSMONOTEXT)); 2543 PrfQueryProfileData(fmprof, 2544 appname, 2545 "Seeall.Fattrs", (PVOID) & Fattrs, &size); 2546 size = sizeof(LONG) * COLORS_MAX; 2547 PrfQueryProfileData(fmprof, 2548 appname, "Seeall.Colors", (PVOID) Colors, &size); 2549 Firsttime = FALSE; 2532 2550 } 2533 2551 switch (SortType) { 2534 2552 case IDM_SORTEASIZE: 2535 pAD->pfnCompare = (PFNSORT) NULL;2536 break;2553 pAD->pfnCompare = (PFNSORT) NULL; 2554 break; 2537 2555 case IDM_SORTNAME: 2538 pAD->pfnCompare = comparefullnames;2539 break;2556 pAD->pfnCompare = comparefullnames; 2557 break; 2540 2558 case IDM_SORTFILENAME: 2541 pAD->pfnCompare = comparenames;2542 break;2559 pAD->pfnCompare = comparenames; 2560 break; 2543 2561 case IDM_SORTSIZE: 2544 pAD->pfnCompare = comparesizes;2545 break;2562 pAD->pfnCompare = comparesizes; 2563 break; 2546 2564 case IDM_SORTLWDATE: 2547 pAD->pfnCompare = comparedates;2548 break;2565 pAD->pfnCompare = comparedates; 2566 break; 2549 2567 case IDM_SORTFIRST: 2550 pAD->pfnCompare = compareexts;2551 break;2568 pAD->pfnCompare = compareexts; 2569 break; 2552 2570 } 2553 2571 pAD->invertsort = SortReverse; … … 2560 2578 pAD->hwndMenu = WinWindowFromID(hwndFrame, FID_MENU); 2561 2579 SetConditionalCascade(pAD->hwndMenu, IDM_DELETESUBMENU, 2562 (fDefaultDeletePerm) ?2563 IDM_PERMDELETE : IDM_DELETE);2580 (fDefaultDeletePerm) ? 2581 IDM_PERMDELETE : IDM_DELETE); 2564 2582 SetConditionalCascade(pAD->hwndMenu, IDM_MOVEMENU, IDM_MOVE); 2565 2583 SetConditionalCascade(pAD->hwndMenu, IDM_COPYMENU, IDM_COPY); … … 2567 2585 SetConditionalCascade(pAD->hwndMenu, IDM_OBJECTSUBMENU, IDM_SHADOW); 2568 2586 if (fWorkPlace) { 2569 WinSendMsg(pAD->hwndMenu, MM_DELETEITEM,2570 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID);2571 WinSendMsg(pAD->hwndMenu, MM_DELETEITEM,2572 MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID);2587 WinSendMsg(pAD->hwndMenu, MM_DELETEITEM, 2588 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID); 2589 WinSendMsg(pAD->hwndMenu, MM_DELETEITEM, 2590 MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID); 2573 2591 } 2574 2592 pAD->hwndClient = hwnd; … … 2578 2596 pAD->multiplier = 1; 2579 2597 if (_beginthread(MakeSeeObjWinThread, NULL, 122880, (PVOID) pAD) == -1) 2580 Runtime_Error(pszSrcFile, __LINE__,2581 GetPString(IDS_COULDNTSTARTTHREADTEXT));2598 Runtime_Error(pszSrcFile, __LINE__, 2599 GetPString(IDS_COULDNTSTARTTHREADTEXT)); 2582 2600 else { 2583 if (!DosCreateMutexSem(NULL, &pAD->hmtxScan, 0, FALSE)) {2584 pAD->hwndStatus = WinCreateWindow(hwndFrame,2585 WC_SEESTATUS,2586 NullStr,2587 WS_VISIBLE | SS_TEXT |2588 DT_LEFT | DT_VCENTER,2589 0,2590 0,2591 0,2592 0,2593 hwndFrame,2594 HWND_TOP,2595 SEEALL_STATUS, NULL, NULL);2596 if (!pAD->hwndStatus)2597 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__,2598 IDS_WINCREATEWINDOW);2599 else {2600 PFNWP oldproc;2601 2602 oldproc = WinSubclassWindow(hwndFrame, SeeFrameWndProc);2603 WinSetWindowPtr(hwndFrame, QWL_USER, (PVOID) oldproc);2604 }2605 break;2606 }2601 if (!DosCreateMutexSem(NULL, &pAD->hmtxScan, 0, FALSE)) { 2602 pAD->hwndStatus = WinCreateWindow(hwndFrame, 2603 WC_SEESTATUS, 2604 NullStr, 2605 WS_VISIBLE | SS_TEXT | 2606 DT_LEFT | DT_VCENTER, 2607 0, 2608 0, 2609 0, 2610 0, 2611 hwndFrame, 2612 HWND_TOP, 2613 SEEALL_STATUS, NULL, NULL); 2614 if (!pAD->hwndStatus) 2615 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, 2616 IDS_WINCREATEWINDOW); 2617 else { 2618 PFNWP oldproc; 2619 2620 oldproc = WinSubclassWindow(hwndFrame, SeeFrameWndProc); 2621 WinSetWindowPtr(hwndFrame, QWL_USER, (PVOID) oldproc); 2622 } 2623 break; 2624 } 2607 2625 } 2608 2626 } … … 2614 2632 if (pAD) { 2615 2633 if (mp1 && *((CHAR *)mp1)) 2616 strcpy(pAD->szFindPath, (CHAR *)mp1);2634 strcpy(pAD->szFindPath, (CHAR *)mp1); 2617 2635 else { 2618 if (!WinDlgBox(HWND_DESKTOP, hwnd, AFDrvsWndProc,2619 FM3ModHandle, DRVS_FRAME, (PVOID) pAD)) {2620 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID);2621 return 0;2622 }2636 if (!WinDlgBox(HWND_DESKTOP, hwnd, AFDrvsWndProc, 2637 FM3ModHandle, DRVS_FRAME, (PVOID) pAD)) { 2638 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID); 2639 return 0; 2640 } 2623 2641 } 2624 2642 if (_beginthread(FindAllThread, NULL, 524288, (PVOID) hwnd) == -1) { 2625 Runtime_Error(pszSrcFile, __LINE__,2626 GetPString(IDS_COULDNTSTARTTHREADTEXT));2627 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID);2643 Runtime_Error(pszSrcFile, __LINE__, 2644 GetPString(IDS_COULDNTSTARTTHREADTEXT)); 2645 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID); 2628 2646 } 2629 2647 else { 2630 DosSleep(50);//05 Aug 07 GKY 1002631 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);2632 PostMsg(hwnd, UM_SETUP2, MPVOID, MPVOID);2648 DosSleep(50);//05 Aug 07 GKY 100 2649 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID); 2650 PostMsg(hwnd, UM_SETUP2, MPVOID, MPVOID); 2633 2651 } 2634 2652 } … … 2644 2662 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN); 2645 2663 if (!rc) { 2646 WinSetPointer(HWND_DESKTOP, hptrBusy);2647 if (UpdateList(hwnd, mp1)) {2648 FreeList(mp1);2649 RemoveDeleted(hwnd);2650 ReSort(hwnd);2651 WinInvalidateRect(hwnd, NULL, FALSE);2652 }2653 DosReleaseMutexSem(pAD->hmtxScan);2654 WinSetPointer(HWND_DESKTOP, hptrArrow);2664 WinSetPointer(HWND_DESKTOP, hptrBusy); 2665 if (UpdateList(hwnd, mp1)) { 2666 FreeList(mp1); 2667 RemoveDeleted(hwnd); 2668 ReSort(hwnd); 2669 WinInvalidateRect(hwnd, NULL, FALSE); 2670 } 2671 DosReleaseMutexSem(pAD->hmtxScan); 2672 WinSetPointer(HWND_DESKTOP, hptrArrow); 2655 2673 } 2656 2674 } … … 2667 2685 strcpy(s, GetPString(IDS_SEEALLTITLETEXT)); 2668 2686 if (!*pAD->szFindPath) { 2669 DosError(FERR_DISABLEHARDERR);2670 if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) {2671 for (x = 2; x < 26 && !pAD->stopflag; x++) {2672 if ((ulDriveMap & (1 << x)) && pAD->abDrvFlags[x]) {2673 sprintf(&s[strlen(s)], "%s%c:", (once) ? ", " : " (", x + 'A');2674 once = TRUE;2675 }2676 }2677 if (once)2678 strcat(s, ")");2679 }2687 DosError(FERR_DISABLEHARDERR); 2688 if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) { 2689 for (x = 2; x < 26 && !pAD->stopflag; x++) { 2690 if ((ulDriveMap & (1 << x)) && pAD->abDrvFlags[x]) { 2691 sprintf(&s[strlen(s)], "%s%c:", (once) ? ", " : " (", x + 'A'); 2692 once = TRUE; 2693 } 2694 } 2695 if (once) 2696 strcat(s, ")"); 2697 } 2680 2698 } 2681 2699 else { 2682 strcat(s, " (");2683 strcat(s, pAD->szFindPath);2684 strcat(s, ")");2700 strcat(s, " ("); 2701 strcat(s, pAD->szFindPath); 2702 strcat(s, ")"); 2685 2703 } 2686 2704 WinSetWindowText(WinQueryWindow(hwnd, QW_PARENT), s); … … 2693 2711 pAD->multiplier = pAD->afindexcnt / 32767; 2694 2712 if (pAD->multiplier * 32767 != pAD->afindexcnt) 2695 pAD->multiplier++;2713 pAD->multiplier++; 2696 2714 if (!pAD->multiplier) 2697 pAD->multiplier++;2715 pAD->multiplier++; 2698 2716 { 2699 RECTL Rectl;2700 ULONG numlines;2701 2702 WinQueryWindowRect(hwnd, &Rectl);2703 numlines = NumLines(&Rectl, pAD);2704 if (numlines) {2705 WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE,2706 MPFROM2SHORT((SHORT) Rectl.xRight, (SHORT) pAD->maxx),2707 MPVOID);2708 WinSendMsg(pAD->hvscroll, SBM_SETTHUMBSIZE,2709 MPFROM2SHORT((SHORT) numlines,2710 (SHORT) min(pAD->afindexcnt, 32767)),2711 MPFROM2SHORT(1, pAD->afindexcnt + 1));2712 WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,2713 MPFROMSHORT((SHORT) abs(pAD->horzscroll)),2714 MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));2715 WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,2716 MPFROMSHORT((SHORT) (pAD->topfile / pAD->multiplier)),2717 MPFROM2SHORT(1,2718 (SHORT) (pAD->afindexcnt / pAD->multiplier) -2719 (numlines - 1)));2720 if (pAD->afindexcnt - pAD->topfile < numlines) {2721 pAD->topfile = ((pAD->afindexcnt - pAD->topfile) - numlines);2722 WinInvalidateRect(hwnd, NULL, FALSE);2723 }2724 }2717 RECTL Rectl; 2718 ULONG numlines; 2719 2720 WinQueryWindowRect(hwnd, &Rectl); 2721 numlines = NumLines(&Rectl, pAD); 2722 if (numlines) { 2723 WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE, 2724 MPFROM2SHORT((SHORT) Rectl.xRight, (SHORT) pAD->maxx), 2725 MPVOID); 2726 WinSendMsg(pAD->hvscroll, SBM_SETTHUMBSIZE, 2727 MPFROM2SHORT((SHORT) numlines, 2728 (SHORT) min(pAD->afindexcnt, 32767)), 2729 MPFROM2SHORT(1, pAD->afindexcnt + 1)); 2730 WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR, 2731 MPFROMSHORT((SHORT) abs(pAD->horzscroll)), 2732 MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight))); 2733 WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR, 2734 MPFROMSHORT((SHORT) (pAD->topfile / pAD->multiplier)), 2735 MPFROM2SHORT(1, 2736 (SHORT) (pAD->afindexcnt / pAD->multiplier) - 2737 (numlines - 1))); 2738 if (pAD->afindexcnt - pAD->topfile < numlines) { 2739 pAD->topfile = ((pAD->afindexcnt - pAD->topfile) - numlines); 2740 WinInvalidateRect(hwnd, NULL, FALSE); 2741 } 2742 } 2725 2743 } 2726 2744 } … … 2739 2757 if (pAD && !pAD->stopflag) { 2740 2758 if (DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 2741 CHAR s[CCHMAXPATH + 80], tm[34];2742 2743 if (mp1) {2744 strcpy(s, GetPString(IDS_SORTINGTEXT));2745 if (pAD->afindexcnt) {2746 commafmt(tm, sizeof(tm), pAD->afindexcnt);2747 strcat(s, tm);2748 }2749 }2750 else {2751 strcpy(s, GetPString(IDS_WORKINGTEXT));2752 if (pAD->afheadcnt) {2753 commafmt(tm, sizeof(tm), pAD->afheadcnt);2754 strcat(s, tm);2755 }2756 }2757 if (mp2) {2758 strcat(s, " ");2759 strcat(s, (CHAR *)mp2);2760 }2761 WinSetWindowText(pAD->hwndStatus, s);2759 CHAR s[CCHMAXPATH + 80], tm[34]; 2760 2761 if (mp1) { 2762 strcpy(s, GetPString(IDS_SORTINGTEXT)); 2763 if (pAD->afindexcnt) { 2764 commafmt(tm, sizeof(tm), pAD->afindexcnt); 2765 strcat(s, tm); 2766 } 2767 } 2768 else { 2769 strcpy(s, GetPString(IDS_WORKINGTEXT)); 2770 if (pAD->afheadcnt) { 2771 commafmt(tm, sizeof(tm), pAD->afheadcnt); 2772 strcat(s, tm); 2773 } 2774 } 2775 if (mp2) { 2776 strcat(s, " "); 2777 strcat(s, (CHAR *)mp2); 2778 } 2779 WinSetWindowText(pAD->hwndStatus, s); 2762 2780 } 2763 2781 else { 2764 CHAR s[(CCHMAXPATH * 2) + 80], tm[34], ts[34], tb[34];2765 ULONG y;2766 2767 if (mp1) {2768 strcpy(s, GetPString(IDS_SORTINGTEXT));2769 if (pAD->afindexcnt) {2770 commafmt(tm, sizeof(tm), pAD->afindexcnt);2771 strcat(s, tm);2772 }2773 if (mp2) {2774 strcat(s, " ");2775 strcat(s, (CHAR *)mp2);2776 }2777 }2778 else if (pAD->afindexcnt) {2779 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - (pAD->cursored - 1) :2780 pAD->cursored - 1;2781 commafmt(tm, sizeof(tm), pAD->afindexcnt);2782 commafmt(ts, sizeof(ts), pAD->selected);2783 CommaFmtULL(tb, sizeof(tb), pAD->ullSelectedBytes, ' ');2784 sprintf(s,2785 " %s %s%s%s %s %s (%s) %s %s",2786 tm,2787 GetPString(IDS_FILETEXT),2788 &"s"[pAD->afindexcnt == 1],2789 (*pAD->mask.szMask ||2790 (pAD->mask.attrFile & (~FILE_DIRECTORY)) !=2791 (ALLATTRS & (~FILE_DIRECTORY)) ||2792 pAD->mask.antiattr) ?2793 GetPString(IDS_FILTEREDTEXT) :2794 NullStr,2795 ts,2796 GetPString(IDS_SELECTEDTEXT),2797 tb, GetPString(IDS_CURRTEXT), pAD->afindex[y]->fullname);2798 }2799 else2800 sprintf(s,2801 GetPString(IDS_NOFILESPSTEXT),2802 (*pAD->mask.szMask ||2803 (pAD->mask.attrFile & (~FILE_DIRECTORY)) !=2804 (ALLATTRS & (~FILE_DIRECTORY)) ||2805 pAD->mask.antiattr) ?2806 GetPString(IDS_FILTEREDTEXT) : NullStr);2807 WinSetWindowText(pAD->hwndStatus, s);2808 DosReleaseMutexSem(pAD->hmtxScan);2782 CHAR s[(CCHMAXPATH * 2) + 80], tm[34], ts[34], tb[34]; 2783 ULONG y; 2784 2785 if (mp1) { 2786 strcpy(s, GetPString(IDS_SORTINGTEXT)); 2787 if (pAD->afindexcnt) { 2788 commafmt(tm, sizeof(tm), pAD->afindexcnt); 2789 strcat(s, tm); 2790 } 2791 if (mp2) { 2792 strcat(s, " "); 2793 strcat(s, (CHAR *)mp2); 2794 } 2795 } 2796 else if (pAD->afindexcnt) { 2797 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - (pAD->cursored - 1) : 2798 pAD->cursored - 1; 2799 commafmt(tm, sizeof(tm), pAD->afindexcnt); 2800 commafmt(ts, sizeof(ts), pAD->selected); 2801 CommaFmtULL(tb, sizeof(tb), pAD->ullSelectedBytes, ' '); 2802 sprintf(s, 2803 " %s %s%s%s %s %s (%s) %s %s", 2804 tm, 2805 GetPString(IDS_FILETEXT), 2806 &"s"[pAD->afindexcnt == 1], 2807 (*pAD->mask.szMask || 2808 (pAD->mask.attrFile & (~FILE_DIRECTORY)) != 2809 (ALLATTRS & (~FILE_DIRECTORY)) || 2810 pAD->mask.antiattr) ? 2811 GetPString(IDS_FILTEREDTEXT) : 2812 NullStr, 2813 ts, 2814 GetPString(IDS_SELECTEDTEXT), 2815 tb, GetPString(IDS_CURRTEXT), pAD->afindex[y]->fullname); 2816 } 2817 else 2818 sprintf(s, 2819 GetPString(IDS_NOFILESPSTEXT), 2820 (*pAD->mask.szMask || 2821 (pAD->mask.attrFile & (~FILE_DIRECTORY)) != 2822 (ALLATTRS & (~FILE_DIRECTORY)) || 2823 pAD->mask.antiattr) ? 2824 GetPString(IDS_FILTEREDTEXT) : NullStr); 2825 WinSetWindowText(pAD->hwndStatus, s); 2826 DosReleaseMutexSem(pAD->hmtxScan); 2809 2827 } 2810 2828 } … … 2832 2850 numlines = NumLines(&rcl, pAD); 2833 2851 if (numlines) { 2834 if (SHORT1FROMMP(mp1) & KC_VIRTUALKEY) {2835 pAD->lasttime = 0;2836 *pAD->szCommonName = 0;2837 switch (SHORT2FROMMP(mp2)) {2838 case VK_DELETE:2839 if ((shiftstate & KC_CTRL) == KC_CTRL)2840 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_PERMDELETE, 0),2841 MPVOID);2842 else if ((shiftstate & KC_SHIFT) == KC_SHIFT)2843 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_SAVETOCLIP, 0),2844 MPVOID);2845 else2846 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_DELETE, 0), MPVOID);2847 break;2848 case VK_LEFT:2849 WinSendMsg(hwnd, WM_HSCROLL, MPFROM2SHORT(FID_HORZSCROLL, 0),2850 MPFROM2SHORT(0, SB_LINELEFT));2851 break;2852 case VK_RIGHT:2853 WinSendMsg(hwnd, WM_HSCROLL, MPFROM2SHORT(FID_HORZSCROLL, 0),2854 MPFROM2SHORT(0, SB_LINERIGHT));2855 break;2856 case VK_PAGEUP:2857 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),2858 MPFROM2SHORT(0, SB_PAGEUP));2859 break;2860 case VK_PAGEDOWN:2861 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),2862 MPFROM2SHORT(0, SB_PAGEDOWN));2863 break;2864 case VK_UP:2865 if (pAD->cursored > 1) {2866 if (shiftstate & KC_SHIFT)2867 WinSendMsg(hwnd, WM_BUTTON1CLICK,2868 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,2869 ((rcl.yTop - (pAD->lMaxHeight *2870 ((pAD->cursored) -2871 pAD->topfile))) -2872 pAD->lMaxDescender) - 1),2873 MPFROM2SHORT(TRUE, 0));2874 pAD->cursored--;2875 if (pAD->cursored < pAD->topfile) {2876 PaintLine(hwnd, pAD->hps, pAD->cursored, pAD->topfile, &rcl);2877 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),2878 MPFROM2SHORT(0, SB_LINEUP));2879 }2880 else {2881 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,2882 &rcl);2883 PaintLine(hwnd, pAD->hps, pAD->cursored, pAD->topfile, &rcl);2884 }2885 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);2886 }2887 break;2888 case VK_DOWN:2889 if (pAD->cursored < pAD->afindexcnt2890 && pAD->cursored < pAD->topfile + numlines) {2891 if (shiftstate & KC_SHIFT)2892 WinSendMsg(hwnd, WM_BUTTON1CLICK,2893 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,2894 ((rcl.yTop - (pAD->lMaxHeight *2895 ((pAD->cursored) -2896 pAD->topfile))) -2897 pAD->lMaxDescender) - 1),2898 MPFROM2SHORT(TRUE, 0));2899 pAD->cursored++;2900 if (pAD->cursored >= pAD->topfile + numlines) {2901 PaintLine(hwnd, pAD->hps, pAD->cursored - 2, pAD->topfile,2902 &rcl);2903 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),2904 MPFROM2SHORT(0, SB_LINEDOWN));2905 }2906 else {2907 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,2908 &rcl);2909 PaintLine(hwnd, pAD->hps, pAD->cursored - 2, pAD->topfile,2910 &rcl);2911 }2912 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);2913 }2914 break;2915 case VK_END:2916 if ((shiftstate & KC_CTRL) ||2917 pAD->cursored == (pAD->topfile - 1) + numlines) {2918 pAD->cursored = pAD->afindexcnt;2919 pAD->topfile = (pAD->afindexcnt + 1) - numlines;2920 if (pAD->topfile > pAD->afindexcnt)2921 pAD->topfile = 1;2922 WinInvalidateRect(hwnd, NULL, FALSE);2923 }2924 else {2925 pAD->cursored = (pAD->topfile - 1) + numlines;2926 if (pAD->cursored > pAD->afindexcnt)2927 pAD->cursored = pAD->afindexcnt;2928 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,2929 &rcl);2930 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &rcl);2931 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);2932 }2933 break;2934 case VK_HOME:2935 if ((shiftstate & KC_CTRL) || pAD->cursored == pAD->topfile) {2936 pAD->topfile = 1;2937 pAD->cursored = 1;2938 WinInvalidateRect(hwnd, NULL, FALSE);2939 }2940 else {2941 pAD->cursored = pAD->topfile;2942 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,2943 &rcl);2944 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &rcl);2945 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);2946 }2947 break;2948 case VK_SPACE:2949 WinSendMsg(hwnd, WM_BUTTON1CLICK,2950 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,2951 ((rcl.yTop - (pAD->lMaxHeight *2952 ((pAD->cursored) -2953 pAD->topfile))) -2954 pAD->lMaxDescender) - 1),2955 MPFROM2SHORT(TRUE, 0));2956 break;2957 case VK_NEWLINE:2958 case VK_ENTER:2959 WinSendMsg(hwnd, WM_BUTTON1DBLCLK,2960 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,2961 ((rcl.yTop - (pAD->lMaxHeight *2962 ((pAD->cursored) -2963 pAD->topfile))) -2964 pAD->lMaxDescender) - 1), MPFROM2SHORT(0,2965 0));2966 break;2967 }2968 }2969 else if (SHORT1FROMMP(mp1) & KC_CHAR) {2970 switch (SHORT1FROMMP(mp2)) {2971 case '\x1b':2972 case '\r':2973 case '\n':2974 WinSendMsg(hwnd, WM_BUTTON1DBLCLK,2975 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,2976 (rcl.yTop - (pAD->lMaxHeight *2977 ((pAD->cursored) -2978 pAD->topfile))) - 1),2979 MPFROM2SHORT(0, 0));2980 pAD->lasttime = 0;2981 *pAD->szCommonName = 0;2982 break;2983 default:2984 thistime = WinQueryMsgTime(WinQueryAnchorBlock(hwnd));2985 if (thistime > pAD->lasttime + 1000)2986 *pAD->szCommonName = 0;2987 pAD->lasttime = thistime;2988 KbdRetry:2989 len = strlen(pAD->szCommonName);2990 if (len >= CCHMAXPATH - 1) {2991 *pAD->szCommonName = 0;2992 len = 0;2993 }2994 pAD->szCommonName[len] = toupper(SHORT1FROMMP(mp2));2995 pAD->szCommonName[len + 1] = 0;2996 for (x = pAD->cursored - (len > 0); x < pAD->afindexcnt; x++) {2997 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;2998 if (pAD->fullnames) {2999 if (!strnicmp(pAD->afindex[y]->fullname, pAD->szCommonName,3000 len + 1)) {3001 found = TRUE;3002 break;3003 }3004 }3005 else {3006 if (!strnicmp(pAD->afindex[y]->filename, pAD->szCommonName,3007 len + 1)) {3008 found = TRUE;3009 break;3010 }3011 }3012 }3013 if (!found) {3014 for (x = 0; x < pAD->cursored - (len > 0); x++) {3015 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;3016 if (pAD->fullnames) {3017 if (!strnicmp(pAD->afindex[y]->fullname, pAD->szCommonName,3018 len + 1)) {3019 found = TRUE;3020 break;3021 }3022 }3023 else {3024 if (!strnicmp(pAD->afindex[y]->filename, pAD->szCommonName,3025 len + 1)) {3026 found = TRUE;3027 break;3028 }3029 }3030 }3031 }3032 if (found) {3033 if (x + 1 != pAD->cursored) {3034 pAD->cursored = x + 1;3035 if (pAD->cursored >= pAD->topfile &&3036 pAD->cursored < pAD->topfile + numlines &&3037 wascursored != pAD->cursored) {3038 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,3039 &rcl);3040 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile,3041 &rcl);3042 }3043 else {3044 if (pAD->cursored < numlines)3045 pAD->topfile = 1;3046 else if (pAD->cursored >3047 (pAD->afindexcnt + 1) - (numlines / 2))3048 pAD->topfile = (pAD->afindexcnt + 1) - numlines;3049 else3050 pAD->topfile = pAD->cursored - (numlines / 2);3051 WinInvalidateRect(hwnd, NULL, FALSE);3052 }3053 }3054 }3055 else {3056 *pAD->szCommonName = 0;3057 pAD->lasttime = 0;3058 if (len)// retry as first letter if no match3059 goto KbdRetry;3060 }3061 break;3062 }3063 }2852 if (SHORT1FROMMP(mp1) & KC_VIRTUALKEY) { 2853 pAD->lasttime = 0; 2854 *pAD->szCommonName = 0; 2855 switch (SHORT2FROMMP(mp2)) { 2856 case VK_DELETE: 2857 if ((shiftstate & KC_CTRL) == KC_CTRL) 2858 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_PERMDELETE, 0), 2859 MPVOID); 2860 else if ((shiftstate & KC_SHIFT) == KC_SHIFT) 2861 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_SAVETOCLIP, 0), 2862 MPVOID); 2863 else 2864 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_DELETE, 0), MPVOID); 2865 break; 2866 case VK_LEFT: 2867 WinSendMsg(hwnd, WM_HSCROLL, MPFROM2SHORT(FID_HORZSCROLL, 0), 2868 MPFROM2SHORT(0, SB_LINELEFT)); 2869 break; 2870 case VK_RIGHT: 2871 WinSendMsg(hwnd, WM_HSCROLL, MPFROM2SHORT(FID_HORZSCROLL, 0), 2872 MPFROM2SHORT(0, SB_LINERIGHT)); 2873 break; 2874 case VK_PAGEUP: 2875 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0), 2876 MPFROM2SHORT(0, SB_PAGEUP)); 2877 break; 2878 case VK_PAGEDOWN: 2879 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0), 2880 MPFROM2SHORT(0, SB_PAGEDOWN)); 2881 break; 2882 case VK_UP: 2883 if (pAD->cursored > 1) { 2884 if (shiftstate & KC_SHIFT) 2885 WinSendMsg(hwnd, WM_BUTTON1CLICK, 2886 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2, 2887 ((rcl.yTop - (pAD->lMaxHeight * 2888 ((pAD->cursored) - 2889 pAD->topfile))) - 2890 pAD->lMaxDescender) - 1), 2891 MPFROM2SHORT(TRUE, 0)); 2892 pAD->cursored--; 2893 if (pAD->cursored < pAD->topfile) { 2894 PaintLine(hwnd, pAD->hps, pAD->cursored, pAD->topfile, &rcl); 2895 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0), 2896 MPFROM2SHORT(0, SB_LINEUP)); 2897 } 2898 else { 2899 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile, 2900 &rcl); 2901 PaintLine(hwnd, pAD->hps, pAD->cursored, pAD->topfile, &rcl); 2902 } 2903 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 2904 } 2905 break; 2906 case VK_DOWN: 2907 if (pAD->cursored < pAD->afindexcnt 2908 && pAD->cursored < pAD->topfile + numlines) { 2909 if (shiftstate & KC_SHIFT) 2910 WinSendMsg(hwnd, WM_BUTTON1CLICK, 2911 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2, 2912 ((rcl.yTop - (pAD->lMaxHeight * 2913 ((pAD->cursored) - 2914 pAD->topfile))) - 2915 pAD->lMaxDescender) - 1), 2916 MPFROM2SHORT(TRUE, 0)); 2917 pAD->cursored++; 2918 if (pAD->cursored >= pAD->topfile + numlines) { 2919 PaintLine(hwnd, pAD->hps, pAD->cursored - 2, pAD->topfile, 2920 &rcl); 2921 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0), 2922 MPFROM2SHORT(0, SB_LINEDOWN)); 2923 } 2924 else { 2925 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile, 2926 &rcl); 2927 PaintLine(hwnd, pAD->hps, pAD->cursored - 2, pAD->topfile, 2928 &rcl); 2929 } 2930 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 2931 } 2932 break; 2933 case VK_END: 2934 if ((shiftstate & KC_CTRL) || 2935 pAD->cursored == (pAD->topfile - 1) + numlines) { 2936 pAD->cursored = pAD->afindexcnt; 2937 pAD->topfile = (pAD->afindexcnt + 1) - numlines; 2938 if (pAD->topfile > pAD->afindexcnt) 2939 pAD->topfile = 1; 2940 WinInvalidateRect(hwnd, NULL, FALSE); 2941 } 2942 else { 2943 pAD->cursored = (pAD->topfile - 1) + numlines; 2944 if (pAD->cursored > pAD->afindexcnt) 2945 pAD->cursored = pAD->afindexcnt; 2946 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile, 2947 &rcl); 2948 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &rcl); 2949 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 2950 } 2951 break; 2952 case VK_HOME: 2953 if ((shiftstate & KC_CTRL) || pAD->cursored == pAD->topfile) { 2954 pAD->topfile = 1; 2955 pAD->cursored = 1; 2956 WinInvalidateRect(hwnd, NULL, FALSE); 2957 } 2958 else { 2959 pAD->cursored = pAD->topfile; 2960 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile, 2961 &rcl); 2962 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &rcl); 2963 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 2964 } 2965 break; 2966 case VK_SPACE: 2967 WinSendMsg(hwnd, WM_BUTTON1CLICK, 2968 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2, 2969 ((rcl.yTop - (pAD->lMaxHeight * 2970 ((pAD->cursored) - 2971 pAD->topfile))) - 2972 pAD->lMaxDescender) - 1), 2973 MPFROM2SHORT(TRUE, 0)); 2974 break; 2975 case VK_NEWLINE: 2976 case VK_ENTER: 2977 WinSendMsg(hwnd, WM_BUTTON1DBLCLK, 2978 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2, 2979 ((rcl.yTop - (pAD->lMaxHeight * 2980 ((pAD->cursored) - 2981 pAD->topfile))) - 2982 pAD->lMaxDescender) - 1), MPFROM2SHORT(0, 2983 0)); 2984 break; 2985 } 2986 } 2987 else if (SHORT1FROMMP(mp1) & KC_CHAR) { 2988 switch (SHORT1FROMMP(mp2)) { 2989 case '\x1b': 2990 case '\r': 2991 case '\n': 2992 WinSendMsg(hwnd, WM_BUTTON1DBLCLK, 2993 MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2, 2994 (rcl.yTop - (pAD->lMaxHeight * 2995 ((pAD->cursored) - 2996 pAD->topfile))) - 1), 2997 MPFROM2SHORT(0, 0)); 2998 pAD->lasttime = 0; 2999 *pAD->szCommonName = 0; 3000 break; 3001 default: 3002 thistime = WinQueryMsgTime(WinQueryAnchorBlock(hwnd)); 3003 if (thistime > pAD->lasttime + 1000) 3004 *pAD->szCommonName = 0; 3005 pAD->lasttime = thistime; 3006 KbdRetry: 3007 len = strlen(pAD->szCommonName); 3008 if (len >= CCHMAXPATH - 1) { 3009 *pAD->szCommonName = 0; 3010 len = 0; 3011 } 3012 pAD->szCommonName[len] = toupper(SHORT1FROMMP(mp2)); 3013 pAD->szCommonName[len + 1] = 0; 3014 for (x = pAD->cursored - (len > 0); x < pAD->afindexcnt; x++) { 3015 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x; 3016 if (pAD->fullnames) { 3017 if (!strnicmp(pAD->afindex[y]->fullname, pAD->szCommonName, 3018 len + 1)) { 3019 found = TRUE; 3020 break; 3021 } 3022 } 3023 else { 3024 if (!strnicmp(pAD->afindex[y]->filename, pAD->szCommonName, 3025 len + 1)) { 3026 found = TRUE; 3027 break; 3028 } 3029 } 3030 } 3031 if (!found) { 3032 for (x = 0; x < pAD->cursored - (len > 0); x++) { 3033 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x; 3034 if (pAD->fullnames) { 3035 if (!strnicmp(pAD->afindex[y]->fullname, pAD->szCommonName, 3036 len + 1)) { 3037 found = TRUE; 3038 break; 3039 } 3040 } 3041 else { 3042 if (!strnicmp(pAD->afindex[y]->filename, pAD->szCommonName, 3043 len + 1)) { 3044 found = TRUE; 3045 break; 3046 } 3047 } 3048 } 3049 } 3050 if (found) { 3051 if (x + 1 != pAD->cursored) { 3052 pAD->cursored = x + 1; 3053 if (pAD->cursored >= pAD->topfile && 3054 pAD->cursored < pAD->topfile + numlines && 3055 wascursored != pAD->cursored) { 3056 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile, 3057 &rcl); 3058 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, 3059 &rcl); 3060 } 3061 else { 3062 if (pAD->cursored < numlines) 3063 pAD->topfile = 1; 3064 else if (pAD->cursored > 3065 (pAD->afindexcnt + 1) - (numlines / 2)) 3066 pAD->topfile = (pAD->afindexcnt + 1) - numlines; 3067 else 3068 pAD->topfile = pAD->cursored - (numlines / 2); 3069 WinInvalidateRect(hwnd, NULL, FALSE); 3070 } 3071 } 3072 } 3073 else { 3074 *pAD->szCommonName = 0; 3075 pAD->lasttime = 0; 3076 if (len) // retry as first letter if no match 3077 goto KbdRetry; 3078 } 3079 break; 3080 } 3081 } 3064 3082 } 3065 3083 } … … 3078 3096 list = BuildAList(hwnd); 3079 3097 if (!list) 3080 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);3098 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 3081 3099 else { 3082 WinSetWindowText(pAD->hwndStatus, GetPString(IDS_DRAGGINGFILESTEXT));3083 DragList(hwnd, (HWND) 0, list, TRUE);3084 FreeList(list);3085 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);3100 WinSetWindowText(pAD->hwndStatus, GetPString(IDS_DRAGGINGFILESTEXT)); 3101 DragList(hwnd, (HWND) 0, list, TRUE); 3102 FreeList(list); 3103 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 3086 3104 } 3087 3105 } … … 3090 3108 case WM_BUTTON1MOTIONSTART: 3091 3109 if (pAD && !pAD->stopflag && 3092 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {3110 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 3093 3111 pAD->mousecaptured = TRUE; 3094 3112 pAD->lastselected = (ULONG) - 1; … … 3113 3131 numlines = NumLines(&Rectl, pAD); 3114 3132 if (numlines) { 3115 pts.x = SHORT1FROMMP(mp1);3116 pts.y = SHORT2FROMMP(mp1);3117 if (pts.y < 0) {3118 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),3119 MPFROM2SHORT(0, SB_LINEDOWN));3120 pts.y = 1;3121 outofwindow = TRUE;3122 }3123 else if (pts.y > Rectl.yTop - Rectl.yBottom) {3124 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),3125 MPFROM2SHORT(0, SB_LINEUP));3126 pts.y = (Rectl.yTop - Rectl.yBottom) - 1;3127 outofwindow = TRUE;3128 }3129 whichfile = ((Rectl.yTop - Rectl.yBottom) -3130 ((LONG) pts.y + pAD->lMaxDescender)) / pAD->lMaxHeight;3131 if (whichfile > numlines - 1)3132 whichfile = numlines - 1;3133 whichfile += (pAD->topfile - 1);3134 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - whichfile : whichfile;3135 if (y < pAD->afindexcnt && pAD->lastselected != whichfile) {3136 if (pAD->lastselected != (ULONG) - 1) {3137 inc = (pAD->lastselected < whichfile) ? 1 : -1;3138 for (x = pAD->lastselected + inc;3139 x != whichfile && x < pAD->afindexcnt;3140 (pAD->lastselected < whichfile) ? x++ : x--) {3141 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;3142 if (pAD->afindex[y]->flags & AF_SELECTED) {3143 pAD->afindex[y]->flags &= ~AF_SELECTED;3144 pAD->selected--;3145 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;3146 }3147 else {3148 pAD->afindex[y]->flags |= AF_SELECTED;3149 pAD->selected++;3150 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;3151 }3152 PaintLine(hwnd, pAD->hps, x, pAD->topfile, &Rectl);3153 }3154 }3155 WinSendMsg(hwnd, WM_BUTTON1CLICK, MPFROM2SHORT(pts.x, pts.y),3156 MPFROM2SHORT(TRUE, 0));3157 }3133 pts.x = SHORT1FROMMP(mp1); 3134 pts.y = SHORT2FROMMP(mp1); 3135 if (pts.y < 0) { 3136 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0), 3137 MPFROM2SHORT(0, SB_LINEDOWN)); 3138 pts.y = 1; 3139 outofwindow = TRUE; 3140 } 3141 else if (pts.y > Rectl.yTop - Rectl.yBottom) { 3142 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0), 3143 MPFROM2SHORT(0, SB_LINEUP)); 3144 pts.y = (Rectl.yTop - Rectl.yBottom) - 1; 3145 outofwindow = TRUE; 3146 } 3147 whichfile = ((Rectl.yTop - Rectl.yBottom) - 3148 ((LONG) pts.y + pAD->lMaxDescender)) / pAD->lMaxHeight; 3149 if (whichfile > numlines - 1) 3150 whichfile = numlines - 1; 3151 whichfile += (pAD->topfile - 1); 3152 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - whichfile : whichfile; 3153 if (y < pAD->afindexcnt && pAD->lastselected != whichfile) { 3154 if (pAD->lastselected != (ULONG) - 1) { 3155 inc = (pAD->lastselected < whichfile) ? 1 : -1; 3156 for (x = pAD->lastselected + inc; 3157 x != whichfile && x < pAD->afindexcnt; 3158 (pAD->lastselected < whichfile) ? x++ : x--) { 3159 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x; 3160 if (pAD->afindex[y]->flags & AF_SELECTED) { 3161 pAD->afindex[y]->flags &= ~AF_SELECTED; 3162 pAD->selected--; 3163 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile; 3164 } 3165 else { 3166 pAD->afindex[y]->flags |= AF_SELECTED; 3167 pAD->selected++; 3168 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile; 3169 } 3170 PaintLine(hwnd, pAD->hps, x, pAD->topfile, &Rectl); 3171 } 3172 } 3173 WinSendMsg(hwnd, WM_BUTTON1CLICK, MPFROM2SHORT(pts.x, pts.y), 3174 MPFROM2SHORT(TRUE, 0)); 3175 } 3158 3176 } 3159 3177 if (outofwindow) { 3160 3178 3161 POINTL ptl;3162 3163 WinQueryPointerPos(HWND_DESKTOP, &ptl);3164 WinMapWindowPoints(HWND_DESKTOP, hwnd, &ptl, 1);3165 if ((SHORT) ptl.y == (SHORT) SHORT2FROMMP(mp1) &&3166 (SHORT) ptl.x == (SHORT) SHORT1FROMMP(mp1) &&3167 ((SHORT) ptl.y < 0 || ptl.y > (Rectl.yTop - Rectl.yBottom))) {3168 PostMsg(hwnd, UM_MOUSEMOVE, mp1, MPVOID);3169 DosSleep(1);3170 }3179 POINTL ptl; 3180 3181 WinQueryPointerPos(HWND_DESKTOP, &ptl); 3182 WinMapWindowPoints(HWND_DESKTOP, hwnd, &ptl, 1); 3183 if ((SHORT) ptl.y == (SHORT) SHORT2FROMMP(mp1) && 3184 (SHORT) ptl.x == (SHORT) SHORT1FROMMP(mp1) && 3185 ((SHORT) ptl.y < 0 || ptl.y > (Rectl.yTop - Rectl.yBottom))) { 3186 PostMsg(hwnd, UM_MOUSEMOVE, mp1, MPVOID); 3187 DosSleep(1); 3188 } 3171 3189 } 3172 3190 } … … 3183 3201 WinMapWindowPoints(HWND_DESKTOP, hwnd, &ptl, 1); 3184 3202 if ((SHORT) ptl.y == (SHORT) SHORT2FROMMP(mp1) && 3185 (SHORT) ptl.x == (SHORT) SHORT1FROMMP(mp1) &&3186 ((SHORT) ptl.y < 0 || ptl.y > (Rectl.yTop - Rectl.yBottom))) {3187 DosSleep(1);3188 PostMsg(hwnd, WM_MOUSEMOVE, mp1, MPFROM2SHORT(TRUE, 0));3203 (SHORT) ptl.x == (SHORT) SHORT1FROMMP(mp1) && 3204 ((SHORT) ptl.y < 0 || ptl.y > (Rectl.yTop - Rectl.yBottom))) { 3205 DosSleep(1); 3206 PostMsg(hwnd, WM_MOUSEMOVE, mp1, MPFROM2SHORT(TRUE, 0)); 3189 3207 } 3190 3208 } … … 3205 3223 shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL)); 3206 3224 if (pAD && !pAD->stopflag && 3207 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {3225 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 3208 3226 3209 3227 ULONG numlines, whichfile, y, wascursored; … … 3212 3230 3213 3231 if (pAD->afindexcnt) { 3214 WinQueryWindowRect(hwnd, &Rectl);3215 numlines = NumLines(&Rectl, pAD);3216 if (numlines) {3217 pts.x = SHORT1FROMMP(mp1);3218 pts.y = SHORT2FROMMP(mp1);3219 whichfile = ((Rectl.yTop - Rectl.yBottom) -3220 ((LONG) pts.y + pAD->lMaxDescender)) / pAD->lMaxHeight;3221 if (whichfile > numlines - 1)3222 whichfile = numlines - 1;3223 whichfile += (pAD->topfile - 1);3224 if (whichfile + 1 > pAD->afindexcnt)3225 break;3226 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - whichfile : whichfile;3227 wascursored = pAD->cursored;3228 pAD->cursored = whichfile + 1;3229 if (pAD->cursored != wascursored)3230 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &Rectl);3231 if (y < pAD->afindexcnt) {3232 if (msg == WM_BUTTON1CLICK || fUnHilite) {3233 if (pAD->afindex[y]->flags & AF_SELECTED) {3234 pAD->afindex[y]->flags &= ~AF_SELECTED;3235 pAD->selected--;3236 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;3237 }3238 else {3239 pAD->afindex[y]->flags |= AF_SELECTED;3240 pAD->selected++;3241 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;3242 }3243 PaintLine(hwnd, pAD->hps, whichfile, pAD->topfile, &Rectl);3244 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);3245 }3246 }3247 if (msg == WM_BUTTON1CLICK) {3248 if (pAD->lastselected != (ULONG) - 1) {3249 if (whichfile > pAD->lastselected)3250 pAD->lastdirection = 1;3251 else3252 pAD->lastdirection = 2;3253 }3254 else3255 pAD->lastdirection = 0;3256 pAD->lastselected = whichfile;3257 }3258 else3259 DefaultViewKeys(hwnd, pAD->hwndFrame, HWND_DESKTOP, NULL,3260 pAD->afindex[y]->fullname);3261 }3232 WinQueryWindowRect(hwnd, &Rectl); 3233 numlines = NumLines(&Rectl, pAD); 3234 if (numlines) { 3235 pts.x = SHORT1FROMMP(mp1); 3236 pts.y = SHORT2FROMMP(mp1); 3237 whichfile = ((Rectl.yTop - Rectl.yBottom) - 3238 ((LONG) pts.y + pAD->lMaxDescender)) / pAD->lMaxHeight; 3239 if (whichfile > numlines - 1) 3240 whichfile = numlines - 1; 3241 whichfile += (pAD->topfile - 1); 3242 if (whichfile + 1 > pAD->afindexcnt) 3243 break; 3244 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - whichfile : whichfile; 3245 wascursored = pAD->cursored; 3246 pAD->cursored = whichfile + 1; 3247 if (pAD->cursored != wascursored) 3248 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &Rectl); 3249 if (y < pAD->afindexcnt) { 3250 if (msg == WM_BUTTON1CLICK || fUnHilite) { 3251 if (pAD->afindex[y]->flags & AF_SELECTED) { 3252 pAD->afindex[y]->flags &= ~AF_SELECTED; 3253 pAD->selected--; 3254 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile; 3255 } 3256 else { 3257 pAD->afindex[y]->flags |= AF_SELECTED; 3258 pAD->selected++; 3259 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile; 3260 } 3261 PaintLine(hwnd, pAD->hps, whichfile, pAD->topfile, &Rectl); 3262 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 3263 } 3264 } 3265 if (msg == WM_BUTTON1CLICK) { 3266 if (pAD->lastselected != (ULONG) - 1) { 3267 if (whichfile > pAD->lastselected) 3268 pAD->lastdirection = 1; 3269 else 3270 pAD->lastdirection = 2; 3271 } 3272 else 3273 pAD->lastdirection = 0; 3274 pAD->lastselected = whichfile; 3275 } 3276 else 3277 DefaultViewKeys(hwnd, pAD->hwndFrame, HWND_DESKTOP, NULL, 3278 pAD->afindex[y]->fullname); 3279 } 3262 3280 } 3263 3281 DosReleaseMutexSem(pAD->hmtxScan); … … 3275 3293 if (pAD) { 3276 3294 if (!pAD->hwndPopup) { 3277 pAD->hwndPopup =3278 WinLoadMenu(HWND_DESKTOP, FM3ModHandle, SEEALL_POPUP);3295 pAD->hwndPopup = 3296 WinLoadMenu(HWND_DESKTOP, FM3ModHandle, SEEALL_POPUP); 3279 3297 if (pAD->hwndPopup) { 3280 WinSetPresParam(pAD->hwndPopup, PP_FONTNAMESIZE,3281 (ULONG) strlen(GetPString(IDS_8HELVTEXT)) + 1,3282 (PVOID) GetPString(IDS_8HELVTEXT));3283 SetConditionalCascade(pAD->hwndPopup,3284 IDM_DELETESUBMENU,3285 (fDefaultDeletePerm) ?3286 IDM_PERMDELETE : IDM_DELETE);3287 SetConditionalCascade(pAD->hwndPopup, IDM_MOVEMENU, IDM_MOVE);3288 SetConditionalCascade(pAD->hwndPopup, IDM_COPYMENU, IDM_COPY);3289 SetConditionalCascade(pAD->hwndPopup, IDM_OPENSUBMENU,3290 IDM_OPENDEFAULT);3291 SetConditionalCascade(pAD->hwndMenu, IDM_OBJECTSUBMENU, IDM_SHADOW);3292 if (fWorkPlace) {3293 WinSendMsg(pAD->hwndPopup, MM_DELETEITEM,3294 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID);3295 WinSendMsg(pAD->hwndPopup, MM_DELETEITEM,3296 MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID);3297 }3298 }3298 WinSetPresParam(pAD->hwndPopup, PP_FONTNAMESIZE, 3299 (ULONG) strlen(GetPString(IDS_8HELVTEXT)) + 1, 3300 (PVOID) GetPString(IDS_8HELVTEXT)); 3301 SetConditionalCascade(pAD->hwndPopup, 3302 IDM_DELETESUBMENU, 3303 (fDefaultDeletePerm) ? 3304 IDM_PERMDELETE : IDM_DELETE); 3305 SetConditionalCascade(pAD->hwndPopup, IDM_MOVEMENU, IDM_MOVE); 3306 SetConditionalCascade(pAD->hwndPopup, IDM_COPYMENU, IDM_COPY); 3307 SetConditionalCascade(pAD->hwndPopup, IDM_OPENSUBMENU, 3308 IDM_OPENDEFAULT); 3309 SetConditionalCascade(pAD->hwndMenu, IDM_OBJECTSUBMENU, IDM_SHADOW); 3310 if (fWorkPlace) { 3311 WinSendMsg(pAD->hwndPopup, MM_DELETEITEM, 3312 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID); 3313 WinSendMsg(pAD->hwndPopup, MM_DELETEITEM, 3314 MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID); 3315 } 3316 } 3299 3317 } 3300 3318 if (pAD->hwndPopup) { 3301 3319 3302 APIRET rc;3303 3304 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);3305 WinEnableMenuItem(pAD->hwndPopup, IDM_EAS, (rc == 0 &&3306 pAD->selected != 0));3307 WinEnableMenuItem(pAD->hwndPopup, IDM_UUDECODE, (rc == 0 &&3308 pAD->selected != 0));3309 WinEnableMenuItem(pAD->hwndPopup, IDM_EXTRACT, (rc == 0 &&3310 pAD->selected != 0));3311 WinEnableMenuItem(pAD->hwndPopup, IDM_ARCHIVE, (rc == 0 &&3312 pAD->selected != 0));3313 WinEnableMenuItem(pAD->hwndPopup, IDM_MOVEMENU, (rc == 0 &&3314 pAD->selected != 0));3315 WinEnableMenuItem(pAD->hwndPopup, IDM_COPYMENU, (rc == 0 &&3316 pAD->selected != 0));3317 WinEnableMenuItem(pAD->hwndPopup, IDM_RENAME, (rc == 0 &&3318 pAD->selected != 0));3319 WinEnableMenuItem(pAD->hwndPopup, IDM_PRINT, (rc == 0 &&3320 pAD->selected != 0));3321 WinEnableMenuItem(pAD->hwndPopup, IDM_SUBJECT, (rc == 0 &&3322 pAD->selected != 0));3323 WinEnableMenuItem(pAD->hwndPopup, IDM_OPENSUBMENU, (rc == 0 &&3324 pAD->selected !=3325 0));3326 WinEnableMenuItem(pAD->hwndPopup, IDM_OBJECTSUBMENU,3327 (rc == 0 && pAD->selected != 0));3328 WinEnableMenuItem(pAD->hwndPopup, IDM_DELETESUBMENU,3329 (rc == 0 && pAD->selected != 0));3330 WinEnableMenuItem(pAD->hwndPopup, IDM_INFO,3331 (rc == 0 && pAD->selected != 0));3332 WinEnableMenuItem(pAD->hwndPopup, IDM_ATTRS,3333 (rc == 0 && pAD->selected != 0));3334 WinEnableMenuItem(pAD->hwndPopup, IDM_COLLECT,3335 (rc == 0 && pAD->selected != 0));3336 WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOCLIP,3320 APIRET rc; 3321 3322 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN); 3323 WinEnableMenuItem(pAD->hwndPopup, IDM_EAS, (rc == 0 && 3324 pAD->selected != 0)); 3325 WinEnableMenuItem(pAD->hwndPopup, IDM_UUDECODE, (rc == 0 && 3326 pAD->selected != 0)); 3327 WinEnableMenuItem(pAD->hwndPopup, IDM_EXTRACT, (rc == 0 && 3328 pAD->selected != 0)); 3329 WinEnableMenuItem(pAD->hwndPopup, IDM_ARCHIVE, (rc == 0 && 3330 pAD->selected != 0)); 3331 WinEnableMenuItem(pAD->hwndPopup, IDM_MOVEMENU, (rc == 0 && 3332 pAD->selected != 0)); 3333 WinEnableMenuItem(pAD->hwndPopup, IDM_COPYMENU, (rc == 0 && 3334 pAD->selected != 0)); 3335 WinEnableMenuItem(pAD->hwndPopup, IDM_RENAME, (rc == 0 && 3336 pAD->selected != 0)); 3337 WinEnableMenuItem(pAD->hwndPopup, IDM_PRINT, (rc == 0 && 3338 pAD->selected != 0)); 3339 WinEnableMenuItem(pAD->hwndPopup, IDM_SUBJECT, (rc == 0 && 3340 pAD->selected != 0)); 3341 WinEnableMenuItem(pAD->hwndPopup, IDM_OPENSUBMENU, (rc == 0 && 3342 pAD->selected != 3343 0)); 3344 WinEnableMenuItem(pAD->hwndPopup, IDM_OBJECTSUBMENU, 3345 (rc == 0 && pAD->selected != 0)); 3346 WinEnableMenuItem(pAD->hwndPopup, IDM_DELETESUBMENU, 3347 (rc == 0 && pAD->selected != 0)); 3348 WinEnableMenuItem(pAD->hwndPopup, IDM_INFO, 3349 (rc == 0 && pAD->selected != 0)); 3350 WinEnableMenuItem(pAD->hwndPopup, IDM_ATTRS, 3351 (rc == 0 && pAD->selected != 0)); 3352 WinEnableMenuItem(pAD->hwndPopup, IDM_COLLECT, 3353 (rc == 0 && pAD->selected != 0)); 3354 WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOCLIP, 3337 3355 (rc == 0 && pAD->selected != 0)); 3338 3356 WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOCLIPFILENAME, 3339 (rc == 0 && pAD->selected != 0));3340 WinEnableMenuItem(pAD->hwndPopup, IDM_APPENDTOCLIP,3357 (rc == 0 && pAD->selected != 0)); 3358 WinEnableMenuItem(pAD->hwndPopup, IDM_APPENDTOCLIP, 3341 3359 (rc == 0 && pAD->selected != 0)); 3342 3360 WinEnableMenuItem(pAD->hwndPopup, IDM_APPENDTOCLIPFILENAME, 3343 (rc == 0 && pAD->selected != 0));3344 WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOLIST,3345 (rc == 0 && pAD->selected != 0));3346 WinEnableMenuItem(pAD->hwndPopup, IDM_REMOVE,3347 (rc == 0 && pAD->selected != 0));3348 WinEnableMenuItem(pAD->hwndPopup, IDM_HIDEALL,3349 (rc == 0 && pAD->selected != 0));3350 WinEnableMenuItem(pAD->hwndPopup, IDM_SELECTALL,3351 (rc == 0 && pAD->afindexcnt != 0));3352 WinEnableMenuItem(pAD->hwndPopup, IDM_SELECTMASK,3353 (rc == 0 && pAD->afindexcnt != 0));3354 WinEnableMenuItem(pAD->hwndPopup, IDM_DESELECTALL,3355 (rc == 0 && pAD->afindexcnt != 0));3356 WinEnableMenuItem(pAD->hwndPopup, IDM_DESELECTMASK,3357 (rc == 0 && pAD->afindexcnt != 0));3358 WinEnableMenuItem(pAD->hwndPopup, IDM_INVERT,3359 (rc == 0 && pAD->afindexcnt != 0));3360 WinEnableMenuItem(pAD->hwndPopup, IDM_FILTER,3361 (rc == 0 && pAD->afheadcnt != 0));3362 if (!rc)3363 DosReleaseMutexSem(pAD->hmtxScan);3364 if (WinPopupMenu(hwnd, hwnd, pAD->hwndPopup, SHORT1FROMMP(mp1),3365 SHORT2FROMMP(mp1), 0,3366 PU_HCONSTRAIN | PU_VCONSTRAIN |3367 PU_KEYBOARD | PU_MOUSEBUTTON1))3368 CenterOverWindow(pAD->hwndPopup);3361 (rc == 0 && pAD->selected != 0)); 3362 WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOLIST, 3363 (rc == 0 && pAD->selected != 0)); 3364 WinEnableMenuItem(pAD->hwndPopup, IDM_REMOVE, 3365 (rc == 0 && pAD->selected != 0)); 3366 WinEnableMenuItem(pAD->hwndPopup, IDM_HIDEALL, 3367 (rc == 0 && pAD->selected != 0)); 3368 WinEnableMenuItem(pAD->hwndPopup, IDM_SELECTALL, 3369 (rc == 0 && pAD->afindexcnt != 0)); 3370 WinEnableMenuItem(pAD->hwndPopup, IDM_SELECTMASK, 3371 (rc == 0 && pAD->afindexcnt != 0)); 3372 WinEnableMenuItem(pAD->hwndPopup, IDM_DESELECTALL, 3373 (rc == 0 && pAD->afindexcnt != 0)); 3374 WinEnableMenuItem(pAD->hwndPopup, IDM_DESELECTMASK, 3375 (rc == 0 && pAD->afindexcnt != 0)); 3376 WinEnableMenuItem(pAD->hwndPopup, IDM_INVERT, 3377 (rc == 0 && pAD->afindexcnt != 0)); 3378 WinEnableMenuItem(pAD->hwndPopup, IDM_FILTER, 3379 (rc == 0 && pAD->afheadcnt != 0)); 3380 if (!rc) 3381 DosReleaseMutexSem(pAD->hmtxScan); 3382 if (WinPopupMenu(hwnd, hwnd, pAD->hwndPopup, SHORT1FROMMP(mp1), 3383 SHORT2FROMMP(mp1), 0, 3384 PU_HCONSTRAIN | PU_VCONSTRAIN | 3385 PU_KEYBOARD | PU_MOUSEBUTTON1)) 3386 CenterOverWindow(pAD->hwndPopup); 3369 3387 } 3370 3388 } … … 3378 3396 pAD->multiplier = 1; 3379 3397 if (!pAD->afindexcnt) { 3380 DosBeep(250, 50);3381 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);3398 DosBeep(250, 50); 3399 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 3382 3400 } 3383 3401 else { 3384 DosBeep(1000, 25);3385 WinInvalidateRect(hwnd, NULL, FALSE);3386 PostMsg(hwnd, UM_SETUP3, MPVOID, MPVOID);3402 DosBeep(1000, 25); 3403 WinInvalidateRect(hwnd, NULL, FALSE); 3404 PostMsg(hwnd, UM_SETUP3, MPVOID, MPVOID); 3387 3405 } 3388 3406 WinSetWindowPos(WinQueryWindow(hwnd, QW_PARENT), HWND_TOP, 0, 0, 0, 0, 3389 SWP_SHOW | SWP_RESTORE | SWP_ACTIVATE | SWP_ZORDER);3407 SWP_SHOW | SWP_RESTORE | SWP_ACTIVATE | SWP_ZORDER); 3390 3408 } 3391 3409 return 0; … … 3393 3411 case WM_ERASEBACKGROUND: 3394 3412 WinFillRect((HPS) mp1, (PRECTL) mp2, 3395 standardcolors[Colors[COLORS_NORMALBACK]]);3413 standardcolors[Colors[COLORS_NORMALBACK]]); 3396 3414 return 0; 3397 3415 … … 3411 3429 WinFillRect(hpsp, &Rectl, standardcolors[Colors[COLORS_NORMALBACK]]); 3412 3430 if (!pAD->stopflag && 3413 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {3414 WinQueryWindowRect(hwnd, &Rectl);3415 numlines = NumLines(&Rectl, pAD);3416 if (pAD->afindexcnt && numlines) {3417 if (pAD->topfile > (pAD->afindexcnt + 1) - numlines)3418 pAD->topfile = (pAD->afindexcnt + 1) - numlines;3419 if (pAD->topfile > pAD->afindexcnt)3420 pAD->topfile = 1;3421 if (!pAD->topfile)3422 pAD->topfile = 1;3423 if (pAD->cursored < pAD->topfile)3424 pAD->cursored = pAD->topfile;3425 else if (pAD->cursored > (pAD->topfile + numlines) - 1)3426 pAD->cursored = (pAD->topfile + numlines) - 1;3427 if (pAD->cursored > pAD->afindexcnt)3428 pAD->cursored = pAD->afindexcnt;3429 }3430 else3431 pAD->topfile = pAD->cursored = 1;3432 if (numlines && pAD->afindexcnt) {3433 GpiSetBackMix(hpsp, BM_OVERPAINT);3434 wascursored = TRUE;3435 for (x = pAD->topfile - 1; x < pAD->afindexcnt; x++) {3436 ptl.x = pAD->horzscroll;3437 if (wascursored) {/* reestablish normal colors */3438 GpiSetColor(pAD->hps,3439 standardcolors[Colors[COLORS_NORMALFORE]]);3440 GpiSetBackColor(pAD->hps,3441 standardcolors[Colors[COLORS_NORMALBACK]]);3442 wascursored = inverted = hidsys = reado = FALSE;3443 }3444 if (x == pAD->cursored - 1)3445 wascursored = TRUE;3446 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;3447 ptl.y = (Rectl.yTop -3448 (pAD->lMaxHeight * (((x + 1) - pAD->topfile) + 1)));3449 if (ptl.y - pAD->lMaxDescender <= 0)3450 break;3451 if (pAD->afindex[y]->flags & AF_SELECTED) {3452 if (!inverted) {3453 GpiSetColor(pAD->hps,3454 standardcolors[Colors3455 [COLORS_SELECTEDNORMALFORE]]);3456 GpiSetBackColor(pAD->hps,3457 (wascursored) ?3458 standardcolors[Colors3459 [COLORS_CURSOREDSELECTEDBACK]]3460 :3461 standardcolors[Colors[COLORS_SELECTEDBACK]]);3462 inverted = TRUE;3463 }3464 }3465 else if (inverted ||3466 ((pAD->afindex[y]->attrFile &3467 (FILE_SYSTEM | FILE_HIDDEN)) != 0) != hidsys ||3468 ((pAD->afindex[y]->attrFile & FILE_READONLY) != 0) !=3469 reado) {3470 if (pAD->afindex[y]->attrFile & (FILE_SYSTEM | FILE_HIDDEN)) {3471 GpiSetColor(pAD->hps,3472 standardcolors[Colors[COLORS_SYSTEMFORE]]);3473 hidsys = TRUE;3474 }3475 else if ((pAD->afindex[y]->attrFile & FILE_READONLY) != 0) {3476 GpiSetColor(pAD->hps,3477 standardcolors[Colors[COLORS_READONLYFORE]]);3478 reado = TRUE;3479 }3480 else3481 GpiSetColor(pAD->hps,3482 standardcolors[Colors[COLORS_NORMALFORE]]);3483 GpiSetBackColor(pAD->hps,3484 (wascursored) ?3485 standardcolors[Colors3486 [COLORS_CURSOREDNORMALBACK]] :3487 standardcolors[Colors[COLORS_NORMALBACK]]);3488 inverted = FALSE;3489 }3490 else if (wascursored)3491 GpiSetBackColor(pAD->hps,3492 standardcolors[Colors3493 [COLORS_CURSOREDNORMALBACK]]);3431 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 3432 WinQueryWindowRect(hwnd, &Rectl); 3433 numlines = NumLines(&Rectl, pAD); 3434 if (pAD->afindexcnt && numlines) { 3435 if (pAD->topfile > (pAD->afindexcnt + 1) - numlines) 3436 pAD->topfile = (pAD->afindexcnt + 1) - numlines; 3437 if (pAD->topfile > pAD->afindexcnt) 3438 pAD->topfile = 1; 3439 if (!pAD->topfile) 3440 pAD->topfile = 1; 3441 if (pAD->cursored < pAD->topfile) 3442 pAD->cursored = pAD->topfile; 3443 else if (pAD->cursored > (pAD->topfile + numlines) - 1) 3444 pAD->cursored = (pAD->topfile + numlines) - 1; 3445 if (pAD->cursored > pAD->afindexcnt) 3446 pAD->cursored = pAD->afindexcnt; 3447 } 3448 else 3449 pAD->topfile = pAD->cursored = 1; 3450 if (numlines && pAD->afindexcnt) { 3451 GpiSetBackMix(hpsp, BM_OVERPAINT); 3452 wascursored = TRUE; 3453 for (x = pAD->topfile - 1; x < pAD->afindexcnt; x++) { 3454 ptl.x = pAD->horzscroll; 3455 if (wascursored) { /* reestablish normal colors */ 3456 GpiSetColor(pAD->hps, 3457 standardcolors[Colors[COLORS_NORMALFORE]]); 3458 GpiSetBackColor(pAD->hps, 3459 standardcolors[Colors[COLORS_NORMALBACK]]); 3460 wascursored = inverted = hidsys = reado = FALSE; 3461 } 3462 if (x == pAD->cursored - 1) 3463 wascursored = TRUE; 3464 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x; 3465 ptl.y = (Rectl.yTop - 3466 (pAD->lMaxHeight * (((x + 1) - pAD->topfile) + 1))); 3467 if (ptl.y - pAD->lMaxDescender <= 0) 3468 break; 3469 if (pAD->afindex[y]->flags & AF_SELECTED) { 3470 if (!inverted) { 3471 GpiSetColor(pAD->hps, 3472 standardcolors[Colors 3473 [COLORS_SELECTEDNORMALFORE]]); 3474 GpiSetBackColor(pAD->hps, 3475 (wascursored) ? 3476 standardcolors[Colors 3477 [COLORS_CURSOREDSELECTEDBACK]] 3478 : 3479 standardcolors[Colors[COLORS_SELECTEDBACK]]); 3480 inverted = TRUE; 3481 } 3482 } 3483 else if (inverted || 3484 ((pAD->afindex[y]->attrFile & 3485 (FILE_SYSTEM | FILE_HIDDEN)) != 0) != hidsys || 3486 ((pAD->afindex[y]->attrFile & FILE_READONLY) != 0) != 3487 reado) { 3488 if (pAD->afindex[y]->attrFile & (FILE_SYSTEM | FILE_HIDDEN)) { 3489 GpiSetColor(pAD->hps, 3490 standardcolors[Colors[COLORS_SYSTEMFORE]]); 3491 hidsys = TRUE; 3492 } 3493 else if ((pAD->afindex[y]->attrFile & FILE_READONLY) != 0) { 3494 GpiSetColor(pAD->hps, 3495 standardcolors[Colors[COLORS_READONLYFORE]]); 3496 reado = TRUE; 3497 } 3498 else 3499 GpiSetColor(pAD->hps, 3500 standardcolors[Colors[COLORS_NORMALFORE]]); 3501 GpiSetBackColor(pAD->hps, 3502 (wascursored) ? 3503 standardcolors[Colors 3504 [COLORS_CURSOREDNORMALBACK]] : 3505 standardcolors[Colors[COLORS_NORMALBACK]]); 3506 inverted = FALSE; 3507 } 3508 else if (wascursored) 3509 GpiSetBackColor(pAD->hps, 3510 standardcolors[Colors 3511 [COLORS_CURSOREDNORMALBACK]]); 3494 3512 CommaFmtULL(szCmmaFmtFileSize, 3495 3513 sizeof(szCmmaFmtFileSize), pAD->afindex[y]->cbFile, ' '); 3496 len =3497 sprintf(szBuff,3498 "%c%-*.*s %-12s %c%c%c%c%c %04u/%02u/%02u %02u:%02u:%02u ",3499 wascursored ? '>' : ' ',3500 pAD->fullnames ? pAD->longestw : pAD->longest,3501 pAD->fullnames ? pAD->longestw : pAD->longest,3502 (pAD->fullnames) ? pAD->afindex[y]->fullname : pAD->3503 afindex[y]->filename, szCmmaFmtFileSize,3504 "-A"[((pAD->afindex[y]->attrFile & FILE_ARCHIVED) !=3505 0)],3506 "-R"[((pAD->afindex[y]->attrFile & FILE_READONLY) !=3507 0)],3508 "-H"[((pAD->afindex[y]->attrFile & FILE_HIDDEN) != 0)],3509 "-S"[((pAD->afindex[y]->attrFile & FILE_SYSTEM) != 0)],3510 "-D"[((pAD->afindex[y]->attrFile & FILE_DIRECTORY) !=3511 0)], pAD->afindex[y]->date.year + 1980,3512 pAD->afindex[y]->date.month, pAD->afindex[y]->date.day,3513 pAD->afindex[y]->time.hours,3514 pAD->afindex[y]->time.minutes,3515 pAD->afindex[y]->time.twosecs * 2);3516 GpiCharStringAt(hpsp, &ptl, len, szBuff);3517 GpiQueryCurrentPosition(hpsp, &ptl);3518 if (ptl.x + abs(pAD->horzscroll) > pAD->maxx) {3519 pAD->maxx = ptl.x + abs(pAD->horzscroll);3520 WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE,3521 MPFROM2SHORT((SHORT) Rectl.xRight,3522 (SHORT) pAD->maxx), MPVOID);3523 }3524 }3525 }3526 DosReleaseMutexSem(pAD->hmtxScan);3514 len = 3515 sprintf(szBuff, 3516 "%c%-*.*s %-12s %c%c%c%c%c %04u/%02u/%02u %02u:%02u:%02u ", 3517 wascursored ? '>' : ' ', 3518 pAD->fullnames ? pAD->longestw : pAD->longest, 3519 pAD->fullnames ? pAD->longestw : pAD->longest, 3520 (pAD->fullnames) ? pAD->afindex[y]->fullname : pAD-> 3521 afindex[y]->filename, szCmmaFmtFileSize, 3522 "-A"[((pAD->afindex[y]->attrFile & FILE_ARCHIVED) != 3523 0)], 3524 "-R"[((pAD->afindex[y]->attrFile & FILE_READONLY) != 3525 0)], 3526 "-H"[((pAD->afindex[y]->attrFile & FILE_HIDDEN) != 0)], 3527 "-S"[((pAD->afindex[y]->attrFile & FILE_SYSTEM) != 0)], 3528 "-D"[((pAD->afindex[y]->attrFile & FILE_DIRECTORY) != 3529 0)], pAD->afindex[y]->date.year + 1980, 3530 pAD->afindex[y]->date.month, pAD->afindex[y]->date.day, 3531 pAD->afindex[y]->time.hours, 3532 pAD->afindex[y]->time.minutes, 3533 pAD->afindex[y]->time.twosecs * 2); 3534 GpiCharStringAt(hpsp, &ptl, len, szBuff); 3535 GpiQueryCurrentPosition(hpsp, &ptl); 3536 if (ptl.x + abs(pAD->horzscroll) > pAD->maxx) { 3537 pAD->maxx = ptl.x + abs(pAD->horzscroll); 3538 WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE, 3539 MPFROM2SHORT((SHORT) Rectl.xRight, 3540 (SHORT) pAD->maxx), MPVOID); 3541 } 3542 } 3543 } 3544 DosReleaseMutexSem(pAD->hmtxScan); 3527 3545 } 3528 3546 WinEndPaint(hpsp); 3529 3547 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 3530 3548 if (!pAD->stopflag) 3531 WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,3532 MPFROMSHORT((SHORT) (pAD->topfile / pAD->multiplier)),3533 MPFROM2SHORT(1,3534 (SHORT) (pAD->afindexcnt / pAD->multiplier) -3535 (numlines - 1)));3549 WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR, 3550 MPFROMSHORT((SHORT) (pAD->topfile / pAD->multiplier)), 3551 MPFROM2SHORT(1, 3552 (SHORT) (pAD->afindexcnt / pAD->multiplier) - 3553 (numlines - 1))); 3536 3554 WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR, 3537 MPFROMSHORT((SHORT) abs(pAD->horzscroll)),3538 MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));3555 MPFROMSHORT((SHORT) abs(pAD->horzscroll)), 3556 MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight))); 3539 3557 WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE, 3540 MPFROM2SHORT((SHORT) Rectl.xRight, (SHORT) pAD->maxx),3541 MPVOID);3558 MPFROM2SHORT((SHORT) Rectl.xRight, (SHORT) pAD->maxx), 3559 MPVOID); 3542 3560 } 3543 3561 break; … … 3551 3569 switch (SHORT2FROMMP(mp2)) { 3552 3570 case SB_PAGERIGHT: 3553 if (abs(pAD->horzscroll) < pAD->maxx - rectl.xRight) {3554 pAD->horzscroll -= rectl.xRight;3555 if (abs(pAD->horzscroll) > pAD->maxx - rectl.xRight)3556 pAD->horzscroll = -(pAD->maxx - rectl.xRight);3557 }3558 break;3571 if (abs(pAD->horzscroll) < pAD->maxx - rectl.xRight) { 3572 pAD->horzscroll -= rectl.xRight; 3573 if (abs(pAD->horzscroll) > pAD->maxx - rectl.xRight) 3574 pAD->horzscroll = -(pAD->maxx - rectl.xRight); 3575 } 3576 break; 3559 3577 3560 3578 case SB_PAGELEFT: 3561 if (pAD->horzscroll < 0) {3562 pAD->horzscroll += rectl.xRight;3563 if (pAD->horzscroll > 0)3564 pAD->horzscroll = 0;3565 }3566 break;3579 if (pAD->horzscroll < 0) { 3580 pAD->horzscroll += rectl.xRight; 3581 if (pAD->horzscroll > 0) 3582 pAD->horzscroll = 0; 3583 } 3584 break; 3567 3585 3568 3586 case SB_LINERIGHT: 3569 if (abs(pAD->horzscroll) < pAD->maxx - rectl.xRight)3570 pAD->horzscroll -= pAD->fattrs.lAveCharWidth;3571 break;3587 if (abs(pAD->horzscroll) < pAD->maxx - rectl.xRight) 3588 pAD->horzscroll -= pAD->fattrs.lAveCharWidth; 3589 break; 3572 3590 3573 3591 case SB_LINELEFT: 3574 if (pAD->horzscroll < 0)3575 pAD->horzscroll += pAD->fattrs.lAveCharWidth;3576 break;3592 if (pAD->horzscroll < 0) 3593 pAD->horzscroll += pAD->fattrs.lAveCharWidth; 3594 break; 3577 3595 3578 3596 case SB_SLIDERTRACK: 3579 pAD->horzscroll = SHORT1FROMMP(mp2);3580 pAD->horzscroll = -(pAD->horzscroll);3581 if (pAD->horzscroll > 0)3582 pAD->horzscroll = 0;3583 if (abs(pAD->horzscroll) > pAD->maxx - rectl.xRight)3584 pAD->horzscroll = -(pAD->maxx - rectl.xRight);3585 break;3597 pAD->horzscroll = SHORT1FROMMP(mp2); 3598 pAD->horzscroll = -(pAD->horzscroll); 3599 if (pAD->horzscroll > 0) 3600 pAD->horzscroll = 0; 3601 if (abs(pAD->horzscroll) > pAD->maxx - rectl.xRight) 3602 pAD->horzscroll = -(pAD->maxx - rectl.xRight); 3603 break; 3586 3604 3587 3605 default: 3588 invalidate = FALSE;3589 break;3606 invalidate = FALSE; 3607 break; 3590 3608 } 3591 3609 if (invalidate) 3592 WinInvalidateRect(hwnd, NULL, FALSE);3610 WinInvalidateRect(hwnd, NULL, FALSE); 3593 3611 } 3594 3612 break; … … 3597 3615 // fprintf(stderr,"Seeall: WM_VSCROLL\n"); 3598 3616 if (pAD && !pAD->stopflag && 3599 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {3617 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 3600 3618 3601 3619 ULONG numlines, wascursored; … … 3603 3621 3604 3622 if (pAD->afindexcnt) { 3605 WinQueryWindowRect(hwnd, &rcl);3606 numlines = NumLines(&rcl, pAD);3607 if (numlines) {3608 wascursored = pAD->cursored;3609 switch (SHORT2FROMMP(mp2)) {3610 case SB_PAGEUP:3611 if (pAD->topfile > 1) {3612 pAD->topfile -= numlines;3613 if (pAD->topfile > pAD->afindexcnt ||3614 pAD->topfile > (pAD->afindexcnt + 1) - numlines)3615 pAD->topfile = 1;3616 if (pAD->cursored > pAD->topfile + numlines)3617 pAD->cursored = pAD->topfile + numlines;3618 if (pAD->cursored > pAD->afindexcnt)3619 pAD->cursored = pAD->afindexcnt;3620 WinInvalidateRect(hwnd, NULL, FALSE);3621 }3622 break;3623 case SB_PAGEDOWN:3624 if (pAD->topfile <= pAD->afindexcnt - numlines) {3625 pAD->topfile += numlines;3626 if (pAD->topfile > (pAD->afindexcnt + 1) - numlines)3627 pAD->topfile = (pAD->afindexcnt + 1) - numlines;3628 if (pAD->cursored < pAD->topfile)3629 pAD->cursored = pAD->topfile;3630 if (pAD->cursored > (pAD->topfile + numlines) - 1)3631 pAD->cursored = (pAD->topfile + numlines) - 1;3632 if (pAD->cursored > pAD->afindexcnt)3633 pAD->cursored = pAD->afindexcnt;3634 WinInvalidateRect(hwnd, NULL, FALSE);3635 }3636 break;3637 case SB_LINEDOWN:3638 if (pAD->topfile <= pAD->afindexcnt - numlines) {3639 3640 RECTL Rectl, iRectl;3641 3642 pAD->topfile++;3643 if (pAD->cursored < pAD->topfile)3644 pAD->cursored = pAD->topfile;3645 else if (pAD->cursored > (pAD->topfile + numlines) - 1)3646 pAD->cursored = (pAD->topfile + numlines) - 1;3647 if (pAD->cursored > pAD->afindexcnt)3648 pAD->cursored = pAD->afindexcnt;3649 WinQueryWindowRect(hwnd, &Rectl);3650 WinScrollWindow(hwnd, 0, pAD->lMaxHeight,3651 NULL, NULL, NULLHANDLE, &iRectl, 0);3652 WinFillRect(pAD->hps, &iRectl,3653 standardcolors[Colors[COLORS_NORMALBACK]]);3654 PaintLine(hwnd, pAD->hps, (pAD->topfile + numlines) - 2,3655 pAD->topfile, &Rectl);3656 if (pAD->cursored != pAD->topfile + numlines)3657 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,3658 &Rectl);3659 if (wascursored != pAD->cursored3660 && wascursored < pAD->topfile + numlines3661 && wascursored >= pAD->topfile)3662 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile,3663 &Rectl);3664 if (wascursored != pAD->cursored)3665 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);3666 WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,3667 MPFROMSHORT((SHORT) abs(pAD->horzscroll)),3668 MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));3669 WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,3670 MPFROMSHORT((SHORT) (pAD->topfile /3671 pAD->multiplier)),3672 MPFROM2SHORT(1, (SHORT) (pAD->afindexcnt /3673 pAD->multiplier) -3674 (numlines - 1)));3675 }3676 break;3677 case SB_LINEUP:3678 if (pAD->topfile > 1) {3679 3680 RECTL Rectl, iRectl;3681 3682 pAD->topfile--;3683 if (pAD->cursored < pAD->topfile)3684 pAD->cursored = pAD->topfile;3685 else if (pAD->cursored > (pAD->topfile + numlines) - 1)3686 pAD->cursored = (pAD->topfile + numlines) - 1;3687 if (pAD->cursored > pAD->afindexcnt)3688 pAD->cursored = pAD->afindexcnt;3689 WinQueryWindowRect(hwnd, &Rectl);3690 WinScrollWindow(hwnd, 0, -pAD->lMaxHeight,3691 NULL, NULL, NULLHANDLE, &iRectl, 0);3692 WinFillRect(pAD->hps, &iRectl,3693 standardcolors[Colors[COLORS_NORMALBACK]]);3694 iRectl = Rectl;3695 iRectl.yTop -= ((numlines * pAD->lMaxHeight) +3696 pAD->lMaxDescender);3697 WinFillRect(pAD->hps, &iRectl,3698 standardcolors[pAD->aulColors[COLORS_NORMALBACK]]);3699 PaintLine(hwnd, pAD->hps, pAD->topfile - 1, pAD->topfile,3700 &Rectl);3701 if (pAD->cursored != pAD->topfile)3702 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,3703 &Rectl);3704 if (pAD->cursored != wascursored && wascursored >= pAD->topfile3705 && wascursored < pAD->topfile + numlines)3706 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile,3707 &Rectl);3708 if (pAD->cursored != wascursored)3709 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);3710 WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,3711 MPFROMSHORT((SHORT) abs(pAD->horzscroll)),3712 MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));3713 WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,3714 MPFROMSHORT((SHORT) (pAD->topfile /3715 pAD->multiplier)),3716 MPFROM2SHORT(1, (SHORT) (pAD->afindexcnt /3717 pAD->multiplier) -3718 (numlines - 1)));3719 }3720 break;3721 case SB_SLIDERTRACK:3722 if ((SHORT1FROMMP(mp2) >= 1) ||3723 (SHORT1FROMMP(mp2)) <= pAD->afindexcnt) {3724 pAD->topfile = (ULONG) SHORT1FROMMP(mp2) * pAD->multiplier;3725 if (pAD->topfile > (pAD->afindexcnt + 1) - numlines)3726 pAD->topfile = (pAD->afindexcnt + 1) - numlines;3727 if (!pAD->topfile)3728 pAD->topfile = 1;3729 if (pAD->cursored < pAD->topfile)3730 pAD->cursored = pAD->topfile;3731 else if (pAD->cursored > pAD->topfile + numlines)3732 pAD->cursored = pAD->topfile + numlines;3733 if (pAD->cursored > pAD->afindexcnt)3734 pAD->cursored = pAD->afindexcnt;3735 WinInvalidateRect(hwnd, NULL, FALSE);3736 }3737 else3738 WinAlarm(HWND_DESKTOP, WA_NOTE);3739 break;3740 }3741 }3623 WinQueryWindowRect(hwnd, &rcl); 3624 numlines = NumLines(&rcl, pAD); 3625 if (numlines) { 3626 wascursored = pAD->cursored; 3627 switch (SHORT2FROMMP(mp2)) { 3628 case SB_PAGEUP: 3629 if (pAD->topfile > 1) { 3630 pAD->topfile -= numlines; 3631 if (pAD->topfile > pAD->afindexcnt || 3632 pAD->topfile > (pAD->afindexcnt + 1) - numlines) 3633 pAD->topfile = 1; 3634 if (pAD->cursored > pAD->topfile + numlines) 3635 pAD->cursored = pAD->topfile + numlines; 3636 if (pAD->cursored > pAD->afindexcnt) 3637 pAD->cursored = pAD->afindexcnt; 3638 WinInvalidateRect(hwnd, NULL, FALSE); 3639 } 3640 break; 3641 case SB_PAGEDOWN: 3642 if (pAD->topfile <= pAD->afindexcnt - numlines) { 3643 pAD->topfile += numlines; 3644 if (pAD->topfile > (pAD->afindexcnt + 1) - numlines) 3645 pAD->topfile = (pAD->afindexcnt + 1) - numlines; 3646 if (pAD->cursored < pAD->topfile) 3647 pAD->cursored = pAD->topfile; 3648 if (pAD->cursored > (pAD->topfile + numlines) - 1) 3649 pAD->cursored = (pAD->topfile + numlines) - 1; 3650 if (pAD->cursored > pAD->afindexcnt) 3651 pAD->cursored = pAD->afindexcnt; 3652 WinInvalidateRect(hwnd, NULL, FALSE); 3653 } 3654 break; 3655 case SB_LINEDOWN: 3656 if (pAD->topfile <= pAD->afindexcnt - numlines) { 3657 3658 RECTL Rectl, iRectl; 3659 3660 pAD->topfile++; 3661 if (pAD->cursored < pAD->topfile) 3662 pAD->cursored = pAD->topfile; 3663 else if (pAD->cursored > (pAD->topfile + numlines) - 1) 3664 pAD->cursored = (pAD->topfile + numlines) - 1; 3665 if (pAD->cursored > pAD->afindexcnt) 3666 pAD->cursored = pAD->afindexcnt; 3667 WinQueryWindowRect(hwnd, &Rectl); 3668 WinScrollWindow(hwnd, 0, pAD->lMaxHeight, 3669 NULL, NULL, NULLHANDLE, &iRectl, 0); 3670 WinFillRect(pAD->hps, &iRectl, 3671 standardcolors[Colors[COLORS_NORMALBACK]]); 3672 PaintLine(hwnd, pAD->hps, (pAD->topfile + numlines) - 2, 3673 pAD->topfile, &Rectl); 3674 if (pAD->cursored != pAD->topfile + numlines) 3675 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile, 3676 &Rectl); 3677 if (wascursored != pAD->cursored 3678 && wascursored < pAD->topfile + numlines 3679 && wascursored >= pAD->topfile) 3680 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, 3681 &Rectl); 3682 if (wascursored != pAD->cursored) 3683 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 3684 WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR, 3685 MPFROMSHORT((SHORT) abs(pAD->horzscroll)), 3686 MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight))); 3687 WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR, 3688 MPFROMSHORT((SHORT) (pAD->topfile / 3689 pAD->multiplier)), 3690 MPFROM2SHORT(1, (SHORT) (pAD->afindexcnt / 3691 pAD->multiplier) - 3692 (numlines - 1))); 3693 } 3694 break; 3695 case SB_LINEUP: 3696 if (pAD->topfile > 1) { 3697 3698 RECTL Rectl, iRectl; 3699 3700 pAD->topfile--; 3701 if (pAD->cursored < pAD->topfile) 3702 pAD->cursored = pAD->topfile; 3703 else if (pAD->cursored > (pAD->topfile + numlines) - 1) 3704 pAD->cursored = (pAD->topfile + numlines) - 1; 3705 if (pAD->cursored > pAD->afindexcnt) 3706 pAD->cursored = pAD->afindexcnt; 3707 WinQueryWindowRect(hwnd, &Rectl); 3708 WinScrollWindow(hwnd, 0, -pAD->lMaxHeight, 3709 NULL, NULL, NULLHANDLE, &iRectl, 0); 3710 WinFillRect(pAD->hps, &iRectl, 3711 standardcolors[Colors[COLORS_NORMALBACK]]); 3712 iRectl = Rectl; 3713 iRectl.yTop -= ((numlines * pAD->lMaxHeight) + 3714 pAD->lMaxDescender); 3715 WinFillRect(pAD->hps, &iRectl, 3716 standardcolors[pAD->aulColors[COLORS_NORMALBACK]]); 3717 PaintLine(hwnd, pAD->hps, pAD->topfile - 1, pAD->topfile, 3718 &Rectl); 3719 if (pAD->cursored != pAD->topfile) 3720 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile, 3721 &Rectl); 3722 if (pAD->cursored != wascursored && wascursored >= pAD->topfile 3723 && wascursored < pAD->topfile + numlines) 3724 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, 3725 &Rectl); 3726 if (pAD->cursored != wascursored) 3727 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 3728 WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR, 3729 MPFROMSHORT((SHORT) abs(pAD->horzscroll)), 3730 MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight))); 3731 WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR, 3732 MPFROMSHORT((SHORT) (pAD->topfile / 3733 pAD->multiplier)), 3734 MPFROM2SHORT(1, (SHORT) (pAD->afindexcnt / 3735 pAD->multiplier) - 3736 (numlines - 1))); 3737 } 3738 break; 3739 case SB_SLIDERTRACK: 3740 if ((SHORT1FROMMP(mp2) >= 1) || 3741 (SHORT1FROMMP(mp2)) <= pAD->afindexcnt) { 3742 pAD->topfile = (ULONG) SHORT1FROMMP(mp2) * pAD->multiplier; 3743 if (pAD->topfile > (pAD->afindexcnt + 1) - numlines) 3744 pAD->topfile = (pAD->afindexcnt + 1) - numlines; 3745 if (!pAD->topfile) 3746 pAD->topfile = 1; 3747 if (pAD->cursored < pAD->topfile) 3748 pAD->cursored = pAD->topfile; 3749 else if (pAD->cursored > pAD->topfile + numlines) 3750 pAD->cursored = pAD->topfile + numlines; 3751 if (pAD->cursored > pAD->afindexcnt) 3752 pAD->cursored = pAD->afindexcnt; 3753 WinInvalidateRect(hwnd, NULL, FALSE); 3754 } 3755 else 3756 WinAlarm(HWND_DESKTOP, WA_NOTE); 3757 break; 3758 } 3759 } 3742 3760 } 3743 3761 DosReleaseMutexSem(pAD->hmtxScan); … … 3749 3767 switch (SHORT1FROMMP(mp1)) { 3750 3768 case IDM_FILESMENU: 3751 {3752 APIRET rc;3753 3754 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);3755 WinEnableMenuItem((HWND) mp2, IDM_DUPES, (rc == 0));3756 WinEnableMenuItem((HWND) mp2, IDM_COLLECT, (rc == 0 &&3757 pAD->selected != 0));3758 WinEnableMenuItem((HWND) mp2, IDM_SAVETOCLIP, (rc == 0 &&3769 { 3770 APIRET rc; 3771 3772 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN); 3773 WinEnableMenuItem((HWND) mp2, IDM_DUPES, (rc == 0)); 3774 WinEnableMenuItem((HWND) mp2, IDM_COLLECT, (rc == 0 && 3775 pAD->selected != 0)); 3776 WinEnableMenuItem((HWND) mp2, IDM_SAVETOCLIP, (rc == 0 && 3759 3777 pAD->selected != 0)); 3760 3778 WinEnableMenuItem((HWND) mp2, IDM_SAVETOCLIPFILENAME, 3761 (rc == 0 && pAD->selected != 0));3779 (rc == 0 && pAD->selected != 0)); 3762 3780 WinEnableMenuItem((HWND) mp2, IDM_APPENDTOCLIP, 3763 3781 (rc == 0 && pAD->selected != 0)); 3764 3782 WinEnableMenuItem((HWND) mp2, IDM_APPENDTOCLIPFILENAME, 3765 (rc == 0 && pAD->selected != 0));3766 WinEnableMenuItem((HWND) mp2, IDM_SAVETOLIST,3767 (rc == 0 && pAD->selected != 0));3768 WinEnableMenuItem((HWND) mp2, IDM_REMOVE,3769 (rc == 0 && pAD->selected != 0));3770 WinEnableMenuItem((HWND) mp2, IDM_HIDEALL,3771 (rc == 0 && pAD->selected != 0));3772 WinEnableMenuItem((HWND) mp2, IDM_DELETESUBMENU,3773 (rc == 0 && pAD->selected != 0));3774 WinEnableMenuItem((HWND) mp2, IDM_INFO,3775 (rc == 0 && pAD->selected != 0));3776 WinEnableMenuItem((HWND) mp2, IDM_ATTRS,3777 (rc == 0 && pAD->selected != 0));3778 WinEnableMenuItem((HWND) mp2, IDM_EAS,3779 (rc == 0 && pAD->selected != 0));3780 WinEnableMenuItem((HWND) mp2, IDM_UUDECODE,3781 (rc == 0 && pAD->selected != 0));3782 WinEnableMenuItem((HWND) mp2, IDM_EXTRACT,3783 (rc == 0 && pAD->selected != 0));3784 WinEnableMenuItem((HWND) mp2, IDM_ARCHIVE,3785 (rc == 0 && pAD->selected != 0));3786 WinEnableMenuItem((HWND) mp2, IDM_MOVEMENU,3787 (rc == 0 && pAD->selected != 0));3788 WinEnableMenuItem((HWND) mp2, IDM_COPYMENU,3789 (rc == 0 && pAD->selected != 0));3790 WinEnableMenuItem((HWND) mp2, IDM_RENAME,3791 (rc == 0 && pAD->selected != 0));3792 WinEnableMenuItem((HWND) mp2, IDM_PRINT,3793 (rc == 0 && pAD->selected != 0));3794 WinEnableMenuItem((HWND) mp2, IDM_SUBJECT,3795 (rc == 0 && pAD->selected != 0));3796 WinEnableMenuItem((HWND) mp2, IDM_OPENSUBMENU,3797 (rc == 0 && pAD->selected != 0));3798 WinEnableMenuItem((HWND) mp2, IDM_OBJECTSUBMENU,3799 (rc == 0 && pAD->selected != 0));3800 if (!rc)3801 DosReleaseMutexSem(pAD->hmtxScan);3802 }3803 break;3783 (rc == 0 && pAD->selected != 0)); 3784 WinEnableMenuItem((HWND) mp2, IDM_SAVETOLIST, 3785 (rc == 0 && pAD->selected != 0)); 3786 WinEnableMenuItem((HWND) mp2, IDM_REMOVE, 3787 (rc == 0 && pAD->selected != 0)); 3788 WinEnableMenuItem((HWND) mp2, IDM_HIDEALL, 3789 (rc == 0 && pAD->selected != 0)); 3790 WinEnableMenuItem((HWND) mp2, IDM_DELETESUBMENU, 3791 (rc == 0 && pAD->selected != 0)); 3792 WinEnableMenuItem((HWND) mp2, IDM_INFO, 3793 (rc == 0 && pAD->selected != 0)); 3794 WinEnableMenuItem((HWND) mp2, IDM_ATTRS, 3795 (rc == 0 && pAD->selected != 0)); 3796 WinEnableMenuItem((HWND) mp2, IDM_EAS, 3797 (rc == 0 && pAD->selected != 0)); 3798 WinEnableMenuItem((HWND) mp2, IDM_UUDECODE, 3799 (rc == 0 && pAD->selected != 0)); 3800 WinEnableMenuItem((HWND) mp2, IDM_EXTRACT, 3801 (rc == 0 && pAD->selected != 0)); 3802 WinEnableMenuItem((HWND) mp2, IDM_ARCHIVE, 3803 (rc == 0 && pAD->selected != 0)); 3804 WinEnableMenuItem((HWND) mp2, IDM_MOVEMENU, 3805 (rc == 0 && pAD->selected != 0)); 3806 WinEnableMenuItem((HWND) mp2, IDM_COPYMENU, 3807 (rc == 0 && pAD->selected != 0)); 3808 WinEnableMenuItem((HWND) mp2, IDM_RENAME, 3809 (rc == 0 && pAD->selected != 0)); 3810 WinEnableMenuItem((HWND) mp2, IDM_PRINT, 3811 (rc == 0 && pAD->selected != 0)); 3812 WinEnableMenuItem((HWND) mp2, IDM_SUBJECT, 3813 (rc == 0 && pAD->selected != 0)); 3814 WinEnableMenuItem((HWND) mp2, IDM_OPENSUBMENU, 3815 (rc == 0 && pAD->selected != 0)); 3816 WinEnableMenuItem((HWND) mp2, IDM_OBJECTSUBMENU, 3817 (rc == 0 && pAD->selected != 0)); 3818 if (!rc) 3819 DosReleaseMutexSem(pAD->hmtxScan); 3820 } 3821 break; 3804 3822 3805 3823 case IDM_SELECTSUBMENU: 3806 {3807 APIRET rc;3808 3809 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);3810 WinEnableMenuItem((HWND) mp2, IDM_SELECTALL, (rc == 0 &&3811 pAD->afindexcnt != 0 &&3812 (pAD->afindexcnt !=3813 pAD->selected ||3814 !pAD->selected)));3815 WinEnableMenuItem((HWND) mp2, IDM_SELECTMASK, (rc == 0 &&3816 pAD->afindexcnt != 0 &&3817 (pAD->afindexcnt !=3818 pAD->selected ||3819 !pAD->selected)));3820 WinEnableMenuItem((HWND) mp2, IDM_DESELECTALL, (rc == 0 &&3821 pAD->afindexcnt != 03822 && pAD->selected));3823 WinEnableMenuItem((HWND) mp2, IDM_DESELECTMASK,3824 (rc == 0 && pAD->afindexcnt != 0) && pAD->selected);3825 WinEnableMenuItem((HWND) mp2, IDM_INVERT,3826 (rc == 0 && pAD->afindexcnt != 0));3827 if (!rc)3828 DosReleaseMutexSem(pAD->hmtxScan);3829 }3830 break;3824 { 3825 APIRET rc; 3826 3827 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN); 3828 WinEnableMenuItem((HWND) mp2, IDM_SELECTALL, (rc == 0 && 3829 pAD->afindexcnt != 0 && 3830 (pAD->afindexcnt != 3831 pAD->selected || 3832 !pAD->selected))); 3833 WinEnableMenuItem((HWND) mp2, IDM_SELECTMASK, (rc == 0 && 3834 pAD->afindexcnt != 0 && 3835 (pAD->afindexcnt != 3836 pAD->selected || 3837 !pAD->selected))); 3838 WinEnableMenuItem((HWND) mp2, IDM_DESELECTALL, (rc == 0 && 3839 pAD->afindexcnt != 0 3840 && pAD->selected)); 3841 WinEnableMenuItem((HWND) mp2, IDM_DESELECTMASK, 3842 (rc == 0 && pAD->afindexcnt != 0) && pAD->selected); 3843 WinEnableMenuItem((HWND) mp2, IDM_INVERT, 3844 (rc == 0 && pAD->afindexcnt != 0)); 3845 if (!rc) 3846 DosReleaseMutexSem(pAD->hmtxScan); 3847 } 3848 break; 3831 3849 3832 3850 case IDM_SORTSUBMENU: 3833 {3834 APIRET rc;3835 3836 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);3837 WinEnableMenuItem((HWND) mp2, IDM_SORTNAME, (rc == 0));3838 WinEnableMenuItem((HWND) mp2, IDM_SORTEASIZE, (rc == 0));3839 WinEnableMenuItem((HWND) mp2, IDM_SORTSIZE, (rc == 0));3840 WinEnableMenuItem((HWND) mp2, IDM_SORTLWDATE, (rc == 0));3841 WinEnableMenuItem((HWND) mp2, IDM_SORTFILENAME, (rc == 0));3842 WinEnableMenuItem((HWND) mp2, IDM_SORTFIRST, (rc == 0));3843 if (!rc)3844 DosReleaseMutexSem(pAD->hmtxScan);3845 }3846 WinCheckMenuItem((HWND) mp2, IDM_SORTNAME,3847 (pAD->pfnCompare == comparefullnames));3848 WinCheckMenuItem((HWND) mp2, IDM_SORTEASIZE,3849 (pAD->pfnCompare == (PFNSORT) NULL));3850 WinCheckMenuItem((HWND) mp2, IDM_SORTSIZE,3851 (pAD->pfnCompare == comparesizes));3852 WinCheckMenuItem((HWND) mp2, IDM_SORTLWDATE,3853 (pAD->pfnCompare == comparedates));3854 WinCheckMenuItem((HWND) mp2, IDM_SORTFILENAME,3855 (pAD->pfnCompare == comparenames));3856 WinCheckMenuItem((HWND) mp2, IDM_SORTREVERSE, pAD->invertsort);3857 WinCheckMenuItem((HWND) mp2, IDM_SORTFIRST,3858 (pAD->pfnCompare == compareexts));3859 break;3851 { 3852 APIRET rc; 3853 3854 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN); 3855 WinEnableMenuItem((HWND) mp2, IDM_SORTNAME, (rc == 0)); 3856 WinEnableMenuItem((HWND) mp2, IDM_SORTEASIZE, (rc == 0)); 3857 WinEnableMenuItem((HWND) mp2, IDM_SORTSIZE, (rc == 0)); 3858 WinEnableMenuItem((HWND) mp2, IDM_SORTLWDATE, (rc == 0)); 3859 WinEnableMenuItem((HWND) mp2, IDM_SORTFILENAME, (rc == 0)); 3860 WinEnableMenuItem((HWND) mp2, IDM_SORTFIRST, (rc == 0)); 3861 if (!rc) 3862 DosReleaseMutexSem(pAD->hmtxScan); 3863 } 3864 WinCheckMenuItem((HWND) mp2, IDM_SORTNAME, 3865 (pAD->pfnCompare == comparefullnames)); 3866 WinCheckMenuItem((HWND) mp2, IDM_SORTEASIZE, 3867 (pAD->pfnCompare == (PFNSORT) NULL)); 3868 WinCheckMenuItem((HWND) mp2, IDM_SORTSIZE, 3869 (pAD->pfnCompare == comparesizes)); 3870 WinCheckMenuItem((HWND) mp2, IDM_SORTLWDATE, 3871 (pAD->pfnCompare == comparedates)); 3872 WinCheckMenuItem((HWND) mp2, IDM_SORTFILENAME, 3873 (pAD->pfnCompare == comparenames)); 3874 WinCheckMenuItem((HWND) mp2, IDM_SORTREVERSE, pAD->invertsort); 3875 WinCheckMenuItem((HWND) mp2, IDM_SORTFIRST, 3876 (pAD->pfnCompare == compareexts)); 3877 break; 3860 3878 3861 3879 case IDM_VIEWSMENU: 3862 {3863 APIRET rc;3864 3865 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);3866 WinEnableMenuItem((HWND) mp2, IDM_RESCAN, (rc == 0));3867 WinEnableMenuItem((HWND) mp2, IDM_FILTER, (rc == 0 &&3868 pAD->afheadcnt != 0));3869 if (!rc)3870 DosReleaseMutexSem(pAD->hmtxScan);3871 }3872 WinCheckMenuItem((HWND) mp2, IDM_SHOWLNAMES, pAD->fullnames);3873 break;3880 { 3881 APIRET rc; 3882 3883 rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN); 3884 WinEnableMenuItem((HWND) mp2, IDM_RESCAN, (rc == 0)); 3885 WinEnableMenuItem((HWND) mp2, IDM_FILTER, (rc == 0 && 3886 pAD->afheadcnt != 0)); 3887 if (!rc) 3888 DosReleaseMutexSem(pAD->hmtxScan); 3889 } 3890 WinCheckMenuItem((HWND) mp2, IDM_SHOWLNAMES, pAD->fullnames); 3891 break; 3874 3892 } 3875 3893 } … … 3888 3906 case IDM_DUPES: 3889 3907 if (!pAD->stopflag && 3890 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {3891 pAD->dupeflags = (USHORT) WinDlgBox(HWND_DESKTOP,3892 hwnd,3893 DupeDlgProc,3894 FM3ModHandle,3895 DUPE_FRAME,3896 MPFROM2SHORT(pAD->dupeflags, 0));3897 if (pAD->dupeflags) {3898 if (_beginthread(FindDupesThread, NULL, 65536, (PVOID) hwnd) == -1)3899 Runtime_Error(pszSrcFile, __LINE__,3900 GetPString(IDS_COULDNTSTARTTHREADTEXT));3901 }3902 DosReleaseMutexSem(pAD->hmtxScan);3908 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 3909 pAD->dupeflags = (USHORT) WinDlgBox(HWND_DESKTOP, 3910 hwnd, 3911 DupeDlgProc, 3912 FM3ModHandle, 3913 DUPE_FRAME, 3914 MPFROM2SHORT(pAD->dupeflags, 0)); 3915 if (pAD->dupeflags) { 3916 if (_beginthread(FindDupesThread, NULL, 65536, (PVOID) hwnd) == -1) 3917 Runtime_Error(pszSrcFile, __LINE__, 3918 GetPString(IDS_COULDNTSTARTTHREADTEXT)); 3919 } 3920 DosReleaseMutexSem(pAD->hmtxScan); 3903 3921 } 3904 3922 break; … … 3906 3924 case IDM_COLORPALETTE: 3907 3925 { 3908 COLORS co;3909 LONG temp[COLORS_MAX];3910 3911 memset(&co, 0, sizeof(co));3912 co.size = sizeof(co);3913 co.numcolors = COLORS_MAX;3914 co.colors = pAD->aulColors;3915 co.descriptions = IDS_SACOLORS1TEXT;3916 co.origs = temp;3917 co.prompt = IDS_SACOLORSPROMPTTEXT;3918 memcpy(temp, pAD->aulColors, sizeof(LONG) * COLORS_MAX);3919 if (WinDlgBox(HWND_DESKTOP,3920 hwnd,3921 ColorDlgProc,3922 FM3ModHandle, COLOR_FRAME, (PVOID) & co)) {3923 memcpy(Colors, pAD->aulColors, sizeof(LONG) * COLORS_MAX);3924 PrfWriteProfileData(fmprof,3925 appname,3926 "Seeall.Colors",3927 &pAD->aulColors, sizeof(LONG) * COLORS_MAX);3928 WinInvalidateRect(hwnd, NULL, FALSE);3929 }3926 COLORS co; 3927 LONG temp[COLORS_MAX]; 3928 3929 memset(&co, 0, sizeof(co)); 3930 co.size = sizeof(co); 3931 co.numcolors = COLORS_MAX; 3932 co.colors = pAD->aulColors; 3933 co.descriptions = IDS_SACOLORS1TEXT; 3934 co.origs = temp; 3935 co.prompt = IDS_SACOLORSPROMPTTEXT; 3936 memcpy(temp, pAD->aulColors, sizeof(LONG) * COLORS_MAX); 3937 if (WinDlgBox(HWND_DESKTOP, 3938 hwnd, 3939 ColorDlgProc, 3940 FM3ModHandle, COLOR_FRAME, (PVOID) & co)) { 3941 memcpy(Colors, pAD->aulColors, sizeof(LONG) * COLORS_MAX); 3942 PrfWriteProfileData(fmprof, 3943 appname, 3944 "Seeall.Colors", 3945 &pAD->aulColors, sizeof(LONG) * COLORS_MAX); 3946 WinInvalidateRect(hwnd, NULL, FALSE); 3947 } 3930 3948 } 3931 3949 break; … … 3933 3951 case IDM_CODEPAGE: 3934 3952 { 3935 INT cp;3936 3937 cp = PickCodepage(hwnd);3938 if (cp != -1) {3939 pAD->fattrs.usCodePage = (USHORT) cp;3940 Codepage = pAD->fattrs.usCodePage;3941 PrfWriteProfileData(fmprof,3942 appname,3943 "Seeall.Codepage",3944 &pAD->fattrs.usCodePage, sizeof(USHORT));3945 GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID);3946 GpiAssociate(pAD->hps, 0);3947 GpiDestroyPS(pAD->hps);3948 pAD->hps = InitWindow(hwnd);3949 pAD->maxx = pAD->horzscroll = 0;3950 WinInvalidateRect(hwnd, NULL, FALSE);3951 }3953 INT cp; 3954 3955 cp = PickCodepage(hwnd); 3956 if (cp != -1) { 3957 pAD->fattrs.usCodePage = (USHORT) cp; 3958 Codepage = pAD->fattrs.usCodePage; 3959 PrfWriteProfileData(fmprof, 3960 appname, 3961 "Seeall.Codepage", 3962 &pAD->fattrs.usCodePage, sizeof(USHORT)); 3963 GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID); 3964 GpiAssociate(pAD->hps, 0); 3965 GpiDestroyPS(pAD->hps); 3966 pAD->hps = InitWindow(hwnd); 3967 pAD->maxx = pAD->horzscroll = 0; 3968 WinInvalidateRect(hwnd, NULL, FALSE); 3969 } 3952 3970 } 3953 3971 break; … … 3956 3974 SetMLEFont(hwnd, &pAD->fattrs, 11); 3957 3975 PrfWriteProfileData(fmprof, 3958 appname,3959 "Seeall.Fattrs", &pAD->fattrs, sizeof(pAD->fattrs));3976 appname, 3977 "Seeall.Fattrs", &pAD->fattrs, sizeof(pAD->fattrs)); 3960 3978 Fattrs = pAD->fattrs; 3961 3979 GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID); … … 3970 3988 pAD->fullnames = (pAD->fullnames) ? FALSE : TRUE; 3971 3989 PrfWriteProfileData(fmprof, 3972 appname,3973 "Seeall.Fullnames", &pAD->fullnames, sizeof(BOOL));3990 appname, 3991 "Seeall.Fullnames", &pAD->fullnames, sizeof(BOOL)); 3974 3992 Fullnames = pAD->fullnames; 3975 3993 pAD->maxx = pAD->horzscroll = 0; … … 3981 3999 SortReverse = pAD->invertsort; 3982 4000 PrfWriteProfileData(fmprof, 3983 appname,3984 "Seeall.SortReverse",3985 (PVOID) & pAD->invertsort, sizeof(BOOL));4001 appname, 4002 "Seeall.SortReverse", 4003 (PVOID) & pAD->invertsort, sizeof(BOOL)); 3986 4004 WinInvalidateRect(hwnd, NULL, FALSE); 3987 4005 break; … … 3994 4012 case IDM_SORTFIRST: 3995 4013 if (!pAD->stopflag && 3996 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {3997 {3998 USHORT dummy = SHORT1FROMMP(mp1);3999 4000 PrfWriteProfileData(fmprof,4001 appname,4002 "Seeall.Sort", (PVOID) & dummy, sizeof(USHORT));4003 SortType = SHORT1FROMMP(mp1);4004 }4005 WinSetPointer(HWND_DESKTOP, hptrBusy);4006 WinSendMsg(hwnd, UM_RESCAN, MPFROMLONG(1), MPVOID);4007 switch (SHORT1FROMMP(mp1)) {4008 case IDM_SORTEASIZE:4009 pAD->pfnCompare = (PFNSORT) NULL;4010 ReSort(hwnd);4011 break;4012 4013 case IDM_SORTNAME:4014 pAD->pfnCompare = comparefullnames;4015 ReSort(hwnd);4016 break;4017 4018 case IDM_SORTFILENAME:4019 pAD->pfnCompare = comparenames;4020 ReSort(hwnd);4021 break;4022 4023 case IDM_SORTSIZE:4024 pAD->pfnCompare = comparesizes;4025 ReSort(hwnd);4026 break;4027 4028 case IDM_SORTLWDATE:4029 pAD->pfnCompare = comparedates;4030 ReSort(hwnd);4031 break;4032 4033 case IDM_SORTFIRST:4034 pAD->pfnCompare = compareexts;4035 ReSort(hwnd);4036 break;4037 }4038 WinSetPointer(HWND_DESKTOP, hptrArrow);4039 DosReleaseMutexSem(pAD->hmtxScan);4040 WinInvalidateRect(hwnd, NULL, FALSE);4014 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 4015 { 4016 USHORT dummy = SHORT1FROMMP(mp1); 4017 4018 PrfWriteProfileData(fmprof, 4019 appname, 4020 "Seeall.Sort", (PVOID) & dummy, sizeof(USHORT)); 4021 SortType = SHORT1FROMMP(mp1); 4022 } 4023 WinSetPointer(HWND_DESKTOP, hptrBusy); 4024 WinSendMsg(hwnd, UM_RESCAN, MPFROMLONG(1), MPVOID); 4025 switch (SHORT1FROMMP(mp1)) { 4026 case IDM_SORTEASIZE: 4027 pAD->pfnCompare = (PFNSORT) NULL; 4028 ReSort(hwnd); 4029 break; 4030 4031 case IDM_SORTNAME: 4032 pAD->pfnCompare = comparefullnames; 4033 ReSort(hwnd); 4034 break; 4035 4036 case IDM_SORTFILENAME: 4037 pAD->pfnCompare = comparenames; 4038 ReSort(hwnd); 4039 break; 4040 4041 case IDM_SORTSIZE: 4042 pAD->pfnCompare = comparesizes; 4043 ReSort(hwnd); 4044 break; 4045 4046 case IDM_SORTLWDATE: 4047 pAD->pfnCompare = comparedates; 4048 ReSort(hwnd); 4049 break; 4050 4051 case IDM_SORTFIRST: 4052 pAD->pfnCompare = compareexts; 4053 ReSort(hwnd); 4054 break; 4055 } 4056 WinSetPointer(HWND_DESKTOP, hptrArrow); 4057 DosReleaseMutexSem(pAD->hmtxScan); 4058 WinInvalidateRect(hwnd, NULL, FALSE); 4041 4059 } 4042 4060 break; … … 4044 4062 case IDM_FILTER: 4045 4063 if (!pAD->stopflag && 4046 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {4047 FilterList(hwnd);4048 DosReleaseMutexSem(pAD->hmtxScan);4064 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 4065 FilterList(hwnd); 4066 DosReleaseMutexSem(pAD->hmtxScan); 4049 4067 } 4050 4068 break; … … 4052 4070 case IDM_RESCAN: 4053 4071 if (!pAD->stopflag && 4054 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {4055 4056 CHAR tempflags[26];4057 4058 memcpy(tempflags, pAD->abDrvFlags, sizeof(tempflags));4059 if (!WinDlgBox(HWND_DESKTOP, hwnd, AFDrvsWndProc, FM3ModHandle,4060 DRVS_FRAME, (PVOID) pAD)) {4061 memcpy(pAD->abDrvFlags, tempflags, sizeof(tempflags));4062 *pAD->szFindPath = 0;4063 DosReleaseMutexSem(pAD->hmtxScan);4064 break;4065 }4066 WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE, MPFROM2SHORT(1, 1),4067 MPVOID);4068 WinSendMsg(pAD->hvscroll, SBM_SETTHUMBSIZE, MPFROM2SHORT(1, 1),4069 MPVOID);4070 pAD->topfile = 1;4071 pAD->cursored = 1;4072 pAD->selected = 0;4073 pAD->ullSelectedBytes = 0;4074 pAD->maxx = pAD->horzscroll = 0;4075 FreeAllFilesList(hwnd);4076 pAD->stopflag = 0;4077 if (_beginthread(FindAllThread, NULL, 524288, (PVOID) hwnd) == -1) {4078 Runtime_Error(pszSrcFile, __LINE__,4079 GetPString(IDS_COULDNTSTARTTHREADTEXT));4080 WinDestroyWindow(WinQueryWindow(hwnd, QW_PARENT));4081 DosReleaseMutexSem(pAD->hmtxScan);4082 }4083 else {4084 DosReleaseMutexSem(pAD->hmtxScan);4085 DosSleep(50);//05 Aug 07 GKY 1004086 WinInvalidateRect(hwnd, NULL, FALSE);4087 PostMsg(hwnd, UM_SETUP2, MPVOID, MPVOID);4088 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);4089 }4072 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 4073 4074 CHAR tempflags[26]; 4075 4076 memcpy(tempflags, pAD->abDrvFlags, sizeof(tempflags)); 4077 if (!WinDlgBox(HWND_DESKTOP, hwnd, AFDrvsWndProc, FM3ModHandle, 4078 DRVS_FRAME, (PVOID) pAD)) { 4079 memcpy(pAD->abDrvFlags, tempflags, sizeof(tempflags)); 4080 *pAD->szFindPath = 0; 4081 DosReleaseMutexSem(pAD->hmtxScan); 4082 break; 4083 } 4084 WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE, MPFROM2SHORT(1, 1), 4085 MPVOID); 4086 WinSendMsg(pAD->hvscroll, SBM_SETTHUMBSIZE, MPFROM2SHORT(1, 1), 4087 MPVOID); 4088 pAD->topfile = 1; 4089 pAD->cursored = 1; 4090 pAD->selected = 0; 4091 pAD->ullSelectedBytes = 0; 4092 pAD->maxx = pAD->horzscroll = 0; 4093 FreeAllFilesList(hwnd); 4094 pAD->stopflag = 0; 4095 if (_beginthread(FindAllThread, NULL, 524288, (PVOID) hwnd) == -1) { 4096 Runtime_Error(pszSrcFile, __LINE__, 4097 GetPString(IDS_COULDNTSTARTTHREADTEXT)); 4098 WinDestroyWindow(WinQueryWindow(hwnd, QW_PARENT)); 4099 DosReleaseMutexSem(pAD->hmtxScan); 4100 } 4101 else { 4102 DosReleaseMutexSem(pAD->hmtxScan); 4103 DosSleep(50);//05 Aug 07 GKY 100 4104 WinInvalidateRect(hwnd, NULL, FALSE); 4105 PostMsg(hwnd, UM_SETUP2, MPVOID, MPVOID); 4106 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 4107 } 4090 4108 } 4091 4109 break; … … 4133 4151 case IDM_OPENDEFAULT: 4134 4152 if (!pAD->stopflag && 4135 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {4136 switch (SHORT1FROMMP(mp1)) {4137 case IDM_SELECTALL:4138 case IDM_DESELECTALL:4139 case IDM_INVERT:4140 case IDM_HIDEALL:4141 case IDM_REMOVE:4142 Mark(hwnd, (SHORT1FROMMP(mp1) == IDM_DESELECTALL) ?4143 AFM_UNMARK : (SHORT1FROMMP(mp1) == IDM_INVERT) ?4144 AFM_INVERT : (SHORT1FROMMP(mp1) == IDM_HIDEALL) ?4145 AFM_FILTER : (SHORT1FROMMP(mp1) == IDM_REMOVE) ?4146 AFM_MARKDELETED : 0, NULL);4147 if (SHORT1FROMMP(mp1) == IDM_REMOVE ||4148 SHORT1FROMMP(mp1) == IDM_HIDEALL) {4149 if (SHORT1FROMMP(mp1) == IDM_REMOVE)4150 RemoveDeleted(hwnd);4151 else4152 ReSort(hwnd);4153 }4154 WinInvalidateRect(hwnd, NULL, FALSE);4155 break;4156 4157 case IDM_SELECTMASK:4158 case IDM_DESELECTMASK:4159 SelectMask(hwnd, (SHORT1FROMMP(mp1) == IDM_DESELECTMASK));4160 WinInvalidateRect(hwnd, NULL, FALSE);4161 break;4162 4163 case IDM_DELETE:4164 case IDM_PERMDELETE:4153 !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) { 4154 switch (SHORT1FROMMP(mp1)) { 4155 case IDM_SELECTALL: 4156 case IDM_DESELECTALL: 4157 case IDM_INVERT: 4158 case IDM_HIDEALL: 4159 case IDM_REMOVE: 4160 Mark(hwnd, (SHORT1FROMMP(mp1) == IDM_DESELECTALL) ? 4161 AFM_UNMARK : (SHORT1FROMMP(mp1) == IDM_INVERT) ? 4162 AFM_INVERT : (SHORT1FROMMP(mp1) == IDM_HIDEALL) ? 4163 AFM_FILTER : (SHORT1FROMMP(mp1) == IDM_REMOVE) ? 4164 AFM_MARKDELETED : 0, NULL); 4165 if (SHORT1FROMMP(mp1) == IDM_REMOVE || 4166 SHORT1FROMMP(mp1) == IDM_HIDEALL) { 4167 if (SHORT1FROMMP(mp1) == IDM_REMOVE) 4168 RemoveDeleted(hwnd); 4169 else 4170 ReSort(hwnd); 4171 } 4172 WinInvalidateRect(hwnd, NULL, FALSE); 4173 break; 4174 4175 case IDM_SELECTMASK: 4176 case IDM_DESELECTMASK: 4177 SelectMask(hwnd, (SHORT1FROMMP(mp1) == IDM_DESELECTMASK)); 4178 WinInvalidateRect(hwnd, NULL, FALSE); 4179 break; 4180 4181 case IDM_DELETE: 4182 case IDM_PERMDELETE: 4165 4183 case IDM_APPENDTOCLIP: 4166 4184 case IDM_APPENDTOCLIPFILENAME: 4167 case IDM_SAVETOCLIP:4185 case IDM_SAVETOCLIP: 4168 4186 case IDM_SAVETOCLIPFILENAME: 4169 case IDM_SAVETOLIST:4170 case IDM_COLLECT:4171 case IDM_INFO:4172 case IDM_ATTRS:4173 case IDM_MOVE:4174 case IDM_COPY:4175 case IDM_RENAME:4176 case IDM_MOVEPRESERVE:4177 case IDM_COPYPRESERVE:4178 case IDM_WILDMOVE:4179 case IDM_WILDCOPY:4180 case IDM_SUBJECT:4181 case IDM_PRINT:4182 case IDM_EAS:4183 case IDM_ARCHIVE:4184 case IDM_EXTRACT:4185 case IDM_SHADOW:4186 case IDM_OBJECT:4187 case IDM_OPENSETTINGS:4188 case IDM_OPENDEFAULT:4189 case IDM_UUDECODE:4190 {4191 CHAR **list = BuildAList(hwnd);4192 4193 if (!list)4194 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);4195 else {4196 switch (SHORT1FROMMP(mp1)) {4197 case IDM_COLLECT:4198 CollectList(hwnd, list);4199 break;4200 case IDM_DELETE:4201 case IDM_PERMDELETE:4187 case IDM_SAVETOLIST: 4188 case IDM_COLLECT: 4189 case IDM_INFO: 4190 case IDM_ATTRS: 4191 case IDM_MOVE: 4192 case IDM_COPY: 4193 case IDM_RENAME: 4194 case IDM_MOVEPRESERVE: 4195 case IDM_COPYPRESERVE: 4196 case IDM_WILDMOVE: 4197 case IDM_WILDCOPY: 4198 case IDM_SUBJECT: 4199 case IDM_PRINT: 4200 case IDM_EAS: 4201 case IDM_ARCHIVE: 4202 case IDM_EXTRACT: 4203 case IDM_SHADOW: 4204 case IDM_OBJECT: 4205 case IDM_OPENSETTINGS: 4206 case IDM_OPENDEFAULT: 4207 case IDM_UUDECODE: 4208 { 4209 CHAR **list = BuildAList(hwnd); 4210 4211 if (!list) 4212 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 4213 else { 4214 switch (SHORT1FROMMP(mp1)) { 4215 case IDM_COLLECT: 4216 CollectList(hwnd, list); 4217 break; 4218 case IDM_DELETE: 4219 case IDM_PERMDELETE: 4202 4220 case IDM_APPENDTOCLIP: 4203 4221 case IDM_APPENDTOCLIPFILENAME: 4204 case IDM_SAVETOCLIP:4222 case IDM_SAVETOCLIP: 4205 4223 case IDM_SAVETOCLIPFILENAME: 4206 case IDM_SAVETOLIST:4207 case IDM_INFO:4208 case IDM_ATTRS:4209 case IDM_MOVE:4210 case IDM_COPY:4211 case IDM_RENAME:4212 case IDM_MOVEPRESERVE:4213 case IDM_COPYPRESERVE:4214 case IDM_WILDMOVE:4215 case IDM_WILDCOPY:4216 case IDM_SUBJECT:4217 case IDM_PRINT:4218 case IDM_EAS:4219 case IDM_ARCHIVE:4220 case IDM_EXTRACT:4221 case IDM_UUDECODE:4222 case IDM_OBJECT:4223 case IDM_SHADOW:4224 case IDM_OPENSETTINGS:4225 case IDM_OPENDEFAULT:4226 if (!PostMsg(pAD->hwndObj, UM_MASSACTION, mp1, MPFROMP(list)))4227 FreeList(list);4228 break;4229 }4230 if (fUnHilite) {4231 Mark(hwnd, AFM_UNMARK, NULL);4232 WinInvalidateRect(hwnd, NULL, FALSE);4233 }4234 }4235 }4236 break;4237 4238 case IDM_COLLECTOR:4239 if (mp2) {4240 4241 CHAR **list = mp2;4242 4243 if (Collector) {4244 if (!PostMsg(Collector, WM_COMMAND,4245 MPFROM2SHORT(IDM_COLLECTOR, 0), MPFROMP(list)))4246 FreeList(list);4247 else if (fUnHilite) {4248 Mark(hwnd, AFM_UNMARK, NULL);4249 WinInvalidateRect(hwnd, NULL, FALSE);4250 }4251 }4252 else4253 FreeList(list);4254 }4255 break;4256 }4257 DosReleaseMutexSem(pAD->hmtxScan);4224 case IDM_SAVETOLIST: 4225 case IDM_INFO: 4226 case IDM_ATTRS: 4227 case IDM_MOVE: 4228 case IDM_COPY: 4229 case IDM_RENAME: 4230 case IDM_MOVEPRESERVE: 4231 case IDM_COPYPRESERVE: 4232 case IDM_WILDMOVE: 4233 case IDM_WILDCOPY: 4234 case IDM_SUBJECT: 4235 case IDM_PRINT: 4236 case IDM_EAS: 4237 case IDM_ARCHIVE: 4238 case IDM_EXTRACT: 4239 case IDM_UUDECODE: 4240 case IDM_OBJECT: 4241 case IDM_SHADOW: 4242 case IDM_OPENSETTINGS: 4243 case IDM_OPENDEFAULT: 4244 if (!PostMsg(pAD->hwndObj, UM_MASSACTION, mp1, MPFROMP(list))) 4245 FreeList(list); 4246 break; 4247 } 4248 if (fUnHilite) { 4249 Mark(hwnd, AFM_UNMARK, NULL); 4250 WinInvalidateRect(hwnd, NULL, FALSE); 4251 } 4252 } 4253 } 4254 break; 4255 4256 case IDM_COLLECTOR: 4257 if (mp2) { 4258 4259 CHAR **list = mp2; 4260 4261 if (Collector) { 4262 if (!PostMsg(Collector, WM_COMMAND, 4263 MPFROM2SHORT(IDM_COLLECTOR, 0), MPFROMP(list))) 4264 FreeList(list); 4265 else if (fUnHilite) { 4266 Mark(hwnd, AFM_UNMARK, NULL); 4267 WinInvalidateRect(hwnd, NULL, FALSE); 4268 } 4269 } 4270 else 4271 FreeList(list); 4272 } 4273 break; 4274 } 4275 DosReleaseMutexSem(pAD->hmtxScan); 4258 4276 } 4259 4277 else if (SHORT1FROMMP(mp1) == IDM_COLLECTOR) { 4260 DosSleep(50);//05 Aug 07 GKY 1004261 if (!PostMsg(hwnd, msg, mp1, mp2))4262 WinSendMsg(hwnd, msg, mp1, mp2);4278 DosSleep(50);//05 Aug 07 GKY 100 4279 if (!PostMsg(hwnd, msg, mp1, mp2)) 4280 WinSendMsg(hwnd, msg, mp1, mp2); 4263 4281 } 4264 4282 break; … … 4266 4284 case IDM_HELP: 4267 4285 if (hwndHelp) 4268 WinSendMsg(hwndHelp,4269 HM_DISPLAY_HELP,4270 MPFROM2SHORT(HELP_SEEALL, 0), MPFROMSHORT(HM_RESOURCEID));4286 WinSendMsg(hwndHelp, 4287 HM_DISPLAY_HELP, 4288 MPFROM2SHORT(HELP_SEEALL, 0), MPFROMSHORT(HM_RESOURCEID)); 4271 4289 break; 4272 4290 } … … 4290 4308 pAD->stopflag = 1; 4291 4309 if (pAD->hmtxScan) { 4292 DosRequestMutexSem(pAD->hmtxScan, 15000);4293 DosCloseMutexSem(pAD->hmtxScan);4310 DosRequestMutexSem(pAD->hmtxScan, 15000); 4311 DosCloseMutexSem(pAD->hmtxScan); 4294 4312 } 4295 4313 if (pAD->hwndPopup) 4296 WinDestroyWindow(pAD->hwndPopup);4314 WinDestroyWindow(pAD->hwndPopup); 4297 4315 if (pAD->hwndObj) { 4298 if (!PostMsg(pAD->hwndObj, WM_CLOSE, MPVOID, MPVOID))4299 WinSendMsg(pAD->hwndObj, WM_CLOSE, MPVOID, MPVOID);4316 if (!PostMsg(pAD->hwndObj, WM_CLOSE, MPVOID, MPVOID)) 4317 WinSendMsg(pAD->hwndObj, WM_CLOSE, MPVOID, MPVOID); 4300 4318 } 4301 4319 if (pAD->hps) { 4302 GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID);4303 GpiAssociate(pAD->hps, 0);4304 GpiDestroyPS(pAD->hps);4320 GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID); 4321 GpiAssociate(pAD->hps, 0); 4322 GpiDestroyPS(pAD->hps); 4305 4323 } 4306 4324 if (pAD->killme) { 4307 if (!PostMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID))4308 WinSendMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID);4325 if (!PostMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID)) 4326 WinSendMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID); 4309 4327 } 4310 4328 FreeAllFilesList(hwnd); … … 4320 4338 } 4321 4339 4322 HWND StartSeeAll(HWND hwndParent, BOOL standalone, // called by applet4323 CHAR * pszStartPath)// pathname or NULL4340 HWND StartSeeAll(HWND hwndParent, BOOL standalone, // called by applet 4341 CHAR * pszStartPath) // pathname or NULL 4324 4342 { 4325 4343 HWND hwndFrame = (HWND) 0, hwndClient; … … 4332 4350 FrameFlags |= (FCF_TASKLIST | FCF_SHELLPOSITION); 4333 4351 hwndFrame = WinCreateStdWindow(hwndParent, 4334 WS_VISIBLE,4335 &FrameFlags,4336 WC_SEEALL,4337 GetPString(IDS_SEEALLTITLETEXT),4338 WS_VISIBLE | fwsAnimate,4339 FM3ModHandle, SEEALL_FRAME, &hwndClient);4352 WS_VISIBLE, 4353 &FrameFlags, 4354 WC_SEEALL, 4355 GetPString(IDS_SEEALLTITLETEXT), 4356 WS_VISIBLE | fwsAnimate, 4357 FM3ModHandle, SEEALL_FRAME, &hwndClient); 4340 4358 if (hwndFrame) { 4341 4359 static CHAR *pszDir; … … 4343 4361 if (standalone) { 4344 4362 if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 4345 UM_SETUP4, MPVOID, MPVOID)) {4346 PostMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID);4347 return (HWND) 0;4363 UM_SETUP4, MPVOID, MPVOID)) { 4364 PostMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID); 4365 return (HWND) 0; 4348 4366 } 4349 4367 } … … 4351 4369 // Needs to be static for other thread 4352 4370 if (!pszDir) 4353 pszDir = xmalloc(CCHMAXPATH, pszSrcFile, __LINE__);4371 pszDir = xmalloc(CCHMAXPATH, pszSrcFile, __LINE__); 4354 4372 if (pszDir) { 4355 strcpy(pszDir, pszStartPath);4356 pszStartPath = pszDir;4373 strcpy(pszDir, pszStartPath); 4374 pszStartPath = pszDir; 4357 4375 } 4358 4376 } 4359 4377 PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT), 4360 UM_SETUP5, MPFROMP(pszStartPath), MPVOID);4378 UM_SETUP5, MPFROMP(pszStartPath), MPVOID); 4361 4379 } 4362 4380 else if (standalone) -
trunk/dll/select.c
r1039 r1158 47 47 #include "errutil.h" // Dos_Error... 48 48 #include "strutil.h" // GetPString 49 #include "select.h" 50 #include "valid.h" // TestCDates 49 51 #include "fm3dll.h" 50 52 #include "fortify.h" -
trunk/dll/shadow.c
r1047 r1158 28 28 #include "errutil.h" // Dos_Error... 29 29 #include "strutil.h" // GetPString 30 #include "shadow.h" 30 31 #include "fm3dll.h" 31 32 #include "fortify.h" … … 34 35 35 36 static PSZ pszSrcFile = __FILE__; 37 38 static HOBJECT CreateDataObject(CHAR * objtitle, CHAR * location, CHAR * path, 39 CHAR * cnr); 40 static HOBJECT CreateFolderObject(CHAR * objtitle, CHAR * cnr); 41 42 static HOBJECT CreateProgramObject(CHAR * objtitle, CHAR * location, CHAR * path, 43 CHAR * cnr); 44 static HOBJECT CreateShadowObject(CHAR * objtitle, CHAR * location, CHAR * path, 45 BOOL executable, CHAR * cnr); 36 46 37 47 HOBJECT CreateProgramObject(CHAR * objtitle, CHAR * location, CHAR * path, -
trunk/dll/worker.c
r1140 r1158 1 2 1 /*********************************************************************** 3 2 … … 57 56 #include "strutil.h" // GetPString 58 57 #include "notebook.h" // External viewers 58 #include "worker.h" // Action 59 #include "notify.h" // AddNote 60 #include "copyf.h" // AdjustWildcardName, make_deleteable 61 #include "attribs.h" // AttrListDlgProc 62 #include "chklist.h" // CheckListProc 63 #include "info.h" // DrvInfoProc 64 #include "extract.h" // ExtractDlgProc 65 #include "info.h" // FileInfoProc 66 #include "valid.h" // GetDesktopName, IsNewer 67 #include "saveclip.h" // ListToClipboardHab 68 #include "shadow.h" // MakeShadows 69 #include "mkdir.h" // MassMkdir 70 #include "uudecode.h" // MergeDlgProc 71 #include "objcnr.h" // ObjCnrDlgProc 72 #include "printer.h" // PrintDlgProc, PrintListThread 73 #include "rename.h" // RenameProc 74 #include "srchpath.h" // RunFM2Util 75 #include "mainwnd.h" // TopWindowName 76 #include "uudecode.h" // UUD 77 #include "walkem.h" // WalkCopyDlgProc, WalkDlgProc, WalkMoveDlgProc 59 78 #include "fm3dll.h" 60 79
Note:
See TracChangeset
for help on using the changeset viewer.
