Changeset 1394
- Timestamp:
- Feb 5, 2009, 5:17:25 AM (17 years ago)
- Location:
- trunk
- Files:
-
- 3 deleted
- 44 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/HISTORY
r1385 r1394 1 1 New stuff's at the top. This list is not necessarily complete. 2 3 3.16 4 o Correct walk, compare and dirsizes dialog setups to ignore saved dialog size 5 o Move translatable strings to fm3dll.rc STRINGTABLE to support NLS translations 2 6 3 7 3.15 -
trunk/dll/arccnrs.c
r1339 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 11 Jun 02 SHL Ensure archive name not garbage … … 212 212 priority_normal(); 213 213 ret = runemf2(WaitChild->RunFlags, WaitChild->hwndClient, 214 214 WaitChild->pszSrcFile, WaitChild->uiLineNumber, 215 215 WaitChild->pszDirectory, WaitChild->pszEnvironment, 216 216 WaitChild->formatstring, WaitChild->pszCmdLine); … … 1075 1075 { 1076 1076 USHORT id = WinQueryWindowUShort(hwnd, QWS_ID); 1077 char *s = NULL;1077 PCSZ s = NULL; 1078 1078 1079 1079 if (fOtherHelp) { … … 1599 1599 return 0; 1600 1600 } 1601 1602 1601 sprintf(WaitChild->pszCmdLine, "%s %s %s", 1602 dcd->info->exwdirs ? dcd->info->exwdirs : 1603 1603 dcd->info->extract, 1604 1604 BldQuotedFileName(szQuotedArcName, dcd->arcname), … … 1625 1625 WaitChild->RunFlags = SEPARATE | ASYNCHRONOUS | WAIT | 1626 1626 (fArcStuffVisible ? 0 : BACKGROUND); 1627 1628 1629 1630 1627 WaitChild->hwndClient = dcd->hwndClient; 1628 WaitChild->msg = UM_ENTER; 1629 WaitChild->uiLineNumber = __LINE__; 1630 WaitChild->pszSrcFile = pszSrcFile; 1631 1631 WaitChild->pszDirectory = xstrdup(dcd->workdir, pszSrcFile, __LINE__); 1632 1632 WaitChild->pszEnvironment = NULL; … … 1901 1901 } 1902 1902 } 1903 1904 1905 1906 1907 1903 z = x; 1904 runemf2(SEPARATE | WINDOWED | WAIT | 1905 (fArcStuffVisible ? 0 : BACKGROUND | MINIMIZED), 1906 hwnd, pszSrcFile, __LINE__, 1907 li->targetpath, NULL, "%s", pszCmdLine); 1908 1908 *endofit = 0; 1909 1909 } while (li->list[x]); … … 2531 2531 pfi->flData = CFA_STRING | CFA_LEFT | CFA_FIREADONLY; 2532 2532 pfi->flTitle = CFA_CENTER; 2533 pfi->pTitleData = GetPString(IDS_FILENAMECOLTEXT);2533 pfi->pTitleData = (PSZ)GetPString(IDS_FILENAMECOLTEXT); 2534 2534 pfi->offStruct = FIELDOFFSET(ARCITEM, pszDisplayName); 2535 2535 pfiLastLeftCol = pfi; … … 2538 2538 CFA_ULONG | CFA_RIGHT | CFA_SEPARATOR | CFA_FIREADONLY; 2539 2539 pfi->flTitle = CFA_CENTER; 2540 pfi->pTitleData = GetPString(IDS_OLDSIZECOLTEXT);2540 pfi->pTitleData = (PSZ)GetPString(IDS_OLDSIZECOLTEXT); 2541 2541 pfi->offStruct = FIELDOFFSET(ARCITEM, cbFile); 2542 2542 pfi = pfi->pNextFieldInfo; … … 2544 2544 CFA_ULONG | CFA_RIGHT | CFA_SEPARATOR | CFA_FIREADONLY; 2545 2545 pfi->flTitle = CFA_CENTER; 2546 pfi->pTitleData = GetPString(IDS_NEWSIZECOLTEXT);2546 pfi->pTitleData = (PSZ)GetPString(IDS_NEWSIZECOLTEXT); 2547 2547 pfi->offStruct = FIELDOFFSET(ARCITEM, cbComp); 2548 2548 pfi = pfi->pNextFieldInfo; … … 2550 2550 CFA_STRING | CFA_CENTER | CFA_SEPARATOR | CFA_FIREADONLY; 2551 2551 pfi->flTitle = CFA_CENTER | CFA_FITITLEREADONLY; 2552 pfi->pTitleData = GetPString(IDS_DATETIMECOLTEXT);2552 pfi->pTitleData = (PSZ)GetPString(IDS_DATETIMECOLTEXT); 2553 2553 pfi->offStruct = FIELDOFFSET(ARCITEM, pszDate); 2554 2554 pfi = pfi->pNextFieldInfo; 2555 2555 pfi->flData = CFA_DATE | CFA_RIGHT | CFA_FIREADONLY; 2556 2556 pfi->flTitle = CFA_CENTER; 2557 pfi->pTitleData = GetPString(IDS_DATECOLTEXT);2557 pfi->pTitleData = (PSZ)GetPString(IDS_DATECOLTEXT); 2558 2558 pfi->offStruct = FIELDOFFSET(ARCITEM, date); 2559 2559 pfi = pfi->pNextFieldInfo; 2560 2560 pfi->flData = CFA_TIME | CFA_RIGHT | CFA_FIREADONLY; 2561 2561 pfi->flTitle = CFA_CENTER | CFA_FITITLEREADONLY; 2562 pfi->pTitleData = GetPString(IDS_TIMECOLTEXT);2562 pfi->pTitleData = (PSZ)GetPString(IDS_TIMECOLTEXT); 2563 2563 pfi->offStruct = FIELDOFFSET(ARCITEM, time); 2564 2564 memset(&fii, 0, sizeof(FIELDINFOINSERT)); … … 3585 3585 IDM_FILTER, 3586 3586 0}; 3587 char *szHelpString = NULL;3587 PCSZ szHelpString = NULL; 3588 3588 3589 3589 -
trunk/dll/avv.c
r1391 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2004, 200 8Steven H.Levine9 Copyright (c) 2004, 2009 Steven H.Levine 10 10 11 11 31 Jul 04 SHL ArcReviewDlgProc: correct nameis... decodes … … 406 406 apptype &= (~FAPPTYP_32BIT); 407 407 if (!apptype || 408 409 410 411 408 (apptype == FAPPTYP_NOTWINDOWCOMPAT) || 409 (apptype == FAPPTYP_WINDOWCOMPAT) || 410 (apptype & FAPPTYP_BOUND) || 411 (apptype & FAPPTYP_WINDOWAPI) || (apptype & FAPPTYP_DOS)) { 412 412 *error = 0; 413 413 } … … 425 425 BOOL noStart = FALSE, noEnd = FALSE, badPos = FALSE; 426 426 INT badList = 0, badCreate = 0, badExtract = 0; 427 static P SZ aerrors[3];427 static PCSZ aerrors[3]; 428 428 429 429 aerrors[0] = GetPString(IDS_STARTLISTEMPTYTEXT); -
trunk/dll/chklist.c
r1301 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2005, 200 8Steven H.Levine9 Copyright (c) 2005, 2009 Steven H.Levine 10 10 11 11 10 Jan 05 SHL Allow DND_TARGET to hold CCHMAXPATH … … 172 172 *szBuffer = 0; 173 173 WinSendDlgItemMsg(hwnd, CHECK_LISTBOX, LM_QUERYITEMTEXT, 174 175 174 MPFROM2SHORT(x, CCHMAXPATH), MPFROMP(szBuffer)); 175 cl = WinQueryWindowPtr(hwnd, QWL_USER); 176 176 if (*szBuffer && !(cl->flags & CHECK_ARCHIVE)) 177 177 QuickView(hwnd, szBuffer); … … 451 451 fdlg.fl = FDS_HELPBUTTON | FDS_CENTER | 452 452 FDS_OPEN_DIALOG | FDS_CUSTOM; 453 fdlg.pszTitle = GetPString(IDS_NEWTARGETTEXT);454 fdlg.pszOKButton = GetPString(IDS_CHANGETEXT);453 fdlg.pszTitle = (PSZ)GetPString(IDS_NEWTARGETTEXT); 454 fdlg.pszOKButton = (PSZ)GetPString(IDS_CHANGETEXT); 455 455 *drive = *cl->prompt; 456 456 drive[1] = ':'; -
trunk/dll/collect.c
r1375 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2003, 200 8Steven H. Levine9 Copyright (c) 2003, 2009 Steven H. Levine 10 10 11 11 15 Oct 02 MK Baseline … … 292 292 { 293 293 USHORT id = WinQueryWindowUShort(hwnd, QWS_ID); 294 char *s = NULL;294 PCSZ s = NULL; 295 295 296 296 if (fOtherHelp) { … … 1384 1384 MPVOID, MPFROM2SHORT(0, CMA_ERASE | CMA_REPOSITION)); 1385 1385 disable_menuitem(WinWindowFromID(WinQueryWindow(hwndMain, QW_PARENT), 1386 1386 FID_MENU), IDM_GREP, FALSE); 1387 1387 disable_menuitem(TreeMenu, IDM_GREP, FALSE); 1388 1388 disable_menuitem(DirMenu, IDM_GREP, FALSE); … … 1938 1938 "Collector busy - please try again later"); 1939 1939 } 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1940 else { 1941 GREPINFO *GrepInfo; 1942 1943 GrepInfo = xmallocz(sizeof(GREPINFO), pszSrcFile, __LINE__); 1944 if (GrepInfo) { 1945 GrepInfo->hwnd = &hwnd; 1946 if (mp2) 1947 GrepInfo->szGrepPath = mp2; 1948 if (WinDlgBox(HWND_DESKTOP, hwnd, GrepDlgProc, 1949 FM3ModHandle, GREP_FRAME, (PVOID) GrepInfo)) { 1950 free(GrepInfo); 1951 dcd->amextracted = TRUE; // Say busy scanning 1952 disable_menuitem(WinWindowFromID 1953 (WinQueryWindow(hwndMain, QW_PARENT), FID_MENU), 1954 IDM_GREP, TRUE); 1955 disable_menuitem(TreeMenu, IDM_GREP, TRUE); 1956 disable_menuitem(DirMenu, IDM_GREP, TRUE); 1957 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 1958 } 1959 else 1960 free(GrepInfo); 1961 1961 } 1962 1962 } … … 2378 2378 numitems = DrgQueryDragitemCount(pDInfo); 2379 2379 usOperation = pDInfo->usOperation; 2380 2381 2380 if (usOperation == DO_DEFAULT) 2381 usOperation = fCopyDefault ? DO_COPY : DO_MOVE; 2382 2382 FreeDragInfoData(hwnd, pDInfo); 2383 2383 saymsg(MB_ENTER | MB_ICONASTERISK, … … 2905 2905 IDM_REMOVE, 2906 2906 0}; 2907 char *szHelpString = NULL;2907 PCSZ szHelpString = NULL; 2908 2908 2909 2909 -
trunk/dll/comp.c
r1391 r1394 7 7 8 8 Copyright (c) 1993-02 M. Kimes 9 Copyright (c) 2003, 200 8Steven H. Levine9 Copyright (c) 2003, 2009 Steven H. Levine 10 10 11 11 16 Oct 02 MK Baseline … … 553 553 break; 554 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 555 case IDM_MOVE: 556 { 557 BOOL fResetVerify = FALSE; 558 559 if (hwndCnrS == WinWindowFromID(cmp->hwnd, COMP_RIGHTDIR)) 560 BldFullPathName(szNewName, cmp->leftdir, pciS->pszDisplayName); 561 else 562 BldFullPathName(szNewName, cmp->rightdir, pciS->pszDisplayName); 563 // Make directory if required 564 strcpy(szDirName, szNewName); 565 p = strrchr(szDirName, '\\'); 566 if (fVerify && (driveflags[toupper(*szNewName) - 'A'] & DRIVE_WRITEVERIFYOFF || 567 driveflags[toupper(*pciS->pszFileName) - 'A'] & DRIVE_WRITEVERIFYOFF)) { 568 DosSetVerify(FALSE); 569 fResetVerify = TRUE; 570 } 571 if (p) { 572 if (p > szDirName + 2) 573 p++; 574 *p = 0; 575 if (IsFile(szDirName) == -1) 576 MassMkdir(hwndMain, szDirName); 577 } 578 rc = docopyf(MOVE, pciS->pszFileName, "%s", szNewName); 579 if (fResetVerify) { 580 DosSetVerify(fVerify); 581 fResetVerify = FALSE; 582 } 583 if (!rc && stricmp(pciS->pszFileName, szNewName)) { 584 WinSendMsg(hwndCnrS, CM_SETRECORDEMPHASIS, MPFROMP(pciS), 585 MPFROM2SHORT(FALSE, CRA_SELECTED)); 586 if (pciD->rc.flRecordAttr & CRA_SELECTED) 587 WinSendMsg(hwndCnrD, CM_SETRECORDEMPHASIS, MPFROMP(pciD), 588 MPFROM2SHORT(FALSE, CRA_SELECTED)); 589 FreeCnrItemData(pciD); 590 pciD->pszFileName = xstrdup(szNewName, pszSrcFile, __LINE__); 591 if (hwndCnrS == WinWindowFromID(cmp->hwnd, COMP_RIGHTDIR)) { 592 pciD->pszDisplayName = pciD->pszFileName + strlen(cmp->leftdir); 593 if (cmp->leftdir[strlen(cmp->leftdir) - 1] != '\\') 594 pciD->pszDisplayName++; 595 } 596 else { 597 pciD->pszDisplayName = pciD->pszFileName + strlen(cmp->rightdir); 598 if (cmp->rightdir[strlen(cmp->rightdir) - 1] != '\\') 599 pciD->pszDisplayName++; 600 } 601 pciD->pszLongName = pciS->pszLongName; 602 pciS->pszLongName = NullStr; // 07 Sep 08 SHL avoid aliased pointer 603 if (pciD->pszSubject != NullStr) { 604 xfree(pciD->pszSubject, pszSrcFile, __LINE__); 605 pciD->pszSubject = NullStr; 606 } 607 pciD->attrFile = pciS->attrFile; 608 pciD->pszDispAttr = pciS->pszDispAttr; 609 pciD->flags = 0; // Just on one side 610 pciD->date = pciS->date; 611 pciD->time = pciS->time; 612 pciD->ladate = pciS->ladate; 613 pciD->latime = pciS->latime; 614 pciD->crdate = pciS->crdate; 615 pciD->crtime = pciS->crtime; 616 pciD->cbFile = pciS->cbFile; 617 pciD->easize = pciS->easize; 618 619 if (pciS->pszFileName != NullStr) { 620 xfree(pciS->pszFileName, pszSrcFile, __LINE__); 621 pciS->pszFileName = NullStr; 622 pciS->pszDisplayName = pciS->pszFileName; 623 pciS->rc.pszIcon = pciS->pszFileName; 624 } 625 if (pciS->pszSubject != NullStr) { 626 xfree(pciS->pszSubject, pszSrcFile, __LINE__); 627 pciS->pszSubject = NullStr; 628 } 629 pciS->flags = 0; // Just on one side 630 631 WinSendMsg(hwndCnrS, CM_INVALIDATERECORD, MPFROMP(&pciS), 632 MPFROM2SHORT(1, CMA_ERASE | CMA_TEXTCHANGED)); 633 634 WinSendMsg(hwndCnrD, CM_INVALIDATERECORD, MPFROMP(&pciD), 635 MPFROM2SHORT(1, CMA_ERASE | CMA_TEXTCHANGED)); 636 637 if (hwndCnrS == WinWindowFromID(cmp->hwnd, COMP_LEFTDIR)) 638 cmp->cmp->totalleft--; 639 else 640 cmp->cmp->totalright--; 641 } 642 else if (rc) { 643 rc = Dos_Error(MB_ENTERCANCEL, 644 rc, 645 HWND_DESKTOP, 646 pszSrcFile, 647 __LINE__, 648 GetPString(IDS_COMPMOVEFAILEDTEXT), 649 pciS->pszFileName, szNewName); 650 if (rc == MBID_CANCEL) // Cause loop to break 651 pciNextS = NULL; 652 } 653 break; 654 } 655 656 case IDM_COPY: 657 { 658 BOOL fResetVerify = FALSE; 659 660 if (hwndCnrS == WinWindowFromID(cmp->hwnd, COMP_RIGHTDIR)) 661 BldFullPathName(szNewName, cmp->leftdir, pciS->pszDisplayName); 662 else 663 BldFullPathName(szNewName, cmp->rightdir, pciS->pszDisplayName); 664 // Make directory if required 665 strcpy(szDirName, szNewName); 666 p = strrchr(szDirName, '\\'); 667 if (fVerify && (driveflags[toupper(*szNewName) - 'A'] & DRIVE_WRITEVERIFYOFF || 668 driveflags[toupper(*pciS->pszFileName) - 'A'] & DRIVE_WRITEVERIFYOFF)) { 669 DosSetVerify(FALSE); 670 fResetVerify = TRUE; 671 } 672 if (p) { 673 if (p > szDirName + 2) 674 p++; 675 *p = 0; 676 if (IsFile(szDirName) == -1) 677 MassMkdir(hwndMain, szDirName); 678 } 679 rc = docopyf(COPY, pciS->pszFileName, "%s", szNewName); 680 if (fResetVerify) { 681 DosSetVerify(fVerify); 682 fResetVerify = FALSE; 683 } 684 if (rc) { 685 rc = Dos_Error(MB_ENTERCANCEL, 686 rc, 687 HWND_DESKTOP, 688 pszSrcFile, 689 __LINE__, 690 GetPString(IDS_COMPCOPYFAILEDTEXT), 691 pciS->pszFileName, szNewName); 692 if (rc == MBID_CANCEL) 693 pciNextS = NULL; // Cause loop to break 694 } 695 else { 696 WinSendMsg(hwndCnrS, CM_SETRECORDEMPHASIS, MPFROMP(pciS), 697 MPFROM2SHORT(FALSE, CRA_SELECTED)); 698 if (pciD->rc.flRecordAttr & CRA_SELECTED) 699 WinSendMsg(hwndCnrD, CM_SETRECORDEMPHASIS, MPFROMP(pciD), 700 MPFROM2SHORT(FALSE, CRA_SELECTED)); 701 // 12 Jan 08 SHL 702 if (pciD->pszFileName == NullStr) { 703 if (hwndCnrD == WinWindowFromID(cmp->hwnd, COMP_LEFTDIR)) 704 cmp->totalleft++; 705 else 706 cmp->totalright++; 707 } 708 FreeCnrItemData(pciD); 709 pciD->pszFileName = xstrdup(szNewName, pszSrcFile, __LINE__); 710 if (hwndCnrS == WinWindowFromID(cmp->hwnd, COMP_RIGHTDIR)) { 711 pciD->pszDisplayName = pciD->pszFileName + strlen(cmp->leftdir); 712 if (cmp->leftdir[strlen(cmp->leftdir) - 1] != '\\') 713 pciD->pszDisplayName++; 714 } 715 else { 716 pciD->pszDisplayName = pciD->pszFileName + strlen(cmp->rightdir); 717 if (cmp->rightdir[strlen(cmp->rightdir) - 1] != '\\') 718 pciD->pszDisplayName++; 719 } 720 pciD->attrFile = pciS->attrFile; 721 pciD->pszDispAttr = pciS->pszDispAttr; 722 pciD->flags = CNRITEM_EXISTS; // Now on both sides 723 pciD->date = pciS->date; 724 pciD->time = pciS->time; 725 pciD->ladate = pciS->ladate; 726 pciD->latime = pciS->latime; 727 pciD->crdate = pciS->crdate; 728 pciD->crtime = pciS->crtime; 729 pciD->cbFile = pciS->cbFile; 730 pciD->easize = pciS->easize; 731 732 // Forget status until we regenerate it 733 if (pciS->pszSubject != NullStr) { 734 xfree(pciS->pszSubject, pszSrcFile, __LINE__); 735 pciS->pszSubject = NullStr; 736 } 737 pciS->flags = CNRITEM_EXISTS; // Now on both sides 738 739 WinSendMsg(hwndCnrS, CM_INVALIDATERECORD, MPFROMP(&pciS), 740 MPFROM2SHORT(1, CMA_ERASE | CMA_TEXTCHANGED)); 741 WinSendMsg(hwndCnrD, CM_INVALIDATERECORD, MPFROMP(&pciD), 742 MPFROM2SHORT(1, CMA_ERASE | CMA_TEXTCHANGED)); 743 } 744 break; 745 } 746 746 747 747 default: … … 2211 2211 2212 2212 PrfQueryProfileData(fmprof, FM3Str, "CompDir.Position", (PVOID) &swp, &size); 2213 swp.fl &= ~SWP_SIZE; // 04 Feb 09 SHL ignore saved size 2213 2214 WinSetWindowPos(hwnd, 2214 2215 HWND_TOP, … … 2230 2231 }; 2231 2232 UINT x; 2232 2233 2233 for (x = 0; ids[x]; x++) { 2234 //fixme to allow user to change presparams 1-10-09 GKY 2234 2235 SetPresParams(WinWindowFromID(hwnd, ids[x]), 2235 2236 &RGBGREY, -
trunk/dll/dircnrs.c
r1375 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 16 Oct 02 SHL Handle large partitions … … 363 363 { 364 364 USHORT id = WinQueryWindowUShort(hwnd, QWS_ID); 365 char *s = NULL;365 PCSZ s = NULL; 366 366 367 367 if (fOtherHelp) { … … 703 703 numentries++; 704 704 if (numentries) 705 705 UpdateCnrList(dcd->hwndCnr, list, numentries, TRUE, dcd); 706 706 } 707 707 return 0; … … 1941 1941 } 1942 1942 } 1943 1943 break; 1944 1944 1945 1945 case IDM_FINDINTREE: … … 2147 2147 } 2148 2148 else 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2149 StartCollector(dcd->hwndParent, 4); 2150 if (SHORT1FROMMP(mp1) == IDM_GREP) { 2151 PCNRITEM pci = NULL; 2152 2153 pci = WinSendMsg(hwnd, 2154 CM_QUERYRECORDEMPHASIS, 2155 MPFROMLONG(CMA_FIRST), MPFROMSHORT(CRA_CURSORED)); 2156 if (pci && (INT) pci != -1) 2157 PostMsg(Collector, WM_COMMAND, 2158 MPFROM2SHORT(IDM_GREP, 0), MPFROMP(pci->pszFileName)); 2159 else 2160 PostMsg(Collector, WM_COMMAND, 2161 MPFROM2SHORT(IDM_GREP, 0), MPVOID); 2162 } 2163 else 2164 2164 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_COLLECTOR, 0), MPVOID); 2165 2165 break; … … 2925 2925 else { 2926 2926 numitems = DrgQueryDragitemCount(pDInfo); 2927 2928 2929 2927 usOperation = pDInfo->usOperation; 2928 if (usOperation == DO_DEFAULT) 2929 usOperation = fCopyDefault ? DO_COPY : DO_MOVE; 2930 2930 FreeDragInfoData(hwnd, pDInfo); 2931 2931 saymsg(MB_ENTER | MB_ICONASTERISK, … … 3620 3620 WC_DIRCONTAINER, 3621 3621 NULL, 3622 3622 WS_VISIBLE | fwsAnimate, 3623 3623 FM3ModHandle, DIR_FRAME, &hwndClient); 3624 3624 if (hwndFrame && hwndClient) { … … 3729 3729 SWP_SIZE | SWP_MOVE | SWP_SHOW | SWP_ZORDER | 3730 3730 SWP_ACTIVATE); 3731 3732 3731 } 3732 WinShowWindow(dcd->hwndCnr, TRUE); 3733 3733 } 3734 3734 } -
trunk/dll/dirsize.c
r1347 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 16 Oct 02 SHL Handle large partitions … … 518 518 519 519 PrfQueryProfileData(fmprof, FM3Str, "DirSizes.Position", (PVOID) &swp, &size); 520 swp.fl &= ~SWP_SIZE; // 04 Feb 09 SHL ignore saved size 520 521 WinSetWindowPos(hwnd, 521 522 HWND_TOP, -
trunk/dll/droplist.c
r1347 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2003, 200 8Steven H.Levine9 Copyright (c) 2003, 2009 Steven H.Levine 10 10 11 11 22 Nov 02 SHL Baseline … … 272 272 } 273 273 274 void DropHelp(MPARAM mp1, MPARAM mp2, HWND hwnd, char *text)274 void DropHelp(MPARAM mp1, MPARAM mp2, HWND hwnd, PCSZ text) 275 275 { 276 276 ULONG numitems; … … 281 281 } 282 282 283 LISTINFO *DoFileDrop(HWND hwndCnr, CHAR *directory, BOOL arcfilesok,283 LISTINFO *DoFileDrop(HWND hwndCnr, PCSZ directory, BOOL arcfilesok, 284 284 MPARAM mp1, MPARAM mp2) 285 285 { … … 424 424 425 425 CHAR **test; 426 427 426 PULONG pltest; 427 PULONGLONG plltest; 428 428 429 429 numalloc += 12; -
trunk/dll/droplist.h
r1222 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2008 Steven H. Levine9 Copyright (c) 2008, 2009 Steven H. Levine 10 10 11 11 Change log … … 20 20 BOOL AcceptOneDrop(HWND hwnd, MPARAM mp1, MPARAM mp2); 21 21 BOOL CheckPmDrgLimit(PDRAGINFO pDInfo); 22 LISTINFO *DoFileDrop(HWND hwndCnr, CHAR *directory, BOOL arcfilesok,22 LISTINFO *DoFileDrop(HWND hwndCnr, PCSZ directory, BOOL arcfilesok, 23 23 MPARAM mp1, MPARAM mp2); 24 void DropHelp(MPARAM mp1, MPARAM mp2, HWND hwnd, char *text);24 void DropHelp(MPARAM mp1, MPARAM mp2, HWND hwnd, PCSZ text); 25 25 BOOL FullDrgName(PDRAGITEM pDItem, CHAR * buffer, ULONG buflen); 26 26 BOOL GetOneDrop(HWND hwnd, MPARAM mp1, MPARAM mp2, char *buffer, ULONG buflen); -
trunk/dll/fm3res.rc
r1392 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2003, 200 8Steven H. Levine9 Copyright (c) 2003, 2009 Steven H. Levine 10 10 11 11 08 Feb 03 SHL Enable SYS_FRAME … … 2356 2356 STRINGTABLE 2357 2357 BEGIN 2358 IDS_COPYRIGHT , COPYRIGHT_STRING;2359 IDS_OPENBUTTONHELP "Click this button to open a Directory\rContainer for the highlighted directory\rin the Drive Tree below. Or click B2 to\rWalk to a directory to open. Or drop an\robject here to open its directory."2360 IDS_OPENDROPHELP "Dropping here will open a Directory container for the item."2361 IDS_IDEALBUTTONHELP "Click this button to set FM/2's window\rsize to an ""ideal"" size."2362 IDS_LEDHELP "This control indicates how\rmany background threads\rare currently active.\rB1 = show list of active threads\rB2 = close list of active threads\rB3 or chord = FM/2 open windows dialog"2363 IDS_WALKBUTTONHELP "B1 = Open new directory\rB2 = Change directories\rB3 = Tile child windows"2358 IDS_COPYRIGHT COPYRIGHT_STRING 2359 IDS_OPENBUTTONHELP "Click this button to open a Directory\rContainer for the highlighted directory\rin the Drive Tree below. Or click B2 to\rWalk to a directory to open. Or drop an\robject here to open its directory." 2360 IDS_OPENDROPHELP "Dropping here will open a Directory container for the item." 2361 IDS_IDEALBUTTONHELP "Click this button to set FM/2's window\rsize to an ""ideal"" size." 2362 IDS_LEDHELP "This control indicates how\rmany background threads\rare currently active.\rB1 = show list of active threads\rB2 = close list of active threads\rB3 or chord = FM/2 open windows dialog" 2363 IDS_WALKBUTTONHELP "B1 = Open new directory\rB2 = Change directories\rB3 = Tile child windows" 2364 2364 IDS_QUICKBUTTONHELP "B1 = Toggle quicklists\rB2 = Toggle toolbar\rB3 = Toggle drive buttons\r" 2365 2365 IDS_ATTRSBUTTONHELP "This window shows the current\ritem's attributes.\rClick to change date\rand/or attributes." … … 2818 2818 IDS_EXTABTITLETEXT "FM/2: Set tabstop space equivalants" 2819 2819 IDS_VIEWABOUTTITLETEXT "About This Thing" 2820 IDS_VIEWABOUTTEXT "FM/2 Cheap Internal Viewer/Editor\r\rCopyright (c) 1993-98 M. Kimes\r(Barebones Software)\rCopyright (c) 2001, 200 7Steven Levine and Associates, Inc.\rAll Rights Reserved"2820 IDS_VIEWABOUTTEXT "FM/2 Cheap Internal Viewer/Editor\r\rCopyright (c) 1993-98 M. Kimes\r(Barebones Software)\rCopyright (c) 2001, 2009 Steven Levine and Associates, Inc.\rAll Rights Reserved" 2821 2821 IDS_LANERRORTITLETEXT "LAN Error report" 2822 2822 IDS_LANERROR2TITLETEXT "Don't forget" … … 2926 2926 IDS_INIDELETEKEYTEXT "Do you want to delete keyname ""%s""?" 2927 2927 IDS_INIDELETEAPPTEXT "Do you want to delete application ""%s""?" 2928 IDS_INIABOUTTEXT "FM/2 Cheap Internal INI Viewer\r\rCopyright (c) 1993-98 M. Kimes\r(Barebones Software)\rCopyright (c) 2001, 200 7Steven Levine and Associates, Inc.\rAll Rights Reserved"2928 IDS_INIABOUTTEXT "FM/2 Cheap Internal INI Viewer\r\rCopyright (c) 1993-98 M. Kimes\r(Barebones Software)\rCopyright (c) 2001, 2009 Steven Levine and Associates, Inc.\rAll Rights Reserved" 2929 2929 IDS_INITITLETEXT "FM/2: INI ""%s""" 2930 2930 IDS_INISEARCHHELPTEXT "Enter the characters to find.\r\rInput is case insensitive. Leading\rspaces are not stripped. Find\rnexts are made after the current\ritem, find firsts always start at\rthe top. Beep means no (more)\rmatches." … … 3271 3271 IDS_EDITREADONLYFILETEXT2 "%s is marked Read Only\n You will need to change its name to save." 3272 3272 3273 // Add strings that need to be combined by GetPString here 3273 3274 IDS_SUGGEST1TEXT1 "Based on what I've seen while scanning your drives, I would like to suggest the following Parameters for your FM/2 program object (explanation: each letter following the '/' character is a drive that probably should be excluded from viewing by FM/2" 3274 3275 IDS_SUGGEST1TEXT2 " (see READ.ME), and the '%%*' on the end just enables drag-and-drop to the program object%s):\r\r""%s""\r\rWould you like me to automagically place this in the Parameters field of the FM/2 program objects (note: existing Parameters will be replaced)?" -
trunk/dll/fm3str.h
r1391 r1394 4 4 $Id$ 5 5 6 Index for fm3dll.str (source) fm3res.str (compiled)6 Index for STRINGTABLE items in fm3res.rc 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2002, 200 6Steven H. Levine9 Copyright (c) 2002, 2009 Steven H. Levine 10 10 11 11 21 May 04 SHL Adjust IDS_NUMSTRS … … 23 23 26 Aug 08 GKY Error strings for require unique ID plus text and help strings for all tools 24 24 03 Jan 09 GKY Check for system that is protectonly to gray out Dos/Win command lines and prevent 25 25 Dos/Win programs from being inserted into the execute dialog with message why. 26 26 10 Jan 09 GKY Removed rotating strings for font samples as part of StringTable conversion 27 27 11 Jan 08 GKY Move strings that will need translating to stringtable from sting file cut to 28 255 where necessary 28 255 where necessary 29 04 Feb 09 SHL Switch to STRINGTABLE 29 30 30 31 ***********************************************************************/ … … 34 35 35 36 // Spares are named IDS_SPARE_### here 36 // Text in fm3dll.str will contain the notation Spare ###37 // Last string in fm3dll.str reserved for cvs id38 // Set IDS_NUMSTRS to max value here plus 239 40 #define IDS_NUMSTRS 100941 37 42 38 #define IDS_OPENBUTTONHELP 0 -
trunk/dll/fonts.c
r1391 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2008 Steven H. Levine9 Copyright (c) 2008, 2009 Steven H. Levine 10 10 11 11 05 Jan 08 SHL Sync … … 76 76 77 77 VOID SetPresParamFromFattrs(HWND hwnd, FATTRS * fattrs, 78 78 SHORT sNominalPointSize, FIXED fxPointSize) 79 79 { 80 80 … … 87 87 if ((((USHORT) FIXEDFRAC(fxPointSize) * 100) / 65536) > 0) 88 88 sprintf(&s[strlen(s)], "%hd.", 89 89 ((USHORT) FIXEDFRAC(fxPointSize) * 100) / 65536); 90 90 } 91 91 strcat(s, fattrs->szFacename); … … 125 125 //DosEnterCritSec(); //GKY 11-30-08 126 126 DosRequestMutexSem(hmtxFM2Globals, SEM_INDEFINITE_WAIT); 127 szPreview = GetPString(IDS_BLURB1TEXT); 127 szPreview = GetPString(IDS_BLURB1TEXT + counter++); 128 if (strcmp(szPreview, "0") == 0) { 129 counter = 0; 130 szPreview = GetPString(IDS_BLURB1TEXT + counter++); 131 } 128 132 DosReleaseMutexSem(hmtxFM2Globals); 129 133 //DosExitCritSec(); … … 157 161 WinReleasePS(fontdlg.hpsScreen); 158 162 SetPresParamFromFattrs(hwnd, &fontdlg.fAttrs, fontdlg.sNominalPointSize, 159 163 fontdlg.fxPointSize); 160 164 } 161 165 #endif … … 177 181 HPS hps; 178 182 FONTMETRICS fontMetrics; 179 CHAR szFamily[CCHMAXPATH], *szPreview; 183 CHAR szFamily[CCHMAXPATH]; 184 PCSZ pcszPreview; 180 185 static FIXED fxPointSize = 0; /* keep track of this for vector fonts */ 181 186 … … 184 189 //DosEnterCritSec(); //GKY 11-30-08 185 190 DosRequestMutexSem(hmtxFM2Globals, SEM_INDEFINITE_WAIT); 186 szPreview = GetPString(IDS_BLURB1TEXT); 191 // 12 Jan 09 SHL fixme to do multiple previews or rename to IDS_BLURBTEXT 192 pcszPreview = GetPString(IDS_BLURB1TEXT); 187 193 DosReleaseMutexSem(hmtxFM2Globals); 188 194 //DosExitCritSec(); … … 194 200 if (!(flags & 1)) 195 201 WinSendMsg(hwndMLE, MLM_QUERYFONT, 196 202 MPFROMP((PFATTRS) & (fontDlg.fAttrs)), NULL); 197 203 else 198 204 memcpy(&fontDlg.fAttrs, fattrs, sizeof(FATTRS)); … … 201 207 202 208 GpiCreateLogFont(hps, (PSTR8) fontDlg.fAttrs.szFacename, 1, 203 209 &(fontDlg.fAttrs)); 204 210 GpiSetCharSet(hps, 1); 205 211 GpiQueryFontMetrics(hps, sizeof(FONTMETRICS), &fontMetrics); … … 215 221 fontDlg.hpsPrinter = NULLHANDLE; /* Printer presentation space */ 216 222 217 fontDlg.pszTitle = GetPString(IDS_SETVIEWERFONTTITLETEXT);218 fontDlg.pszPreview = szPreview;223 fontDlg.pszTitle = (PSZ)GetPString(IDS_SETVIEWERFONTTITLETEXT); 224 fontDlg.pszPreview = (PSZ)pcszPreview; 219 225 fontDlg.pszPtSizeList = NULL; /* Application provided size list */ 220 226 fontDlg.pfnDlgProc = NULL; /* Dialog subclass procedure */ -
trunk/dll/getnames.c
r1347 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2006, 200 8Steven H. Levine9 Copyright (c) 2006, 2009 Steven H. Levine 10 10 11 11 23 Aug 06 SHL Comments … … 229 229 fdlg.fl = FDS_CENTER | FDS_OPEN_DIALOG; 230 230 if (!loadit) { 231 fdlg.pszTitle = GetPString(IDS_ENTERFILEINSERTTEXT);232 fdlg.pszOKButton = GetPString(IDS_INSERTTEXT);231 fdlg.pszTitle = (PSZ)GetPString(IDS_ENTERFILEINSERTTEXT); 232 fdlg.pszOKButton = (PSZ)GetPString(IDS_INSERTTEXT); 233 233 } 234 234 else if (loadit == TRUE) { 235 fdlg.pszTitle = GetPString(IDS_ENTERFILELOADTEXT);236 fdlg.pszOKButton = GetPString(IDS_LOADTEXT);235 fdlg.pszTitle = (PSZ)GetPString(IDS_ENTERFILELOADTEXT); 236 fdlg.pszOKButton = (PSZ)GetPString(IDS_LOADTEXT); 237 237 } 238 238 else { 239 fdlg.pszTitle = GetPString(IDS_ENTERFILETEXT);240 fdlg.pszOKButton = GetPString(IDS_OKAYTEXT);239 fdlg.pszTitle = (PSZ)GetPString(IDS_ENTERFILETEXT); 240 fdlg.pszOKButton = (PSZ)GetPString(IDS_OKAYTEXT); 241 241 } 242 242 if (IsFullName(filename)) { … … 333 333 fdlg.cbSize = sizeof(FILEDLG); 334 334 fdlg.fl = FDS_CENTER | FDS_OPEN_DIALOG; 335 fdlg.pszTitle = GetPString(IDS_EXPORTNAMETITLETEXT);336 fdlg.pszOKButton = GetPString(IDS_OKAYTEXT);335 fdlg.pszTitle = (PSZ)GetPString(IDS_EXPORTNAMETITLETEXT); 336 fdlg.pszOKButton = (PSZ)GetPString(IDS_OKAYTEXT); 337 337 if (IsFullName(filename)) { 338 338 *drive = *filename; -
trunk/dll/grep2.c
r1375 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2004, 200 8Steven H. Levine9 Copyright (c) 2004, 2009 Steven H. Levine 10 10 11 11 01 Aug 04 SHL Rework lstrip/rstrip usage … … 84 84 *(CHAR *)mp2 = 0; 85 85 { 86 CHAR *p;87 CHAR *pp;86 PCSZ p; 87 PSZ pp; 88 88 89 89 p = GetPString(IDS_ENVVARNAMES); … … 239 239 WinSetDlgItemText(hwnd, GREP_MASK, lastmask); 240 240 WinSendDlgItemMsg(hwnd, 241 241 GREP_MASK, EM_SETSEL, MPFROM2SHORT(0, 8192), MPVOID); 242 242 size = sizeof(BOOL); 243 243 PrfQueryProfileData(fmprof, FM3Str, "RememberFlagsGrep", … … 247 247 size = sizeof(BOOL); 248 248 PrfQueryProfileData(fmprof, FM3Str, "Grep_Recurse", 249 249 (PVOID) & recurse, &size); 250 250 size = sizeof(BOOL); 251 251 PrfQueryProfileData(fmprof, FM3Str, "Grep_Absolute", 252 252 (PVOID) & absolute, &size); 253 253 size = sizeof(BOOL); 254 254 PrfQueryProfileData(fmprof, FM3Str, "Grep_Case", 255 255 (PVOID) & sensitive, &size); 256 256 size = sizeof(BOOL); 257 257 PrfQueryProfileData(fmprof, FM3Str, "Grep_Sayfiles", 258 258 (PVOID) & sayfiles, &size); 259 259 size = sizeof(BOOL); 260 260 PrfQueryProfileData(fmprof, FM3Str, "Grep_Searchfiles", 261 261 (PVOID) & searchFiles, &size); 262 262 size = sizeof(BOOL); 263 263 PrfQueryProfileData(fmprof, FM3Str, "Grep_SearchfEAs", -
trunk/dll/init.c
r1393 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 11 Jun 02 SHL Add CheckVersion … … 64 64 28 Dec 08 GKY Check for LVM.EXE and remove Refresh removable media menu item as appropriate 65 65 28 Dec 08 GKY Rework partition submenu to gray out unavailable items (check for existence of files) 66 66 and have no default choice. 67 67 01 Jan 09 GKY Add option to rescan tree container on eject of removable media 68 68 03 Jan 09 GKY Avoid dbl scan of drive on startup by checking for first rescan drive. 69 69 03 Jan 09 GKY Check for system that is protectonly to gray out Dos/Win command lines and prevent 70 70 Dos/Win programs from being inserted into the execute dialog with message why. 71 71 11 Jan 09 GKY Move strings that shouldn't be translated (font names etc) compile time variables 72 03 Feb 09 SHL Switch to STRINGTABLE 72 73 73 74 ***********************************************************************/ … … 387 388 unsigned ulFlag) 388 389 { 389 CHAR *env;390 CHAR stringfile[CCHMAXPATH];391 FILESTATUS3 fsa;392 APIRET rc;393 394 390 switch (ulFlag) { 395 391 case 0: 396 392 FM3DllHandle = hModule; 397 strcpy(stringfile, "FM3RES.STR");398 env = getenv("FM3INI");399 if (env) {400 DosError(FERR_DISABLEHARDERR);401 rc = DosQueryPathInfo(env, FIL_STANDARD, &fsa, sizeof(fsa));402 if (!rc) {403 if (fsa.attrFile & FILE_DIRECTORY) {404 BldFullPathName(stringfile, env, "FM3RES.STR");405 DosError(FERR_DISABLEHARDERR);406 if (DosQueryPathInfo(stringfile, FIL_STANDARD, &fsa, sizeof(fsa)))407 strcpy(stringfile, "FM3RES.STR");408 }409 }410 }411 LoadStrings(stringfile);412 393 413 394 DosError(FERR_DISABLEHARDERR); … … 506 487 unsigned long ulFlag) 507 488 { 508 CHAR *env;509 CHAR stringfile[CCHMAXPATH];510 FILESTATUS3 fsa;511 APIRET rc;512 513 489 switch (ulFlag) { 514 490 case 0: … … 516 492 return 0UL; 517 493 FM3DllHandle = hModule; 518 strcpy(stringfile, "FM3RES.STR");519 env = getenv("FM3INI");520 if (env) {521 DosError(FERR_DISABLEHARDERR);522 rc = DosQueryPathInfo(env, FIL_STANDARD, &fsa, sizeof(fsa));523 if (!rc) {524 if (fsa.attrFile & FILE_DIRECTORY) {525 BldFullPathName(stringfile, env, "FM3RES.STR");526 DosError(FERR_DISABLEHARDERR);527 if (DosQueryPathInfo(stringfile, FIL_STANDARD, &fsa, sizeof(fsa)))528 strcpy(stringfile, "FM3RES.STR");529 }530 }531 }532 LoadStrings(stringfile);533 494 534 495 DosError(FERR_DISABLEHARDERR); … … 747 708 ULONG size; 748 709 749 if (!StringsLoaded()) {750 saymsg(MB_ENTER,751 HWND_DESKTOP,752 "Error",753 "FM3RES.STR isn't in right format, at least "754 "for this version of FM/2.");755 return FALSE;756 }757 758 710 strcpy(dllfile, "FM3RES"); 759 711 env = getenv("FM3INI"); … … 1051 1003 hini.idAccelTable = 0; 1052 1004 hini.idActionBar = 0; 1053 hini.pszHelpWindowTitle = GetPString(IDS_FM2HELPTITLETEXT);1005 hini.pszHelpWindowTitle = (PSZ)GetPString(IDS_FM2HELPTITLETEXT); 1054 1006 hini.fShowPanelId = CMIC_HIDE_PANEL_ID; 1055 1007 hini.pszHelpLibraryName = "FM3.HLP"; … … 1298 1250 if (!DosQueryAppType(GetCmdSpec(TRUE), &ulAppType)) { 1299 1251 ret = runemf2(SEPARATE | WINDOWED | BACKGROUND | MINIMIZED, 1300 1301 1252 (HWND) 0, pszSrcFile, __LINE__, NULL, NULL, 1253 "%s /C exit", GetCmdSpec(TRUE)); 1302 1254 if (ret == ERROR_SMG_INVALID_PROGRAM_TYPE) 1303 1255 fProtectOnly = TRUE; 1304 1256 } 1305 1257 else -
trunk/dll/input.c
r1348 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2005, 200 8Steven H. Levine9 Copyright (c) 2005, 2009 Steven H. Levine 10 10 11 11 28 May 05 SHL Use saymsg … … 37 37 // mp2 points at a structure of type STRINGINPARMS 38 38 STRINGINPARMS *psip; 39 P SZ psz;39 PCSZ psz; 40 40 41 41 switch (msg) { -
trunk/dll/input.h
r1224 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2008 Steven H. Levine9 Copyright (c) 2008, 2009 Steven H. Levine 10 10 11 11 Change log … … 18 18 typedef struct 19 19 { 20 CHAR *title; /* title of dialog */21 CHAR *prompt; /* prompt to user */20 PCSZ title; /* title of dialog */ 21 PCSZ prompt; /* prompt to user */ 22 22 CHAR *ret; /* buffer out, default in */ 23 CHAR *help; /* help text */23 PCSZ help; /* help text */ 24 24 INT inputlen; /* max len of ret */ 25 25 } -
trunk/dll/mainwnd.c
r1391 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 11 Jun 02 SHL Drop obsolete xor code … … 77 77 30 Dec 08 GKY Initialize tool bar background color to palegray not black 78 78 03 Jan 09 GKY Check for system that is protectonly to gray out Dos/Win command lines and prevent 79 79 Dos/Win programs from being inserted into the execute dialog with message why. 80 80 11 Jan 09 GKY Replace font names in the string file with global set at compile in init.c 81 81 … … 942 942 } 943 943 944 void BubbleHelp(HWND hwnd, BOOL other, BOOL drive, BOOL above, char *help)944 void BubbleHelp(HWND hwnd, BOOL other, BOOL drive, BOOL above, PCSZ help) 945 945 { 946 946 if (help && *help && … … 954 954 } 955 955 956 VOID MakeBubble(HWND hwnd, BOOL above, CHAR *help)956 VOID MakeBubble(HWND hwnd, BOOL above, PCSZ help) 957 957 { 958 958 if (!hwnd || !help || !*help) … … 997 997 POINTL aptl[TXTBOX_COUNT], ptl, tptl; 998 998 LONG lxScreen, sx, sy, extra = 0, lyScreen; 999 char*p, *pp, *wp;999 CHAR *p, *pp, *wp; 1000 1000 SWP swp; 1001 1001 … … 1007 1007 SetPresParams(hwndBubble, NULL, NULL, NULL, FNT_8HELVETICA); 1008 1008 hps = WinGetPS(hwndBubble); 1009 p = help; 1009 // 03 Feb 09 SHL fixme to not overwrite? 1010 p = (PSZ)help; 1010 1011 tptl.x = tptl.y = 0; 1011 1012 while (p && *p) { … … 1228 1229 break; 1229 1230 default: 1230 1231 //fixme to allow user to change presparams 1-10-09 GKY 1231 1232 SetPresParams(hwnd, 1232 1233 &RGBGREY, … … 1322 1323 id = (USHORT) WinDlgBox(HWND_DESKTOP, hwnd, 1323 1324 PickToolProc, FM3ModHandle, 1324 PICKBTN_FRAME, GetPString(IDS_HIDETEXT));1325 PICKBTN_FRAME, (PSZ)GetPString(IDS_HIDETEXT)); 1325 1326 if (id) { 1326 1327 tool = find_tool(id); … … 1348 1349 id = 1349 1350 (USHORT) WinDlgBox(HWND_DESKTOP, hwnd, PickToolProc, FM3ModHandle, 1350 PICKBTN_FRAME, GetPString(IDS_DELETETEXT));1351 PICKBTN_FRAME, (PSZ)GetPString(IDS_DELETETEXT)); 1351 1352 if (id) 1352 1353 PostMsg(WinQueryWindow(hwnd, QW_PARENT), UM_SETUP, … … 1361 1362 id = 1362 1363 (USHORT) WinDlgBox(HWND_DESKTOP, hwnd, PickToolProc, FM3ModHandle, 1363 PICKBTN_FRAME, GetPString(IDS_EDITTEXT));1364 PICKBTN_FRAME, (PSZ)GetPString(IDS_EDITTEXT)); 1364 1365 if (id) { 1365 1366 tool = find_tool(id); … … 2275 2276 Win_Error2(hwndT, HWND_DESKTOP, pszSrcFile, __LINE__, 2276 2277 IDS_WINCREATEWINDOW); 2277 2278 2278 else { 2279 //fixme to allow user to change presparams 1-10-09 GKY 2279 2280 SetPresParams(hwndB, 2280 2281 &RGBGREY, … … 2404 2405 { 2405 2406 USHORT id = WinQueryWindowUShort(hwnd, QWS_ID); 2406 char *s = NULL;2407 PCSZ s = NULL; 2407 2408 2408 2409 if (fOtherHelp) { … … 2642 2643 hps = WinBeginPaint(hwnd, (HPS)0, NULL); 2643 2644 if (hps) { 2644 2645 2646 2647 2645 GpiCreateLogColorTable(hps, 0, LCOLF_RGB, 0, 0, NULL); 2646 if (!WinQueryPresParam(hwnd, PP_BACKGROUNDCOLOR, 0, NULL, 2647 sizeof(lColor), &lColor, 0)) 2648 lColor = 0x00CCCCCCL; //Palegray 2648 2649 WinQueryWindowRect(hwnd, &rcl); 2649 2650 WinFillRect(hps, &rcl, lColor); … … 2923 2924 */ 2924 2925 2925 INT SaveDirCnrState(HWND hwndClient, P SZ pszStateName)2926 INT SaveDirCnrState(HWND hwndClient, PCSZ pszStateName) 2926 2927 { 2927 2928 HENUM henum; … … 3426 3427 if (hwndDir) { 3427 3428 hwndC = WinWindowFromID(hwndDir, FID_CLIENT); 3428 3429 if (hwndC) { 3429 3430 HWND hwndCnr = WinWindowFromID(hwndC, DIR_CNR); 3430 3431 if (!hwndPPSave) { … … 3502 3503 MPFROMLONG(sizeof(CNRINFO)))) { 3503 3504 cnri.flWindowAttr = dcd->flWindowAttr; 3504 3505 3506 3507 3505 WinSendMsg(WinWindowFromID(hwndC, DIR_CNR), 3506 CM_SETCNRINFO, 3507 MPFROMP(&cnri), 3508 MPFROMLONG(CMA_FLWINDOWATTR)); 3508 3509 } 3509 3510 } … … 3513 3514 if (!PostMsg(hwndCnr, UM_SETUP2, NULL, NULL)) 3514 3515 WinSendMsg(hwndCnr, UM_SETUP2, NULL, NULL); 3515 3516 } 3516 3517 } 3517 3518 fRestored = TRUE; … … 5625 5626 else { 5626 5627 WinSubclassWindow(WinWindowFromID(hwndFrame, IDM_IDEALSIZE), 5627 5628 IdealButtonProc); 5628 5629 //fixme to allow user to change presparams 1-10-09 GKY 5629 5630 SetPresParams(WinWindowFromID(hwndFrame, … … 5715 5716 WC_COMBOBOX, 5716 5717 (PSZ) NULL, 5717 5718 5718 //WS_VISIBLE | 5719 CBS_DROPDOWN, 5719 5720 (swp.x + 5720 5721 WinQuerySysValue(HWND_DESKTOP, … … 5921 5922 /* start remaining child windows */ 5922 5923 if (!fNoSaveState && fSaveState) { 5923 P SZ pszStatename = GetPString(IDS_SHUTDOWNSTATE);5924 PCSZ pszStatename = GetPString(IDS_SHUTDOWNSTATE); 5924 5925 PostMsg(MainObjectHwnd, UM_RESTORE, MPFROMP(pszStatename), MPVOID); 5925 5926 if (!add_setup(pszStatename)) -
trunk/dll/mainwnd.h
r1326 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 05 Sep 08 JBS Ticket 187: Refactor FM3DLL.H 12 04 Feb 09 SHL Convert args to const to match GetPString mods 12 13 13 14 ***********************************************************************/ … … 19 20 #include "colors.h" // typedef for RGB2 20 21 21 void BubbleHelp(HWND hwnd, BOOL other, BOOL data, BOOL above, char *help);22 void BubbleHelp(HWND hwnd, BOOL other, BOOL data, BOOL above, PCSZ help); 22 23 MRESULT EXPENTRY BubbleProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2); 23 24 VOID BuildDriveBarButtons(HWND hwndT); … … 35 36 MRESULT EXPENTRY MainWMCommand(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2); 36 37 MRESULT EXPENTRY MainWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2); 37 VOID MakeBubble(HWND hwnd, BOOL above, CHAR *help);38 VOID MakeBubble(HWND hwnd, BOOL above, PCSZ help); 38 39 VOID MakeMainObjWin(VOID * args); 39 40 VOID ResizeDrives(HWND hwndT, long xwidth); 40 INT SaveDirCnrState(HWND hwndClient, CHAR *name);41 INT SaveDirCnrState(HWND hwndClient, PCSZ name); 41 42 MRESULT EXPENTRY StatusProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2); 42 43 VOID TileChildren(HWND hwndClient, BOOL absolute); … … 83 84 extern USHORT shiftstate; 84 85 85 #define STATE_NAME_MAX_BYTES 86 #define STATE_NAME_MAX_BYTES 256 86 87 87 88 #endif // MAINWND_H -
trunk/dll/makefile
r1335 r1394 3 3 4 4 # Copyright (c) 1993-98 M. Kimes 5 # Copyright (c) 2002, 200 8Steven H. Levine5 # Copyright (c) 2002, 2009 Steven H. Levine 6 6 7 7 # 22 May 03 SHL Correct icon dependencies … … 48 48 # 08 Dec 08 SHL Ticket 307: Add process dump support 49 49 # 10 Dec 08 SHL Ticket 26: Add exception handler and exceptq support 50 # 14 Dec 08 SHL Drop copyright.c support - it's gone 51 # 18 Dec 08 SHL Avoid extra fm3res.str builds 52 # 04 Feb 09 SHL Drop mkstr and fm3*.str now that we use STRINGTABLE 50 53 51 54 # Environment: see makefile_pre.mk … … 95 98 !endif 96 99 97 SYMS = $(BASE).sym $(BASERES).sym internal\mkstr.sym #set atargets for building SYM files100 SYMS = $(BASE).sym $(BASERES).sym # targets for building SYM files 98 101 99 102 # Some flags are order dependent - see OpenWatcom docs … … 135 138 CFLAGS = -bt=os2 -mf -bd -bm -hd -d1 -olirs -s -sg -j -wx -zfp -zgp -zp4 -zq 136 139 !endif 137 # Omit -bd so exes can use copyright.obj138 COPYRIGHT_CFLAGS = -bt=os2 -mf -bm -s -j -zfp -zgp -zp4 -zq -hd139 140 140 141 # 26 May 08 SHL Was reversed 141 142 !ifdef WARNALL 142 143 CFLAGS += -wce=118 -wce=130 -wce=303 -wce=307 -wce=308 -wce=309 143 COPYRIGHT_CFLAGS += -wce=118 -wce=130 -wce=303 -wce=307 -wce=308 -wce=309144 144 !else 145 145 CFLAGS += -we … … 182 182 avl.obj avv.obj chklist.obj cmdline.obj codepage.obj & 183 183 collect.obj colors.obj commafmt.obj command.obj common.obj & 184 comp.obj copyf.obj copyright.obj&184 comp.obj copyf.obj & 185 185 datamin.obj defview.obj delims.obj dircnrs.obj & 186 186 dirs.obj dirsize.obj draglist.obj droplist.obj dumputil.obj & … … 210 210 $(BASERES).res & 211 211 $(BASERES).dll & 212 ipf\fm3.hlp & 213 $(BASERES).str 212 ipf\fm3.hlp 214 213 215 214 syms: $(SYMS) .symbolic 216 215 217 $(BASE).dll $(BASE).lib $(BASE).map: $(OBJS) $(BASE).def $(BASE).lrf copyright.obj216 $(BASE).dll $(BASE).lib $(BASE).map: $(OBJS) $(BASE).def $(BASE).lrf 218 217 @echo $(LINK) @$(BASE).lrf @$(BASE).def 219 218 $(LINK) @$(BASE).lrf @$(BASE).def … … 226 225 @%append $^@ library os2386.lib 227 226 228 copyright.obj: copyright.c .AUTODEPEND229 $(CC) $(COPYRIGHT_CFLAGS) copyright.c230 231 227 !else # MAKERES defined 232 228 … … 235 231 all: $(BASERES).res & 236 232 $(BASERES).dll & 237 ipf\fm3.hlp & 238 $(BASERES).str 233 ipf\fm3.hlp 239 234 240 235 !endif # MAKERES … … 280 275 @echo Processing: $? 281 276 -perl ..\debugtools\mapsymw.pl $? 282 283 internal\mkstr.exe: .symbolic284 cd internal285 $(MAKE) $(__MAKEOPTS__) $(DEBUG_OPT)286 cd..287 288 internal\mkstr.sym: internal\mkstr.map289 @echo Processing: $?290 cd internal291 -perl ..\..\debugtools\mapsymw.pl mkstr.map292 cd ..293 277 294 278 !else # MAKERES defined … … 310 294 !endif 311 295 312 internal\mkstr.exe: .symbolic313 @echo Checking required EXEs314 if not exist internal\mkstr.exe internal\mkstr.exe315 316 296 !endif # MAKERES 317 297 318 298 # For testing new code 319 299 tmp.obj: tmp.c 320 321 $(BASERES).str: $(BASE).str fm3str.h version.h internal\mkstr.exe322 internal\mkstr323 # ren $(BASERES).str $(BASERES).str324 copy $(BASERES).str ..\ /v325 300 326 301 ipf: ipf\fm3.hlp .symbolic … … 336 311 !ifndef DEBUG 337 312 @for %f in ($(BASE).dll $(BASERES).dll) do !lxlite /x- /b- %f 338 cd internal339 $(MAKE) $(__MAKEOPTS__) $(DEBUG_OPT) lxlite340 cd ..341 313 !endif 342 314 343 315 cleanobj: .symbolic 344 cd internal345 $(MAKE) $(__MAKEOPTS__) $(DEBUG_OPT) cleanobj346 cd..347 316 -del *.obj 348 317 349 318 clean: .symbolic 350 cd internal 351 $(MAKE) $(__MAKEOPTS__) $(DEBUG_OPT) clean 352 cd ..\ipf 319 cd ipf 353 320 $(MAKE) $(__MAKEOPTS__) $(DEBUG_OPT) clean 354 321 cd.. … … 360 327 -del *.res 361 328 -del *.sym 362 -del $(BASERES).str -
trunk/dll/misc.c
r1360 r1394 6 6 7 7 Copyright (c) 1993-98 M. Kimes 8 Copyright (c) 2003, 200 8Steven H. Levine8 Copyright (c) 2003, 2009 Steven H. Levine 9 9 10 10 11 Jun 03 SHL Add JFS and FAT32 support … … 41 41 29 Feb 08 GKY Use xfree where appropriate 42 42 08 Mar 08 JBS Ticket 230: Replace prefixless INI keys for default directory containers with 43 43 keys using a "DirCnr." prefix 44 44 19 Jun 08 JBS Ticket 239: Fix LoadDetailsSwitches so INI file is read correctly and details 45 45 switches are set correctly. 46 46 11 Jul 08 JBS Ticket 230: Simplified code and eliminated some local variables by incorporating 47 48 47 all the details view settings (both the global variables and those in the 48 DIRCNRDATA struct) into a new struct: DETAILS_SETTINGS. 49 49 17 Jul 08 SHL Add GetTidForWindow for Fortify support 50 50 20 Jul 08 GKY Add save/append filename to clipboard. 51 51 Change menu wording to make these easier to find 52 52 23 Aug 08 GKY Add CheckDriveSpaceAvail To pre check drive space to prevent failures 53 53 25 Dec 08 GKY Add code to allow write verify to be turned off on a per drive basis … … 141 141 if (rc) { 142 142 Dos_Error(MB_CANCEL, rc, HWND_DESKTOP, pszSrcFile, __LINE__, 143 143 "DosGetInfoBlocks"); 144 144 yes = FALSE; 145 145 } … … 152 152 // OK for window to be dead - just return FALSE 153 153 yes = WinQueryWindowProcess(hwnd, &pid, &tid) && 154 155 154 pid == ppib->pib_ulpid && 155 (!chkTid || tid == ptib->tib_ptib2->tib2_ultid); 156 156 } 157 157 return yes; … … 176 176 if (rc) { 177 177 Dos_Error(MB_CANCEL, rc, HWND_DESKTOP, pszSrcFile, __LINE__, 178 178 "DosGetInfoBlocks"); 179 179 } 180 180 else { … … 182 182 TID tid; 183 183 if (!WinQueryWindowProcess(hwnd, &pid, &tid)) 184 184 Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__, "WinQueryWindowProcess failed for %X", hwnd); 185 185 else if (pid != ppib->pib_ulpid) 186 186 Runtime_Error(pszSrcFile, __LINE__, "hwnd %X not created by fm/2", hwnd); 187 187 else 188 188 ordinal = ptib->tib_ptib2->tib2_ultid; 189 189 } 190 190 return ordinal; … … 205 205 if (rc) { 206 206 Dos_Error(MB_CANCEL, rc, HWND_DESKTOP, pszSrcFile, __LINE__, 207 207 "DosGetInfoBlocks"); 208 208 } 209 209 else … … 312 312 WinQueryWindowText(hwnd, CCHMAXPATH, s); 313 313 if (*s) { 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 314 rcl.xRight -= 3; 315 p = s; 316 GpiQueryTextBox(hps, 3, "...", TXTBOX_COUNT, aptl); 317 len = aptl[TXTBOX_TOPRIGHT].x; 318 do { 319 GpiQueryTextBox(hps, strlen(p), p, TXTBOX_COUNT, aptl); 320 if (aptl[TXTBOX_TOPRIGHT].x > (rcl.xRight - (p != s ? len : 0))) 321 p++; 322 else 323 break; 324 } 325 while (*p); 326 if (*p) { 327 GpiSetMix(hps, FM_OVERPAINT); 328 GpiSetColor(hps, CLR_BLACK); 329 ptl.x = 3; 330 ptl.y = ((rcl.yTop / 2) - 331 ((aptl[TXTBOX_TOPRIGHT].y + 332 aptl[TXTBOX_BOTTOMLEFT].y) / 2)); 333 GpiMove(hps, &ptl); 334 if (p != s) 335 GpiCharString(hps, 3, "..."); 336 GpiCharString(hps, strlen(p), p); 337 } 338 338 } 339 339 free(s); … … 416 416 } 417 417 418 BOOL AdjustCnrColVis(HWND hwndCnr, CHAR *title, BOOL visible, BOOL toggle)418 BOOL AdjustCnrColVis(HWND hwndCnr, PCSZ title, BOOL visible, BOOL toggle) 419 419 { 420 420 PFIELDINFO pfi = (PFIELDINFO) WinSendMsg(hwndCnr, 421 422 421 CM_QUERYDETAILFIELDINFO, 422 MPVOID, MPFROMSHORT(CMA_FIRST)); 423 423 424 424 while (pfi) { 425 425 if (!strcmp(pfi->pTitleData, title)) { 426 426 if (toggle) { 427 428 429 430 431 427 if (pfi->flData & CFA_INVISIBLE) 428 pfi->flData &= (~CFA_INVISIBLE); 429 else 430 pfi->flData |= CFA_INVISIBLE; 431 return !(pfi->flData & CFA_INVISIBLE); 432 432 } 433 433 else { 434 435 436 437 434 if (visible) 435 pfi->flData &= (~CFA_INVISIBLE); 436 else 437 pfi->flData |= CFA_INVISIBLE; 438 438 } 439 439 return TRUE; … … 444 444 } 445 445 446 BOOL AdjustCnrColRO(HWND hwndCnr, CHAR *title, BOOL readonly, BOOL toggle)446 BOOL AdjustCnrColRO(HWND hwndCnr, PCSZ title, BOOL readonly, BOOL toggle) 447 447 { 448 448 PFIELDINFO pfi = (PFIELDINFO) WinSendMsg(hwndCnr, 449 450 449 CM_QUERYDETAILFIELDINFO, 450 MPVOID, MPFROMSHORT(CMA_FIRST)); 451 451 452 452 while (pfi) { 453 453 if (!strcmp(pfi->pTitleData, title)) { 454 454 if (toggle) { 455 456 457 458 459 455 if (pfi->flData & CFA_FIREADONLY) 456 pfi->flData &= (~CFA_FIREADONLY); 457 else 458 pfi->flData |= CFA_FIREADONLY; 459 return (pfi->flData & CFA_FIREADONLY); 460 460 } 461 461 else { 462 463 464 465 462 if (!readonly) 463 pfi->flData &= (~CFA_FIREADONLY); 464 else 465 pfi->flData |= CFA_FIREADONLY; 466 466 } 467 467 return TRUE; … … 472 472 } 473 473 474 VOID AdjustCnrColsForFSType(HWND hwndCnr, CHAR *directory, DETAILS_SETTINGS * pds)474 VOID AdjustCnrColsForFSType(HWND hwndCnr, PCSZ directory, DETAILS_SETTINGS * pds) 475 475 { 476 476 CHAR FileSystem[CCHMAXPATH]; … … 485 485 if (x != -1) { 486 486 if (!stricmp(FileSystem, HPFS) || 487 488 489 490 491 492 487 !stricmp(FileSystem, JFS) || 488 !stricmp(FileSystem, FAT32) || 489 !stricmp(FileSystem, RAMFS) || 490 !stricmp(FileSystem, NDFS32) || 491 !stricmp(FileSystem, NTFS) || 492 !stricmp(FileSystem, HPFS386)) { 493 493 hasCreateDT = TRUE; 494 494 hasAccessDT = TRUE; … … 514 514 } 515 515 AdjustCnrColVis(hwndCnr, 516 517 518 516 GetPString(IDS_LADATE), 517 pds->detailsladate ? hasAccessDT : FALSE, 518 FALSE); 519 519 AdjustCnrColVis(hwndCnr, 520 521 522 520 GetPString(IDS_LATIME), 521 pds->detailslatime ? hasAccessDT : FALSE, 522 FALSE); 523 523 AdjustCnrColVis(hwndCnr, 524 525 526 524 GetPString(IDS_CRDATE), 525 pds->detailscrdate ? hasCreateDT : FALSE, 526 FALSE); 527 527 AdjustCnrColVis(hwndCnr, 528 529 530 528 GetPString(IDS_CRTIME), 529 pds->detailscrtime ? hasCreateDT : FALSE, 530 FALSE); 531 531 AdjustCnrColVis(hwndCnr, 532 533 534 532 GetPString(IDS_LNAME), 533 pds->detailslongname ? hasLongNames : FALSE, 534 FALSE); 535 535 WinSendMsg(hwndCnr, CM_INVALIDATEDETAILFIELDINFO, MPVOID, MPVOID); 536 536 } 537 537 538 VOID AdjustCnrColsForPref(HWND hwndCnr, CHAR *directory, DETAILS_SETTINGS * pds,539 538 VOID AdjustCnrColsForPref(HWND hwndCnr, PCSZ directory, DETAILS_SETTINGS * pds, 539 BOOL compare) 540 540 { 541 541 542 542 AdjustCnrColVis(hwndCnr, 543 544 545 543 compare ? GetPString(IDS_STATUS) : GetPString(IDS_SUBJ), 544 pds->detailssubject, 545 FALSE); 546 546 547 547 AdjustCnrColVis(hwndCnr, GetPString(IDS_ATTR), pds->detailsattr, FALSE); … … 572 572 573 573 pfi = WinSendMsg(hwndCnr, CM_ALLOCDETAILFIELDINFO, 574 574 MPFROMLONG(CONTAINER_COLUMNS), NULL); 575 575 576 576 if (!pfi) { … … 592 592 pfi->flData = CFA_BITMAPORICON | CFA_CENTER | CFA_FIREADONLY; 593 593 pfi->flTitle = CFA_CENTER | CFA_FITITLEREADONLY; 594 pfi->pTitleData = GetPString(IDS_ICON);594 pfi->pTitleData = (PSZ)GetPString(IDS_ICON); 595 595 pfi->offStruct = FIELDOFFSET(MINIRECORDCORE, hptrIcon); 596 596 … … 605 605 pfi->flData = CFA_STRING | CFA_LEFT | CFA_SEPARATOR; 606 606 pfi->flTitle = CFA_LEFT; 607 pfi->pTitleData = GetPString(IDS_FILENAME);607 pfi->pTitleData = (PSZ)GetPString(IDS_FILENAME); 608 608 pfi->offStruct = FIELDOFFSET(CNRITEM, pszDisplayName); 609 609 … … 613 613 pfi->flData = CFA_STRING | CFA_LEFT; 614 614 pfi->flTitle = CFA_LEFT | CFA_FITITLEREADONLY; 615 pfi->pTitleData = GetPString(IDS_LNAME);615 pfi->pTitleData = (PSZ)GetPString(IDS_LNAME); 616 616 pfi->offStruct = FIELDOFFSET(CNRITEM, pszLongName); 617 617 … … 622 622 pfi->flData = CFA_STRING | CFA_LEFT | CFA_SEPARATOR; 623 623 if (isCompCnr) 624 624 pfi->flData |= CFA_FIREADONLY; 625 625 pfi->flTitle = CFA_LEFT | CFA_FITITLEREADONLY; 626 pfi->pTitleData = isCompCnr ? GetPString(IDS_STATUS) :627 626 pfi->pTitleData = isCompCnr ? (PSZ)GetPString(IDS_STATUS) : 627 (PSZ)GetPString(IDS_SUBJ); 628 628 pfi->offStruct = FIELDOFFSET(CNRITEM, pszSubject); 629 629 pfi->cxWidth = dsDirCnrDefault.SubjectDisplayWidth; … … 642 642 pfi->flData = CFA_STRING | CFA_LEFT | CFA_SEPARATOR; 643 643 if (isCompCnr) 644 644 pfi->flData |= CFA_FIREADONLY; 645 645 pfi->flTitle = CFA_LEFT | CFA_FITITLEREADONLY; 646 pfi->pTitleData = isCompCnr ? GetPString(IDS_STATUS) :647 646 pfi->pTitleData = isCompCnr ? (PSZ)GetPString(IDS_STATUS) : 647 (PSZ)GetPString(IDS_SUBJ); 648 648 pfi->offStruct = FIELDOFFSET(CNRITEM, pszSubject); 649 649 pfi->cxWidth = dsDirCnrDefault.SubjectDisplayWidth; … … 656 656 pfi->flData = CFA_STRING | CFA_RIGHT | CFA_SEPARATOR | CFA_FIREADONLY; 657 657 pfi->flTitle = CFA_CENTER; 658 pfi->pTitleData = GetPString(IDS_SIZE);658 pfi->pTitleData = (PSZ)GetPString(IDS_SIZE); 659 659 pfi->offStruct = FIELDOFFSET(CNRITEM, pszFmtFileSize); 660 660 … … 665 665 pfi->flData = CFA_ULONG | CFA_RIGHT | CFA_SEPARATOR | CFA_FIREADONLY; 666 666 pfi->flTitle = CFA_CENTER; 667 pfi->pTitleData = GetPString(IDS_EA);667 pfi->pTitleData = (PSZ)GetPString(IDS_EA); 668 668 pfi->offStruct = FIELDOFFSET(CNRITEM, easize); 669 669 … … 673 673 pfi->flData = CFA_STRING | CFA_CENTER | CFA_SEPARATOR | CFA_FIREADONLY; 674 674 pfi->flTitle = CFA_CENTER | CFA_FITITLEREADONLY; 675 pfi->pTitleData = GetPString(IDS_ATTR);675 pfi->pTitleData = (PSZ)GetPString(IDS_ATTR); 676 676 pfi->offStruct = FIELDOFFSET(CNRITEM, pszDispAttr); 677 677 … … 681 681 pfi->flData = CFA_DATE | CFA_RIGHT | CFA_FIREADONLY; 682 682 pfi->flTitle = CFA_CENTER; 683 pfi->pTitleData = GetPString(IDS_LWDATE);683 pfi->pTitleData = (PSZ)GetPString(IDS_LWDATE); 684 684 pfi->offStruct = FIELDOFFSET(CNRITEM, date); 685 685 … … 689 689 pfi->flData = CFA_TIME | CFA_RIGHT | CFA_SEPARATOR | CFA_FIREADONLY; 690 690 pfi->flTitle = CFA_CENTER; 691 pfi->pTitleData = GetPString(IDS_LWTIME);691 pfi->pTitleData = (PSZ)GetPString(IDS_LWTIME); 692 692 pfi->offStruct = FIELDOFFSET(CNRITEM, time); 693 693 … … 697 697 pfi->flData = CFA_DATE | CFA_RIGHT | CFA_FIREADONLY; 698 698 pfi->flTitle = CFA_CENTER; 699 pfi->pTitleData = GetPString(IDS_LADATE);699 pfi->pTitleData = (PSZ)GetPString(IDS_LADATE); 700 700 pfi->offStruct = FIELDOFFSET(CNRITEM, ladate); 701 701 … … 705 705 pfi->flData = CFA_TIME | CFA_RIGHT | CFA_SEPARATOR | CFA_FIREADONLY; 706 706 pfi->flTitle = CFA_CENTER; 707 pfi->pTitleData = GetPString(IDS_LATIME);707 pfi->pTitleData = (PSZ)GetPString(IDS_LATIME); 708 708 pfi->offStruct = FIELDOFFSET(CNRITEM, latime); 709 709 … … 713 713 pfi->flData = CFA_DATE | CFA_RIGHT | CFA_FIREADONLY; 714 714 pfi->flTitle = CFA_CENTER; 715 pfi->pTitleData = GetPString(IDS_CRDATE);715 pfi->pTitleData = (PSZ)GetPString(IDS_CRDATE); 716 716 pfi->offStruct = FIELDOFFSET(CNRITEM, crdate); 717 717 … … 721 721 pfi->flData = CFA_TIME | CFA_RIGHT | CFA_FIREADONLY; 722 722 pfi->flTitle = CFA_CENTER; 723 pfi->pTitleData = GetPString(IDS_CRTIME);723 pfi->pTitleData = (PSZ)GetPString(IDS_CRTIME); 724 724 pfi->offStruct = FIELDOFFSET(CNRITEM, crtime); 725 725 … … 737 737 738 738 if (!WinSendMsg(hwndCnr, CM_INSERTDETAILFIELDINFO, MPFROMP(pfiFirst), 739 739 MPFROMP(&fii))) { 740 740 Win_Error(hwndCnr, HWND_DESKTOP, pszSrcFile, __LINE__, "CM_INSERTDETAILFIELDINFO"); 741 741 fSuccess = FALSE; … … 756 756 size = sizeof(LONG); 757 757 PrfQueryProfileData(fmprof, 758 758 appname, "CnrSplitBar", &cnri.xVertSplitbar, &size); 759 759 if (cnri.xVertSplitbar <= 0) 760 760 cnri.xVertSplitbar = DIR_SPLITBAR_OFFSET - 32; 761 761 if (!WinSendMsg(hwndCnr, CM_SETCNRINFO, MPFROMP(&cnri), 762 763 762 MPFROMLONG(CMA_PFIELDINFOLAST | CMA_PFIELDINFOOBJECT | 763 CMA_XVERTSPLITBAR))) { 764 764 Win_Error(hwndCnr, HWND_DESKTOP, pszSrcFile, __LINE__, "CM_SETCNRINFO"); 765 765 fSuccess = FALSE; … … 779 779 780 780 if (pci && 781 782 783 784 785 786 787 788 789 790 781 (INT) pci != -1 && 782 !IsRoot(pci->pszFileName) && 783 !(pci->flags & RECFLAGS_ENV) && !(pci->flags & RECFLAGS_UNDERENV)) { 784 if (!pfi || pfi->offStruct == FIELDOFFSET(CNRITEM, pszDisplayName)) { 785 PostMsg(hwnd, UM_FIXEDITNAME, MPFROMP(pci->pszFileName), MPVOID); 786 } 787 else if (pfi->offStruct == FIELDOFFSET(CNRITEM, pszSubject)) 788 PostMsg(hwnd, UM_FIXCNRMLE, MPFROMLONG(1048), MPVOID); 789 else 790 PostMsg(hwnd, UM_FIXCNRMLE, MPFROMLONG(CCHMAXPATH), MPVOID); 791 791 } 792 792 else 793 793 PostMsg(hwnd, CM_CLOSEEDIT, MPVOID, MPVOID); 794 794 } 795 795 break; … … 804 804 805 805 if (pci && (INT) pci != -1 && !IsRoot(pci->pszFileName)) { 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 806 if (pfi && pfi->offStruct == FIELDOFFSET(CNRITEM, pszSubject)) { 807 808 APIRET rc; 809 EAOP2 eaop; 810 PFEA2LIST pfealist = NULL; 811 CHAR szSubject[1048]; 812 ULONG ealen; 813 USHORT len; 814 CHAR *eaval; 815 LONG retlen; 816 PSZ psz; 817 818 retlen = WinQueryWindowText(hwndMLE, sizeof(szSubject), szSubject); 819 szSubject[retlen + 1] = 0; 820 bstrip(szSubject); 821 if (pci->pszSubject != NullStr) { 822 if (retlen == 0) { 823 psz = pci->pszSubject; 824 pci->pszSubject = NullStr; 825 xfree(psz, pszSrcFile, __LINE__); 826 } 827 else 828 pci->pszSubject = xrealloc(pci->pszSubject, retlen + 1, pszSrcFile, __LINE__); 829 } 830 else { 831 pci->pszSubject = xmalloc(retlen + 1, pszSrcFile, __LINE__); 832 if (!pci->pszSubject) 833 return FALSE; 834 } 835 len = strlen(szSubject); 836 if (len) 837 ealen = sizeof(FEA2LIST) + 9 + len + 4; 838 else 839 ealen = sizeof(FEALIST) + 9; 840 rc = DosAllocMem((PPVOID) & pfealist, ealen + 64, 841 OBJ_TILE | PAG_COMMIT | PAG_READ | PAG_WRITE); 842 if (rc) 843 Dos_Error(MB_CANCEL, rc, HWND_DESKTOP, pszSrcFile, 844 __LINE__, GetPString(IDS_OUTOFMEMORY)); 845 else { 846 memset(pfealist, 0, ealen + 1); 847 pfealist->cbList = ealen; 848 pfealist->list[0].oNextEntryOffset = 0; 849 pfealist->list[0].fEA = 0; 850 pfealist->list[0].cbName = 8; 851 strcpy(pfealist->list[0].szName, SUBJECT); 852 if (len) { 853 eaval = pfealist->list[0].szName + 9; 854 *(USHORT *) eaval = (USHORT) EAT_ASCII; 855 eaval += sizeof(USHORT); 856 *(USHORT *) eaval = (USHORT) len; 857 eaval += sizeof(USHORT); 858 memcpy(eaval, szSubject, len); 859 pfealist->list[0].cbValue = len + (sizeof(USHORT) * 2); 860 } 861 else 862 pfealist->list[0].cbValue = 0; 863 eaop.fpGEA2List = (PGEA2LIST) 0; 864 eaop.fpFEA2List = pfealist; 865 eaop.oError = 0; 866 rc = xDosSetPathInfo(pci->pszFileName, FIL_QUERYEASIZE, 867 &eaop, sizeof(eaop), DSPI_WRTTHRU); 868 DosFreeMem(pfealist); 869 if (rc) 870 return FALSE; 871 } 872 return (MRESULT) TRUE; 873 } 874 else if (pfi && pfi->offStruct == FIELDOFFSET(CNRITEM, pszLongName)) { 875 876 CHAR longname[CCHMAXPATHCOMP]; 877 LONG retlen; 878 PSZ psz; 879 880 *longname = 0; 881 retlen = WinQueryWindowText(hwndMLE, sizeof(longname), longname); 882 longname[retlen + 1] = 0; 883 chop_at_crnl(longname); 884 bstrip(longname); 885 WinSetWindowText(hwndMLE, longname); 886 if (pci->pszLongName != NullStr) { 887 if (retlen == 0) { 888 psz = pci->pszLongName; 889 pci->pszLongName = NullStr; 890 xfree(psz, pszSrcFile, __LINE__); 891 } 892 else 893 pci->pszLongName = xrealloc(pci->pszLongName, retlen + 1, pszSrcFile, __LINE__); 894 } 895 else { 896 pci->pszLongName = xmalloc(retlen + 1, pszSrcFile, __LINE__); 897 if (!pci->pszLongName) 898 return FALSE; 899 } 900 return (MRESULT) WriteLongName(pci->pszFileName, longname); 901 } 902 else { 903 WinQueryWindowText(hwndMLE, sizeof(szData), szData); 904 if (strchr(szData, '?') || 905 strchr(szData, '*') || IsRoot(pci->pszFileName)) 906 return (MRESULT) FALSE; 907 /* If the text changed, rename the file system object. */ 908 chop_at_crnl(szData); 909 bstrip(szData); 910 if (!IsFullName(szData)) 911 Runtime_Error(pszSrcFile, __LINE__, "bad name"); 912 else { 913 if (DosQueryPathInfo(szData, 914 FIL_QUERYFULLNAME, 915 testname, sizeof(testname))) 916 return FALSE; 917 if (DosQueryPathInfo(pci->pszFileName, 918 FIL_QUERYFULLNAME, 919 szData, 920 sizeof(szData))) 921 { 922 pci->pszFileName = xrealloc(pci->pszFileName, sizeof(szData), pszSrcFile, __LINE__); 923 strcpy(szData, pci->pszFileName); 924 } 925 WinSetWindowText(hwndMLE, szData); 926 if (strcmp(szData, testname)) { 927 if (stricmp(szData, testname) && IsFile(testname) != -1) { 928 DosBeep(50, 100); /* exists; disallow */ 929 return (MRESULT) FALSE; 930 } 931 if (fVerify && (driveflags[toupper(*szData) - 'A'] & DRIVE_WRITEVERIFYOFF || 932 driveflags[toupper(*testname) - 'A'] & DRIVE_WRITEVERIFYOFF)) { 933 DosSetVerify(FALSE); 934 fResetVerify = TRUE; 935 } 936 if (docopyf(MOVE, szData, "%s", testname)) 937 Runtime_Error(pszSrcFile, __LINE__, "docopyf"); 938 else { 939 CHAR *filename; 940 941 filename = xstrdup(testname, pszSrcFile, __LINE__); 942 if (filename) { 943 if (!PostMsg(hwnd, 944 UM_FIXEDITNAME, MPVOID, MPFROMP(filename))) 945 free(filename); 946 } 947 if (stricmp(testname, pci->pszFileName)) { 948 PostMsg(hwnd, UM_FIXEDITNAME, MPFROMLONG(-1), MPFROMP(pci)); 949 filename = xstrdup(pci->pszFileName, pszSrcFile, __LINE__); 950 if (filename) { 951 if (!PostMsg(hwnd, 952 UM_FIXEDITNAME, MPVOID, MPFROMP(filename))) 953 free(filename); 954 } 955 } 956 } 957 if (fResetVerify) { 958 DosSetVerify(fVerify); 959 fResetVerify = FALSE; 960 } 961 } 962 } 963 } 964 964 } 965 965 } … … 972 972 973 973 if (pci && (INT) pci != -1 && !IsRoot(pci->pszFileName)) { 974 975 976 977 978 979 974 WinSendMsg(hwnd, 975 CM_INVALIDATERECORD, 976 MPFROMP(&pci), 977 MPFROM2SHORT(1, CMA_ERASE | CMA_TEXTCHANGED)); 978 if (pfi && pfi->offStruct == FIELDOFFSET(CNRITEM, pszDisplayName)) 979 PostMsg(hwnd, UM_SORTRECORD, MPVOID, MPVOID); 980 980 } 981 981 else { 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 982 USHORT cmd = 0; 983 984 if (!pfi || pfi->offStruct == FIELDOFFSET(CNRITEM, pszDisplayName)) 985 cmd = IDM_SORTSMARTNAME; 986 else if (pfi->offStruct == FIELDOFFSET(CNRITEM, cbFile)) 987 cmd = IDM_SORTSIZE; 988 else if (pfi->offStruct == FIELDOFFSET(CNRITEM, easize)) 989 cmd = IDM_SORTEASIZE; 990 else if (pfi->offStruct == FIELDOFFSET(CNRITEM, date)) 991 cmd = IDM_SORTLWDATE; 992 else if (pfi->offStruct == FIELDOFFSET(CNRITEM, time)) 993 cmd = IDM_SORTLWDATE; 994 else if (pfi->offStruct == FIELDOFFSET(CNRITEM, ladate)) 995 cmd = IDM_SORTLADATE; 996 else if (pfi->offStruct == FIELDOFFSET(CNRITEM, latime)) 997 cmd = IDM_SORTLADATE; 998 else if (pfi->offStruct == FIELDOFFSET(CNRITEM, crdate)) 999 cmd = IDM_SORTCRDATE; 1000 else if (pfi->offStruct == FIELDOFFSET(CNRITEM, crtime)) 1001 cmd = IDM_SORTCRDATE; 1002 if (cmd) 1003 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(cmd, 0), MPVOID); 1004 1004 } 1005 1005 } … … 1010 1010 1011 1011 BOOL SetMenuCheck(HWND hwndMenu, USHORT id, BOOL * bool, BOOL toggle, 1012 CHAR *savename)1012 PCSZ savename) 1013 1013 { 1014 1014 if (toggle) { … … 1018 1018 } 1019 1019 WinSendMsg(hwndMenu, MM_SETITEMATTR, 1020 1021 1020 MPFROM2SHORT(id, 1), 1021 MPFROM2SHORT(MIA_CHECKED, (*bool ? MIA_CHECKED : 0))); 1022 1022 return *bool; 1023 1023 } … … 1028 1028 { 1029 1029 WinSendMsg(hwndMenu, MM_SETITEMATTR, 1030 1031 1030 MPFROM2SHORT(id, TRUE), 1031 MPFROM2SHORT(MIA_DISABLED, (disable ? MIA_DISABLED : 0))); 1032 1032 } 1033 1033 1034 1034 //== ViewHelp() invoke view.exe, return TRUE if OK == 1035 1035 1036 BOOL ViewHelp( CHAR *filename)1036 BOOL ViewHelp(PCSZ filename) 1037 1037 { 1038 1038 CHAR s[CCHMAXPATH + 81]; … … 1051 1051 fclose(fp); 1052 1052 ret = runemf2(SEPARATE | WINDOWED, HWND_DESKTOP, pszSrcFile, __LINE__, 1053 1054 1055 1053 NULL, NULL, 1054 "VIEW.EXE \"%s\"", 1055 BldQuotedFileName(szQuotedFileName, filename)); 1056 1056 } 1057 1057 … … 1061 1061 //== ExecFile() run file, return 1 if OK 0 if skipped -1 if can't run == 1062 1062 1063 INT ExecFile(HWND hwnd, CHAR *filename)1063 INT ExecFile(HWND hwnd, PCSZ filename) 1064 1064 { 1065 1065 EXECARGS ex; … … 1092 1092 *ex.environment = 0; 1093 1093 ret = WinDlgBox(HWND_DESKTOP, hwnd, CmdLineDlgProc, FM3ModHandle, 1094 1094 EXEC_FRAME, &ex); 1095 1095 if (ret == 1) { 1096 1096 lastflags = ex.flags; 1097 1097 return runemf2(ex.flags, hwnd, pszSrcFile, __LINE__, path, 1098 1099 1098 *ex.environment ? ex.environment : NULL, 1099 "%s", pszCmdLine) != -1; 1100 1100 } 1101 1101 else if (ret != 0) … … 1123 1123 1124 1124 VOID AdjustDetailsSwitches(HWND hwnd, HWND hwndMenu, USHORT cmd, 1125 CHAR * directory, CHAR *keyroot,1126 1125 PCSZ directory, PCSZ keyroot, 1126 DETAILS_SETTINGS * pds, BOOL compare) 1127 1127 { 1128 1128 BOOL *bool = NULL; … … 1193 1193 mi.afStyle = MIS_TEXT; 1194 1194 if (WinSendMsg(hwndMenu, 1195 1196 1197 1195 MM_QUERYITEM, 1196 MPFROM2SHORT(id, TRUE), 1197 MPFROMP(&mi))) 1198 1198 { 1199 1199 WinSetWindowBits(mi.hwndSubMenu, QWL_STYLE, MS_CONDITIONALCASCADE, 1200 1200 MS_CONDITIONALCASCADE); 1201 1201 WinSendMsg(mi.hwndSubMenu, MM_SETDEFAULTITEMID, MPFROMSHORT(def), MPVOID); 1202 1202 WinCheckMenuItem(mi.hwndSubMenu, def, TRUE); … … 1275 1275 else 1276 1276 WinSendMsg(hwndMenu, MM_QUERYITEM, 1277 1277 MPFROM2SHORT(IDM_COMMANDSMENU, TRUE), MPFROMP(&mit)); 1278 1278 if (mit.hwndSubMenu) { 1279 1279 numitems = (SHORT) WinSendMsg(mit.hwndSubMenu, MM_QUERYITEMCOUNT, 1280 1280 MPVOID, MPVOID); 1281 1281 WinSendMsg(mit.hwndSubMenu, MM_DELETEITEM, MPFROMSHORT(-1), MPVOID); 1282 1282 for (x = 0; x < numitems; x++) 1283 1283 WinSendMsg(mit.hwndSubMenu, MM_DELETEITEM, 1284 1284 MPFROMSHORT((SHORT) (x + IDM_COMMANDSTART)), MPVOID); 1285 1285 if (hwndCnr && cmdhead) { 1286 1286 x = 0; … … 1288 1288 while (info) { 1289 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1290 CHAR s[CCHMAXPATH + 24]; 1291 1292 sprintf(s, 1293 "%s%s%s", 1294 info->title, 1295 x < 20 ? "\tCtrl + " : NullStr, 1296 x < 20 && x > 9 ? "Shift + " : NullStr); 1297 if (x < 20) 1298 sprintf(&s[strlen(s)], "%d", 1299 ((x % 10) + 1) == 10 ? 0 : (x % 10) + 1); 1300 mi.id = IDM_COMMANDSTART + x; 1301 mi.afAttribute = (info->flags & ONCE ? MIA_CHECKED : 0) | 1302 (info->flags & PROMPT ? MIA_FRAMED : 0); 1303 mi.afStyle = MIS_TEXT; 1304 if (!(x % 24) && x && info->next) 1305 mi.afStyle |= MIS_BREAK; 1306 WinSendMsg(mit.hwndSubMenu, MM_INSERTITEM, MPFROMP(&mi), MPFROMP(s)); 1307 x++; 1308 info = info->next; 1309 1309 } 1310 1310 } … … 1312 1312 } 1313 1313 1314 VOID LoadDetailsSwitches( CHAR *keyroot, DETAILS_SETTINGS * pds)1314 VOID LoadDetailsSwitches(PCSZ keyroot, DETAILS_SETTINGS * pds) 1315 1315 { 1316 1316 ULONG size; … … 1401 1401 hwndDir = WinWindowFromID(hwndDir, DIR_CNR); 1402 1402 if (hwndDir) 1403 1403 break; 1404 1404 hwndDir = (HWND) 0; 1405 1405 } … … 1418 1418 if (rc) 1419 1419 Dos_Error(MB_CANCEL, rc, HWND_DESKTOP, pszSrcFile, __LINE__, 1420 1420 "DosCreateEventSem"); 1421 1421 else { 1422 1422 priority_normal(); 1423 1423 for (;;) { 1424 1424 if (DosWaitEventSem(CompactSem, SEM_INDEFINITE_WAIT)) 1425 1425 break; 1426 1426 _heapmin(); 1427 1427 DosResetEventSem(CompactSem, &postcount); … … 1430 1430 } 1431 1431 1432 VOID FixSwitchList(HWND hwnd, CHAR *text)1432 VOID FixSwitchList(HWND hwnd, PCSZ text) 1433 1433 { 1434 1434 HSWITCH hswitch; … … 1449 1449 if (dcd->hwndLastMenu && !dcd->cnremphasized) { 1450 1450 WinSendMsg(hwnd, CM_SETRECORDEMPHASIS, MPVOID, 1451 1451 MPFROM2SHORT(TRUE, CRA_SOURCE)); 1452 1452 dcd->cnremphasized = TRUE; 1453 1453 } … … 1455 1455 WinCheckMenuItem(dcd->hwndLastMenu, IDM_MINIICONS, TRUE); 1456 1456 if (!WinPopupMenu(hwnd, hwnd, dcd->hwndLastMenu, 1457 1458 1459 1457 8, 8, 0, 1458 PU_HCONSTRAIN | PU_VCONSTRAIN | 1459 PU_KEYBOARD | PU_MOUSEBUTTON1)) { 1460 1460 if (dcd->cnremphasized) { 1461 1461 WinSendMsg(hwnd, CM_SETRECORDEMPHASIS, MPVOID, 1462 1462 MPFROM2SHORT(FALSE, CRA_SOURCE)); 1463 1463 dcd->cnremphasized = FALSE; 1464 1464 } … … 1466 1466 else 1467 1467 WinSendMsg(dcd->hwndLastMenu, MM_SELECTITEM, 1468 1468 MPFROM2SHORT(id, TRUE), MPFROM2SHORT(0, FALSE)); 1469 1469 } 1470 1470 … … 1476 1476 for (;;) { 1477 1477 pmi = (PMINIRECORDCORE) WinSendMsg(hwndCnr, CM_QUERYRECORDEMPHASIS, 1478 1479 1478 MPFROMLONG(CMA_FIRST), 1479 MPFROMSHORT(attrib)); 1480 1480 if ((!pmi || (INT) pmi == -1) && attrib == CRA_SELECTED) /* punt */ 1481 1481 attrib = CRA_CURSORED; … … 1496 1496 QMSG qmsg; 1497 1497 for (;;) { 1498 1499 1500 1501 1502 1503 1504 1505 1498 DosSleep(1); 1499 rc = WinPostMsg(h, msg, mp1, mp2); 1500 if (rc) 1501 break; // OK 1502 if (!WinIsWindow((HAB) 0, h)) 1503 break; // Window gone 1504 if (WinPeekMsg((HAB) 0, &qmsg, (HWND) 0, 0, 0, PM_NOREMOVE)) 1505 break; // Queue has message(s) 1506 1506 } // for 1507 1507 } … … 1517 1517 1518 1518 pci = (PCNRITEM) WinSendMsg(hwnd, 1519 1520 1521 1519 CM_QUERYRECORDEMPHASIS, 1520 MPFROMLONG(CMA_FIRST), 1521 MPFROMSHORT(CRA_CURSORED)); 1522 1522 if (pci && (INT) pci != -1) { 1523 1523 memset(&ced, 0, sizeof(ced)); … … 1527 1527 ced.pRecord = (PRECORDCORE) pci; 1528 1528 pfi = (PFIELDINFO) WinSendMsg(hwnd, 1529 1530 1529 CM_QUERYDETAILFIELDINFO, 1530 MPVOID, MPFROMSHORT(CMA_FIRST)); 1531 1531 if (!pfi) 1532 1532 WinSendMsg(hwnd, CM_OPENEDIT, MPFROMP(&ced), MPVOID); 1533 1533 else { 1534 1534 while (pfi && (INT) pfi != -1 && 1535 1536 1537 1538 1535 pfi->offStruct != FIELDOFFSET(CNRITEM, pszFileName)) 1536 pfi = (PFIELDINFO) WinSendMsg(hwnd, 1537 CM_QUERYDETAILFIELDINFO, 1538 MPFROMP(pfi), MPFROMSHORT(CMA_NEXT)); 1539 1539 if (pfi && (INT) pfi != -1) { 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1540 ced.pFieldInfo = pfi; 1541 { 1542 CNRINFO cnri; 1543 1544 memset(&cnri, 0, sizeof(CNRINFO)); 1545 cnri.cb = sizeof(CNRINFO); 1546 WinSendMsg(hwnd, 1547 CM_QUERYCNRINFO, 1548 MPFROMP(&cnri), MPFROMLONG(sizeof(CNRINFO))); 1549 if (cnri.flWindowAttr & CV_DETAIL) 1550 ced.id = CID_LEFTDVWND; 1551 } 1552 WinSendMsg(hwnd, CM_OPENEDIT, MPFROMP(&ced), MPVOID); 1553 1553 } 1554 1554 } … … 1557 1557 1558 1558 #ifdef NEVER 1559 VOID QuickView(HWND hwnd, CHAR *filename)1559 VOID QuickView(HWND hwnd, PCSZ filename) 1560 1560 { 1561 1561 if (filename && IsFile(filename) == 1) { … … 1567 1567 list[1] = NULL; 1568 1568 ExecOnList(hwnd, binview, WINDOWED | SEPARATE, NULL, list, NULL, 1569 1569 pszSrcFile, __LINE__); 1570 1570 return; 1571 1571 } … … 1577 1577 list[1] = NULL; 1578 1578 ExecOnList(hwnd, viewer, 1579 1580 1579 WINDOWED | SEPARATE | (fViewChild ? CHILD : 0), 1580 NULL, list, NULL, pszSrcFile, __LINE__); 1581 1581 return; 1582 1582 } … … 1595 1595 list[1] = NULL; 1596 1596 ExecOnList(hwnd, bined, WINDOWED | SEPARATE, NULL, list, NULL, 1597 1597 pszSrcFile, __LINE__); 1598 1598 return; 1599 1599 } … … 1605 1605 list[1] = NULL; 1606 1606 ExecOnList(hwnd, editor, WINDOWED | SEPARATE, NULL, list, NULL, 1607 1607 pszSrcFile, __LINE__); 1608 1608 return; 1609 1609 } … … 1637 1637 mi.afStyle = MIS_TEXT; 1638 1638 WinSendMsg(hwndMenu, MM_QUERYITEM, 1639 1639 MPFROM2SHORT(IDM_FILESMENU, TRUE), MPFROMP(&mi)); 1640 1640 if (!DefMenu) 1641 1641 DefMenu = WinLoadMenu(HWND_DESKTOP, FM3ModHandle, DEFMENU); 1642 1642 hwndNow = mi.hwndSubMenu; 1643 1643 mi.hwndSubMenu = hwndNew; 1644 1644 if (!mi.hwndSubMenu) 1645 1645 mi.hwndSubMenu = DefMenu; 1646 1646 WinSetParent(hwndNow, WinQueryObjectWindow(HWND_DESKTOP), FALSE); 1647 1647 WinSetOwner(hwndNow, WinQueryObjectWindow(HWND_DESKTOP)); … … 1668 1668 mi.afStyle = MIS_TEXT; 1669 1669 WinSendMsg(hwndMenu, MM_QUERYITEM, 1670 1670 MPFROM2SHORT(IDM_VIEWSMENU, TRUE), MPFROMP(&mi)); 1671 1671 if (!DefMenu) 1672 1672 DefMenu = WinLoadMenu(HWND_DESKTOP, FM3ModHandle, DEFMENU); 1673 1673 hwndNow = mi.hwndSubMenu; 1674 1674 mi.hwndSubMenu = hwndNew; 1675 1675 if (!mi.hwndSubMenu) 1676 1676 mi.hwndSubMenu = DefMenu; 1677 1677 WinSetParent(hwndNow, WinQueryObjectWindow(HWND_DESKTOP), FALSE); 1678 1678 WinSetOwner(hwndNow, WinQueryObjectWindow(HWND_DESKTOP)); … … 1706 1706 SetConditionalCascade(DirMenu, IDM_EDITSUBMENU, IDM_ATTRS); 1707 1707 SetConditionalCascade(DirMenu, IDM_DELETESUBMENU, 1708 1708 fDefaultDeletePerm ? IDM_PERMDELETE : IDM_DELETE); 1709 1709 SetConditionalCascade(DirMenu, IDM_MISCSUBMENU, IDM_SIZES); 1710 1710 SetConditionalCascade(DirMenu, IDM_OPENSUBMENU, IDM_OPENWINDOW); 1711 1711 if (fWorkPlace) { 1712 1713 1714 1715 1712 WinSendMsg(DirMenu, MM_DELETEITEM, 1713 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID); 1714 WinSendMsg(DirMenu, MM_DELETEITEM, 1715 MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID); 1716 1716 } 1717 1717 } … … 1725 1725 SetConditionalCascade(TreeMenu, IDM_OPENSUBMENU, IDM_OPENWINDOW); 1726 1726 if (fWorkPlace) { 1727 1728 1729 1730 1727 WinSendMsg(TreeMenu, MM_DELETEITEM, 1728 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID); 1729 WinSendMsg(TreeMenu, MM_DELETEITEM, 1730 MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID); 1731 1731 } 1732 1732 if (!fLVM) 1733 1734 1733 WinSendMsg(TreeMenu, MM_DELETEITEM, 1734 MPFROM2SHORT(IDM_REFRESHREMOVABLES, TRUE), MPVOID); 1735 1735 } 1736 1736 else if (hwndMenu == &ArcMenu) { … … 1740 1740 SetConditionalCascade(ArcMenu, IDM_VIEWSUBMENU, IDM_VIEW); 1741 1741 if (fWorkPlace) 1742 1743 1742 WinSendMsg(ArcMenu, MM_DELETEITEM, 1743 MPFROM2SHORT(IDM_FOLDERAFTEREXTRACT, TRUE), MPVOID); 1744 1744 } 1745 1745 else if (hwndMenu == &FileMenu) { … … 1753 1753 SetConditionalCascade(FileMenu, IDM_COLLECTMENU, IDM_COLLECT); 1754 1754 SetConditionalCascade(FileMenu, IDM_DELETESUBMENU, 1755 1755 fDefaultDeletePerm ? IDM_PERMDELETE : IDM_DELETE); 1756 1756 SetConditionalCascade(FileMenu, IDM_OPENSUBMENU, IDM_OPENDEFAULT); 1757 1757 SetConditionalCascade(FileMenu, IDM_OBJECTSUBMENU, IDM_SHADOW); 1758 1758 if (fWorkPlace) { 1759 1760 1761 1762 1759 WinSendMsg(FileMenu, MM_DELETEITEM, 1760 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID); 1761 WinSendMsg(FileMenu, MM_DELETEITEM, 1762 MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID); 1763 1763 } 1764 1764 if (!fLVM) 1765 1766 1765 WinSendMsg(FileMenu, MM_DELETEITEM, 1766 MPFROM2SHORT(IDM_REFRESHREMOVABLES, TRUE), MPVOID); 1767 1767 } 1768 1768 else if (hwndMenu == &DirCnrMenu) { … … 1771 1771 SetConditionalCascade(DirCnrMenu, IDM_OPENSUBMENU, IDM_OPENSETTINGSME); 1772 1772 if (fWorkPlace) 1773 1774 1773 WinSendMsg(DirCnrMenu, MM_DELETEITEM, 1774 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID); 1775 1775 } 1776 1776 else if (hwndMenu == &TreeCnrMenu) { 1777 1777 WinSetWindowUShort(TreeCnrMenu, QWS_ID, IDM_VIEWSMENU); 1778 1778 if (!fLVM) 1779 1780 1779 WinSendMsg(TreeCnrMenu, MM_DELETEITEM, 1780 MPFROM2SHORT(IDM_REFRESHREMOVABLES, TRUE), MPVOID); 1781 1781 } 1782 1782 else if (hwndMenu == &ArcCnrMenu) { … … 1784 1784 SetConditionalCascade(ArcCnrMenu, IDM_EXTRACTSUBMENU, IDM_ARCEXTRACT); 1785 1785 if (fWorkPlace) 1786 1787 1786 WinSendMsg(ArcCnrMenu, MM_DELETEITEM, 1787 MPFROM2SHORT(IDM_FOLDERAFTEREXTRACT, TRUE), MPVOID); 1788 1788 } 1789 1789 else if (hwndMenu == &CollectorCnrMenu) { 1790 1790 WinSetWindowUShort(CollectorCnrMenu, QWS_ID, IDM_VIEWSMENU); 1791 1791 SetConditionalCascade(CollectorCnrMenu, IDM_COLLECTMENU, 1792 1792 IDM_COLLECTFROMCLIP); 1793 1793 } 1794 1794 else if (hwndMenu == &CollectorFileMenu) { 1795 1795 WinSetWindowUShort(CollectorFileMenu, QWS_ID, IDM_FILESMENU); 1796 1796 SetConditionalCascade(CollectorFileMenu, IDM_COMMANDSMENU, 1797 1797 IDM_DOITYOURSELF); 1798 1798 SetConditionalCascade(CollectorFileMenu, IDM_COPYMENU, IDM_COPY); 1799 1799 SetConditionalCascade(CollectorFileMenu, IDM_MOVEMENU, IDM_MOVE); 1800 1800 SetConditionalCascade(CollectorFileMenu, IDM_SAVESUBMENU, 1801 1801 IDM_SAVETOCLIP); 1802 1802 SetConditionalCascade(CollectorFileMenu, IDM_VIEWSUBMENU, IDM_VIEW); 1803 1803 SetConditionalCascade(CollectorFileMenu, IDM_EDITSUBMENU, IDM_EDIT); 1804 1804 SetConditionalCascade(CollectorFileMenu, IDM_DELETESUBMENU, 1805 1805 fDefaultDeletePerm ? IDM_PERMDELETE : IDM_DELETE); 1806 1806 SetConditionalCascade(CollectorFileMenu, IDM_OPENSUBMENU, 1807 1807 IDM_OPENDEFAULT); 1808 1808 SetConditionalCascade(CollectorFileMenu, IDM_OBJECTSUBMENU, IDM_SHADOW); 1809 1809 if (fWorkPlace) { 1810 1811 1812 1813 1810 WinSendMsg(CollectorFileMenu, MM_DELETEITEM, 1811 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID); 1812 WinSendMsg(CollectorFileMenu, MM_DELETEITEM, 1813 MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID); 1814 1814 } 1815 1815 } … … 1817 1817 WinSetWindowUShort(CollectorDirMenu, QWS_ID, IDM_FILESMENU); 1818 1818 SetConditionalCascade(CollectorDirMenu, IDM_COMMANDSMENU, 1819 1819 IDM_DOITYOURSELF); 1820 1820 SetConditionalCascade(CollectorDirMenu, IDM_COPYMENU, IDM_COPY); 1821 1821 SetConditionalCascade(CollectorDirMenu, IDM_MOVEMENU, IDM_MOVE); 1822 1822 SetConditionalCascade(CollectorDirMenu, IDM_SAVESUBMENU, 1823 1823 IDM_SAVETOCLIP); 1824 1824 SetConditionalCascade(CollectorDirMenu, IDM_VIEWSUBMENU, IDM_INFO); 1825 1825 SetConditionalCascade(CollectorDirMenu, IDM_EDITSUBMENU, IDM_ATTRS); 1826 1826 SetConditionalCascade(CollectorDirMenu, IDM_DELETESUBMENU, 1827 1827 fDefaultDeletePerm ? IDM_PERMDELETE : IDM_DELETE); 1828 1828 SetConditionalCascade(CollectorDirMenu, IDM_MISCSUBMENU, IDM_SIZES); 1829 1829 SetConditionalCascade(CollectorDirMenu, IDM_OPENSUBMENU, 1830 1830 IDM_OPENWINDOW); 1831 1831 if (fWorkPlace) { 1832 1833 1834 1835 1832 WinSendMsg(CollectorDirMenu, MM_DELETEITEM, 1833 MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID); 1834 WinSendMsg(CollectorDirMenu, MM_DELETEITEM, 1835 MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID); 1836 1836 } 1837 1837 } … … 1846 1846 } 1847 1847 1848 SHORT AddToListboxBottom(HWND hwnd, CHAR *str)1848 SHORT AddToListboxBottom(HWND hwnd, PCSZ str) 1849 1849 { 1850 1850 SHORT ln; 1851 1851 1852 1852 ln = (SHORT) WinSendMsg(hwnd, LM_INSERTITEM, MPFROM2SHORT(LIT_END, 0), 1853 1853 MPFROMP(str)); 1854 1854 if (ln) 1855 1855 WinSendMsg(hwnd, LM_SELECTITEM, MPFROM2SHORT(ln, 0), MPVOID); … … 1862 1862 1863 1863 if (WinSendMsg(hwndSysMenu, MM_QUERYITEMTEXT, 1864 1864 MPFROM2SHORT(SC_RESTORE, 128), MPFROMP(s))) { 1865 1865 p = strchr(s, '\t'); 1866 1866 if (p) { … … 1871 1871 } 1872 1872 if (WinSendMsg(hwndSysMenu, MM_QUERYITEMTEXT, 1873 1873 MPFROM2SHORT(SC_CLOSE, 128), MPFROMP(s))) { 1874 1874 p = strchr(s, '\t'); 1875 1875 if (p) { … … 1880 1880 } 1881 1881 if (WinSendMsg(hwndSysMenu, MM_QUERYITEMTEXT, 1882 1882 MPFROM2SHORT(SC_MOVE, 128), MPFROMP(s))) { 1883 1883 p = strchr(s, '\t'); 1884 1884 if (p) { … … 1889 1889 } 1890 1890 if (WinSendMsg(hwndSysMenu, MM_QUERYITEMTEXT, 1891 1891 MPFROM2SHORT(SC_SIZE, 128), MPFROMP(s))) { 1892 1892 p = strchr(s, '\t'); 1893 1893 if (p) { … … 1898 1898 } 1899 1899 if (WinSendMsg(hwndSysMenu, MM_QUERYITEMTEXT, 1900 1900 MPFROM2SHORT(SC_MINIMIZE, 128), MPFROMP(s))) { 1901 1901 p = strchr(s, '\t'); 1902 1902 if (p) { … … 1907 1907 } 1908 1908 if (WinSendMsg(hwndSysMenu, 1909 1910 1909 MM_QUERYITEMTEXT, 1910 MPFROM2SHORT(SC_MAXIMIZE, 128), MPFROMP(s))) { 1911 1911 p = strchr(s, '\t'); 1912 1912 if (p) { … … 1917 1917 } 1918 1918 if (WinSendMsg(hwndSysMenu, 1919 1919 MM_QUERYITEMTEXT, MPFROM2SHORT(SC_HIDE, 128), MPFROMP(s))) { 1920 1920 p = strchr(s, '\t'); 1921 1921 if (p) { … … 1927 1927 } 1928 1928 1929 VOID LoadLibPath( CHAR *str, LONG len)1929 VOID LoadLibPath(PSZ str, LONG len) 1930 1930 { 1931 1931 ULONG ver[2]; … … 1940 1940 *str = 0; 1941 1941 if (DosQuerySysInfo(QSV_BOOT_DRIVE, 1942 1942 QSV_BOOT_DRIVE, (PVOID) ver, (ULONG) sizeof(ULONG))) 1943 1943 ver[0] = 3L; 1944 1944 *configsys = (CHAR) ver[0] + '@'; 1945 1945 if (!DosQuerySysInfo(QSV_VERSION_MAJOR, 1946 1947 1946 QSV_VERSION_MINOR, 1947 (PVOID) ver, (ULONG) sizeof(ver)) && ver[1] >= 30) 1948 1948 warp = TRUE; 1949 1949 *var = *beg = *end = 0; 1950 1950 if (warp) { 1951 1951 if (!DosLoadModule(var, sizeof(var), "DOSCALL1.DLL", &hmod)) { 1952 1953 1954 1955 1956 1957 1958 1952 if (!DosQueryProcAddr(hmod, 1953 ORD_DOS32QUERYEXTLIBPATH, 1954 NULL, (PFN *) & DQELIBPATH)) { 1955 DQELIBPATH(beg, BEGIN_LIBPATH); 1956 DQELIBPATH(end, END_LIBPATH); 1957 } 1958 DosFreeModule(hmod); 1959 1959 } 1960 1960 *var = 0; … … 1963 1963 if (fp) { 1964 1964 while (!feof(fp)) { 1965 1966 1967 1968 1969 1970 1971 1965 if (!xfgets_bstripcr(var, sizeof(var), fp, pszSrcFile, __LINE__)) 1966 break; 1967 if (!strnicmp(var, "LIBPATH=", 8)) { 1968 memmove(var, var + 8, strlen(var + 8) + 1); 1969 lstrip(var); 1970 break; 1971 } 1972 1972 } 1973 1973 fclose(fp); … … 1985 1985 WinCheckMenuItem(hwndMenu, IDM_TEXT, ((flWindowAttr & CV_TEXT))); 1986 1986 WinCheckMenuItem(hwndMenu, IDM_ICON, ((flWindowAttr & CV_ICON) && 1987 1987 !(flWindowAttr & CV_TREE))); 1988 1988 WinCheckMenuItem(hwndMenu, IDM_TREEVIEW, ((flWindowAttr & CV_TREE))); 1989 1989 WinCheckMenuItem(hwndMenu, IDM_DETAILS, ((flWindowAttr & CV_DETAIL))); … … 1998 1998 if (s) { 1999 1999 sprintf(s, "S:%s%s", 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2000 sortflags & SORT_REVERSE ? "^" : NullStr, 2001 (sortflags & SORT_FIRSTEXTENSION) ? 2002 GetPString(IDS_FIRSTX) : (sortflags & SORT_LASTEXTENSION) ? 2003 GetPString(IDS_LASTX) : (sortflags & SORT_SIZE) ? 2004 "Size" : (sortflags & SORT_EASIZE) ? 2005 (archive == 0) ? 2006 GetPString(IDS_EASIZE) : GetPString(IDS_CSIZE) : 2007 (sortflags & SORT_LWDATE) ? 2008 (archive == 0) ? 2009 GetPString(IDS_LWDATE) : GetPString(IDS_DATE) : 2010 (sortflags & SORT_LADATE) ? 2011 GetPString(IDS_LADATE) : (sortflags & SORT_CRDATE) ? 2012 GetPString(IDS_CRDATE) : 2013 (sortflags & SORT_PATHNAME) ? 2014 GetPString(IDS_PATH) : (sortflags & SORT_NOSORT) ? 2015 GetPString(IDS_NONE) : (sortflags & SORT_SUBJECT) ? 2016 GetPString(IDS_SUBJ) : GetPString(IDS_NAME)); 2017 2017 WinSetWindowText(hwnd, s); 2018 2018 free(s); … … 2027 2027 if (s) { 2028 2028 sprintf(s, "V:%s%s", 2029 2030 2031 2032 2033 2034 2035 2029 (flWindowAttr & CV_TREE) ? GetPString(IDS_TREE) : 2030 (flWindowAttr & CV_NAME) ? GetPString(IDS_NAME) : 2031 (flWindowAttr & CV_DETAIL) ? GetPString(IDS_DETAIL) : 2032 (flWindowAttr & CV_TEXT) ? GetPString(IDS_TEXT) : 2033 GetPString(IDS_ICON), 2034 ((flWindowAttr & CV_MINI) && 2035 !(flWindowAttr & CV_TEXT)) ? GetPString(IDS_MINI) : NullStr); 2036 2036 WinSetWindowText(hwnd, s); 2037 2037 free(s); … … 2046 2046 if (s) { 2047 2047 sprintf(s, "F:%s%s", 2048 2049 2050 2051 2052 2053 2048 mask->szMask, 2049 (!archive && (mask->attrFile != ALLATTRS || 2050 mask->antiattr != 0)) ? " " : NullStr, 2051 (!archive && (mask->attrFile != ALLATTRS || 2052 mask->antiattr != 2053 0)) ? GetPString(IDS_ATTRTEXT) : NullStr); 2054 2054 if (!s[2]) 2055 2055 sprintf(s, "F:%s", GetPString(IDS_ALLTEXT)); … … 2100 2100 2101 2101 sItemCount = (SHORT) WinSendMsg(hwndMenu, 2102 2102 MM_QUERYITEMCOUNT, MPVOID, MPVOID); 2103 2103 2104 2104 /* clean out old additions */ 2105 2105 while ((SHORT) WinSendMsg(hwndMenu, 2106 2107 2108 2106 MM_DELETEITEM, 2107 MPFROM2SHORT(IDM_SWITCHSTART + x++, 2108 TRUE), MPVOID) < sItemCount) 2109 2109 sItemCount--; 2110 2110 x = 0; 2111 2111 while ((SHORT) WinSendMsg(hwndMenu, 2112 2113 2114 2112 MM_DELETEITEM, 2113 MPFROM2SHORT(IDM_WINDOWSTART + x++, 2114 TRUE), MPVOID) < sItemCount) 2115 2115 sItemCount--; 2116 2116 … … 2127 2127 while ((hwndChild = WinGetNextWindow(henum)) != NULLHANDLE) { 2128 2128 if (WinQueryWindowUShort(hwndChild, QWS_ID) && hwndChild != hwndFrame) { 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2129 *wtext = 0; 2130 WinQueryWindowText(hwndChild, CCHMAXPATH + 8, wtext); 2131 if (*wtext) { 2132 wtext[CCHMAXPATH + 7] = 0; 2133 mi.afStyle = MIS_TEXT; 2134 if (!((x + sItemCount) % 28)) 2135 mi.afStyle |= MIS_BREAK; 2136 mi.id = IDM_WINDOWSTART + x; 2137 mi.iPosition = MIT_END; 2138 if ((SHORT) WinSendMsg(hwndMenu, 2139 MM_INSERTITEM, 2140 MPFROMP(&mi), MPFROMP(wtext)) >= 0) 2141 x++; 2142 } 2143 2143 } 2144 2144 } … … 2167 2167 memset(&mi, 0, sizeof(mi)); 2168 2168 for (i = 0; i < pswb->cswentry; i++) { 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2169 if (pswb->aswentry[i].swctl.uchVisibility == SWL_VISIBLE && 2170 pswb->aswentry[i].swctl.fbJump == SWL_JUMPABLE && 2171 (pswb->aswentry[i].swctl.idProcess != mypid || 2172 !hwndFrame || 2173 pswb->aswentry[i].swctl.hwnd != hwndFrame) && 2174 (pswb->aswentry[i].swctl.idProcess != mypid || 2175 !hwndTopFrame || 2176 pswb->aswentry[i].swctl.hwnd != hwndTopFrame || 2177 !WinIsChild(hwndFrame, hwndTop))) { 2178 if (!strnicmp(pswb->aswentry[i].swctl.szSwtitle, "AV/2", 4) 2179 || !stricmp(pswb->aswentry[i].swctl.szSwtitle, "File Manager/2") 2180 || !stricmp(pswb->aswentry[i].swctl.szSwtitle, "Collector") 2181 || !strnicmp(pswb->aswentry[i].swctl.szSwtitle, "VTree", 5) 2182 || !strnicmp(pswb->aswentry[i].swctl.szSwtitle, "VDir", 4) 2183 || !strnicmp(pswb->aswentry[i].swctl.szSwtitle, FM2Str, 4)) { 2184 mi.afStyle = MIS_TEXT; 2185 if (x && !(x % 28)) 2186 mi.afStyle |= MIS_BREAK; 2187 mi.id = IDM_SWITCHSTART + y; 2188 mi.iPosition = MIT_END; 2189 switches[y] = pswb->aswentry[i].hswitch; 2190 if ((SHORT) WinSendMsg(hwndMenu, 2191 MM_INSERTITEM, 2192 MPFROMP(&mi), 2193 MPFROMP(pswb->aswentry[i]. 2194 swctl.szSwtitle)) >= 0) { 2195 y++; 2196 x++; 2197 } 2198 } 2199 } 2200 2200 } 2201 2201 numswitches = y; … … 2224 2224 mi.afStyle = MIS_TEXT; 2225 2225 if (WinSendMsg(hwndMenu, 2226 2227 2228 2226 MM_QUERYITEM, 2227 MPFROM2SHORT(IDM_WINDOWSMENU, TRUE), MPFROMP(&mi))) 2228 hwndSubMenu = mi.hwndSubMenu; 2229 2229 } 2230 2230 else … … 2233 2233 *s = 0; 2234 2234 if (WinSendMsg(hwndSubMenu, 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2235 MM_QUERYITEMTEXT, 2236 MPFROM2SHORT(cmd, CCHMAXPATH + 8), MPFROMP(s)) && *s) { 2237 2238 HENUM henum; 2239 CHAR checkText[CCHMAXPATH + 8]; 2240 SWP swp; 2241 2242 s[CCHMAXPATH + 7] = 0; 2243 henum = WinBeginEnumWindows(hwndMain); 2244 while ((hwndChild = WinGetNextWindow(henum)) != NULLHANDLE) { 2245 if (WinQueryWindowUShort(hwndChild, QWS_ID)) { 2246 *checkText = 0; 2247 WinQueryWindowText(hwndChild, CCHMAXPATH + 8, checkText); 2248 checkText[CCHMAXPATH + 7] = 0; 2249 if (!stricmp(checkText, s)) { 2250 if (WinQueryWindowPos(hwndChild, &swp)) { 2251 if (swp.fl & (SWP_MINIMIZE | SWP_HIDE)) 2252 WinSetWindowPos(hwndChild, 2253 HWND_TOP, 2254 0, 0, 0, 0, SWP_RESTORE | SWP_ZORDER); 2255 } 2256 WinSetActiveWindow(HWND_DESKTOP, hwndChild); 2257 ret = TRUE; 2258 break; 2259 } 2260 } 2261 } 2262 WinEndEnumWindows(henum); 2263 2263 } 2264 2264 } … … 2280 2280 */ 2281 2281 2282 INT CheckDriveSpaceAvail( CHAR *pTargetPath, ULONGLONG ullSpaceNeeded,2283 2282 INT CheckDriveSpaceAvail(PCSZ pTargetPath, ULONGLONG ullSpaceNeeded, 2283 ULONGLONG ullFreeSpaceWhenComplete) 2284 2284 { 2285 2285 FSALLOCATE fsa; … … 2295 2295 2296 2296 CommaFmtULL(szKB, sizeof(szKB), 2297 2297 ullFreeQty - ullSpaceNeeded, ' '); 2298 2298 if (ullFreeSpaceWhenComplete == 0) { 2299 2299 saymsg(MB_OK, 2300 2301 2302 2303 2300 HWND_DESKTOP, 2301 NullStr, 2302 GetPString(IDS_DRIVESPACELIMITEDTMPSAVE), 2303 pTargetPath); 2304 2304 return 0; 2305 2305 } 2306 2306 else { 2307 2307 if (ullFreeQty > ullSpaceNeeded) { 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2308 ret = saymsg(MB_YESNO, 2309 HWND_DESKTOP, 2310 NullStr, 2311 GetPString(IDS_DRIVESPACELIMITED), 2312 pTargetPath, 2313 szKB); 2314 if (ret == MBID_YES) 2315 return 0; 2316 else 2317 return 2; 2318 2318 } 2319 2319 else { 2320 2321 2322 2323 2324 2325 2320 saymsg(MB_OK, 2321 HWND_DESKTOP, 2322 NullStr, 2323 GetPString(IDS_DRIVESPACEEXCEEDED), 2324 pTargetPath); 2325 return 2; 2326 2326 } 2327 2327 } -
trunk/dll/misc.h
r1225 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2008 Steven H. Levine9 Copyright (c) 2008, 2009 Steven H. Levine 10 10 11 11 17 Jul 08 SHL Baseline … … 27 27 #endif 28 28 29 SHORT AddToListboxBottom(HWND hwnd, CHAR *str);30 BOOL AdjustCnrColRO(HWND hwndCnr, CHAR *title, BOOL readonly, BOOL toggle);31 BOOL AdjustCnrColVis(HWND hwndCnr, CHAR *title, BOOL visible, BOOL toggle);32 VOID AdjustCnrColsForFSType(HWND hwndCnr, CHAR *directory, DETAILS_SETTINGS * pds);33 VOID AdjustCnrColsForPref(HWND hwndCnr, CHAR *directory, DETAILS_SETTINGS * pds,29 SHORT AddToListboxBottom(HWND hwnd, PCSZ str); 30 BOOL AdjustCnrColRO(HWND hwndCnr, PCSZ title, BOOL readonly, BOOL toggle); 31 BOOL AdjustCnrColVis(HWND hwndCnr, PCSZ title, BOOL visible, BOOL toggle); 32 VOID AdjustCnrColsForFSType(HWND hwndCnr, PCSZ directory, DETAILS_SETTINGS * pds); 33 VOID AdjustCnrColsForPref(HWND hwndCnr, PCSZ directory, DETAILS_SETTINGS * pds, 34 34 BOOL compare); 35 35 VOID AdjustDetailsSwitches(HWND hwnd, HWND hwndMenu, USHORT cmd, 36 CHAR * directory, CHAR *keyroot, DETAILS_SETTINGS * pds,36 PCSZ directory, PCSZ keyroot, DETAILS_SETTINGS * pds, 37 37 BOOL compare); 38 38 void BoxWindow(HWND hwnd, HPS hps, LONG color); 39 39 void Broadcast(HAB hab, HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2); 40 INT CheckDriveSpaceAvail( CHAR *pTargetPath, ULONGLONG ullSpaceNeeded,41 40 INT CheckDriveSpaceAvail(PCSZ pTargetPath, ULONGLONG ullSpaceNeeded, 41 ULONGLONG ullFreeSpaceWhenComplete); 42 42 HWND CheckMenu(HWND hwnd, HWND * hwndMenu, USHORT id); 43 43 MRESULT CnrDirectEdit(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2); … … 45 45 void DrawTargetEmphasis(HWND hwnd, BOOL on); 46 46 void EmphasizeButton(HWND hwnd, BOOL on); 47 INT ExecFile(HWND hwnd, CHAR *filename);47 INT ExecFile(HWND hwnd, PCSZ filename); 48 48 HWND FindDirCnr(HWND hwndParent); 49 VOID FixSwitchList(HWND hwnd, CHAR *text);49 VOID FixSwitchList(HWND hwnd, PCSZ text); 50 50 char *GetCmdSpec(BOOL dos); 51 51 VOID HeapThread(VOID * dummy); 52 52 BOOL IsFm2Window(HWND hwnd, BOOL chkTid); 53 VOID LoadDetailsSwitches( CHAR *keyroot, DETAILS_SETTINGS * pds);54 VOID LoadLibPath( CHAR *str, LONG len);53 VOID LoadDetailsSwitches(PCSZ keyroot, DETAILS_SETTINGS * pds); 54 VOID LoadLibPath(PSZ str, LONG len); 55 55 VOID OpenEdit(HWND hwnd); 56 56 VOID PaintRecessedWindow(HWND hwnd, HPS hps, BOOL outtie, BOOL dbl); … … 66 66 VOID SetDetailsSwitches(HWND hwnd, DETAILS_SETTINGS * pds); 67 67 BOOL SetMenuCheck(HWND hwndMenu, USHORT id, BOOL * bool, BOOL toggle, 68 CHAR *savename);68 PCSZ savename); 69 69 VOID SetShiftState(VOID); 70 70 VOID SetSortChecks(HWND hwndMenu, INT sortflags); … … 74 74 void SetupWinList(HWND hwndMenu, HWND hwndTop, HWND hwndFrame); 75 75 BOOL SwitchCommand(HWND hwndMenu, USHORT cmd); 76 BOOL ViewHelp( CHAR *filename);76 BOOL ViewHelp(PCSZ filename); 77 77 VOID disable_menuitem(HWND hwndMenu, USHORT id, BOOL enable); 78 78 -
trunk/dll/newview.c
r1391 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 01 Dec 03 SHL Comments … … 519 519 && !WinQueryCapture(HWND_DESKTOP)) { 520 520 521 char *s = NULL;521 PCSZ s = NULL; 522 522 523 523 switch (id) { … … 1814 1814 IDS_WINCREATEWINDOW); 1815 1815 else { 1816 1816 //fixme to allow user to change presparams 1-10-09 GKY 1817 1817 WinSetPresParam(temphwnd, 1818 1818 PP_FONTNAMESIZE, … … 1835 1835 IDS_WINCREATEWINDOW); 1836 1836 else { 1837 1837 //fixme to allow user to change presparams 1-10-09 GKY 1838 1838 WinSetPresParam(temphwnd, 1839 1839 PP_FONTNAMESIZE, … … 2627 2627 ad->hwndPopup = 2628 2628 WinLoadMenu(HWND_DESKTOP, FM3ModHandle, NEWVIEW_POPUP); 2629 2630 2629 if (ad->hwndPopup) 2630 //fixme to allow user to change presparams 1-10-09 GKY 2631 2631 WinSetPresParam(ad->hwndPopup, 2632 2632 PP_FONTNAMESIZE, … … 3699 3699 sip.ret = s; 3700 3700 *s = 0; 3701 sip.prompt = ss;3702 3701 sip.inputlen = 34; 3703 3702 sip.title = (SHORT1FROMMP(mp1) == IDM_GOTOLINE) ? 3704 3703 GetPString(IDS_NVLINEJUMPTITLETEXT) : 3705 3704 GetPString(IDS_NVBYTEJUMPTITLETEXT); 3706 sprintf(s ip.prompt,3705 sprintf(ss, 3707 3706 GetPString(IDS_NVJUMPTEXT), 3708 3707 (SHORT1FROMMP(mp1) == IDM_GOTOLINE) ? … … 3714 3713 (SHORT1FROMMP(mp1) == IDM_GOTOLINE) ? 3715 3714 ad->numlines : ad->textsize - 1); 3715 sip.prompt = ss; 3716 3716 WinDlgBox(HWND_DESKTOP, 3717 3717 hwnd, InputDlgProc, FM3ModHandle, STR_FRAME, &sip); -
trunk/dll/notebook.c
r1391 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2004, 200 8Steven H. Levine9 Copyright (c) 2004, 2009 Steven H. Levine 10 10 11 11 01 Aug 04 SHL Rework lstrip/rstrip usage … … 31 31 29 Feb 08 GKY Changes to enable user settable command line length 32 32 08 Mar 08 JBS Ticket 230: Replace prefixless INI keys for default directory containers with 33 33 keys using a "DirCnr." prefix 34 34 06 Jul 08 GKY Update delete/undelete to include move to and open XWP trashcan 35 35 11 Jul 08 JBS Ticket 230: Simplified code and eliminated some local variables by incorporating 36 37 36 all the details view settings (both the global variables and those in the 37 DIRCNRDATA struct) into a new struct: DETAILS_SETTINGS. 38 38 19 Jul 08 JBS Ticket 197: Support accelerator keys in setting dialogs. 39 39 20 Jul 08 JBS Ticket 114: Support user-selectable env. strings in Tree container. … … 41 41 02 Aug 08 JBS Ticket 114: Improved code to avoid traps. 42 42 30 Nov 08 GKY Add the option of creating a subdirectory from the arcname 43 43 for the extract path to arc container. 44 44 25 Dec 08 GKY Add ProcessDirectoryThread to allow optional recursive drive scan at startup. 45 45 01 Jan 09 GKY Add option to rescan tree container on eject of removable media … … 202 202 case WM_INITDLG: 203 203 WinSendDlgItemMsg(hwnd, CFGA_VIRUS, EM_SETTEXTLIMIT, 204 204 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 205 205 WinSendDlgItemMsg(hwnd, CFGA_EXTRACTPATH, EM_SETTEXTLIMIT, 206 206 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 207 207 WinEnableWindow(WinWindowFromID(hwnd, CFGA_FIND), FALSE); 208 208 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); … … 216 216 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 217 217 switch (CHARMSG(&msg)->vkey) { 218 219 220 221 222 223 224 225 226 227 228 229 230 231 218 case VK_F3: 219 case VK_ENTER: 220 case VK_NEWLINE: 221 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 222 return 0; 223 break; 224 case VK_ESC: 225 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 226 return 0; 227 break; 228 case VK_F1: 229 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 230 return 0; 231 break; 232 232 } 233 233 } … … 251 251 switch (SHORT2FROMMP(mp1)) { 252 252 case EN_KILLFOCUS: 253 254 253 WinEnableWindow(WinWindowFromID(hwnd, CFGA_FIND), FALSE); 254 break; 255 255 case EN_SETFOCUS: 256 257 256 WinEnableWindow(WinWindowFromID(hwnd, CFGA_FIND), TRUE); 257 break; 258 258 } 259 259 break; … … 261 261 switch (SHORT2FROMMP(mp1)) { 262 262 case BN_CLICKED: 263 264 265 266 267 268 269 270 271 272 273 274 275 276 263 if (WinQueryButtonCheckstate(hwnd, CFGA_DEFARC)) { 264 265 ARC_TYPE *pat = arcsighead; // Hide dups 266 267 if (!WinDlgBox(HWND_DESKTOP, hwnd, 268 SBoxDlgProc, FM3ModHandle, ASEL_FRAME, 269 (PVOID) & pat) || !pat || !pat->id || !*pat->id) { 270 DosBeep(250, 100); // Complain 271 WinCheckButton(hwnd, CFGA_DEFARC, FALSE); 272 } 273 else 274 WinSetDlgItemText(hwnd, CFGA_DEFARCNAME, pat->id); 275 } 276 break; 277 277 default: 278 278 break; 279 279 } 280 280 break; … … 300 300 case IDM_HELP: 301 301 if (hwndHelp) 302 303 302 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 303 MPFROM2SHORT(HELP_CFGA, 0), MPFROMSHORT(HM_RESOURCEID)); 304 304 break; 305 305 306 306 case CFGA_FIND: 307 307 { 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 308 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9]; 309 USHORT id; 310 HWND hwndFocus; 311 312 strcpy(filename, "*.EXE"); 313 hwndFocus = WinQueryFocus(HWND_DESKTOP); 314 if (hwndFocus) { 315 id = WinQueryWindowUShort(hwndFocus, QWS_ID); 316 switch (id) { 317 case CFGA_VIRUS: 318 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) { 319 BldQuotedFileName(szfilename, filename); 320 strcat(szfilename, " %p"); 321 WinSetDlgItemText(hwnd, id, szfilename); 322 } 323 break; 324 case CFGA_EXTRACTPATH: 325 strcpy(filename, extractpath); 326 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, 327 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME, 328 MPFROMP(filename)) && *filename) 329 WinSetDlgItemText(hwnd, id, filename); 330 break; 331 default: 332 Runtime_Error(pszSrcFile, __LINE__, "bad case"); 333 break; 334 } 335 } 336 336 } 337 337 break; … … 342 342 fQuickArcFind = WinQueryButtonCheckstate(hwnd, CFGA_QUICKARCFIND); 343 343 PrfWriteProfileData(fmprof, 344 345 344 appname, 345 "QuickArcFind", &fQuickArcFind, sizeof(BOOL)); 346 346 fArcStuffVisible = WinQueryButtonCheckstate(hwnd, CFGA_ARCSTUFFVISIBLE); 347 347 PrfWriteProfileData(fmprof, 348 349 348 appname, 349 "ArcStuffVisible", &fArcStuffVisible, sizeof(BOOL)); 350 350 fFileNameCnrPath = WinQueryButtonCheckstate(hwnd, CFGA_FILENAMEPATH); 351 351 PrfWriteProfileData(fmprof, 352 353 352 appname, 353 "FileNamePathCnr", &fFileNameCnrPath, sizeof(BOOL)); 354 354 fFolderAfterExtract = WinQueryButtonCheckstate(hwnd, 355 355 CFGA_FOLDERAFTEREXTRACT); 356 356 PrfWriteProfileData(fmprof, 357 358 359 357 appname, 358 "FolderAfterExtract", 359 &fFolderAfterExtract, sizeof(BOOL)); 360 360 if (WinQueryButtonCheckstate(hwnd, CFGA_DEFARC)) { 361 361 … … 375 375 376 376 szCLBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__); 377 378 377 if (!szCLBuf) 378 return 0; //already complained 379 379 pszWorkBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__); 380 380 if (!pszWorkBuf) { 381 382 381 free(szCLBuf); 382 return 0; //already complained 383 383 } 384 384 WinQueryDlgItemText(hwnd, CFGA_VIRUS, MaxComLineStrg, szCLBuf); 385 385 szCLBuf[MaxComLineStrg - 1] = 0; 386 386 if (strcmp(szCLBuf, virus)){ 387 388 389 390 387 NormalizeCmdLine(pszWorkBuf, szCLBuf); 388 memcpy(virus, pszWorkBuf, strlen(pszWorkBuf) + 1); 389 if (!strchr(virus, '%') && strlen(virus) > 3) 390 strcat(virus, " %p"); 391 391 } 392 392 free(pszWorkBuf); 393 393 free(szCLBuf); 394 394 if (!*virus) 395 395 strcpy(virus, "OS2SCAN.EXE %p /SUB /A"); 396 396 WinQueryDlgItemText(hwnd, CFGA_EXTRACTPATH, CCHMAXPATH, szPathBuf); 397 397 szPathBuf[CCHMAXPATH - 1] = 0; 398 398 bstrip(szPathBuf); 399 399 if (strcmp(extractpath, szPathBuf)) { 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 400 memcpy(extractpath, szPathBuf, strlen(szPathBuf) + 1); 401 if (*extractpath){ 402 MakeFullName(extractpath); 403 if (IsFile(extractpath)) { 404 ulResult = saymsg(MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP, 405 GetPString(IDS_WARNINGTEXT), 406 GetPString(IDS_EXTPATHNOTVALIDTEXT), 407 extractpath); 408 if (ulResult == MBID_YES) 409 *extractpath = 0; 410 if (ulResult == MBID_CANCEL){ 411 WinDlgBox(HWND_DESKTOP, 412 hwnd, 413 CfgDlgProc, 414 FM3ModHandle, 415 CFG_FRAME, 416 MPFROMLONG(IDM_ARCHIVERSETTINGS)); 417 break; 418 } 419 } 420 } 421 421 } 422 422 } … … 428 428 fCancelAction = FALSE; 429 429 WinDlgBox(HWND_DESKTOP, 430 431 432 433 434 430 hwnd, 431 CfgDlgProc, 432 FM3ModHandle, 433 CFG_FRAME, 434 MPFROMLONG(IDM_ARCHIVERSETTINGS)); 435 435 } 436 436 return WinDefDlgProc(hwnd, msg, mp1, mp2); … … 443 443 case WM_INITDLG: 444 444 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_SETTEXTLIMIT, 445 445 MPFROMSHORT(8), MPVOID); 446 446 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_OVERRIDESETLIMITS, 447 447 MPFROMLONG(FILESTOGET_MAX), MPFROMLONG(FILESTOGET_MIN)); 448 448 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); 449 449 break; … … 456 456 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 457 457 switch (CHARMSG(&msg)->vkey) { 458 459 460 461 462 463 464 465 466 467 468 469 470 471 458 case VK_F3: 459 case VK_ENTER: 460 case VK_NEWLINE: 461 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 462 return 0; 463 break; 464 case VK_ESC: 465 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 466 return 0; 467 break; 468 case VK_F1: 469 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 470 return 0; 471 break; 472 472 } 473 473 } … … 492 492 WinCheckButton(hwnd, CFGS_EJECTFLPYSCAN, fEjectFlpyScan); 493 493 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_SETCURRENTVALUE, 494 494 MPFROMLONG(FilesToGet), MPVOID); 495 495 return 0; 496 496 … … 500 500 case CFGS_FORCELOWER: 501 501 { 502 503 504 505 506 507 508 509 510 511 512 513 514 502 BOOL temp; 503 504 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1)); 505 if (temp) { 506 switch (SHORT1FROMMP(mp1)) { 507 case CFGS_FORCEUPPER: 508 WinCheckButton(hwnd, CFGS_FORCELOWER, FALSE); 509 break; 510 case CFGS_FORCELOWER: 511 WinCheckButton(hwnd, CFGS_FORCEUPPER, FALSE); 512 break; 513 } 514 } 515 515 } 516 516 break; … … 533 533 case IDM_HELP: 534 534 if (hwndHelp) 535 536 535 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 536 MPFROM2SHORT(HELP_CFGS, 0), MPFROMSHORT(HM_RESOURCEID)); 537 537 break; 538 538 } … … 542 542 fLoadLongnames = WinQueryButtonCheckstate(hwnd, CFGS_LOADLONGNAMES); 543 543 PrfWriteProfileData(fmprof, appname, "LoadLongname", &fLoadLongnames, 544 544 sizeof(BOOL)); 545 545 fLoadSubject = WinQueryButtonCheckstate(hwnd, CFGS_LOADSUBJECTS); 546 546 PrfWriteProfileData(fmprof, appname, "LoadSubject", &fLoadSubject, 547 547 sizeof(BOOL)); 548 548 fRemoteBug = WinQueryButtonCheckstate(hwnd, CFGS_REMOTEBUG); 549 549 PrfWriteProfileData(fmprof, appname, "RemoteBug", &fRemoteBug, 550 550 sizeof(BOOL)); 551 551 fRScanLocal = WinQueryButtonCheckstate(hwnd, CFGS_RSCANLOCAL); 552 552 PrfWriteProfileData(fmprof, appname, "RScanLocal", &fRScanLocal, 553 553 sizeof(BOOL)); 554 554 fRScanRemote = WinQueryButtonCheckstate(hwnd, CFGS_RSCANREMOTE); 555 555 PrfWriteProfileData(fmprof, appname, "RScanRemote", &fRScanRemote, 556 556 sizeof(BOOL)); 557 557 fRScanVirtual = WinQueryButtonCheckstate(hwnd, CFGS_RSCANVIRTUAL); 558 558 PrfWriteProfileData(fmprof, appname, "RScanVirtual", &fRScanVirtual, 559 559 sizeof(BOOL)); 560 560 fRScanSlow = WinQueryButtonCheckstate(hwnd, CFGS_RSCANSLOW); 561 561 PrfWriteProfileData(fmprof, appname, "RScanSlow", &fRScanSlow, 562 562 sizeof(BOOL)); 563 563 fRScanNoWrite = WinQueryButtonCheckstate(hwnd, CFGS_RSCANNOWRITE); 564 564 PrfWriteProfileData(fmprof, appname, "RScanNoWrite", &fRScanNoWrite, 565 565 sizeof(BOOL)); 566 566 fNoRemovableScan = WinQueryButtonCheckstate(hwnd, CFGS_NOREMOVABLESCAN); 567 567 PrfWriteProfileData(fmprof, appname, "NoRemovableScan", &fNoRemovableScan, 568 568 sizeof(BOOL)); 569 569 fEjectRemovableScan = WinQueryButtonCheckstate(hwnd, CFGS_EJECTREMOVABLESCAN); 570 570 PrfWriteProfileData(fmprof, appname, "EjectRemovableScan", &fEjectRemovableScan, 571 571 sizeof(BOOL)); 572 572 fEjectCDScan = WinQueryButtonCheckstate(hwnd, CFGS_EJECTCDSCAN); 573 573 PrfWriteProfileData(fmprof, appname, "EjectCDScan", &fEjectCDScan, 574 574 sizeof(BOOL)); 575 575 fEjectFlpyScan = WinQueryButtonCheckstate(hwnd, CFGS_EJECTFLPYSCAN); 576 576 PrfWriteProfileData(fmprof, appname, "EjectFlpyScan", &fEjectFlpyScan, 577 577 sizeof(BOOL)); 578 578 fNoIconsFiles = WinQueryButtonCheckstate(hwnd, CFGS_NOICONSFILES); 579 579 fNoIconsFiles = (fNoIconsFiles) ? FALSE : TRUE; 580 580 PrfWriteProfileData(fmprof, appname, "NoIconsFiles", 581 581 &fNoIconsFiles, sizeof(BOOL)); 582 582 fNoIconsDirs = WinQueryButtonCheckstate(hwnd, CFGS_NOICONSDIRS); 583 583 fNoIconsDirs = (fNoIconsDirs) ? FALSE : TRUE; 584 584 PrfWriteProfileData(fmprof, appname, "NoIconsDirs", 585 585 &fNoIconsDirs, sizeof(BOOL)); 586 586 fForceUpper = WinQueryButtonCheckstate(hwnd, CFGS_FORCEUPPER); 587 587 PrfWriteProfileData(fmprof, appname, "ForceUpper", 588 588 &fForceUpper, sizeof(BOOL)); 589 589 fForceLower = WinQueryButtonCheckstate(hwnd, CFGS_FORCELOWER); 590 590 PrfWriteProfileData(fmprof, appname, "ForceLower", 591 591 &fForceLower, sizeof(BOOL)); 592 592 { 593 593 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_QUERYVALUE, 594 594 MPFROMP(&FilesToGet), MPFROM2SHORT(0, SPBQ_DONOTUPDATE)); 595 595 if (FilesToGet < FILESTOGET_MIN) 596 596 FilesToGet = FILESTOGET_MIN; 597 597 else if (FilesToGet > FILESTOGET_MAX) 598 598 FilesToGet = FILESTOGET_MAX; 599 599 PrfWriteProfileData(fmprof, 600 600 appname, "FilesToGet", &FilesToGet, sizeof(ULONG)); 601 601 } 602 602 break; … … 611 611 case WM_INITDLG: 612 612 WinSendDlgItemMsg(hwnd, CFGV_VIEWER, EM_SETTEXTLIMIT, 613 613 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID); 614 614 WinSendDlgItemMsg(hwnd, CFGV_EDITOR, EM_SETTEXTLIMIT, 615 615 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID); 616 616 WinSendDlgItemMsg(hwnd, CFGV_BINVIEW, EM_SETTEXTLIMIT, 617 617 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID); 618 618 WinSendDlgItemMsg(hwnd, CFGV_BINED, EM_SETTEXTLIMIT, 619 619 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID); 620 620 WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), FALSE); 621 621 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); … … 629 629 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 630 630 switch (CHARMSG(&msg)->vkey) { 631 632 633 634 635 636 637 638 639 640 641 642 643 644 631 case VK_F3: 632 case VK_ENTER: 633 case VK_NEWLINE: 634 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 635 return 0; 636 break; 637 case VK_ESC: 638 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 639 return 0; 640 break; 641 case VK_F1: 642 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 643 return 0; 644 break; 645 645 } 646 646 } … … 666 666 switch (SHORT2FROMMP(mp1)) { 667 667 case EN_KILLFOCUS: 668 669 668 WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), FALSE); 669 break; 670 670 case EN_SETFOCUS: 671 672 671 WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), TRUE); 672 break; 673 673 } 674 674 break; … … 691 691 case IDM_HELP: 692 692 if (hwndHelp) 693 694 693 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 694 MPFROM2SHORT(HELP_CFGV, 0), MPFROMSHORT(HM_RESOURCEID)); 695 695 break; 696 696 697 697 case CFGV_FIND: 698 698 { 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 699 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9]; 700 USHORT id; 701 HWND hwndFocus; 702 703 strcpy(filename, "*.EXE"); 704 hwndFocus = WinQueryFocus(HWND_DESKTOP); 705 if (hwndFocus) { 706 id = WinQueryWindowUShort(hwndFocus, QWS_ID); 707 switch (id) { 708 case CFGV_BINVIEW: 709 case CFGV_BINED: 710 case CFGV_VIEWER: 711 case CFGV_EDITOR: 712 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) { 713 BldQuotedFileName(szfilename, filename); 714 strcat(szfilename, " %a"); 715 WinSetDlgItemText(hwnd, id, szfilename); 716 } 717 break; 718 default: 719 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id); 720 break; 721 } 722 } 723 723 } 724 724 break; … … 732 732 733 733 szCLBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__); 734 735 734 if (!szCLBuf) 735 return 0; //already complained 736 736 pszWorkBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__); 737 737 if (!pszWorkBuf) { 738 739 738 free(szCLBuf); 739 return 0; //already complained 740 740 } 741 741 WinQueryDlgItemText(hwnd, CFGV_VIEWER, MaxComLineStrg, szCLBuf); 742 742 szCLBuf[MaxComLineStrg - 1] = 0; 743 743 if (strcmp(szCLBuf, viewer)){ 744 745 746 747 744 NormalizeCmdLine(pszWorkBuf, szCLBuf); 745 memcpy(viewer, pszWorkBuf, strlen(pszWorkBuf) + 1); 746 if (!strchr(viewer, '%') && strlen(viewer) > 3) 747 strcat(viewer, " %a"); 748 748 } 749 749 WinQueryDlgItemText(hwnd, CFGV_EDITOR, MaxComLineStrg, szCLBuf); 750 750 szCLBuf[MaxComLineStrg - 1] = 0; 751 751 if (strcmp(szCLBuf, editor)){ 752 753 754 755 752 NormalizeCmdLine(pszWorkBuf, szCLBuf); 753 memcpy(editor, pszWorkBuf, strlen(pszWorkBuf) + 1); 754 if (!strchr(editor, '%') && strlen(editor) > 3) 755 strcat(editor, " %a"); 756 756 } 757 757 WinQueryDlgItemText(hwnd, CFGV_BINVIEW, MaxComLineStrg, szCLBuf); 758 758 szCLBuf[MaxComLineStrg - 1] = 0; 759 759 if (strcmp(szCLBuf, binview)){ 760 761 762 763 760 NormalizeCmdLine(pszWorkBuf, szCLBuf); 761 memcpy(binview, pszWorkBuf, strlen(pszWorkBuf) + 1); 762 if (!strchr(binview, '%') && strlen(binview) > 3) 763 strcat(binview, " %a"); 764 764 } 765 765 WinQueryDlgItemText(hwnd, CFGV_BINED, MaxComLineStrg, szCLBuf); 766 766 szCLBuf[MaxComLineStrg - 1] = 0; 767 767 if (strcmp(szCLBuf, bined)){ 768 769 770 771 768 NormalizeCmdLine(pszWorkBuf, szCLBuf); 769 memcpy(bined, pszWorkBuf, strlen(pszWorkBuf) + 1); 770 if (!strchr(bined, '%') && strlen(bined) > 3) 771 strcat(bined, " %a"); 772 772 } 773 773 free(pszWorkBuf); … … 779 779 fUseNewViewer = WinQueryButtonCheckstate(hwnd, CFGV_USENEWVIEWER); 780 780 PrfWriteProfileData(fmprof, appname, "UseNewViewer", &fUseNewViewer, 781 781 sizeof(BOOL)); 782 782 fGuessType = WinQueryButtonCheckstate(hwnd, CFGV_GUESSTYPE); 783 783 PrfWriteProfileData(fmprof, appname, "GuessType", &fGuessType, 784 784 sizeof(BOOL)); 785 785 fViewChild = WinQueryButtonCheckstate(hwnd, CFGV_VIEWCHILD); 786 786 PrfWriteProfileData(fmprof, appname, "ViewChild", &fViewChild, 787 787 sizeof(BOOL)); 788 788 fCheckMM = WinQueryButtonCheckstate(hwnd, CFGV_CHECKMM); 789 789 PrfWriteProfileData(fmprof, appname, "CheckMM", &fCheckMM, sizeof(BOOL)); … … 795 795 fCancelAction = FALSE; 796 796 WinDlgBox(HWND_DESKTOP, 797 798 799 800 801 797 hwnd, 798 CfgDlgProc, 799 FM3ModHandle, 800 CFG_FRAME, 801 MPFROMLONG(IDM_VIEWERSETTINGS)); 802 802 } 803 803 return WinDefDlgProc(hwnd, msg, mp1, mp2); … … 809 809 case WM_INITDLG: 810 810 WinSendDlgItemMsg(hwnd, CFGH_RUNFTPWORKDIR, EM_SETTEXTLIMIT, 811 811 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 812 812 WinSendDlgItemMsg(hwnd, CFGH_RUNHTTPWORKDIR, EM_SETTEXTLIMIT, 813 813 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 814 814 WinSendDlgItemMsg(hwnd, CFGH_FTPRUN, EM_SETTEXTLIMIT, 815 815 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID); 816 816 WinSendDlgItemMsg(hwnd, CFGH_HTTPRUN, EM_SETTEXTLIMIT, 817 817 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID); 818 818 WinSendDlgItemMsg(hwnd, CFGH_MAILRUN, EM_SETTEXTLIMIT, 819 819 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID); 820 820 WinSendDlgItemMsg(hwnd, CFGH_RUNMAILWORKDIR, EM_SETTEXTLIMIT, 821 821 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 822 822 WinEnableWindow(WinWindowFromID(hwnd, CFGH_FIND), FALSE); 823 823 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); … … 831 831 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 832 832 switch (CHARMSG(&msg)->vkey) { 833 834 835 836 837 838 839 840 841 842 843 844 845 846 833 case VK_F3: 834 case VK_ENTER: 835 case VK_NEWLINE: 836 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 837 return 0; 838 break; 839 case VK_ESC: 840 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 841 return 0; 842 break; 843 case VK_F1: 844 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 845 return 0; 846 break; 847 847 } 848 848 } … … 874 874 switch (SHORT2FROMMP(mp1)) { 875 875 case EN_KILLFOCUS: 876 877 876 WinEnableWindow(WinWindowFromID(hwnd, CFGH_FIND), FALSE); 877 break; 878 878 case EN_SETFOCUS: 879 880 879 WinEnableWindow(WinWindowFromID(hwnd, CFGH_FIND), TRUE); 880 break; 881 881 } 882 882 break; … … 899 899 case IDM_HELP: 900 900 if (hwndHelp) 901 902 901 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 902 MPFROM2SHORT(HELP_CFGH, 0), MPFROMSHORT(HM_RESOURCEID)); 903 903 break; 904 904 905 905 case CFGH_FIND: 906 906 { 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 907 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9]; 908 USHORT id; 909 HWND hwndFocus; 910 911 strcpy(filename, "*.EXE"); 912 hwndFocus = WinQueryFocus(HWND_DESKTOP); 913 if (hwndFocus) { 914 id = WinQueryWindowUShort(hwndFocus, QWS_ID); 915 switch (id) { 916 case CFGH_HTTPRUN: 917 case CFGH_FTPRUN: 918 case CFGH_MAILRUN: 919 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) { 920 BldQuotedFileName(szfilename, filename); 921 WinSetDlgItemText(hwnd, id, szfilename); 922 } 923 break; 924 case CFGH_RUNFTPWORKDIR: 925 strcpy(filename, ftprundir); 926 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, 927 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME, 928 MPFROMP(filename)) && *filename) 929 WinSetDlgItemText(hwnd, id, filename); 930 break; 931 case CFGH_RUNHTTPWORKDIR: 932 strcpy(filename, httprundir); 933 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, 934 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME, 935 MPFROMP(filename)) && *filename) 936 WinSetDlgItemText(hwnd, id, filename); 937 break; 938 case CFGH_RUNMAILWORKDIR: 939 strcpy(filename, mailrundir); 940 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, 941 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME, 942 MPFROMP(filename)) && *filename) 943 WinSetDlgItemText(hwnd, id, filename); 944 break; 945 default: 946 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id); 947 break; 948 } 949 } 950 950 } 951 951 break; … … 960 960 961 961 szCLBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__); 962 963 962 if (!szCLBuf) 963 return 0; //already complained 964 964 pszWorkBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__); 965 965 if (!pszWorkBuf) { 966 967 966 free(szCLBuf); 967 return 0; //already complained 968 968 } 969 969 WinQueryDlgItemText(hwnd, CFGH_RUNHTTPWORKDIR, CCHMAXPATH, szPathBuf); … … 982 982 szCLBuf[MaxComLineStrg - 1] = 0; 983 983 if (strcmp(szCLBuf, ftprun)){ 984 985 984 NormalizeCmdLine(pszWorkBuf, szCLBuf); 985 memcpy(ftprun, pszWorkBuf, strlen(pszWorkBuf) + 1); 986 986 } 987 987 WinQueryDlgItemText(hwnd, CFGH_HTTPRUN, MaxComLineStrg, szCLBuf); 988 988 szCLBuf[MaxComLineStrg - 1] = 0; 989 989 if (strcmp(szCLBuf, httprun)){ 990 991 990 NormalizeCmdLine(pszWorkBuf, szCLBuf); 991 memcpy(httprun, pszWorkBuf, strlen(pszWorkBuf) + 1); 992 992 } 993 993 WinQueryDlgItemText(hwnd, CFGH_MAILRUN, MaxComLineStrg, szCLBuf); 994 994 szCLBuf[MaxComLineStrg - 1] = 0; 995 995 if (strcmp(szCLBuf, mailrun)){ 996 997 996 NormalizeCmdLine(pszWorkBuf, szCLBuf); 997 memcpy(mailrun, pszWorkBuf, strlen(pszWorkBuf) + 1); 998 998 } 999 999 free(pszWorkBuf); … … 1007 1007 fHttpRunWPSDefault = WinQueryButtonCheckstate(hwnd, CFGH_HTTPRUNWPSDEFAULT); 1008 1008 PrfWriteProfileData(fmprof, appname, "HttpRunWPSDefault", &fHttpRunWPSDefault, 1009 1009 sizeof(BOOL)); 1010 1010 fFtpRunWPSDefault = WinQueryButtonCheckstate(hwnd, CFGH_FTPRUNWPSDEFAULT); 1011 1011 PrfWriteProfileData(fmprof, appname, "FtpRunWPSDefault", &fFtpRunWPSDefault, 1012 1012 sizeof(BOOL)); 1013 1013 fLibPathStrictHttpRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTHTTPRUN); 1014 1014 PrfWriteProfileData(fmprof, appname, "LibPathStrictHttpRun", 1015 1015 &fLibPathStrictHttpRun, sizeof(BOOL)); 1016 1016 fLibPathStrictFtpRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTFTPRUN); 1017 1017 PrfWriteProfileData(fmprof, appname, "LibPathStrictFtpRun", 1018 1018 &fLibPathStrictFtpRun, sizeof(BOOL)); 1019 1019 fLibPathStrictMailRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTMAILRUN); 1020 1020 PrfWriteProfileData(fmprof, appname, "LibPathStrictMailRun", 1021 1021 &fLibPathStrictMailRun, sizeof(BOOL)); 1022 1022 fNoMailtoMailRun = WinQueryButtonCheckstate(hwnd, CFGH_NOMAILTOMAILRUN); 1023 1023 PrfWriteProfileData(fmprof, appname, "NoMailtoMailRun", 1024 1024 &fNoMailtoMailRun, sizeof(BOOL)); 1025 1025 break; 1026 1026 } … … 1029 1029 fCancelAction = FALSE; 1030 1030 WinDlgBox(HWND_DESKTOP, 1031 1032 1033 1034 1035 1031 hwnd, 1032 CfgDlgProc, 1033 FM3ModHandle, 1034 CFG_FRAME, 1035 MPFROMLONG(IDM_VIEWERSETTINGS)); 1036 1036 } 1037 1037 return WinDefDlgProc(hwnd, msg, mp1, mp2); … … 1058 1058 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 1059 1059 switch (CHARMSG(&msg)->vkey) { 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1060 case VK_F3: 1061 case VK_ENTER: 1062 case VK_NEWLINE: 1063 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 1064 return 0; 1065 break; 1066 case VK_ESC: 1067 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 1068 return 0; 1069 break; 1070 case VK_F1: 1071 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 1072 return 0; 1073 break; 1074 1074 } 1075 1075 } … … 1091 1091 case IDM_HELP: 1092 1092 if (hwndHelp) 1093 1094 1095 1093 WinSendMsg(hwndHelp, 1094 HM_DISPLAY_HELP, 1095 MPFROM2SHORT(HELP_CFGB, 0), MPFROMSHORT(HM_RESOURCEID)); 1096 1096 break; 1097 1097 } … … 1101 1101 fToolbarHelp = WinQueryButtonCheckstate(hwnd, CFGB_TOOLBARHELP); 1102 1102 PrfWriteProfileData(fmprof, 1103 1103 FM3Str, "ToolbarHelp", &fToolbarHelp, sizeof(BOOL)); 1104 1104 fDrivebarHelp = WinQueryButtonCheckstate(hwnd, CFGB_DRIVEBARHELP); 1105 1105 PrfWriteProfileData(fmprof, 1106 1106 FM3Str, "DrivebarHelp", &fDrivebarHelp, sizeof(BOOL)); 1107 1107 fOtherHelp = WinQueryButtonCheckstate(hwnd, CFGB_OTHERHELP); 1108 1108 PrfWriteProfileData(fmprof, 1109 1109 FM3Str, "OtherHelp", &fOtherHelp, sizeof(BOOL)); 1110 1110 break; 1111 1111 } … … 1120 1120 case WM_INITDLG: 1121 1121 WinSendDlgItemMsg(hwnd, 1122 1123 1122 CFG5_FILTER, 1123 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 1124 1124 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); 1125 1125 break; … … 1132 1132 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 1133 1133 switch (CHARMSG(&msg)->vkey) { 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1134 case VK_F3: 1135 case VK_ENTER: 1136 case VK_NEWLINE: 1137 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 1138 return 0; 1139 break; 1140 case VK_ESC: 1141 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 1142 return 0; 1143 break; 1144 case VK_F1: 1145 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 1146 return 0; 1147 break; 1148 1148 } 1149 1149 } … … 1160 1160 1161 1161 if (!PrfQueryProfileData(fmprof, 1162 1163 1164 1165 1162 appname, 1163 "TreeflWindowAttr", 1164 (PVOID) & flWindowAttr, &ulSize)) 1165 flWindowAttr |= (CV_TREE | CA_TREELINE | CV_ICON | CV_MINI | CV_FLOW); 1166 1166 WinCheckButton(hwnd, CFG5_ICON, ((flWindowAttr & CV_ICON) != FALSE)); 1167 1167 WinCheckButton(hwnd, CFG5_MINIICONS, 1168 1168 ((flWindowAttr & CV_MINI) != FALSE)); 1169 1169 memset(&mask, 0, sizeof(mask)); 1170 1170 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN | 1171 1171 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY; 1172 1172 mask.fIsTree = TRUE; 1173 1173 ulSize = sizeof(MASK); 1174 1174 if (PrfQueryProfileData(fmprof, appname, "TreeFilter", &mask, &ulSize)) { 1175 1175 SetMask(NULL, &mask); 1176 1176 } 1177 1177 if (!mask.attrFile) 1178 1179 1180 1178 mask.attrFile = (FILE_READONLY | FILE_NORMAL | 1179 FILE_ARCHIVED | FILE_DIRECTORY | 1180 FILE_HIDDEN | FILE_SYSTEM); 1181 1181 strcpy(mask.prompt, GetPString(IDS_TREEFILTERTITLETEXT)); 1182 1182 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask); … … 1191 1191 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE); 1192 1192 if (TreesortFlags & SORT_FIRSTEXTENSION) 1193 1193 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE); 1194 1194 else if (TreesortFlags & SORT_LASTEXTENSION) 1195 1195 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE); 1196 1196 else if (TreesortFlags & SORT_SIZE) 1197 1197 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE); 1198 1198 else if (TreesortFlags & SORT_EASIZE) 1199 1199 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE); 1200 1200 else if (TreesortFlags & SORT_LWDATE) 1201 1201 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE); 1202 1202 else if (TreesortFlags & SORT_LADATE) 1203 1203 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE); 1204 1204 else if (TreesortFlags & SORT_CRDATE) 1205 1205 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE); 1206 1206 else if (TreesortFlags & SORT_FILENAME) 1207 1207 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE); 1208 1208 else 1209 1209 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE); 1210 1210 if (TreesortFlags & SORT_REVERSE) 1211 1211 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE); 1212 1212 } 1213 1213 return 0; … … 1215 1215 case UM_SETUP5: 1216 1216 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc, 1217 1217 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) { 1218 1218 SetMask(NULL, &mask); 1219 1219 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask); … … 1226 1226 switch (SHORT2FROMMP(mp1)) { 1227 1227 case EN_SETFOCUS: 1228 1229 1230 1228 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID); 1229 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID); 1230 break; 1231 1231 } 1232 1232 break; … … 1249 1249 case IDM_HELP: 1250 1250 if (hwndHelp) 1251 1252 1253 1251 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 1252 MPFROM2SHORT(HELP_TREEVIEW, 0), 1253 MPFROMSHORT(HM_RESOURCEID)); 1254 1254 break; 1255 1255 } … … 1261 1261 1262 1262 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON)) 1263 1263 flWindowAttr |= CV_ICON; 1264 1264 else 1265 1265 flWindowAttr |= CV_TEXT; 1266 1266 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS)) 1267 1267 flWindowAttr |= CV_MINI; 1268 1268 flWindowAttr |= (CV_TREE | CV_FLOW | CA_TREELINE); 1269 1269 PrfWriteProfileData(fmprof, 1270 1271 1270 appname, 1271 "TreeflWindowAttr", &flWindowAttr, sizeof(ULONG)); 1272 1272 if (hwndTree) { 1273 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1274 CNRINFO cnri; 1275 1276 memset(&cnri, 0, sizeof(cnri)); 1277 cnri.cb = sizeof(cnri); 1278 WinSendMsg(WinWindowFromID 1279 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 1280 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri))); 1281 cnri.flWindowAttr = flWindowAttr; 1282 WinSendMsg(WinWindowFromID 1283 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 1284 CM_SETCNRINFO, MPFROMP(&cnri), 1285 MPFROMLONG(CMA_FLWINDOWATTR)); 1286 1286 } 1287 1287 } … … 1310 1310 TreesortFlags |= SORT_REVERSE; 1311 1311 PrfWriteProfileData(fmprof, appname, "TreeSort", &TreesortFlags, 1312 1312 sizeof(INT)); 1313 1313 if (hwndTree) 1314 1314 PostMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_RESORT, 0), MPVOID); … … 1320 1320 1321 1321 dcd = WinQueryWindowPtr(WinWindowFromID(WinWindowFromID(hwndTree, 1322 1323 1322 FID_CLIENT), 1323 TREE_CNR), QWL_USER); 1324 1324 if (dcd && dcd->size == sizeof(DIRCNRDATA)) { 1325 1326 1325 dcd->mask = mask; 1326 PostMsg(hwndTree, UM_FILTER, MPVOID, MPVOID); 1327 1327 } 1328 1328 } … … 1340 1340 case WM_INITDLG: 1341 1341 WinSendDlgItemMsg(hwnd, CFGT_ENVVARLIST, EM_SETTEXTLIMIT, 1342 1342 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 1343 1343 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); 1344 1344 break; … … 1364 1364 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 1365 1365 switch (CHARMSG(&msg)->vkey) { 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1366 case VK_F3: 1367 case VK_ENTER: 1368 case VK_NEWLINE: 1369 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 1370 return 0; 1371 break; 1372 case VK_ESC: 1373 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 1374 return 0; 1375 break; 1376 case VK_F1: 1377 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 1378 return 0; 1379 break; 1380 1380 } 1381 1381 } … … 1397 1397 case IDM_HELP: 1398 1398 if (hwndHelp) 1399 1400 1399 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 1400 MPFROM2SHORT(HELP_CFGT, 0), MPFROMSHORT(HM_RESOURCEID)); 1401 1401 break; 1402 1402 } … … 1406 1406 fVTreeOpensWPS = WinQueryButtonCheckstate(hwnd, CFGT_VTREEOPENSWPS); 1407 1407 PrfWriteProfileData(fmprof, FM3Str, "VTreeOpensWPS", &fVTreeOpensWPS, 1408 1408 sizeof(BOOL)); 1409 1409 fCollapseFirst = WinQueryButtonCheckstate(hwnd, CFGT_COLLAPSEFIRST); 1410 1410 PrfWriteProfileData(fmprof, appname, "CollapseFirst", &fCollapseFirst, 1411 1411 sizeof(BOOL)); 1412 1412 fSwitchTreeOnFocus = WinQueryButtonCheckstate(hwnd, 1413 1413 CFGT_SWITCHTREEONFOCUS); 1414 1414 PrfWriteProfileData(fmprof, appname, "SwitchTreeOnFocus", 1415 1415 &fSwitchTreeOnFocus, sizeof(BOOL)); 1416 1416 fSwitchTreeExpand = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREEEXPAND); 1417 1417 PrfWriteProfileData(fmprof, appname, "SwitchTreeExpand", 1418 1418 &fSwitchTreeExpand, sizeof(BOOL)); 1419 1419 fSwitchTree = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREE); 1420 1420 PrfWriteProfileData(fmprof, appname, "SwitchTree", &fSwitchTree, 1421 1421 sizeof(BOOL)); 1422 1422 fFollowTree = WinQueryButtonCheckstate(hwnd, CFGT_FOLLOWTREE); 1423 1423 PrfWriteProfileData(fmprof, appname, "FollowTree", &fFollowTree, 1424 1424 sizeof(BOOL)); 1425 1425 fTopDir = WinQueryButtonCheckstate(hwnd, CFGT_TOPDIR); 1426 1426 PrfWriteProfileData(fmprof, appname, "TopDir", (PVOID) & fTopDir, 1427 1427 sizeof(BOOL)); 1428 1428 fDCOpens = WinQueryButtonCheckstate(hwnd, CFGT_DCOPENS); 1429 1429 PrfWriteProfileData(fmprof, FM3Str, "DoubleClickOpens", &fDCOpens, 1430 1430 sizeof(BOOL)); 1431 1431 fShowEnvChanged = (fShowEnv != WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV)); 1432 1432 fShowEnv = WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV); … … 1435 1435 char * pszTemp = xmalloc(WinQueryDlgItemTextLength(hwnd, CFGT_ENVVARLIST) + 1, pszSrcFile, __LINE__); 1436 1436 if (pszTemp) { 1437 1438 1439 1440 1441 1442 1443 1444 1437 WinQueryDlgItemText(hwnd, CFGT_ENVVARLIST, MaxComLineStrg, pszTemp); 1438 strupr(pszTemp); 1439 if (strcmp(pszTemp, pszTreeEnvVarList)) { 1440 fTreeEnvVarListChanged = TRUE; 1441 strcpy(pszTreeEnvVarList, pszTemp); 1442 PrfWriteProfileString(fmprof, appname, "TreeEnvVarList", pszTreeEnvVarList); 1443 } 1444 free(pszTemp); 1445 1445 } 1446 1446 if (hwndTree && (fShowEnvChanged || (fShowEnv && fTreeEnvVarListChanged))) 1447 1447 { 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1448 PCNRITEM pci = WinSendMsg(WinWindowFromID 1449 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), CM_QUERYRECORDEMPHASIS, 1450 MPFROMLONG(CMA_FIRST), 1451 MPFROMSHORT(CRA_SELECTED)); 1452 PostMsg(WinWindowFromID 1453 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), WM_COMMAND, 1454 MPFROM2SHORT(IDM_RESCAN, 0), MPVOID); 1455 pszTemp = xstrdup(pci->pszFileName, pszSrcFile, __LINE__); 1456 if (pszTemp) { 1457 if (!PostMsg(hwndTree, UM_SHOWME, MPFROMP(pszTemp), MPVOID)) 1458 free(pszTemp); 1459 /* pszTemp is freed in the UM_SHOWME code */ 1460 } 1461 1461 } 1462 1462 } … … 1471 1471 case WM_INITDLG: 1472 1472 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_SETTEXTLIMIT, 1473 1473 MPFROMSHORT(8), MPVOID); 1474 1474 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_OVERRIDESETLIMITS, 1475 1475 MPFROMLONG(CMDLNLNGTH_MAX), MPFROMLONG(CMDLNLNGTH_MIN)); 1476 1476 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); 1477 1477 break; … … 1484 1484 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 1485 1485 switch (CHARMSG(&msg)->vkey) { 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1486 case VK_F3: 1487 case VK_ENTER: 1488 case VK_NEWLINE: 1489 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 1490 return 0; 1491 break; 1492 case VK_ESC: 1493 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 1494 return 0; 1495 break; 1496 case VK_F1: 1497 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 1498 return 0; 1499 break; 1500 1500 } 1501 1501 } … … 1522 1522 WinCheckButton(hwnd, CFGG_TRASHCAN, fTrashCan); 1523 1523 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_SETCURRENTVALUE, 1524 1524 MPFROMLONG(MaxComLineStrg), MPVOID); 1525 1525 return 0; 1526 1526 … … 1539 1539 switch (SHORT2FROMMP(mp1)) { 1540 1540 case EN_SETFOCUS: 1541 1542 1543 1541 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID); 1542 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID); 1543 break; 1544 1544 } 1545 1545 break; … … 1562 1562 case IDM_HELP: 1563 1563 if (hwndHelp) 1564 1565 1566 1564 WinSendMsg(hwndHelp, 1565 HM_DISPLAY_HELP, 1566 MPFROM2SHORT(HELP_CFGG, 0), MPFROMSHORT(HM_RESOURCEID)); 1567 1567 break; 1568 1568 } … … 1578 1578 PrfWriteProfileData(fmprof, FM3Str, "NoDead", &fNoDead, sizeof(BOOL)); 1579 1579 PrfWriteProfileData(fmprof, 1580 1580 FM3Str, "NoFinger", &fNoFinger, sizeof(BOOL)); 1581 1581 WinDestroyPointer(hptrFinger); 1582 1582 if (!fNoDead) 1583 1583 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER_ICON); 1584 1584 else 1585 1585 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER2_ICON); 1586 1586 } 1587 1587 fLinkSetsIcon = WinQueryButtonCheckstate(hwnd, CFGG_LINKSETSICON); 1588 1588 PrfWriteProfileData(fmprof, 1589 1590 1589 appname, 1590 "LinkSetsIcon", &fLinkSetsIcon, sizeof(BOOL)); 1591 1591 fCustomFileDlg = WinQueryButtonCheckstate(hwnd, CFGG_CUSTOMFILEDLG); 1592 1592 PrfWriteProfileData(fmprof, 1593 1594 1593 FM3Str, 1594 "CustomFileDlg", &fCustomFileDlg, sizeof(BOOL)); 1595 1595 fDullMin = WinQueryButtonCheckstate(hwnd, CFGG_BORING); 1596 1596 PrfWriteProfileData(fmprof, 1597 1597 FM3Str, "DullDatabar", &fDullMin, sizeof(BOOL)); 1598 1598 fConfirmDelete = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMDELETE); 1599 1599 PrfWriteProfileData(fmprof, 1600 1601 1600 appname, 1601 "ConfirmDelete", &fConfirmDelete, sizeof(BOOL)); 1602 1602 fDontMoveMouse = WinQueryButtonCheckstate(hwnd, CFGG_DONTMOVEMOUSE); 1603 1603 PrfWriteProfileData(fmprof, 1604 1605 1604 appname, 1605 "DontMoveMouse", &fDontMoveMouse, sizeof(BOOL)); 1606 1606 fCopyDefault = WinQueryButtonCheckstate(hwnd, CFGG_DEFAULTCOPY); 1607 1607 PrfWriteProfileData(fmprof, appname, "DefaultCopy", 1608 1608 &fCopyDefault, sizeof(BOOL)); 1609 1609 fRealIdle = WinQueryButtonCheckstate(hwnd, CFGG_IDLECOPY); 1610 1610 PrfWriteProfileData(fmprof, appname, "IdleCopy", 1611 1611 &fRealIdle, sizeof(BOOL)); 1612 1612 fDragndropDlg = WinQueryButtonCheckstate(hwnd, CFGG_DNDDLG); 1613 1613 PrfWriteProfileData(fmprof, appname, "Drag&DropDlg", 1614 1614 &fDragndropDlg, sizeof(BOOL)); 1615 1615 fVerify = WinQueryButtonCheckstate(hwnd, CFGG_VERIFYWRITES); 1616 1616 PrfWriteProfileData(fmprof, appname, "VerifyWrites", 1617 1617 &fVerify, sizeof(BOOL)); 1618 1618 DosSetVerify(fVerify); 1619 1619 fDefaultDeletePerm = WinQueryButtonCheckstate(hwnd, 1620 1620 CFGG_DEFAULTDELETEPERM); 1621 1621 PrfWriteProfileData(fmprof, appname, "DefaultDeletePerm", 1622 1622 &fDefaultDeletePerm, sizeof(BOOL)); 1623 1623 fFM2Deletes = WinQueryButtonCheckstate(hwnd, CFGG_FM2DELETES); 1624 1624 PrfWriteProfileData(fmprof, FM3Str, "FM2Deletes", 1625 1625 &fFM2Deletes, sizeof(BOOL)); 1626 1626 fTrashCan = WinQueryButtonCheckstate(hwnd, CFGG_TRASHCAN); 1627 1627 PrfWriteProfileData(fmprof, FM3Str, "TrashCan", 1628 1628 &fTrashCan, sizeof(BOOL)); 1629 1629 fConfirmTarget = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMTARGET); 1630 1630 PrfWriteProfileData(fmprof, appname, "ConfirmTarget", 1631 1631 &fConfirmTarget, sizeof(BOOL)); 1632 1632 { 1633 1633 WinSendDlgItemMsg(hwnd, CFGG_CMDLNLNGTH, SPBM_QUERYVALUE, 1634 1634 MPFROMP(&MaxComLineStrg), MPFROM2SHORT(0, SPBQ_DONOTUPDATE)); 1635 1635 if (MaxComLineStrg < CMDLNLNGTH_MIN) 1636 1636 MaxComLineStrg = CMDLNLNGTH_MIN; 1637 1637 else if (MaxComLineStrg > CMDLNLNGTH_MAX) 1638 1638 MaxComLineStrg = CMDLNLNGTH_MAX; 1639 1639 PrfWriteProfileData(fmprof, 1640 1640 appname, "MaxComLineStrg", &MaxComLineStrg, sizeof(ULONG)); 1641 1641 } 1642 1642 break; … … 1650 1650 case WM_INITDLG: 1651 1651 WinSendDlgItemMsg(hwnd, CFGC_COMPARE, EM_SETTEXTLIMIT, 1652 1652 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID); 1653 1653 WinSendDlgItemMsg(hwnd, CFGC_DIRCOMPARE, EM_SETTEXTLIMIT, 1654 1654 MPFROM2SHORT(MaxComLineStrg, 0), MPVOID); 1655 1655 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE); 1656 1656 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); … … 1664 1664 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 1665 1665 switch (CHARMSG(&msg)->vkey) { 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1666 case VK_F3: 1667 case VK_ENTER: 1668 case VK_NEWLINE: 1669 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 1670 return 0; 1671 break; 1672 case VK_ESC: 1673 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 1674 return 0; 1675 break; 1676 case VK_F1: 1677 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 1678 return 0; 1679 break; 1680 1680 } 1681 1681 } … … 1693 1693 switch (SHORT2FROMMP(mp1)) { 1694 1694 case EN_KILLFOCUS: 1695 1696 1695 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE); 1696 break; 1697 1697 case EN_SETFOCUS: 1698 1699 1698 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), TRUE); 1699 break; 1700 1700 } 1701 1701 break; … … 1718 1718 case IDM_HELP: 1719 1719 if (hwndHelp) 1720 1721 1720 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 1721 MPFROM2SHORT(HELP_CFGC, 0), MPFROMSHORT(HM_RESOURCEID)); 1722 1722 break; 1723 1723 1724 1724 case CFGC_FIND: 1725 1725 { 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1726 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9]; 1727 USHORT id; 1728 HWND hwndFocus; 1729 1730 strcpy(filename, "*.EXE"); 1731 hwndFocus = WinQueryFocus(HWND_DESKTOP); 1732 if (hwndFocus) { 1733 id = WinQueryWindowUShort(hwndFocus, QWS_ID); 1734 switch (id) { 1735 case CFGC_COMPARE: 1736 case CFGC_DIRCOMPARE: 1737 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) { 1738 BldQuotedFileName(szfilename, filename); 1739 strcat(szfilename, " %a"); 1740 WinSetDlgItemText(hwnd, id, szfilename); 1741 } 1742 break; 1743 default: 1744 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id); 1745 break; 1746 } 1747 } 1748 1748 } 1749 1749 break; … … 1757 1757 1758 1758 szCLBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__); 1759 1760 1759 if (!szCLBuf) 1760 return 0; //already complained 1761 1761 pszWorkBuf = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__); 1762 1762 if (!pszWorkBuf) { 1763 1764 1763 free(szCLBuf); 1764 return 0; //already complained 1765 1765 } 1766 1766 WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, MaxComLineStrg, szCLBuf); 1767 1768 1769 1770 1771 1772 1773 1767 szCLBuf[MaxComLineStrg - 1] = 0; 1768 if (strcmp(szCLBuf, dircompare)){ 1769 NormalizeCmdLine(pszWorkBuf, szCLBuf); 1770 memcpy(dircompare, pszWorkBuf, strlen(pszWorkBuf) + 1); 1771 if (!strchr(dircompare, '%') && strlen(dircompare) > 3) 1772 strcat(dircompare, " %a"); 1773 } 1774 1774 PrfWriteProfileString(fmprof, appname, "DirCompare", dircompare); 1775 1775 WinQueryDlgItemText(hwnd, CFGC_COMPARE, MaxComLineStrg, szCLBuf); 1776 1776 szCLBuf[MaxComLineStrg - 1] = 0; 1777 1777 if (strcmp(szCLBuf, compare)){ 1778 1779 1780 1781 1778 NormalizeCmdLine(pszWorkBuf, szCLBuf); 1779 memcpy(compare, pszWorkBuf, strlen(pszWorkBuf) + 1); 1780 if (!strchr(compare, '%') && strlen(compare) > 3) 1781 strcat(compare, " %a"); 1782 1782 } 1783 1783 free(pszWorkBuf); … … 1790 1790 fCancelAction = FALSE; 1791 1791 WinDlgBox(HWND_DESKTOP, 1792 1793 1794 1795 1796 1792 hwnd, 1793 CfgDlgProc, 1794 FM3ModHandle, 1795 CFG_FRAME, 1796 MPFROMLONG(IDM_COMPARESETTINGS)); 1797 1797 } 1798 1798 return WinDefDlgProc(hwnd, msg, mp1, mp2); … … 1815 1815 WinCheckButton(hwnd, CFGD_NOSEARCH, fNoSearch); 1816 1816 WinCheckButton(hwnd, CFGD_EXTENDEDSEL, 1817 1817 ((ulCnrType & CCS_EXTENDSEL) != 0)); 1818 1818 WinCheckButton(hwnd, CFGD_MULTIPLESEL, 1819 1819 ((ulCnrType & CCS_MULTIPLESEL) != 0)); 1820 1820 WinCheckButton(hwnd, CFGD_LEAVETREE, fLeaveTree); 1821 1821 WinCheckButton(hwnd, CFGD_NOFOLDMENU, fNoFoldMenu); … … 1829 1829 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 1830 1830 switch (CHARMSG(&msg)->vkey) { 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1831 case VK_F3: 1832 case VK_ENTER: 1833 case VK_NEWLINE: 1834 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 1835 return 0; 1836 break; 1837 case VK_ESC: 1838 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 1839 return 0; 1840 break; 1841 case VK_F1: 1842 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 1843 return 0; 1844 break; 1845 1845 } 1846 1846 } … … 1862 1862 case IDM_HELP: 1863 1863 if (hwndHelp) 1864 1865 1864 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 1865 MPFROM2SHORT(HELP_CFGD, 0), MPFROMSHORT(HM_RESOURCEID)); 1866 1866 break; 1867 1867 } … … 1875 1875 ulCnrType |= CCS_MULTIPLESEL; 1876 1876 PrfWriteProfileData(fmprof, appname, "ContainerType", 1877 1877 (PVOID) & ulCnrType, sizeof(BOOL)); 1878 1878 fMinOnOpen = WinQueryButtonCheckstate(hwnd, CFGD_MINONOPEN); 1879 1879 PrfWriteProfileData(fmprof, FM3Str, "MinDirOnOpen", &fMinOnOpen, 1880 1880 sizeof(BOOL)); 1881 1881 fLeaveTree = WinQueryButtonCheckstate(hwnd, CFGD_LEAVETREE); 1882 1882 PrfWriteProfileData(fmprof, appname, "LeaveTree", &fLeaveTree, 1883 1883 sizeof(BOOL)); 1884 1884 fNoFoldMenu = WinQueryButtonCheckstate(hwnd, CFGD_NOFOLDMENU); 1885 1885 PrfWriteProfileData(fmprof, appname, "NoFoldMenu", &fNoFoldMenu, 1886 1886 sizeof(BOOL)); 1887 1887 fSelectedAlways = WinQueryButtonCheckstate(hwnd, CFGD_SELECTEDALWAYS); 1888 1888 PrfWriteProfileData(fmprof, appname, "SelectedAlways", &fSelectedAlways, 1889 1889 sizeof(BOOL)); 1890 1890 fNoSearch = WinQueryButtonCheckstate(hwnd, CFGD_NOSEARCH); 1891 1891 PrfWriteProfileData(fmprof, appname, "NoSearch", &fNoSearch, 1892 1892 sizeof(BOOL)); 1893 1893 fLookInDir = WinQueryButtonCheckstate(hwnd, CFGD_LOOKINDIR); 1894 1894 PrfWriteProfileData(fmprof, FM3Str, "LookInDir", (PVOID) & fLookInDir, 1895 1895 sizeof(BOOL)); 1896 1896 fUnHilite = WinQueryButtonCheckstate(hwnd, CFGD_UNHILITE); 1897 1897 PrfWriteProfileData(fmprof, appname, "UnHilite", 1898 1898 &fUnHilite, sizeof(BOOL)); 1899 1899 { 1900 1900 BOOL fOldSyncUpdates = WinQueryButtonCheckstate(hwnd, CFGD_SYNCUPDATES); 1901 1901 1902 1902 if (fOldSyncUpdates != fSyncUpdates) { 1903 1904 1905 1906 1907 1903 fSyncUpdates = fOldSyncUpdates; 1904 if (hwndMain && !strcmp(realappname, FM3Str)) { 1905 // Save state and restore to refresh windows with new settings 1906 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) { 1907 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2)); 1908 1908 // PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID); 1909 PostMsg(MainObjectHwnd, UM_RESTORE,GetPString(IDS_FM2TEMPTEXT), MPVOID);1910 1911 1909 PostMsg(MainObjectHwnd, UM_RESTORE, (PSZ)GetPString(IDS_FM2TEMPTEXT), MPVOID); 1910 } 1911 } 1912 1912 } 1913 1913 } 1914 1914 PrfWriteProfileData(fmprof, appname, "SyncUpdates", 1915 1915 &fSyncUpdates, sizeof(BOOL)); 1916 1916 if (!(ulCnrType & (CCS_EXTENDSEL | CCS_MULTIPLESEL))) 1917 1917 saymsg(MB_ENTER | MB_ICONEXCLAMATION, 1918 1919 1920 1918 HWND_DESKTOP, 1919 GetPString(IDS_WARNINGTEXT), 1920 GetPString(IDS_SELECTTYPEERRORTEXT)); 1921 1921 break; // WM_CLOSE 1922 1922 } … … 1938 1938 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 1939 1939 switch (CHARMSG(&msg)->vkey) { 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1940 case VK_F3: 1941 case VK_ENTER: 1942 case VK_NEWLINE: 1943 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 1944 return 0; 1945 break; 1946 case VK_ESC: 1947 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 1948 return 0; 1949 break; 1950 case VK_F1: 1951 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 1952 return 0; 1953 break; 1954 1954 } 1955 1955 } … … 1998 1998 switch (SHORT1FROMMP(mp1)) { 1999 1999 case CFGM_RECENTDIRS: 2000 2001 2002 2003 2004 2005 2006 2000 sprintf(s, 2001 GetPString(IDS_RECENTHELPWHICHTEXT), 2002 (!oh && th) ? 2003 GetPString(IDS_RECENTONLYTEXT) : 2004 (oh && th) ? 2005 GetPString(IDS_ALLONLYTEXT) : GetPString(IDS_NONE)); 2006 break; 2007 2007 } 2008 2008 if (*s) 2009 2009 WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), s); 2010 2010 } 2011 2011 return 0; … … 2018 2018 case CFGM_STARTMIN: 2019 2019 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN)) { 2020 2021 2020 WinCheckButton(hwnd, CFGM_STARTMAX, FALSE); 2021 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), FALSE); 2022 2022 } 2023 2023 else 2024 2024 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), TRUE); 2025 2025 break; 2026 2026 case CFGM_STARTMAX: 2027 2027 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX)) { 2028 2029 2028 WinCheckButton(hwnd, CFGM_STARTMIN, FALSE); 2029 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), FALSE); 2030 2030 } 2031 2031 else 2032 2032 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), TRUE); 2033 2033 break; 2034 2034 } … … 2050 2050 case IDM_HELP: 2051 2051 if (hwndHelp) 2052 2053 2052 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 2053 MPFROM2SHORT(HELP_CFGM, 0), MPFROMSHORT(HM_RESOURCEID)); 2054 2054 break; 2055 2055 } … … 2059 2059 if (hwndMain && !strcmp(realappname, FM3Str)) { 2060 2060 if (fFreeTree != WinQueryButtonCheckstate(hwnd, CFGM_FREETREE)) 2061 2061 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_FREETREE, 0), MPVOID); 2062 2062 if (fAutoTile != WinQueryButtonCheckstate(hwnd, CFGM_AUTOTILE)) 2063 2063 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_AUTOTILE, 0), MPVOID); 2064 2064 if (fSplitStatus != WinQueryButtonCheckstate(hwnd, CFGM_SPLITSTATUS)) { 2065 2066 2067 2068 2065 fSplitStatus = (fSplitStatus) ? FALSE : TRUE; 2066 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_BLINK, 0), MPVOID); 2067 PrfWriteProfileData(fmprof, FM3Str, "SplitStatus", &fSplitStatus, 2068 sizeof(BOOL)); 2069 2069 } 2070 2070 } 2071 2071 fUserListSwitches = WinQueryButtonCheckstate(hwnd, CFGM_USERLISTSWITCHES); 2072 2072 PrfWriteProfileData(fmprof, FM3Str, "UserListSwitches", 2073 2073 (PVOID) & fUserListSwitches, sizeof(BOOL)); 2074 2074 fExternalINIs = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALINIS); 2075 2075 PrfWriteProfileData(fmprof, FM3Str, "ExternalINIs", 2076 2076 (PVOID) & fExternalINIs, sizeof(BOOL)); 2077 2077 fExternalArcboxes = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALARCBOXES); 2078 2078 PrfWriteProfileData(fmprof, FM3Str, "ExternalArcboxes", 2079 2079 (PVOID) & fExternalArcboxes, sizeof(BOOL)); 2080 2080 fExternalCollector = 2081 2081 WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALCOLLECTOR); 2082 2082 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector", 2083 2083 (PVOID) & fExternalCollector, sizeof(BOOL)); 2084 2084 fExternalViewer = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALVIEWER); 2085 2085 PrfWriteProfileData(fmprof, FM3Str, "ExternalViewer", 2086 2086 (PVOID) & fExternalViewer, sizeof(BOOL)); 2087 2087 { 2088 2088 long test; … … 2093 2093 } 2094 2094 PrfWriteProfileData(fmprof, 2095 2096 2095 appname, 2096 "AutoAddDirs", (PVOID) & fAutoAddDirs, sizeof(BOOL)); 2097 2097 PrfWriteProfileData(fmprof, 2098 2099 2100 2098 appname, 2099 "AutoAddAllDirs", 2100 (PVOID) & fAutoAddAllDirs, sizeof(BOOL)); 2101 2101 fwsAnimate = WinQueryButtonCheckstate(hwnd, CFGM_WSANIMATE); 2102 2102 if (fwsAnimate) 2103 2103 fwsAnimate = WS_ANIMATE; 2104 2104 PrfWriteProfileData(fmprof, 2105 2106 2105 appname, 2106 "WS_ANIMATE", (PVOID) & fwsAnimate, sizeof(ULONG)); 2107 2107 fSaveState = WinQueryButtonCheckstate(hwnd, CFGM_SAVESTATE); 2108 2108 PrfWriteProfileData(fmprof, 2109 2110 2109 FM3Str, 2110 "SaveState", (PVOID) & fSaveState, sizeof(BOOL)); 2111 2111 fStartMinimized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN); 2112 2112 PrfWriteProfileData(fmprof, 2113 2114 2115 2113 appname, 2114 "StartMinimized", 2115 (PVOID) & fStartMinimized, sizeof(BOOL)); 2116 2116 fStartMaximized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX); 2117 2117 PrfWriteProfileData(fmprof, 2118 2119 2120 2118 appname, 2119 "StartMaximized", 2120 (PVOID) & fStartMaximized, sizeof(BOOL)); 2121 2121 fDataMin = WinQueryButtonCheckstate(hwnd, CFGM_DATAMIN); 2122 2122 PrfWriteProfileData(fmprof, 2123 2123 FM3Str, "DataMin", (PVOID) & fDataMin, sizeof(BOOL)); 2124 2124 fTileBackwards = WinQueryButtonCheckstate(hwnd, CFGM_TILEBACKWARDS); 2125 2125 PrfWriteProfileData(fmprof, 2126 2127 2128 2126 FM3Str, 2127 "TileBackwards", 2128 (PVOID) & fTileBackwards, sizeof(BOOL)); 2129 2129 fNoTreeGap = WinQueryButtonCheckstate(hwnd, CFGM_NOTREEGAP); 2130 2130 PrfWriteProfileData(fmprof, 2131 2132 2131 FM3Str, 2132 "NoTreeGap", (PVOID) & fNoTreeGap, sizeof(BOOL)); 2133 2133 fBlueLED = WinQueryButtonCheckstate(hwnd, CFGM_BLUELED); 2134 2134 PrfWriteProfileData(fmprof, 2135 2135 appname, "BlueLED", (PVOID) & fBlueLED, sizeof(BOOL)); 2136 2136 { 2137 2137 BOOL dummy; … … 2139 2139 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SHOWTARGET); 2140 2140 if (dummy != fShowTarget) { 2141 2142 2143 2144 2145 2146 2147 2148 2149 2141 fShowTarget = dummy; 2142 PrfWriteProfileData(fmprof, 2143 appname, 2144 "ShowTarget", 2145 (PVOID) & fShowTarget, sizeof(BOOL)); 2146 if (hwndMain) 2147 PostMsg(WinQueryWindow(hwndMain, QW_PARENT), 2148 WM_UPDATEFRAME, MPFROMLONG(FCF_SIZEBORDER), MPVOID); 2149 SetTargetDir(hwnd, TRUE); 2150 2150 } 2151 2151 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SEPARATEPARMS); 2152 2152 if (dummy != fSeparateParms) { 2153 2154 2155 2156 2157 2158 2159 2153 fSeparateParms = dummy; 2154 PrfWriteProfileData(fmprof, 2155 FM3Str, 2156 "SeparateParms", 2157 (PVOID) & fSeparateParms, sizeof(BOOL)); 2158 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), 2159 UM_UNDO, MPVOID, MPVOID); 2160 2160 } 2161 2161 } … … 2172 2172 case WM_INITDLG: 2173 2173 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT, 2174 2174 MPFROMSHORT(8), MPVOID); 2175 2175 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS, 2176 2176 MPFROMLONG(1000), MPFROMLONG(50)); 2177 2177 WinSendDlgItemMsg(hwnd, 2178 2179 2178 CFG5_FILTER, 2179 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 2180 2180 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); 2181 2181 break; … … 2188 2188 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 2189 2189 switch (CHARMSG(&msg)->vkey) { 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2190 case VK_F3: 2191 case VK_ENTER: 2192 case VK_NEWLINE: 2193 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 2194 return 0; 2195 break; 2196 case VK_ESC: 2197 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 2198 return 0; 2199 break; 2200 case VK_F1: 2201 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 2202 return 0; 2203 break; 2204 2204 } 2205 2205 } … … 2216 2216 2217 2217 if (!PrfQueryProfileData(fmprof, 2218 2219 2220 2218 appname, 2219 "DirflWindowAttr", &flWindowAttr, &ulSize)) 2220 flWindowAttr = (CV_NAME | CV_MINI | CA_DETAILSVIEWTITLES | CV_FLOW); 2221 2221 if (flWindowAttr & CV_ICON) 2222 2222 WinCheckButton(hwnd, CFG5_ICON, TRUE); 2223 2223 if (flWindowAttr & CV_NAME) 2224 2224 WinCheckButton(hwnd, CFG5_NAME, TRUE); 2225 2225 if (flWindowAttr & CV_TEXT) 2226 2226 WinCheckButton(hwnd, CFG5_TEXT, TRUE); 2227 2227 if (flWindowAttr & CV_DETAIL) 2228 2228 WinCheckButton(hwnd, CFG5_DETAIL, TRUE); 2229 2229 if (flWindowAttr & CV_MINI) 2230 2230 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE); 2231 2231 if (flWindowAttr & CA_DETAILSVIEWTITLES) 2232 2232 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE); 2233 2233 WinCheckButton(hwnd, CFG5_SHOWLNAMES, dsDirCnrDefault.detailslongname); 2234 2234 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, dsDirCnrDefault.detailssubject); … … 2245 2245 memset(&mask, 0, sizeof(mask)); 2246 2246 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN | 2247 2247 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY; 2248 2248 ulSize = sizeof(MASK); 2249 2249 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, &ulSize)) 2250 2250 SetMask(NULL, &mask); 2251 2251 if (!mask.attrFile) 2252 2253 2252 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN | 2253 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY; 2254 2254 strcpy(mask.prompt, GetPString(IDS_DEFDIRFILTERTITLETEXT)); 2255 2255 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask); … … 2257 2257 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, dsDirCnrDefault.fSubjectLengthMax); 2258 2258 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE, 2259 2259 MPFROMLONG(dsDirCnrDefault.SubjectDisplayWidth), MPVOID); 2260 2260 } 2261 2261 return 0; … … 2263 2263 case UM_SETUP5: 2264 2264 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc, 2265 2265 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) { 2266 2266 SetMask(NULL, &mask); 2267 2267 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask); … … 2274 2274 switch (SHORT2FROMMP(mp1)) { 2275 2275 case EN_SETFOCUS: 2276 2277 2278 2276 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID); 2277 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID); 2278 break; 2279 2279 } 2280 2280 break; … … 2297 2297 case IDM_HELP: 2298 2298 if (hwndHelp) 2299 2300 2299 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 2300 MPFROM2SHORT(HELP_CFG5, 0), MPFROMSHORT(HM_RESOURCEID)); 2301 2301 break; 2302 2302 } … … 2308 2308 2309 2309 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON)) 2310 2310 flWindowAttr |= CV_ICON; 2311 2311 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME)) 2312 2312 flWindowAttr |= CV_NAME; 2313 2313 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT)) 2314 2314 flWindowAttr |= CV_TEXT; 2315 2315 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL)) 2316 2316 flWindowAttr |= CV_DETAIL; 2317 2317 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS)) 2318 2318 flWindowAttr |= CV_MINI; 2319 2319 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES)) 2320 2320 flWindowAttr |= CA_DETAILSVIEWTITLES; 2321 2321 flWindowAttr |= CV_FLOW; 2322 2322 PrfWriteProfileData(fmprof, 2323 2324 2323 appname, 2324 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG)); 2325 2325 } 2326 2326 dsDirCnrDefault.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES); 2327 2327 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname", 2328 2328 &dsDirCnrDefault.detailslongname, sizeof(BOOL)); 2329 2329 dsDirCnrDefault.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT); 2330 2330 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject", 2331 2331 &dsDirCnrDefault.detailssubject, sizeof(BOOL)); 2332 2332 dsDirCnrDefault.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT); 2333 2333 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA", 2334 2334 &dsDirCnrDefault.detailsea, sizeof(BOOL)); 2335 2335 dsDirCnrDefault.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE); 2336 2336 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize", 2337 2337 &dsDirCnrDefault.detailssize, sizeof(BOOL)); 2338 2338 dsDirCnrDefault.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON); 2339 2339 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon", 2340 2340 &dsDirCnrDefault.detailsicon, sizeof(BOOL)); 2341 2341 dsDirCnrDefault.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE); 2342 2342 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate", 2343 2343 &dsDirCnrDefault.detailslwdate, sizeof(BOOL)); 2344 2344 dsDirCnrDefault.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME); 2345 2345 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime", 2346 2346 &dsDirCnrDefault.detailslwtime, sizeof(BOOL)); 2347 2347 dsDirCnrDefault.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE); 2348 2348 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate", 2349 2349 &dsDirCnrDefault.detailsladate, sizeof(BOOL)); 2350 2350 dsDirCnrDefault.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME); 2351 2351 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime", 2352 2352 &dsDirCnrDefault.detailslatime, sizeof(BOOL)); 2353 2353 dsDirCnrDefault.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE); 2354 2354 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate", 2355 2355 &dsDirCnrDefault.detailscrdate, sizeof(BOOL)); 2356 2356 dsDirCnrDefault.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME); 2357 2357 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime", 2358 2358 &dsDirCnrDefault.detailscrtime, sizeof(BOOL)); 2359 2359 dsDirCnrDefault.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR); 2360 2360 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr", 2361 2361 &dsDirCnrDefault.detailsattr, sizeof(BOOL)); 2362 2362 dsDirCnrDefault.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE); 2363 2363 PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectInLeftPane", 2364 2364 &dsDirCnrDefault.fSubjectInLeftPane, sizeof(BOOL)); 2365 2365 dsDirCnrDefault.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX); 2366 2366 PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectLengthMax", 2367 2367 &dsDirCnrDefault.fSubjectLengthMax, sizeof(BOOL)); 2368 2368 *mask.prompt = 0; 2369 2369 PrfWriteProfileData(fmprof, appname, "DirFilter", &mask, sizeof(MASK)); 2370 2370 { 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2371 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) { 2372 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE, 2373 MPFROMP(&dsDirCnrDefault.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE)); 2374 if (dsDirCnrDefault.SubjectDisplayWidth < 50) 2375 dsDirCnrDefault.SubjectDisplayWidth = 0; 2376 else if (dsDirCnrDefault.SubjectDisplayWidth > 1000) 2377 dsDirCnrDefault.SubjectDisplayWidth = 1000; 2378 } 2379 else 2380 dsDirCnrDefault.SubjectDisplayWidth = 0; 2381 PrfWriteProfileData(fmprof, 2382 appname, "DirCnr.SubjectDisplayWidth", 2383 &dsDirCnrDefault.SubjectDisplayWidth, sizeof(ULONG)); 2384 2384 } 2385 2385 break; … … 2402 2402 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 2403 2403 switch (CHARMSG(&msg)->vkey) { 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2404 case VK_F3: 2405 case VK_ENTER: 2406 case VK_NEWLINE: 2407 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 2408 return 0; 2409 break; 2410 case VK_ESC: 2411 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 2412 return 0; 2413 break; 2414 case VK_F1: 2415 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 2416 return 0; 2417 break; 2418 2418 } 2419 2419 } … … 2463 2463 case CFG6_SORTDIRSLAST: 2464 2464 { 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2465 BOOL temp; 2466 2467 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1)); 2468 if (temp) { 2469 switch (SHORT1FROMMP(mp1)) { 2470 case CFG6_SORTDIRSFIRST: 2471 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE); 2472 break; 2473 case CFG6_SORTDIRSLAST: 2474 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE); 2475 break; 2476 } 2477 } 2478 2478 } 2479 2479 break; … … 2496 2496 case IDM_HELP: 2497 2497 if (hwndHelp) 2498 2499 2498 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 2499 MPFROM2SHORT(HELP_CFG6, 0), MPFROMSHORT(HM_RESOURCEID)); 2500 2500 break; 2501 2501 } … … 2539 2539 case WM_INITDLG: 2540 2540 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT, 2541 2541 MPFROMSHORT(8), MPVOID); 2542 2542 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS, 2543 2543 MPFROMLONG(1000), MPFROMLONG(50)); 2544 2544 WinSendDlgItemMsg(hwnd, CFG5_FILTER, EM_SETTEXTLIMIT, 2545 2545 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 2546 2546 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); 2547 2547 break; … … 2554 2554 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 2555 2555 switch (CHARMSG(&msg)->vkey) { 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2556 case VK_F3: 2557 case VK_ENTER: 2558 case VK_NEWLINE: 2559 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 2560 return 0; 2561 break; 2562 case VK_ESC: 2563 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 2564 return 0; 2565 break; 2566 case VK_F1: 2567 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 2568 return 0; 2569 break; 2570 2570 } 2571 2571 } … … 2583 2583 2584 2584 if (!PrfQueryProfileData(fmprof, 2585 2586 2587 2585 appname, 2586 "CollectorflWindowAttr", &flWindowAttr, &ulSize)) 2587 flWindowAttr = (CV_NAME | CA_DETAILSVIEWTITLES | CV_MINI | CV_FLOW); 2588 2588 if (flWindowAttr & CV_ICON) 2589 2589 WinCheckButton(hwnd, CFG5_ICON, TRUE); 2590 2590 if (flWindowAttr & CV_NAME) 2591 2591 WinCheckButton(hwnd, CFG5_NAME, TRUE); 2592 2592 if (flWindowAttr & CV_TEXT) 2593 2593 WinCheckButton(hwnd, CFG5_TEXT, TRUE); 2594 2594 if (flWindowAttr & CV_DETAIL) 2595 2595 WinCheckButton(hwnd, CFG5_DETAIL, TRUE); 2596 2596 if (flWindowAttr & CV_MINI) 2597 2597 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE); 2598 2598 if (flWindowAttr & CA_DETAILSVIEWTITLES) 2599 2599 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE); 2600 2600 memset(&mask, 0, sizeof(mask)); 2601 2601 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN | 2602 2602 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY; 2603 2603 ulSize = sizeof(MASK); 2604 2604 if (PrfQueryProfileData(fmprof, 2605 2606 2605 appname, "CollectorFilter", &mask, &ulSize)) { 2606 SetMask(NULL, &mask); 2607 2607 } 2608 2608 if (!mask.attrFile) 2609 2610 2609 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN | 2610 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY; 2611 2611 strcpy(mask.prompt, GetPString(IDS_DEFCOLFILTERTITLETEXT)); 2612 2612 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask); … … 2632 2632 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, ds.fSubjectLengthMax); 2633 2633 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE, 2634 2634 MPFROMLONG(ds.SubjectDisplayWidth), MPVOID); 2635 2635 2636 2636 } … … 2639 2639 case UM_SETUP5: 2640 2640 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc, 2641 2641 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) { 2642 2642 SetMask(NULL, &mask); 2643 2643 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask); … … 2650 2650 switch (SHORT2FROMMP(mp1)) { 2651 2651 case EN_SETFOCUS: 2652 2653 2654 2652 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID); 2653 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID); 2654 break; 2655 2655 } 2656 2656 break; … … 2673 2673 case IDM_HELP: 2674 2674 if (hwndHelp) 2675 2676 2675 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 2676 MPFROM2SHORT(HELP_CFG7, 0), MPFROMSHORT(HM_RESOURCEID)); 2677 2677 break; 2678 2678 } … … 2681 2681 case WM_CLOSE: 2682 2682 fExternalCollector = WinQueryButtonCheckstate(hwnd, 2683 2683 CFG5_EXTERNALCOLLECTOR); 2684 2684 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector", 2685 2685 &fExternalCollector, sizeof(BOOL)); 2686 2686 { 2687 2687 ULONG flWindowAttr = 0; 2688 2688 2689 2689 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON)) 2690 2690 flWindowAttr |= CV_ICON; 2691 2691 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME)) 2692 2692 flWindowAttr |= CV_NAME; 2693 2693 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT)) 2694 2694 flWindowAttr |= CV_TEXT; 2695 2695 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL)) 2696 2696 flWindowAttr |= CV_DETAIL; 2697 2697 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS)) 2698 2698 flWindowAttr |= CV_MINI; 2699 2699 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES)) 2700 2700 flWindowAttr |= CA_DETAILSVIEWTITLES; 2701 2701 flWindowAttr |= CV_FLOW; 2702 2702 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr", 2703 2703 &flWindowAttr, sizeof(ULONG)); 2704 2704 } 2705 2705 { … … 2709 2709 ds.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES); 2710 2710 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLongname", 2711 2711 &ds.detailslongname, sizeof(BOOL)); 2712 2712 ds.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT); 2713 2713 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSubject", 2714 2714 &ds.detailssubject, sizeof(BOOL)); 2715 2715 ds.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS); 2716 2716 PrfWriteProfileData(fmprof, appname, "Collector.DetailsEA", 2717 2717 &ds.detailsea, sizeof(BOOL)); 2718 2718 ds.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE); 2719 2719 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSize", 2720 2720 &ds.detailssize, sizeof(BOOL)); 2721 2721 ds.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON); 2722 2722 PrfWriteProfileData(fmprof, appname, "Collector.DetailsIcon", 2723 2723 &ds.detailsicon, sizeof(BOOL)); 2724 2724 ds.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE); 2725 2725 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWDate", 2726 2726 &ds.detailslwdate, sizeof(BOOL)); 2727 2727 ds.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME); 2728 2728 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWTime", 2729 2729 &ds.detailslwtime, sizeof(BOOL)); 2730 2730 ds.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE); 2731 2731 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLADate", 2732 2732 &ds.detailsladate, sizeof(BOOL)); 2733 2733 ds.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME); 2734 2734 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLATime", 2735 2735 &ds.detailslatime, sizeof(BOOL)); 2736 2736 ds.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE); 2737 2737 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRDate", 2738 2738 &ds.detailscrdate, sizeof(BOOL)); 2739 2739 ds.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME); 2740 2740 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRTime", 2741 2741 &ds.detailscrtime, sizeof(BOOL)); 2742 2742 ds.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR); 2743 2743 PrfWriteProfileData(fmprof, appname, "Collector.DetailsAttr", 2744 2744 &ds.detailsattr, sizeof(BOOL)); 2745 2745 ds.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE); 2746 2746 PrfWriteProfileData(fmprof, appname, "Collector.SubjectInLeftPane", 2747 2747 &ds.fSubjectInLeftPane, sizeof(BOOL)); 2748 2748 ds.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX); 2749 2749 PrfWriteProfileData(fmprof, appname, "Collector.SubjectLengthMax", 2750 2750 &ds.fSubjectLengthMax, sizeof(BOOL)); 2751 2751 *mask.prompt = 0; 2752 2752 PrfWriteProfileData(fmprof, 2753 2753 appname, "CollectorFilter", &mask, sizeof(MASK)); 2754 2754 { 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2755 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) { 2756 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE, 2757 MPFROMP(&ds.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE)); 2758 if (ds.SubjectDisplayWidth < 50) 2759 ds.SubjectDisplayWidth = 0; 2760 else if (ds.SubjectDisplayWidth > 1000) 2761 ds.SubjectDisplayWidth = 1000; 2762 } 2763 else 2764 ds.SubjectDisplayWidth = 0; 2765 PrfWriteProfileData(fmprof, 2766 appname, "Collector.SubjectDisplayWidth", 2767 &ds.SubjectDisplayWidth, sizeof(ULONG)); 2768 2768 } 2769 2769 } … … 2787 2787 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 2788 2788 switch (CHARMSG(&msg)->vkey) { 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2789 case VK_F3: 2790 case VK_ENTER: 2791 case VK_NEWLINE: 2792 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 2793 return 0; 2794 break; 2795 case VK_ESC: 2796 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 2797 return 0; 2798 break; 2799 case VK_F1: 2800 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 2801 return 0; 2802 break; 2803 2803 } 2804 2804 } … … 2848 2848 case CFG6_SORTDIRSLAST: 2849 2849 { 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2850 BOOL temp; 2851 2852 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1)); 2853 if (temp) { 2854 switch (SHORT1FROMMP(mp1)) { 2855 case CFG6_SORTDIRSFIRST: 2856 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE); 2857 break; 2858 case CFG6_SORTDIRSLAST: 2859 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE); 2860 break; 2861 } 2862 } 2863 2863 } 2864 2864 break; … … 2881 2881 case IDM_HELP: 2882 2882 if (hwndHelp) 2883 2884 2883 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 2884 MPFROM2SHORT(HELP_CFG8, 0), MPFROMSHORT(HM_RESOURCEID)); 2885 2885 break; 2886 2886 } … … 2912 2912 CollectorsortFlags |= SORT_REVERSE; 2913 2913 PrfWriteProfileData(fmprof, 2914 2915 2914 appname, 2915 "CollectorSort", &CollectorsortFlags, sizeof(INT)); 2916 2916 break; 2917 2917 } … … 2932 2932 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 2933 2933 switch (CHARMSG(&msg)->vkey) { 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2934 case VK_F3: 2935 case VK_ENTER: 2936 case VK_NEWLINE: 2937 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 2938 return 0; 2939 break; 2940 case VK_ESC: 2941 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 2942 return 0; 2943 break; 2944 case VK_F1: 2945 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 2946 return 0; 2947 break; 2948 2948 } 2949 2949 } … … 2954 2954 case IDM_HELP: 2955 2955 if (hwndHelp) 2956 2957 2956 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 2957 MPFROM2SHORT(HELP_CFG9, 0), MPFROMSHORT(HM_RESOURCEID)); 2958 2958 return 0; 2959 2959 case CFG9_MAXIMUMUI: 2960 2960 if (hwndMain) { 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2961 if (MenuInvisible) 2962 WinSendMsg(hwndMain, WM_COMMAND, 2963 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID); 2964 if (!fAutoView) 2965 WinSendMsg(hwndMain, WM_COMMAND, 2966 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID); 2967 if (!fDrivebar) 2968 WinSendMsg(hwndMain, WM_COMMAND, 2969 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID); 2970 if (!fToolbar) 2971 WinSendMsg(hwndMain, WM_COMMAND, 2972 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID); 2973 if (!fMoreButtons) 2974 WinSendMsg(hwndMain, WM_COMMAND, 2975 MPFROM2SHORT(IDM_MOREBUTTONS, 0), MPVOID); 2976 if (!fUserComboBox) 2977 WinSendMsg(hwndMain, WM_COMMAND, 2978 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID); 2979 2979 } 2980 2980 return 0; 2981 2981 case CFG9_MINIMUMUI: 2982 2982 if (hwndMain) { 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 2983 if (!MenuInvisible) 2984 WinSendMsg(hwndMain, WM_COMMAND, 2985 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID); 2986 if (fAutoView) 2987 WinSendMsg(hwndMain, WM_COMMAND, 2988 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID); 2989 if (fToolbar) 2990 WinSendMsg(hwndMain, WM_COMMAND, 2991 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID); 2992 if (fMoreButtons) 2993 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0), 2994 MPVOID); 2995 if (fUserComboBox) 2996 WinSendMsg(hwndMain, WM_COMMAND, 2997 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID); 2998 saymsg(MB_ENTER | MB_ICONASTERISK, 2999 hwnd, 3000 GetPString(IDS_DONTFORGETTEXT), 3001 GetPString(IDS_UNHIDEMENUWARNTEXT)); 3002 3002 } 3003 3003 return 0; … … 3013 3013 fDragndropDlg = TRUE; 3014 3014 { 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3015 ULONG flWindowAttr; 3016 3017 flWindowAttr = CV_DETAIL | CV_FLOW | CA_DETAILSVIEWTITLES; 3018 PrfWriteProfileData(fmprof, 3019 appname, 3020 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG)); 3021 PrfWriteProfileData(fmprof, 3022 appname, 3023 "CollectorflWindowAttr", 3024 &flWindowAttr, sizeof(ULONG)); 3025 PrfWriteProfileData(fmprof, 3026 appname, "Collector.Fontnamesize", NULL, 0); 3027 3027 } 3028 3028 dsDirCnrDefault.detailslongname = TRUE; … … 3040 3040 if (hwndTree) { 3041 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3042 CNRINFO cnri; 3043 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE; 3044 3045 memset(&cnri, 0, sizeof(cnri)); 3046 cnri.cb = sizeof(cnri); 3047 WinSendMsg(WinWindowFromID 3048 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3049 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri))); 3050 cnri.flWindowAttr = flWindowAttr; 3051 WinSendMsg(WinWindowFromID 3052 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3053 CM_SETCNRINFO, MPFROMP(&cnri), 3054 MPFROMLONG(CMA_FLWINDOWATTR)); 3055 3055 } 3056 3056 break; … … 3067 3067 fDragndropDlg = TRUE; 3068 3068 { 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3069 ULONG flWindowAttr; 3070 3071 flWindowAttr = CV_DETAIL | CV_FLOW | CV_MINI; 3072 PrfWriteProfileData(fmprof, 3073 appname, 3074 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG)); 3075 PrfWriteProfileData(fmprof, 3076 appname, 3077 "CollectorflWindowAttr", 3078 &flWindowAttr, sizeof(ULONG)); 3079 //fixme to allow user to change presparams 1-10-09 GKY 3080 PrfWriteProfileData(fmprof, 3081 appname, 3082 "Collector.Fontnamesize", 3083 FNT_8HELVETICA, 3084 strlen(FNT_8HELVETICA) + 1); 3085 3085 } 3086 3086 dsDirCnrDefault.detailslongname = TRUE; … … 3098 3098 if (hwndTree) { 3099 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3100 CNRINFO cnri; 3101 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_TEXT | 3102 CV_FLOW | CA_TREELINE; 3103 3104 memset(&cnri, 0, sizeof(cnri)); 3105 cnri.cb = sizeof(cnri); 3106 WinSendMsg(WinWindowFromID 3107 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3108 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri))); 3109 cnri.flWindowAttr = flWindowAttr; 3110 WinSendMsg(WinWindowFromID 3111 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3112 CM_SETCNRINFO, MPFROMP(&cnri), 3113 MPFROMLONG(CMA_FLWINDOWATTR)); 3114 3114 } 3115 3115 break; 3116 3116 case CFG9_MAXFILENAMES: 3117 3117 if (hwndMain && fAutoView) 3118 3119 3118 WinSendMsg(hwndMain, WM_COMMAND, 3119 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID); 3120 3120 fForceUpper = FALSE; 3121 3121 fForceLower = TRUE; … … 3129 3129 fNoIconsDirs = TRUE; 3130 3130 { 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3131 ULONG flWindowAttr; 3132 3133 flWindowAttr = CV_TEXT | CV_FLOW; 3134 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr", 3135 &flWindowAttr, sizeof(ULONG)); 3136 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr", 3137 &flWindowAttr, sizeof(ULONG)); 3138 //fixme to allow user to change presparams 1-10-09 GKY 3139 PrfWriteProfileData(fmprof, appname, "Collector.Fontnamesize", 3140 FNT_8HELVETICA, 3141 strlen(FNT_8HELVETICA) + 1); 3142 3142 } 3143 3143 if (hwndTree) { 3144 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3145 CNRINFO cnri; 3146 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE; 3147 3148 memset(&cnri, 0, sizeof(cnri)); 3149 cnri.cb = sizeof(cnri); 3150 WinSendMsg(WinWindowFromID 3151 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3152 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri))); 3153 cnri.flWindowAttr = flWindowAttr; 3154 WinSendMsg(WinWindowFromID 3155 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3156 CM_SETCNRINFO, MPFROMP(&cnri), 3157 MPFROMLONG(CMA_FLWINDOWATTR)); 3158 3158 } 3159 3159 break; … … 3225 3225 fNoTreeGap = TRUE; 3226 3226 { 3227 3228 3229 3230 3231 3232 3233 3227 ULONG flWindowAttr; 3228 3229 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES); 3230 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr", 3231 &flWindowAttr, sizeof(ULONG)); 3232 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr", 3233 &flWindowAttr, sizeof(ULONG)); 3234 3234 } 3235 3235 dsDirCnrDefault.detailslongname = FALSE; … … 3249 3249 if (hwndMain) { 3250 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3251 SWP swp; 3252 3253 if (WinQueryWindowPos(hwndMain, &swp)) { 3254 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0, 3255 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE); 3256 } 3257 if (MenuInvisible) 3258 WinSendMsg(hwndMain, WM_COMMAND, 3259 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID); 3260 if (fAutoView) 3261 WinSendMsg(hwndMain, WM_COMMAND, 3262 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID); 3263 if (fToolbar) 3264 WinSendMsg(hwndMain, WM_COMMAND, 3265 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID); 3266 if (!fDrivebar) 3267 WinSendMsg(hwndMain, WM_COMMAND, 3268 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID); 3269 if (!fMoreButtons) 3270 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0), 3271 MPVOID); 3272 if (!fUserComboBox) 3273 WinSendMsg(hwndMain, WM_COMMAND, 3274 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID); 3275 3275 } 3276 3276 if (hwndTree) { 3277 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3278 CNRINFO cnri; 3279 ULONG flWindowAttr = (CV_TREE | CV_TEXT | CV_MINI | 3280 CV_FLOW | CA_TREELINE); 3281 3282 memset(&cnri, 0, sizeof(cnri)); 3283 cnri.cb = sizeof(cnri); 3284 WinSendMsg(WinWindowFromID 3285 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3286 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri))); 3287 cnri.flWindowAttr = flWindowAttr; 3288 WinSendMsg(WinWindowFromID 3289 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3290 CM_SETCNRINFO, MPFROMP(&cnri), 3291 MPFROMLONG(CMA_FLWINDOWATTR)); 3292 3292 } 3293 3293 break; … … 3342 3342 fNoTreeGap = FALSE; 3343 3343 { 3344 3345 3346 3347 3348 3349 3350 3344 ULONG flWindowAttr; 3345 3346 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES); 3347 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr", 3348 &flWindowAttr, sizeof(ULONG)); 3349 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr", 3350 &flWindowAttr, sizeof(ULONG)); 3351 3351 } 3352 3352 dsDirCnrDefault.detailslongname = FALSE; … … 3366 3366 if (hwndMain) { 3367 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3368 SWP swp; 3369 3370 if (WinQueryWindowPos(hwndMain, &swp)) { 3371 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0, 3372 swp.cx / 5, 3373 swp.cy - 3374 (WinQuerySysValue(HWND_DESKTOP, SV_CYICON) * 2), 3375 SWP_MOVE | SWP_SIZE); 3376 } 3377 3377 } 3378 3378 if (hwndTree) { 3379 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3380 CNRINFO cnri; 3381 ULONG flWindowAttr = (CV_TREE | CV_TEXT | 3382 CV_FLOW | CA_TREELINE | CV_MINI); 3383 3384 memset(&cnri, 0, sizeof(cnri)); 3385 cnri.cb = sizeof(cnri); 3386 WinSendMsg(WinWindowFromID 3387 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3388 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri))); 3389 cnri.flWindowAttr = flWindowAttr; 3390 WinSendMsg(WinWindowFromID 3391 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3392 CM_SETCNRINFO, MPFROMP(&cnri), 3393 MPFROMLONG(CMA_FLWINDOWATTR)); 3394 3394 } 3395 3395 break; … … 3406 3406 fDCOpens = FALSE; 3407 3407 { 3408 3409 3410 3411 3412 3413 3414 3408 ULONG flWindowAttr; 3409 3410 flWindowAttr = CV_NAME | CV_FLOW | CA_DETAILSVIEWTITLES; 3411 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr", 3412 &flWindowAttr, sizeof(ULONG)); 3413 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr", 3414 &flWindowAttr, sizeof(ULONG)); 3415 3415 } 3416 3416 fLinkSetsIcon = FALSE; … … 3423 3423 fUserListSwitches = TRUE; 3424 3424 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID, 3425 3425 MPVOID); 3426 3426 if (hwndTree) { 3427 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3428 CNRINFO cnri; 3429 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_ICON | 3430 CV_FLOW | CA_TREELINE; 3431 3432 memset(&cnri, 0, sizeof(cnri)); 3433 cnri.cb = sizeof(cnri); 3434 WinSendMsg(WinWindowFromID 3435 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3436 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri))); 3437 cnri.flWindowAttr = flWindowAttr; 3438 WinSendMsg(WinWindowFromID 3439 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3440 CM_SETCNRINFO, MPFROMP(&cnri), 3441 MPFROMLONG(CMA_FLWINDOWATTR)); 3442 3442 } 3443 3443 if (hwndMain) { 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3444 if (fAutoView) 3445 WinSendMsg(hwndMain, WM_COMMAND, 3446 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID); 3447 if (!fDrivebar) 3448 WinSendMsg(hwndMain, WM_COMMAND, 3449 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID); 3450 { 3451 SWP swp; 3452 3453 if (WinQueryWindowPos(hwndMain, &swp)) { 3454 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0, 3455 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE); 3456 } 3457 } 3458 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L)); 3459 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1L), MPVOID); 3460 3460 } 3461 3461 return 0; … … 3471 3471 fTopDir = FALSE; 3472 3472 if (hwndMain) { 3473 3474 3475 3473 if (!fTextTools) 3474 WinSendMsg(hwndMain, WM_COMMAND, 3475 MPFROM2SHORT(IDM_TEXTTOOLS, 0), MPVOID); 3476 3476 } 3477 3477 { 3478 3479 3480 3481 3482 3483 3484 3478 ULONG flWindowAttr; 3479 3480 flWindowAttr = CV_TEXT | CV_FLOW | CA_DETAILSVIEWTITLES; 3481 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr", 3482 &flWindowAttr, sizeof(ULONG)); 3483 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr", 3484 &flWindowAttr, sizeof(ULONG)); 3485 3485 } 3486 3486 if (hwndTree) { 3487 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3488 CNRINFO cnri; 3489 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE; 3490 3491 memset(&cnri, 0, sizeof(cnri)); 3492 cnri.cb = sizeof(cnri); 3493 WinSendMsg(WinWindowFromID 3494 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3495 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri))); 3496 cnri.flWindowAttr = flWindowAttr; 3497 WinSendMsg(WinWindowFromID 3498 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), 3499 CM_SETCNRINFO, MPFROMP(&cnri), 3500 MPFROMLONG(CMA_FLWINDOWATTR)); 3501 3501 } 3502 3502 /* intentional fallthru */ 3503 3503 case CFG9_1X: 3504 3504 if (SHORT1FROMMP(mp1) == CFG9_1X) { 3505 3506 3507 3508 3509 3510 3511 3512 3505 fTileBackwards = FALSE; 3506 ulCnrType = CCS_MULTIPLESEL | CCS_EXTENDSEL; 3507 fSwitchTree = FALSE; 3508 fSwitchTreeOnFocus = FALSE; 3509 fSwitchTreeExpand = FALSE; 3510 fCollapseFirst = FALSE; 3511 fFollowTree = FALSE; 3512 fNoSearch = TRUE; 3513 3513 } 3514 3514 fAutoTile = TRUE; … … 3524 3524 fUserListSwitches = TRUE; 3525 3525 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID, 3526 3526 MPVOID); 3527 3527 if (hwndTree) { 3528 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3529 CNRINFO cnri; 3530 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE; 3531 3532 memset(&cnri, 0, sizeof(cnri)); 3533 cnri.cb = sizeof(cnri); 3534 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT), 3535 TREE_CNR), 3536 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri))); 3537 cnri.flWindowAttr = flWindowAttr; 3538 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT), 3539 TREE_CNR), 3540 CM_SETCNRINFO, 3541 MPFROMP(&cnri), MPFROMLONG(CMA_FLWINDOWATTR)); 3542 3542 } 3543 3543 if (hwndMain) { 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3544 if (fAutoView) 3545 WinSendMsg(hwndMain, WM_COMMAND, 3546 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID); 3547 if (fUserComboBox) 3548 WinSendMsg(hwndMain, WM_COMMAND, 3549 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID); 3550 { 3551 SWP swp; 3552 3553 if (WinQueryWindowPos(hwndMain, &swp)) { 3554 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0, 3555 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE); 3556 } 3557 } 3558 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L)); 3559 PostMsg(MainObjectHwnd, UM_SETDIR, MPVOID, MPVOID); 3560 3560 } 3561 3561 return 0; … … 3573 3573 // Save new details settings and refresh windows 3574 3574 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLongname", 3575 3575 &dsDirCnrDefault.detailslongname, sizeof(BOOL)); 3576 3576 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSubject", 3577 3577 &dsDirCnrDefault.detailssubject, sizeof(BOOL)); 3578 3578 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsEA", 3579 3579 &dsDirCnrDefault.detailsea, sizeof(BOOL)); 3580 3580 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsSize", 3581 3581 &dsDirCnrDefault.detailssize, sizeof(BOOL)); 3582 3582 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsIcon", 3583 3583 &dsDirCnrDefault.detailsicon, sizeof(BOOL)); 3584 3584 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWDate", 3585 3585 &dsDirCnrDefault.detailslwdate, sizeof(BOOL)); 3586 3586 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLWTime", 3587 3587 &dsDirCnrDefault.detailslwtime, sizeof(BOOL)); 3588 3588 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLADate", 3589 3589 &dsDirCnrDefault.detailsladate, sizeof(BOOL)); 3590 3590 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsLATime", 3591 3591 &dsDirCnrDefault.detailslatime, sizeof(BOOL)); 3592 3592 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRDate", 3593 3593 &dsDirCnrDefault.detailscrdate, sizeof(BOOL)); 3594 3594 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsCRTime", 3595 3595 &dsDirCnrDefault.detailscrtime, sizeof(BOOL)); 3596 3596 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr", 3597 3597 &dsDirCnrDefault.detailsattr, sizeof(BOOL)); 3598 3598 if (hwndMain) { 3599 3599 // Save state and restore to refresh windows with new settings 3600 3600 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) { 3601 3602 3603 3604 PostMsg(MainObjectHwnd, UM_RESTORE,GetPString(IDS_FM2TEMPTEXT), MPVOID);3601 // Tell window procedure to close container windows 3602 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2)); 3603 // Restore saved state 3604 PostMsg(MainObjectHwnd, UM_RESTORE, (PSZ)GetPString(IDS_FM2TEMPTEXT), MPVOID); 3605 3605 } 3606 3606 } 3607 3607 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), 3608 3608 UM_UNDO, MPVOID, MPVOID); 3609 3609 return 0; 3610 3610 … … 3664 3664 haccelCfg = WinLoadAccelTable(hab, FM3ModHandle, CFG_FRAME); 3665 3665 if (haccelCfg == NULLHANDLE) 3666 3666 Win_Error(hwndNotebook, HWND_DESKTOP, pszSrcFile, __LINE__, "WinLoadAccelTable"); 3667 3667 } 3668 3668 if (haccelCfg != NULLHANDLE) { 3669 3669 if (!WinSetAccelTable(hab, haccelCfg, hwndNotebook)) 3670 3670 Win_Error(hwndNotebook, HWND_DESKTOP, pszSrcFile, __LINE__, "WinSetAccelTable"); 3671 3671 // else 3672 3672 // DbgMsg(pszSrcFile, __LINE__, "WinSetAccelTable MAIN_DRIVELIST %x %x", hwndFrame, haccelDriveList); 3673 3673 } 3674 3674 … … 3679 3679 hwndTemp = WinQueryWindow(hwnd, QW_OWNER); 3680 3680 if (hwndTemp != HWND_DESKTOP) { 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3681 HWND hwndMenu; 3682 // Owner is frame if not applet 3683 hwndMenu = WinWindowFromID(hwndTemp, FID_MENU); 3684 if (hwndMenu == NULLHANDLE) 3685 Runtime_Error(pszSrcFile, __LINE__, "FID_MENU"); 3686 else { 3687 MENUITEM mi; 3688 BOOL ok; 3689 memset(&mi, 0, sizeof(mi)); 3690 ok = (BOOL)WinSendMsg(hwndMenu, 3691 MM_QUERYITEM, 3692 MPFROM2SHORT(IDM_NOTEBOOKSUBMENU, TRUE), 3693 MPFROMP(&mi)); 3694 if (!ok) 3695 Runtime_Error(pszSrcFile, __LINE__, "IDM_NOTEBOOKSUBMENU"); 3696 else { 3697 mp2 = WinSendMsg(mi.hwndSubMenu, MM_QUERYDEFAULTITEMID, MPVOID, MPVOID); 3698 //if (!mp2) // causes spurious error message on new installs GKY 1-9-09 3699 // mp2 = MPFROMLONG(IDM_QUICKSETTINGS); 3700 //Runtime_Error(pszSrcFile, __LINE__, "MM_QUERYDEFAULTITEMID"); 3701 } 3702 } 3703 3703 } 3704 3704 } … … 3706 3706 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID); 3707 3707 WinSendDlgItemMsg(hwnd, 3708 3709 3710 3708 CFG_NOTEBOOK, 3709 BKM_SETDIMENSIONS, 3710 MPFROM2SHORT(82, 24), MPFROMLONG(BKA_MAJORTAB)); 3711 3711 WinSendDlgItemMsg(hwnd, 3712 3713 3714 3712 CFG_NOTEBOOK, 3713 BKM_SETDIMENSIONS, 3714 MPFROM2SHORT(20, 20), MPFROMLONG(BKA_PAGEBUTTON)); 3715 3715 WinSendDlgItemMsg(hwnd, 3716 3717 3718 3716 CFG_NOTEBOOK, 3717 BKM_SETDIMENSIONS, 3718 MPFROM2SHORT(0, 0), MPFROMLONG(BKA_MINORTAB)); 3719 3719 3720 3720 // Build and insert notebook pages 3721 3721 for (x = 0; np[x].usFrameId; x++) { 3722 3722 hwndTemp = WinLoadDlg(HWND_DESKTOP, 3723 3724 3723 HWND_DESKTOP, 3724 np[x].pfnPageProc, FM3ModHandle, np[x].usFrameId, MPVOID); 3725 3725 if (!hwndTemp) { 3726 3727 3726 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, 3727 "Can not load settings page %u", x); 3728 3728 } 3729 3729 else { 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3730 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG)hwnd); 3731 np[x].hwnd = hwndTemp; 3732 np[x].ulPageId = (ULONG)WinSendDlgItemMsg(hwnd, 3733 CFG_NOTEBOOK, 3734 BKM_INSERTPAGE, 3735 MPFROMLONG(BKA_FIRST), 3736 MPFROM2SHORT(BKA_AUTOPAGESIZE | 3737 BKA_STATUSTEXTON | 3738 BKA_MAJOR, attrib)); 3739 attrib = BKA_LAST; 3740 WinSendDlgItemMsg(hwnd, 3741 CFG_NOTEBOOK, 3742 BKM_SETPAGEWINDOWHWND, 3743 MPFROMLONG(np[x].ulPageId), MPFROMLONG(np[x].hwnd)); 3744 WinSendDlgItemMsg(hwnd, 3745 CFG_NOTEBOOK, 3746 BKM_SETTABTEXT, 3747 MPFROMLONG(np[x].ulPageId), 3748 MPFROMP(GetPString(np[x].ulTitle))); 3749 WinSendDlgItemMsg(hwnd, 3750 CFG_NOTEBOOK, 3751 BKM_SETSTATUSLINETEXT, 3752 MPFROMLONG(np[x].ulPageId), 3753 MPFROMP(GetPString(np[x].ulTitle + 1))); 3754 3755 if (LONGFROMMP(mp2) == np[x].usMenuId) 3756 uPageIndex = x; // Remember selected page 3757 3757 } 3758 3758 } // for pages … … 3763 3763 // 15 Feb 08 SHL fixme to do just once? 3764 3764 if (mp2 == MPFROMLONG(IDM_QUICKSETTINGS) && 3765 3766 3767 3765 x-- > 0 && 3766 np[x].hwnd && 3767 np[x].usFrameId == CFG9_FRAME) 3768 3768 { 3769 3769 // 10 Jan 08 SHL fixme to document what UM_SETDIR 1 means 3770 3770 //PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1), MPVOID); 3771 3771 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3772 3772 BKM_TURNTOPAGE, MPFROMLONG(np[x].ulPageId), MPVOID); 3773 3773 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x].hwnd), MPVOID); 3774 3774 PostMsg(np[x].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID); … … 3776 3776 else if (uPageIndex >= x) { 3777 3777 Runtime_Error(pszSrcFile, __LINE__, "uPageIndex corrupted (%u)", 3778 3778 uPageIndex); 3779 3779 uPageIndex = 0; 3780 3780 } 3781 3781 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3782 3782 BKM_TURNTOPAGE, MPFROMLONG(np[uPageIndex].ulPageId), MPVOID); 3783 3783 // 15 Feb 08 SHL fixme to put focus on first field of page 3784 3784 … … 3802 3802 if (CHARMSG(&msg)->fs & KC_VIRTUALKEY) { 3803 3803 switch (CHARMSG(&msg)->vkey) { 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3804 case VK_F3: 3805 case VK_ENTER: 3806 case VK_NEWLINE: 3807 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPVOID); 3808 return 0; 3809 break; 3810 case VK_ESC: 3811 PostMsg(hwnd, WM_COMMAND, (MPARAM)DID_CANCEL, MPVOID); 3812 return 0; 3813 break; 3814 case VK_F1: 3815 PostMsg(hwnd, WM_COMMAND, (MPARAM)IDM_HELP, MPVOID); 3816 return 0; 3817 break; 3818 3818 } 3819 3819 } … … 3831 3831 SaveLastPageIndex(hwnd); 3832 3832 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd, 3833 3834 3835 3836 3833 CFG_NOTEBOOK, 3834 BKM_QUERYPAGEID, 3835 MPFROMLONG(0), 3836 MPFROM2SHORT(BKA_TOP, 0)); 3837 3837 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd, 3838 3839 3840 3838 CFG_NOTEBOOK, 3839 BKM_QUERYPAGEWINDOWHWND, 3840 MPFROMLONG(ulPageId), MPVOID); 3841 3841 if (hwndTemp) 3842 3842 WinSendMsg(hwndTemp, UM_UNDO, MPVOID, MPVOID); 3843 3843 3844 3844 WinDismissDlg(hwnd, 0); … … 3847 3847 case IDM_HELP: /* relay message to appropriate page's window */ 3848 3848 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd, 3849 3850 3851 3852 3849 CFG_NOTEBOOK, 3850 BKM_QUERYPAGEID, 3851 MPFROMLONG(0), 3852 MPFROM2SHORT(BKA_TOP, 0)); 3853 3853 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd, 3854 3855 3856 3854 CFG_NOTEBOOK, 3855 BKM_QUERYPAGEWINDOWHWND, 3856 MPFROMLONG(ulPageId), MPVOID); 3857 3857 if (hwndTemp) 3858 3858 PostMsg(hwndTemp, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID); 3859 3859 break; 3860 3860 } … … 3864 3864 for (x = 0; np[x].usFrameId; x++) { 3865 3865 if (np[x].hwnd) 3866 3866 WinSendMsg(np[x].hwnd, UM_UNDO, MPVOID, MPVOID); 3867 3867 } 3868 3868 break; … … 3871 3871 if (np[0].usFrameId) { 3872 3872 for (x = 1; np[x].usFrameId; x++) { 3873 3874 3875 3876 3877 3873 if (np[x].hwnd) { 3874 WinSendMsg(np[x].hwnd, WM_CLOSE, MPVOID, MPVOID); 3875 np[x].hwnd = (HWND) 0; 3876 np[x].ulPageId = 0; 3877 } 3878 3878 } 3879 3879 WinSendMsg(np[0].hwnd, WM_CLOSE, MPVOID, MPVOID); … … 3908 3908 if (fIsLite) { 3909 3909 WinSendMsg(hwndMenu, 3910 3911 3910 MM_DELETEITEM, 3911 MPFROM2SHORT(IDM_QUICKSETTINGS, FALSE), MPVOID); 3912 3912 // If fm/2 lite drop quick setting page 3913 3913 for (x = 0; np[x].usFrameId && np[x].usFrameId != CFG9_FRAME; x++) … … 3928 3928 if (hwndOwner != HWND_DESKTOP) { 3929 3929 ulPageId = (ULONG)WinSendDlgItemMsg(hwnd, 3930 3931 3932 3933 3930 CFG_NOTEBOOK, 3931 BKM_QUERYPAGEID, 3932 MPFROMLONG(0), 3933 MPFROM2SHORT(BKA_TOP, 0)); 3934 3934 if (!ulPageId) 3935 3935 Runtime_Error(pszSrcFile, __LINE__, "BKM_QUERYPAGEID"); 3936 3936 else { 3937 3937 for (x = 0; np[x].usMenuId && np[x].ulPageId != ulPageId; x++) 3938 3938 ; // Scan 3939 3939 if (!np[x].usMenuId) 3940 3940 Runtime_Error(pszSrcFile, __LINE__, "bad menu id %lu", ulPageId); 3941 3941 else { 3942 3943 3944 3945 3942 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage, 3943 (PVOID)&x, sizeof(x)); 3944 hwndMenu = WinWindowFromID(hwndOwner, FID_MENU); 3945 SetConditionalCascade(hwndMenu, IDM_NOTEBOOKSUBMENU, np[x].usMenuId); 3946 3946 } 3947 3947 } -
trunk/dll/notify.c
r1391 r1394 6 6 7 7 Copyright (c) 1993-98 M. Kimes 8 Copyright (c) 2006, 200 8Steven H.Levine8 Copyright (c) 2006, 2009 Steven H.Levine 9 9 10 10 17 Jul 06 SHL Use Win_Error … … 85 85 rgb2F.bRed = (BYTE)65; 86 86 rgb2.bRed = rgb2.bGreen = rgb2.bBlue = (BYTE)255; 87 88 87 rgb2.fcOptions = 0; 88 //fixme to allow user to change presparams 1-10-09 GKY 89 89 SetPresParams(hwnd, &rgb2, &rgb2F, &rgb2, FNT_8HELVETICA); 90 90 if (hwndMain) { … … 163 163 */ 164 164 165 HWND DoNotify( char *str)165 HWND DoNotify(PCSZ str) 166 166 { 167 167 char *p; … … 197 197 p = xmalloc(strlen(str) + 2, pszSrcFile, __LINE__); 198 198 if (!p) 199 p = str;199 p = (PSZ)str; 200 200 else { 201 201 strcpy(p + 1, str); … … 204 204 } 205 205 else 206 p = str;206 p = (PSZ)str; 207 207 208 208 hwnd = WinCreateWindow(hwndP, … … 229 229 */ 230 230 231 HWND Notify( char *str)231 HWND Notify(PCSZ str) 232 232 { 233 233 return (HWND)WinSendMsg(MainObjectHwnd, UM_NOTIFY, MPFROMP(str), MPVOID); … … 238 238 */ 239 239 240 VOID NotifyError( CHAR *filename, APIRET status)240 VOID NotifyError(PCSZ filename, APIRET status) 241 241 { 242 242 CHAR errortext[512]; … … 495 495 */ 496 496 497 BOOL AddNote(CHAR * note) 498 { 499 CHAR *s, *p; 497 BOOL AddNote(PCSZ note) 498 { 499 PSZ s; 500 PCSZ p; 500 501 BOOL once = FALSE, ret = FALSE; 501 502 -
trunk/dll/notify.h
r1211 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 05 Sep 08 JBS Ticket 187: Refactor FM3DLL.H … … 17 17 #define NOTIFY_H 18 18 19 BOOL AddNote( CHAR *note);20 HWND DoNotify( char *text);19 BOOL AddNote(PCSZ note); 20 HWND DoNotify(PCSZ text); 21 21 VOID EndNote(VOID); 22 22 VOID HideNote(VOID); 23 HWND Notify( char *text);24 VOID NotifyError( CHAR *filename, APIRET error);23 HWND Notify(PCSZ text); 24 VOID NotifyError(PCSZ filename, APIRET error); 25 25 MRESULT EXPENTRY NotifyWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2); 26 26 VOID ShowNote(VOID); -
trunk/dll/objcnr.c
r1335 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2005, 200 8Steven H. Levine9 Copyright (c) 2005, 2009 Steven H. Levine 10 10 11 11 24 May 05 SHL Rework for CNRITEM.szSubject … … 329 329 cnri.cyLineSpacing = 0; 330 330 cnri.cxTreeIndent = 12L; 331 cnri.pszCnrTitle = GetPString(IDS_WORKINGTEXT);331 cnri.pszCnrTitle = (PSZ)GetPString(IDS_WORKINGTEXT); 332 332 cnri.flWindowAttr = CV_TREE | CV_FLOW | 333 333 CA_CONTAINERTITLE | CA_TITLESEPARATOR | CA_TREELINE; -
trunk/dll/pathutil.c
r1323 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 05 Jan 08 SHL Move from arccnrs.c and comp.c to here … … 13 13 29 Feb 08 GKY Changes to enable user settable command line length 14 14 15 Oct 08 GKY Fix NormalizeCmdLine to check all 5 executible extensions when no extension provided; 15 16 15 use searchapath to check for existance of file types not checked by DosQAppType; 16 close DosFind. 17 17 18 18 ***********************************************************************/ … … 98 98 */ 99 99 100 PSZ BldQuotedFileName(PSZ pszQuotedFileName, P SZ pszFileName)100 PSZ BldQuotedFileName(PSZ pszQuotedFileName, PCSZ pszFileName) 101 101 { 102 102 BOOL q = needs_quoting(pszFileName); … … 184 184 pszCmdLine_); 185 185 if (!offsetexe && !offsetcom) { 186 187 188 186 FullPath = searchapath("PATH", szCmdLine); 187 if (*FullPath) 188 ret = 0; 189 189 } 190 190 else … … 193 193 //printf("%d A", ret); fflush(stdout); 194 194 if (ret) { 195 196 197 198 199 200 201 202 203 204 } 205 206 207 208 195 ret = saymsg(MB_YESNO, 196 HWND_DESKTOP, 197 NullStr, 198 GetPString(IDS_PROGRAMNOTFOUNDTEXT), 199 pszCmdLine_); 200 if (ret == MBID_YES){ 201 if (szArgs[0] != ' ') 202 strcat(pszNewCmdLine, " "); 203 strcat(pszNewCmdLine, szArgs); 204 } 205 else{ 206 fCancelAction = TRUE; 207 pszNewCmdLine = pszCmdLine_; 208 } 209 209 } 210 210 else{ 211 212 213 211 if (szArgs[0] != ' ') 212 strcat(pszNewCmdLine, " "); 213 strcat(pszNewCmdLine, szArgs); 214 214 } 215 215 … … 219 219 strrchr(szCmdLine, '.' ) < strrchr(szCmdLine, '\\'))) { 220 220 if (!strchr(szCmdLine, ' ')) { 221 221 // strip quotes readded by BuildQuotedFileName 222 222 while (strchr(szCmdLine, '\"')) 223 223 remove_first_occurence_of_character("\"", szCmdLine); 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 224 ret = DosQueryAppType(szCmdLine, &ulAppType); // exe automatically appended 225 if (!ret) 226 strcat(szCmdLine, ".exe"); 227 else { 228 strcat(szCmdLine, ".com"); 229 ret = DosQueryAppType(szCmdLine, &ulAppType); 230 if (ret) { 231 offset = strrchr(szCmdLine, '.' ); 232 *offset = 0; 233 strcat(szCmdLine, ".cmd"); 234 FullPath = searchapath("PATH", szCmdLine); 235 if (*FullPath) 236 ret = 0; 237 else { 238 *offset = 0; 239 strcat(szCmdLine, ".bat"); 240 FullPath = searchapath("PATH", szCmdLine); 241 if (*FullPath) 242 ret = 0; 243 else { 244 *offset = 0; 245 strcat(szCmdLine, ".bmt"); 246 FullPath = searchapath("PATH", szCmdLine); 247 if (*FullPath) 248 ret = 0; 249 } 250 } 251 } 252 } 253 253 //printf("%d", ret); fflush(stdout); 254 254 } … … 260 260 if (*pszChar == ' ') { //test at every space for the end of the filename 261 261 *pszChar = '\0'; 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 262 ret = DosQueryAppType(szCmdLine, &ulAppType); 263 if (!ret) { 264 strcat(szCmdLine, ".exe"); 265 break; 266 } 267 else { 268 strcat(szCmdLine, ".com"); 269 ret = DosQueryAppType(szCmdLine, &ulAppType); 270 if (ret) { 271 offset = strrchr(szCmdLine, '.' ); 272 *offset = 0; 273 strcat(szCmdLine, ".cmd"); 274 FullPath = searchapath("PATH", szCmdLine); 275 if (*FullPath) { 276 ret = 0; 277 break; 278 } 279 else { 280 *offset = 0; 281 strcat(szCmdLine, ".bat"); 282 FullPath = searchapath("PATH", szCmdLine); 283 if (*FullPath) { 284 ret = 0; 285 break; 286 } 287 else { 288 *offset = 0; 289 strcat(szCmdLine, ".bmt"); 290 FullPath = searchapath("PATH", szCmdLine); 291 if (*FullPath) { 292 ret = 0; 293 break; 294 } 295 } 296 } 297 } 298 else 299 break; 300 } 301 301 //printf("%d %s\n", ret, szCmdLine); fflush(stdout); 302 302 } … … 306 306 } 307 307 if (!ret){ 308 309 310 311 312 313 314 315 316 317 318 319 320 321 308 BldQuotedFileName(pszNewCmdLine, szCmdLine); 309 strcpy(szArgs, pszCmdLine_ + strlen(szCmdLine) - 3); 310 if ((szArgs[0] == '\"' && szArgs[1] == ' ') || 311 !strstr(pszCmdLine_, "\\:" ) || 312 strchr(szArgs, '\"') == strrchr(szArgs, '\"')) 313 remove_first_occurence_of_character("\"", szArgs); 314 if (strchr(szArgs, '\"') != strrchr(szArgs, '\"')) 315 saymsg(MB_OK, HWND_DESKTOP, 316 NullStr, 317 GetPString(IDS_QUOTESINARGSTEXT), 318 pszCmdLine_); 319 if (szArgs[0] != ' ') 320 strcat(pszNewCmdLine, " "); 321 strcat(pszNewCmdLine, szArgs); 322 322 } 323 323 else { // fail if no extension can be found runemf2 requires one 324 325 326 327 328 329 330 324 ret = saymsg(MB_OK, 325 HWND_DESKTOP, 326 NullStr, 327 GetPString(IDS_PROGRAMNOTEXE2TEXT), 328 pszCmdLine_); 329 fCancelAction = TRUE; 330 pszNewCmdLine = pszCmdLine_; 331 331 } 332 332 } … … 359 359 pszCmdLine_); 360 360 if (ret == MBID_YES) { 361 362 363 361 if (szArgs[0] != ' ') 362 strcat(pszNewCmdLine, " "); 363 strcat(pszNewCmdLine, szArgs); 364 364 } 365 365 else { … … 370 370 else { 371 371 ret = saymsg(MB_YESNOCANCEL, 372 373 374 375 376 377 378 379 380 381 382 383 384 372 HWND_DESKTOP, 373 NullStr, 374 GetPString(IDS_PROGRAMNOTEXE3TEXT), 375 pszCmdLine_, pszNewCmdLine); 376 if (ret == MBID_YES){ 377 if (szArgs[0] != ' ') 378 strcat(pszNewCmdLine, " "); 379 strcat(pszNewCmdLine, szArgs); 380 } 381 if (ret == MBID_CANCEL){ 382 fCancelAction = TRUE; 383 pszNewCmdLine = pszCmdLine_; 384 } 385 385 } 386 386 } -
trunk/dll/pathutil.h
r1241 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 05 Jan 08 SHL Move from fm3dll.h to here … … 24 24 PSZ BldFullPathName(PSZ pszFullPathName, PSZ pszPathName, PSZ pszFileName); 25 25 PSZ BldQuotedFullPathName(PSZ pszFullPathName, PSZ pszPathName, PSZ pszFileName); 26 PSZ BldQuotedFileName(PSZ pszQuotedFileName, P SZ pszFileName);26 PSZ BldQuotedFileName(PSZ pszQuotedFileName, PCSZ pszFileName); 27 27 PCSZ NormalizeCmdLine(PSZ pszWorkBuf, PSZ pszCmdLine_); 28 28 29 #define MAXCOMLINESTRGDEFAULT (1024) 29 #define MAXCOMLINESTRGDEFAULT (1024) /* used to build command line strings */ 30 30 #define CMDLNLNGTH_MIN (299) 31 31 #define CMDLNLNGTH_MAX (32768) -
trunk/dll/remap.c
r1226 r1394 5 5 6 6 Copyright (c) 1993, 1998 M. Kimes 7 Copyright (c) 2004, 200 8Steven H.Levine7 Copyright (c) 2004, 2009 Steven H.Levine 8 8 9 9 01 Aug 04 SHL Rework lstrip/rstrip usage … … 427 427 pgd.progt.progc = PROG_WINDOWABLEVIO; 428 428 pgd.progt.fbVisible = SHE_VISIBLE; 429 pgd.pszTitle = (info->attach) ?GetPString(IDS_ATTACHREQTEXT) :430 429 pgd.pszTitle = info->attach ? (PSZ)GetPString(IDS_ATTACHREQTEXT) : 430 (PSZ)GetPString(IDS_DETACHREQTEXT); 431 431 pgd.pszExecutable = p; 432 432 pgd.pszParameters = params; … … 543 543 pgd.progt.progc = PROG_WINDOWABLEVIO; 544 544 pgd.progt.fbVisible = SHE_VISIBLE; 545 pgd.pszTitle = GetPString(IDS_DETACHREQTEXT);545 pgd.pszTitle = (PSZ)GetPString(IDS_DETACHREQTEXT); 546 546 pgd.pszExecutable = p; 547 547 pgd.pszParameters = params; … … 648 648 pgd.progt.progc = PROG_WINDOWABLEVIO; 649 649 pgd.progt.fbVisible = SHE_VISIBLE; 650 pgd.pszTitle = GetPString(IDS_ATTACHREQTEXT);650 pgd.pszTitle = (PSZ)GetPString(IDS_ATTACHREQTEXT); 651 651 pgd.pszExecutable = p; 652 652 pgd.pszParameters = params; -
trunk/dll/seeall.c
r1391 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 16 Oct 02 SHL Handle large partitions … … 612 612 case IDM_RENAME: 613 613 { 614 CHAR newname[CCHMAXPATH], *moving, *move, *moved; 614 CHAR newname[CCHMAXPATH]; 615 PCSZ moving, move, moved; 615 616 APIRET rc; 616 617 INT type; … … 734 735 message); 735 736 if (fRealIdle) 736 737 738 739 740 741 737 priority_idle(); 738 if (fVerify && (driveflags[toupper(*list[x]) - 'A'] & DRIVE_WRITEVERIFYOFF || 739 driveflags[toupper(*newname) - 'A'] & DRIVE_WRITEVERIFYOFF)) { 740 DosSetVerify(FALSE); 741 fResetVerify = TRUE; 742 } 742 743 if (plen) { 743 744 /* make directory/ies, if required */ … … 753 754 } 754 755 } 755 756 757 758 759 756 rc = docopyf(type, list[x], "%s", newname); 757 if (fResetVerify) { 758 DosSetVerify(fVerify); 759 fResetVerify = FALSE; 760 } 760 761 priority_normal(); 761 762 if (rc) { … … 3337 3338 pAD->hwndPopup = 3338 3339 WinLoadMenu(HWND_DESKTOP, FM3ModHandle, SEEALL_POPUP); 3339 3340 3340 if (pAD->hwndPopup) { 3341 //fixme to allow user to change presparams 1-10-09 GKY 3341 3342 WinSetPresParam(pAD->hwndPopup, PP_FONTNAMESIZE, 3342 3343 strlen(FNT_8HELVETICA) + 1, -
trunk/dll/strutil.c
r1213 r1394 4 4 $Id$ 5 5 6 External strings file support6 External strings support - stored in STRINGTABLE 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2006, 200 8Steven H. Levine9 Copyright (c) 2006, 2009 Steven H. Levine 10 10 11 11 22 Jul 06 SHL Comments 12 12 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat 13 13 05 Jan 08 SHL Rename from string.c to avoid string.h conflict 14 03 Feb 09 SHL Switch to STRINGTABLE and const return 14 15 15 16 ***********************************************************************/ … … 17 18 #include <stdio.h> 18 19 #include <share.h> 20 #include <string.h> 21 22 #define INCL_DOSPROCESS // DosSleep 19 23 20 24 #include "fm3dll.h" 21 25 #include "fm3str.h" 22 26 #include "init.h" // Data declaration(s) 27 #include "mainwnd.h" // FM3ModHandle 28 #include "wrappers.h" 29 #include "errutil.h" 23 30 #include "strutil.h" 24 31 #include "version.h" 25 32 26 extern PSZ NullStr; // 05 Jan 08 SHL fixme to be in some .h 27 28 static char **strs, *str; 29 static ULONG numStr; 30 31 //== LoadStrings() load strings from file == 32 33 BOOL LoadStrings(char *filename) 33 static PSZ pszSrcFile = __FILE__; 34 35 //== GetPString() return a readonly pointer to the requested string in memory == 36 37 PCSZ GetPString(ULONG id) 34 38 { 35 BOOL ok = FALSE; 36 ULONG size, len, totalsize; 37 USHORT vermajor = 0, verminor = 0; 38 register char *p; 39 register ULONG x; 40 FILE *fp; 41 APIRET rc; 42 43 /* Load strings from requested file or FM3RES.STR 44 * with some quiet error-checking. 45 * Return TRUE on success, FALSE on error. 46 */ 47 48 if (!filename) 49 filename = "FM3RES.STR"; 50 numStr = 0; 51 if (str) 52 DosFreeMem(str); 53 strs = NULL; 54 str = NULL; 55 56 fp = _fsopen(filename, "rb", SH_DENYWR); 57 if (fp) { 58 if (fread(&numStr, 59 sizeof(numStr), 60 1, 61 fp) && 62 numStr == IDS_NUMSTRS && 63 fread(&len, sizeof(len), 1, fp) && 64 fread(&vermajor, sizeof(vermajor), 1, fp) && 65 fread(&verminor, sizeof(verminor), 1, fp) && 66 (vermajor >= VERMAJORBREAK && 67 (vermajor > VERMAJORBREAK || verminor >= VERMINORBREAK))) { 68 fseek(fp, 0, SEEK_END); 69 size = ftell(fp) - ((sizeof(ULONG) * 2) + (sizeof(USHORT) * 2)); 70 if (size && size == len) { 71 fseek(fp, (sizeof(ULONG) * 2) + (sizeof(USHORT) * 2), SEEK_SET); 72 /* NOTE: Make one memory object for both str and strs 73 * for efficiency. 74 */ 75 totalsize = size + sizeof(ULONG); 76 totalsize += (totalsize % sizeof(ULONG)); 77 len = totalsize; 78 totalsize += (numStr * sizeof(char *)); 79 totalsize += 4; 80 rc = DosAllocMem((PPVOID) & str, totalsize, 81 PAG_COMMIT | PAG_READ | PAG_WRITE); 82 if (!rc && str) { 83 strs = (char **)(str + len); 84 if (fread(str, 1, size, fp) == size) { 85 p = str; 86 for (x = 0; x < numStr; x++) { 87 if (p - str >= size) 88 break; 89 strs[x] = p; 90 while (*p) 91 p++; 92 p++; 93 } 94 if (x == numStr) 95 ok = TRUE; 39 PSZ psz; 40 LONG l; 41 CHAR sz[257]; 42 ULONG ulNewFirstId; 43 ULONG ulNewLastId; 44 45 static PSZ *pLoadedStrings; 46 static ULONG ulFirstId; 47 static ULONG ulLastId; 48 49 // Strings that must be combined because stringtable items limited to 256 50 static struct LongString { 51 ULONG id; 52 ULONG sub_id; 53 } LongStrings[] = { 54 {IDS_SUGGEST1TEXT, IDS_SUGGEST1TEXT1}, 55 {IDS_SUGGEST1TEXT, IDS_SUGGEST1TEXT2}, 56 {IDS_ARCHIVERBB2TEXT, IDS_ARCHIVERBB2TEXT1}, 57 {IDS_ARCHIVERBB2TEXT, IDS_ARCHIVERBB2TEXT2}, 58 {IDS_ARCHIVERBB2TEXT, IDS_ARCHIVERBB2TEXT3}, 59 {IDS_ARCHIVERBB2TEXT, IDS_ARCHIVERBB2TEXT4}, 60 {IDS_ARCHIVERBB2TEXT, IDS_ARCHIVERBB2TEXT5}, 61 {IDS_ARCHIVERBB2TEXT, IDS_ARCHIVERBB2TEXT6}, 62 {IDS_ARCHIVERBB2TEXT, IDS_ARCHIVERBB2TEXT7}, 63 {IDS_INIBINARYDATASKIPTEXT, IDS_INIBINARYDATASKIPTEXT1}, 64 {IDS_INIBINARYDATASKIPTEXT, IDS_INIBINARYDATASKIPTEXT2}, 65 {IDS_INSTANTHELPTEXT, IDS_INSTANTHELPTEXT1}, 66 {IDS_INSTANTHELPTEXT, IDS_INSTANTHELPTEXT2}, 67 {IDS_FSDERRORTEXT, IDS_FSDERRORTEXT1}, 68 {IDS_FSDERRORTEXT, IDS_FSDERRORTEXT2}, 69 {IDS_LANERRORTEXT, IDS_LANERRORTEXT1}, 70 {IDS_LANERRORTEXT, IDS_LANERRORTEXT2}, 71 {IDS_MAKESHADOWHELPTEXT, IDS_MAKESHADOWHELPTEXT1}, 72 {IDS_MAKESHADOWHELPTEXT, IDS_MAKESHADOWHELPTEXT2}, 73 {IDS_UNDELETEHELPTEXT, IDS_UNDELETEHELPTEXT1}, 74 {IDS_UNDELETEHELPTEXT, IDS_UNDELETEHELPTEXT2}, 75 {IDS_KILLPROCHELPTEXT, IDS_KILLPROCHELPTEXT1}, 76 {IDS_KILLPROCHELPTEXT, IDS_KILLPROCHELPTEXT2}, 77 {IDS_ARCNOTTHERETEXT, IDS_ARCNOTTHERETEXT1}, 78 {IDS_ARCNOTTHERETEXT, IDS_ARCNOTTHERETEXT2}, 79 {IDS_FM2CMDHELPTEXT, IDS_FM2CMDHELPTEXT1}, 80 {IDS_FM2CMDHELPTEXT, IDS_FM2CMDHELPTEXT2}, 81 {IDS_FM2CMDHELPTEXT, IDS_FM2CMDHELPTEXT3} 82 }; 83 84 static UINT cLongStrings = sizeof(LongStrings) / sizeof(struct LongString); 85 86 static volatile INT cBusy; // Need to be MT-safe 87 static ULONG ulDbgId; // 13 Jan 09 SHL fixme to be gone? 88 static UINT uDbgState; // 03 Feb 09 SHL fixme to be gone? 89 static ULONG ulDbgTid; // 13 Jan 09 SHL fixme to be gone? 90 91 UINT c; 92 // 23 Jan 09 SHL fixme to use SMP safe inc/dec? 93 extern void SMPSafeInc(void); 94 extern void SMPSafeDec(void); 95 #pragma aux SMPSafeInc = "lock inc cBusy" modify exact []; 96 #pragma aux SMPSafeDec = "lock dec cBusy" modify exact []; 97 // SMPSafeInc(); 98 for (c = 0; ; c++) { 99 if (++cBusy == 1) 100 break; 101 cBusy--; 102 // Hold off 1 cycle before reporting since some contention expected 103 if (c == 1) 104 DbgMsg(pszSrcFile, __LINE__, "GetPString(%lu) waiting for tid %lu GetPString(%lu), state=%u", id, ulDbgTid, ulDbgId, uDbgState); 105 DosSleep(1); // Let current owner finish 106 } 107 if (c > 1) 108 DbgMsg(pszSrcFile, __LINE__, "continuing with GetPString(%lu) after tid %lu GetPString(%lu), state=%u", id, ulDbgTid, ulDbgId, uDbgState); 109 110 // Remember id and thread ordinal for diagnosing MT hangs 111 // Use fast DosGetInfoBlocks to ensure debug logic does not change timing 112 { 113 extern PTIB2 GetPTIB2(void); 114 #pragma aux GetPTIB2 = "mov eax,fs:[12]" value [eax]; 115 // PIB *ppib; 116 // TIB *ptib; 117 TIB2 *ptib2 = GetPTIB2(); 118 // APIRET apiret = DosGetInfoBlocks(&ptib, &ppib); 119 ulDbgId = id; 120 // ulDbgTid = apiret == 0 ? ptib->tib_ptib2->tib2_ultid : 0; 121 ulDbgTid = ptib2->tib2_ultid; 122 } 123 124 // DbgMsg(pszSrcFile, __LINE__, "Fetching %lu", id); 125 126 // If string already loaded, return it now 127 if (id >= ulFirstId && 128 id <= ulLastId && 129 pLoadedStrings && 130 (psz = pLoadedStrings[id - ulFirstId]) != NULL) { 131 cBusy--; 132 if (((ULONG)psz & 0xffff0000) == 0) 133 DbgMsg(pszSrcFile, __LINE__, "id %lu corrupted %p", id, psz); 134 // DbgMsg(pszSrcFile, __LINE__, "id %lu \"%s\"", id, psz ? psz : "(null)"); 135 return psz; 136 } 137 138 // Try to load 139 // 11 Jan 09 SHL fixme to use global HAB? 140 uDbgState = 1; 141 l = WinLoadString((HAB)NULL, FM3ModHandle, id, sizeof(sz), sz); 142 uDbgState = 2; 143 144 if (l != 0) { 145 psz = xstrdup(sz, pszSrcFile, __LINE__); 146 if (!psz) { 147 cBusy--; 148 return NullStr; 149 } 150 } 151 else { 152 // Assume string must be built from multiple strings - find first 153 UINT i; 154 psz = NULL; 155 for (i = 0; i < cLongStrings && LongStrings[i].id != id; i++); // Scan 156 157 if (i < cLongStrings) { 158 // Combine stringtable items to build long string 159 // DbgMsg(pszSrcFile, __LINE__, "Building long string %lu", id); 160 for (; LongStrings[i].id == id; i++) { 161 uDbgState = 3; 162 l = WinLoadString((HAB)NULL, FM3ModHandle, LongStrings[i].sub_id, sizeof(sz), sz); 163 uDbgState = 4; 164 if (l == 0) { 165 cBusy--; 166 Runtime_Error(pszSrcFile, __LINE__, "string %lu missing", LongStrings[i].sub_id); 167 xfree(psz, pszSrcFile, __LINE__); 168 return NullStr; 169 } 170 if (!psz) { 171 // Remember 1st string 172 psz = strdup(sz); 173 if (!psz) { 174 cBusy--; 175 return NullStr; 96 176 } 97 if (ok)98 /* set pages to readonly */99 DosSetMem(str, totalsize, PAG_COMMIT | PAG_READ);100 177 } 101 } 102 } 103 fclose(fp); 104 } 105 106 if (!ok) { 107 numStr = 0; 108 if (str) 109 DosFreeMem(str); 110 str = NULL; 111 strs = NULL; 112 } 113 114 return ok; 178 else { 179 // Append string 180 UINT curLen = strlen(psz); 181 PSZ psz2 = xrealloc(psz, curLen + l + 1, pszSrcFile, __LINE__); 182 if (!psz2) { 183 xfree(psz, pszSrcFile, __LINE__); 184 cBusy--; 185 return NullStr; 186 } 187 memcpy(psz2 + curLen, sz, l); // Append 188 *(psz2 + curLen + l) = 0; // Terminate 189 psz = psz2; // Remember 190 l += curLen; 191 } 192 } // while 193 } // if long 194 } // if loaded 195 196 if (l == 0) { 197 DbgMsg(pszSrcFile, __LINE__, "Error loading %lu", id); 198 sprintf(sz, "** Error loading id %lu **", id); 199 psz = xstrdup(sz, pszSrcFile, __LINE__); 200 if (psz) 201 l = strlen(sz); 202 else 203 psz = NullStr; // Oh heck 204 } 205 206 uDbgState = 5; 207 // Add to cache 208 // DbgMsg(pszSrcFile, __LINE__, "Caching %lu", id); 209 210 // Calculate new array limits 211 if (!pLoadedStrings) { 212 ulNewFirstId = id; 213 ulNewLastId = id; 214 ulFirstId = id; 215 ulLastId = id; 216 } 217 else { 218 ulNewFirstId = id < ulFirstId ? id : ulFirstId; 219 ulNewLastId = id > ulLastId ? id : ulLastId; 220 } 221 222 if (ulNewFirstId != ulFirstId || 223 ulNewLastId != ulLastId || 224 !pLoadedStrings) { 225 PSZ *pNewLoadedStrings; 226 // DbgMsg(pszSrcFile, __LINE__, "Reallocating for %lu", id); 227 pNewLoadedStrings = xrealloc(pLoadedStrings, 228 (ulNewLastId - ulNewFirstId + 1) * sizeof(PSZ), 229 pszSrcFile, __LINE__); 230 if (!pNewLoadedStrings) { 231 cBusy--; 232 Runtime_Error(pszSrcFile, __LINE__, "realloc failed"); 233 xfree(psz, pszSrcFile, __LINE__); 234 return NullStr; 235 } 236 // Align existing entries and zero fill unused entries as needed 237 if (ulNewFirstId < ulFirstId) { 238 // Move room for new entries at head of array 239 memmove(pNewLoadedStrings + (ulFirstId - ulNewFirstId), 240 pNewLoadedStrings, 241 (ulLastId - ulFirstId + 1) * sizeof(PSZ)); 242 // Null unused placeholder entries 243 if (ulFirstId - ulNewFirstId > 1) 244 memset(pNewLoadedStrings + 1, 0, (ulFirstId - ulNewFirstId - 1) * sizeof(PSZ)); 245 } 246 if (ulNewLastId - ulLastId > 1) { 247 // Null unused placeholder entries 248 memset(pNewLoadedStrings + (ulLastId - ulNewFirstId + 1), 249 0, 250 (ulNewLastId - ulLastId - 1) * sizeof(PSZ)); 251 } 252 pLoadedStrings = pNewLoadedStrings; 253 ulFirstId = ulNewFirstId; 254 ulLastId = ulNewLastId; 255 } 256 257 uDbgState = 6; 258 pLoadedStrings[id - ulFirstId] = psz; 259 cBusy--; 260 // DbgMsg(pszSrcFile, __LINE__, "id %lu \"%s\"", id, psz ? psz : "(null)"); 261 return psz; 115 262 } 116 263 117 //== GetPString() return a readonly pointer to the requested string in memory ==118 119 char *GetPString(ULONG id)120 {121 return id < numStr && str && strs && strs[id] ? strs[id] : NullStr;122 }123 124 //== StringsLoaded() return TRUE is strings loaded125 126 BOOL StringsLoaded(void)127 {128 return numStr && str && strs;129 }130 131 264 #pragma alloc_text(STRINGS,LoadStrings,GetPString) -
trunk/dll/strutil.h
r1201 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2008 Steven H. Levine9 Copyright (c) 2008, 2009 Steven H. Levine 10 10 11 11 05 Jan 08 SHL Move from fm3dll.h to here 12 03 Feb 09 SHL Switch to STRINGTABLE and const return 12 13 13 14 ***********************************************************************/ … … 20 21 #endif 21 22 22 BOOL LoadStrings(PSZ filename); 23 PSZ GetPString(ULONG id); 24 BOOL StringsLoaded(void); 23 PCSZ GetPString(ULONG id); 25 24 26 25 #endif // STRUTIL_H -
trunk/dll/systemf.c
r1375 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2003, 200 8Steven H.Levine9 Copyright (c) 2003, 2009 Steven H.Levine 10 10 11 11 21 Nov 03 SHL Comments … … 25 25 19 Jul 08 GKY Replace save_dir2(dir) with pFM2SaveDirectory or pTmpDir and use MakeTempName 26 26 03 Jan 09 GKY Check for system that is protectonly to gray out Dos/Win command lines and prevent 27 27 Dos/Win programs from being inserted into the execute dialog with message why. 28 28 29 29 ***********************************************************************/ … … 82 82 if (!rc) { 83 83 if (swctl.idProcess == pid && swctl.uchVisibility == SWL_VISIBLE) 84 84 rc = WinSwitchToProgram(hswitch); 85 85 if (!rc) 86 86 return TRUE; 87 87 // else saymsg(MB_ENTER,HWND_DESKTOP,DEBUG_STRING,"Failed: %lu/%lx",rc,rc); 88 88 … … 100 100 101 101 int ExecOnList(HWND hwnd, char *command, int flags, char *tpath, 102 char **list, char *prompt, PCSZ pszCallingFile, UINT uiLineNumber)102 PSZ *list, PCSZ prompt, PCSZ pszCallingFile, UINT uiLineNumber) 103 103 { 104 104 /* executes the command once for all files in list */ 105 105 106 charpath[CCHMAXPATH], *commandline, modpath[CCHMAXPATH], listfile[CCHMAXPATH],106 CHAR path[CCHMAXPATH], *commandline, modpath[CCHMAXPATH], listfile[CCHMAXPATH], 107 107 *p, *pp, drive, *file, *ext, *dot; 108 108 register int x; … … 135 135 if (p) { 136 136 if (*p == ':') { 137 138 139 137 p++; 138 *p = '\\'; 139 p++; 140 140 } 141 141 *p = 0; … … 152 152 if (p) { 153 153 if (*p == ':') { 154 155 156 154 p++; 155 *p = '\\'; 156 p++; 157 157 } 158 158 *p = 0; … … 196 196 switch (*(p + 1)) { 197 197 case '!': /* write list to file, add filename */ 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 198 if (list) { 199 if (!*listfile) { 200 FILE *fp; 201 202 203 strcpy(listfile, pTmpDir ? pTmpDir : pFM2SaveDirectory); 204 MakeTempName(listfile, "$FM2LI$T", 2); 205 /*if (listfile[strlen(listfile) - 1] != '\\') 206 strcat(listfile, "\\"); 207 sprintf(&listfile[strlen(listfile)], "%s.%03x", 208 LISTTEMPROOT, (clock() & 4095));*/ 209 fp = xfopen(listfile, "w",pszSrcFile,__LINE__); 210 if (fp) { 211 for (x = 0; list[x]; x++) 212 { 213 fputs(list[x], fp); 214 if (list[x + 1]) 215 fputc('\n', fp); 216 } 217 fclose(fp); 218 } 219 } 220 strcpy(pp, listfile); 221 pp += strlen(listfile); 222 } 223 p += 2; 224 break; 225 225 226 226 case 'c': /* add name of command processor */ 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 227 { 228 char *env = GetCmdSpec(FALSE); 229 230 if (needs_quoting(env) && !strchr(env, '\"')) { 231 *pp = '\"'; 232 pp++; 233 spaces = TRUE; 234 } 235 else 236 spaces = FALSE; 237 strcpy(pp, env); 238 p += 2; 239 pp += strlen(env); 240 if (spaces) { 241 *pp = '\"'; 242 pp++; 243 } 244 } 245 break; 246 246 247 247 case 't': /* add Target directory */ 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 248 if (needs_quoting(targetdir) && !strchr(targetdir, '\"')) { 249 *pp = '\"'; 250 pp++; 251 spaces = TRUE; 252 } 253 else 254 spaces = FALSE; 255 strcpy(pp, targetdir); 256 p += 2; 257 pp += strlen(targetdir); 258 if (spaces) { 259 *pp = '\"'; 260 pp++; 261 } 262 break; 263 263 264 264 case '$': /* add drive letter */ 265 266 267 268 269 270 271 272 273 274 275 265 if (drive) 266 *pp = drive; 267 else { 268 ULONG ulDriveNum = 3, ulDriveMap; 269 270 DosQCurDisk(&ulDriveNum, &ulDriveMap); 271 *pp = (char) (ulDriveNum + '@'); 272 } 273 pp++; 274 p += 2; 275 break; 276 276 277 277 case 'U': /* add path of first list component */ 278 278 case 'u': 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 279 if (*modpath) { 280 if (needs_quoting(modpath) && !strchr(modpath, '\"')) { 281 spaces = TRUE; 282 *pp = '\"'; 283 pp++; 284 } 285 else 286 spaces = FALSE; 287 if (*(p + 1) == 'u') { 288 strcpy(pp, modpath); 289 pp += strlen(modpath); 290 } 291 else { 292 strcpy(pp, modpath + 2); 293 pp += strlen(modpath + 2); 294 } 295 if (spaces) { 296 if (modpath[strlen(modpath) - 1] == '\\') { 297 *pp = '\\'; 298 pp++; 299 } 300 *pp = '\"'; 301 pp++; 302 } 303 } 304 else { 305 char temp[CCHMAXPATH]; 306 307 strcpy(temp, pFM2SaveDirectory); 308 if (needs_quoting(temp) && !strchr(temp, '\"')) { 309 spaces = TRUE; 310 *pp = '\"'; 311 pp++; 312 } 313 else 314 spaces = FALSE; 315 strcpy(pp, temp); 316 pp += strlen(temp); 317 if (spaces) { 318 if (temp[strlen(temp) - 1] == '\\') { 319 *pp = '\\'; 320 pp++; 321 } 322 *pp = '\"'; 323 pp++; 324 } 325 } 326 p += 2; 327 break; 328 328 329 329 case 'P': /* add path of execution */ 330 330 case 'p': 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 331 if (*path) { 332 if (needs_quoting(path) && !strchr(path, '\"')) { 333 spaces = TRUE; 334 *pp = '\"'; 335 pp++; 336 } 337 else 338 spaces = FALSE; 339 if (*(p + 1) == 'p') { 340 strcpy(pp, path); 341 pp += strlen(path); 342 } 343 else { 344 strcpy(pp, path + 2); 345 pp += strlen(path + 2); 346 } 347 if (spaces) { 348 if (path[strlen(path) - 1] == '\\') { 349 *pp = '\\'; 350 pp++; 351 } 352 *pp = '\"'; 353 pp++; 354 } 355 } 356 else { 357 char temp[CCHMAXPATH]; 358 359 strcpy(temp, pFM2SaveDirectory); 360 if (needs_quoting(temp) && !strchr(temp, '\"')) { 361 spaces = TRUE; 362 *pp = '\"'; 363 pp++; 364 } 365 else 366 spaces = FALSE; 367 strcpy(pp, temp); 368 pp += strlen(temp); 369 if (spaces) { 370 if (temp[strlen(temp) - 1] == '\\') { 371 *pp = '\\'; 372 pp++; 373 } 374 *pp = '\"'; 375 pp++; 376 } 377 } 378 p += 2; 379 break; 380 380 381 381 case 'D': 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 382 if (hwndMain) { 383 PCNRITEM pci; 384 385 pci = (PCNRITEM) WinSendMsg(WinWindowFromID(WinWindowFromID( 386 hwndTree, FID_CLIENT), TREE_CNR), 387 CM_QUERYRECORDEMPHASIS, 388 MPFROMLONG(CMA_FIRST), 389 MPFROMSHORT(CRA_CURSORED)); 390 if (pci && (int) pci != -1 && *pci->pszFileName) { 391 if (needs_quoting(pci->pszFileName) && 392 !strchr(pci->pszFileName, '\"')) 393 { 394 *pp = '\"'; 395 pp++; 396 spaces = TRUE; 397 } 398 else 399 spaces = FALSE; 400 strcpy(pp, pci->pszFileName); 401 pp += strlen(pci->pszFileName); 402 if (spaces) { 403 *pp = '\"'; 404 pp++; 405 } 406 } 407 } 408 p += 2; 409 break; 410 410 411 411 case 'd': 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 412 if (hwndMain) { 413 HENUM henum; 414 char retstr[CCHMAXPATH]; 415 HWND hwndC, hwndDir; 416 USHORT id; 417 BOOL first = TRUE; 418 419 henum = WinBeginEnumWindows(hwndMain); 420 while ((hwndC = WinGetNextWindow(henum)) != NULLHANDLE) { 421 if (hwndC != hwndTree) { 422 id = WinQueryWindowUShort(hwndC, QWS_ID); 423 if (id) { 424 hwndDir = WinWindowFromID(hwndC, FID_CLIENT); 425 if (hwndDir) { 426 hwndDir = WinWindowFromID(hwndDir, DIR_CNR); 427 if (hwndDir) { 428 *retstr = 0; 429 WinSendMsg(hwndC, UM_CONTAINERDIR, MPFROMP(retstr), MPVOID); 430 if (*retstr) { 431 if (!first) { 432 *pp = ' '; 433 pp++; 434 } 435 first = FALSE; 436 if (needs_quoting(retstr) && !strchr(retstr, '\"')) { 437 *pp = '\"'; 438 pp++; 439 spaces = TRUE; 440 } 441 else 442 spaces = FALSE; 443 strcpy(pp, retstr); 444 pp += strlen(retstr); 445 if (spaces) { 446 *pp = '\"'; 447 pp++; 448 } 449 } 450 } 451 } 452 } 453 } 454 } 455 WinEndEnumWindows(henum); 456 } 457 p += 2; 458 break; 459 459 460 460 case '%': 461 462 463 464 461 *pp = '%'; 462 pp++; 463 p += 2; 464 break; 465 465 466 466 case 'R': … … 471 471 case 'a': 472 472 case 'e': 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 473 if (list) { 474 for (x = 0; list[x]; x++) 475 { 476 file = strrchr(list[x], '\\'); 477 if (!file) 478 file = strrchr(list[x], ':'); 479 if (file) 480 file++; 481 else 482 file = list[x]; 483 ext = strrchr(file, '.'); 484 dot = ext; 485 if (ext) 486 ext++; 487 switch (*(p + 1)) { 488 case 'R': 489 case 'r': 490 if (pp + strlen(list[x]) > commandline + MaxComLineStrg) 491 goto BreakOut; 492 if (*(p + 1) == 'r') { 493 strcpy(pp, list[x]); 494 pp += strlen(list[x]); 495 } 496 else { 497 strcpy(pp, list[x] + 2); 498 pp += strlen(list[x] + 2); 499 } 500 break; 501 502 case 'F': 503 case 'f': 504 if (*(p + 1) == 'F' && dot) 505 *dot = 0; 506 if (pp + strlen(file) > commandline + MaxComLineStrg) 507 goto BreakOut; 508 if (needs_quoting(file)) { 509 spaces = TRUE; 510 *pp = '\"'; 511 pp++; 512 } 513 else 514 spaces = FALSE; 515 strcpy(pp, file); 516 pp += strlen(file); 517 if (*(p + 1) == 'F' && dot) 518 *dot = '.'; 519 if (spaces) { 520 if (*(pp - 1) != '\"') { 521 *pp = '\"'; 522 pp++; 523 } 524 } 525 break; 526 527 case 'A': 528 case 'a': 529 if (pp + strlen(list[x]) > commandline + MaxComLineStrg) 530 goto BreakOut; 531 if (needs_quoting(list[x]) && !strchr(list[x], '\"')) { 532 spaces = TRUE; 533 *pp = '\"'; 534 pp++; 535 } 536 else 537 spaces = FALSE; 538 if (*(p + 1) == 'a') { 539 strcpy(pp, list[x]); 540 pp += strlen(list[x]); 541 } 542 else { 543 strcpy(pp, list[x] + 2); 544 pp += strlen(list[x] + 2); 545 } 546 if (spaces) { 547 if (list[x][strlen(list[x]) - 1] == '\\') { 548 *pp = '\\'; 549 pp++; 550 } 551 *pp = '\"'; 552 pp++; 553 } 554 break; 555 556 case 'e': 557 if (ext) { 558 if (pp + strlen(ext) > commandline + MaxComLineStrg) 559 goto BreakOut; 560 if (needs_quoting(ext)) { 561 spaces = TRUE; 562 *pp = '\"'; 563 pp++; 564 } 565 else 566 spaces = FALSE; 567 strcpy(pp, ext); 568 pp += strlen(ext); 569 if (spaces) { 570 if (*(pp - 1) != '\"') { 571 *pp = '\"'; 572 pp++; 573 } 574 } 575 } 576 break; 577 } 578 if (list[x + 1]) { 579 *pp = ' '; 580 pp++; 581 } 582 } 583 } 584 p += 2; 585 break; 586 586 587 587 default: 588 589 590 591 588 *pp = *p; 589 p++; 590 pp++; 591 break; 592 592 } 593 593 } … … 616 616 strcpy(ex.path, path); 617 617 if (prompt) 618 618 strcpy(ex.title, prompt); 619 619 ret = WinDlgBox(HWND_DESKTOP, hwnd, CmdLineDlgProc, FM3ModHandle, 620 620 EXEC_FRAME, &ex); 621 621 if (ret != 1) { 622 623 622 free(commandline); 623 return (ret == 0) ? -1 : -2; 624 624 } 625 625 } … … 628 628 ex.flags &= (~PROMPT); 629 629 ret = runemf2(ex.flags, hwnd, pszCallingFile, uiLineNumber, path, 630 631 630 (*ex.environment) ? ex.environment : NULL, 631 "%s", commandline); 632 632 free(commandline); 633 633 return ret; … … 640 640 641 641 int runemf2(int type, HWND hwnd, PCSZ pszCallingFile, UINT uiLineNumber, 642 643 642 char *pszDirectory, char *pszEnvironment, 643 char *formatstring,...) 644 644 { 645 645 /** example: … … 697 697 if (pszDirectory && *pszDirectory) { 698 698 if (!DosQueryPathInfo(pszDirectory, 699 700 701 699 FIL_QUERYFULLNAME, 700 szTempdir, 701 sizeof(szTempdir))) 702 702 pszDirectory = szTempdir; 703 703 } … … 707 707 708 708 rc = DosAllocMem((PVOID)&pszPgm, 709 710 709 MaxComLineStrg, 710 PAG_COMMIT | OBJ_TILE | PAG_READ | PAG_WRITE); 711 711 if (rc) { 712 712 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); … … 718 718 *pszPgm = 0; 719 719 va_start(parguments, 720 720 formatstring); 721 721 vsprintf(pszPgm, 722 723 722 formatstring, 723 parguments); 724 724 va_end(parguments); 725 725 … … 754 754 temp = *p; 755 755 if (temp) { 756 757 758 759 760 756 rc = DosAllocMem((PVOID)&pszArgs, 757 MaxComLineStrg * 2, 758 PAG_COMMIT | OBJ_TILE | PAG_READ | PAG_WRITE); 759 if (rc) 760 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 761 761 } 762 762 else 763 763 pszArgs = NULL; 764 764 *p = 0; 765 765 /* Find the handle of the WPS object */ … … 767 767 *p = temp; 768 768 if (hWPSObject != NULLHANDLE) { 769 770 771 772 773 774 775 769 if (pszArgs && *p) { 770 sprintf(pszArgs,"OPEN=DEFAULT;PARAMETERS=\"%s\"",p); 771 WinSetObjectData(hWPSObject,pszArgs); 772 } 773 else 774 WinSetObjectData(hWPSObject,"OPEN=DEFAULT"); 775 ret = 0; 776 776 } 777 777 goto ObjectInterrupt; … … 779 779 780 780 if ((type & RUNTYPE_MASK) == SYNCHRONOUS || 781 782 781 (type & RUNTYPE_MASK) == ASYNCHRONOUS || 782 (type & RUNTYPE_MASK) == DETACHED) 783 783 { 784 784 strip_lead_char(" \t", pszPgm); … … 786 786 wasquote = FALSE; 787 787 while (*p && 788 789 790 788 (wasquote || 789 (*p != ' ' && 790 *p != '\t'))) 791 791 { 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 792 if (*p == '\"') { 793 if (!wasquote) { 794 wasquote = TRUE; 795 memmove(p, 796 p + 1, 797 strlen(p)); 798 while (*p == ' ' || 799 *p == '\t') 800 p++; 801 } 802 else { 803 memmove(p, 804 p + 1, 805 strlen(p)); 806 break; 807 } 808 } 809 else 810 p++; 811 811 } 812 812 if (*p) { 813 814 813 *p = 0; 814 p++; 815 815 } 816 816 else 817 817 p = pszPgm; 818 818 p[strlen(p) + 1] = 0; /* double-terminate args */ 819 819 if (*pszPgm) { 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 820 if (!strchr(pszPgm, '\\') && 821 !strchr(pszPgm, ':') && 822 pszDirectory && 823 *pszDirectory) 824 { 825 strcpy(szSavedir, pFM2SaveDirectory); 826 switch_to(pszDirectory); 827 } 828 rc = DosQueryAppType(pszPgm,&ulAppType); 829 if (!strchr(pszPgm, '\\') && 830 !strchr(pszPgm, ':') && 831 pszDirectory && 832 *pszDirectory) 833 switch_to(szSavedir); 834 if (rc) { 835 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__, 836 GetPString(IDS_DOSQAPPTYPEFAILEDTEXT), 837 pszPgm, pszCallingFile, uiLineNumber); // 26 May 08 SHL 838 DosFreeMem(pszPgm); 839 if (pszArgs) 840 DosFreeMem(pszArgs); 841 return -1; 842 } 843 if (ulAppType) { 844 if (ulAppType & FAPPTYP_DLL || ulAppType & FAPPTYP_VIRTDRV || 845 ulAppType & FAPPTYP_PHYSDRV || ulAppType & FAPPTYP_PROTDLL) 846 { 847 Runtime_Error(pszSrcFile, __LINE__, 848 GetPString(IDS_APPTYPEUNEXPECTEDTEXT), 849 ulAppType, pszPgm, pszCallingFile, uiLineNumber); // 26 May 08 SHL 850 if (pszPgm) 851 DosFreeMem(pszPgm); 852 if (pszArgs) 853 DosFreeMem(pszArgs); 854 return -1; 855 } 856 if (ulAppType & FAPPTYP_DOS || ulAppType & FAPPTYP_WINDOWSREAL || 857 ulAppType & FAPPTYP_WINDOWSPROT || ulAppType & FAPPTYP_WINDOWSPROT31) 858 { 859 Runtime_Error(pszSrcFile, __LINE__, 860 GetPString(IDS_APPTYPEUNEXPECTEDTEXT), 861 ulAppType, pszPgm, pszCallingFile, uiLineNumber); // 26 May 08 SHL 862 if (pszPgm) 863 DosFreeMem(pszPgm); 864 if (pszArgs) 865 DosFreeMem(pszArgs); 866 return -1; 867 } 868 } 869 memset(&results, 0, sizeof(results)); 870 if (pszDirectory && *pszDirectory) { 871 strcpy(szSavedir, pFM2SaveDirectory); 872 switch_to(pszDirectory); 873 } 874 ret = DosExecPgm(szObject, sizeof(szObject), 875 ((type & RUNTYPE_MASK) == ASYNCHRONOUS ? EXEC_ASYNC : 0) + 876 ((type & RUNTYPE_MASK) == DETACHED ? EXEC_BACKGROUND : 0), 877 pszPgm, pszEnvironment, &results, pszPgm); 878 if (pszDirectory && *pszDirectory) 879 switch_to(szSavedir); 880 if (ret && !fNoErrorMsg) { 881 Dos_Error(MB_ENTER,ret,hwnd,pszSrcFile,__LINE__, 882 GetPString(IDS_DOSEXECPGMFAILEDTEXT), pszPgm, 883 pszCallingFile, uiLineNumber); // 26 May 08 SHL 884 } 885 885 } 886 886 } 887 887 else { 888 888 if (~type & FULLSCREEN) 889 889 type |= WINDOWED; 890 890 rc = DosAllocMem((PVOID) & pszArgs, MaxComLineStrg * 2, 891 891 PAG_COMMIT | OBJ_TILE | PAG_READ | PAG_WRITE); 892 892 if (rc) { 893 894 895 893 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 894 DosFreeMem(pszPgm); 895 return -1; 896 896 } 897 897 *pszArgs = 0; … … 901 901 wasquote = FALSE; 902 902 while (*p && (wasquote || (*p != ' ' && *p != '\t'))) { 903 904 905 906 907 908 909 910 911 912 913 914 915 916 903 if (*p == '\"') { 904 if (!wasquote) { 905 wasquote = TRUE; 906 memmove(p, p + 1, strlen(p)); 907 while (*p == ' ' || *p == '\t') 908 p++; 909 } 910 else { 911 memmove(p, p + 1, strlen(p)); 912 break; 913 } 914 } 915 else 916 p++; 917 917 } // while 918 918 if (*p) { 919 920 919 *p = 0; 920 p++; 921 921 } 922 922 else 923 923 p = NullStr; 924 924 if (*p) 925 925 strcpy(pszArgs, p); 926 926 927 927 p = strrchr(pszPgm, '.'); 928 928 if (p) { 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 929 char temp[CCHMAXPATH + 1]; 930 931 if (!stricmp(p, ".BAT")) { 932 strcpy(temp, pszPgm); 933 strcpy(pszPgm, pszArgs); 934 strcpy(pszArgs, "/C "); 935 strcat(pszArgs, temp); 936 strcat(pszArgs, " "); 937 strcat(pszArgs, pszPgm); 938 strcpy(pszPgm, GetCmdSpec(TRUE)); // DOS 939 } 940 else if (!stricmp(p, ".CMD") || !stricmp(p, ".BTM")) { 941 // Assume 4OS2 is BTM 942 strcpy(temp, pszPgm); 943 strcpy(pszPgm, pszArgs); 944 strcpy(pszArgs, "/C "); 945 strcat(pszArgs, temp); 946 strcat(pszArgs, " "); 947 strcat(pszArgs, pszPgm); 948 strcpy(pszPgm, GetCmdSpec(FALSE)); // OS/2 949 } 950 950 } 951 951 … … 953 953 954 954 if (strlen(pszPgm) + strlen(pszArgs) > 1024) 955 955 pszArgs[1024 - strlen(pszPgm)] = 0; 956 956 957 957 if (!strchr(pszPgm, '\\') && 958 959 960 958 !strchr(pszPgm, ':') && 959 pszDirectory && 960 *pszDirectory) 961 961 { 962 963 962 strcpy(szSavedir, pFM2SaveDirectory); 963 switch_to(pszDirectory); 964 964 } 965 965 rc = DosQueryAppType(pszPgm,&ulAppType); 966 966 if (!strchr(pszPgm, '\\') && 967 968 969 970 967 !strchr(pszPgm, ':') && 968 pszDirectory && 969 *pszDirectory) 970 switch_to(szSavedir); 971 971 if (rc) { 972 973 974 975 976 977 978 972 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__, 973 GetPString(IDS_DOSQAPPTYPEFAILEDTEXT), 974 pszPgm, pszCallingFile, uiLineNumber); // 26 May 08 SHL 975 DosFreeMem(pszPgm); 976 if (pszArgs) 977 DosFreeMem(pszArgs); 978 return -1; 979 979 } 980 980 981 981 if (ulAppType) { 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 982 if (ulAppType & (FAPPTYP_DLL | FAPPTYP_VIRTDRV | FAPPTYP_PHYSDRV | FAPPTYP_PROTDLL)) 983 { 984 Runtime_Error(pszSrcFile, __LINE__, 985 GetPString(IDS_APPTYPEUNEXPECTEDTEXT), 986 ulAppType, pszPgm, pszCallingFile, uiLineNumber); // 26 May 08 SHL 987 DosFreeMem(pszPgm); 988 if (pszArgs) 989 DosFreeMem(pszArgs); 990 return -1; 991 } 992 ulAppType &= ~FAPPTYP_BOUND; 993 if (ulAppType & (FAPPTYP_DOS | FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSPROT31)) 994 { 995 if (ulAppType & (FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSPROT31)) 996 { 997 if (~type & FULLSCREEN && 998 ulAppType & (FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSPROT31)) 999 { 1000 ret = RunSeamless(pszPgm, pszArgs, hwnd); 1001 if (pszPgm) 1002 DosFreeMem(pszPgm); 1003 if (pszArgs) 1004 DosFreeMem(pszArgs); 1005 return ret ? 0 : -1; 1006 } 1007 else { 1008 strcat(pszPgm, " "); 1009 strcat(pszPgm, pszArgs); 1010 *pszArgs = 0; 1011 if (ulAppType & (FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT31)) 1012 strcat(pszArgs, "/3 "); 1013 strcat(pszArgs, pszPgm); 1014 strcpy(pszPgm, "WINOS2.COM"); 1015 } 1016 } 1017 else { 1018 if (~type & FULLSCREEN) { 1019 type |= WINDOWED; 1020 ulAppType = SSF_TYPE_WINDOWEDVDM; 1021 } 1022 else { 1023 type &= ~WINDOWED; 1024 ulAppType = SSF_TYPE_VDM; 1025 } 1026 } 1027 } 1028 else if (ulAppType & FAPPTYP_32BIT) { 1029 ulAppType &= ~FAPPTYP_32BIT; 1030 if (ulAppType == FAPPTYP_WINDOWAPI) 1031 ulAppType = SSF_TYPE_PM; 1032 else if (ulAppType == FAPPTYP_WINDOWCOMPAT) 1033 ulAppType = SSF_TYPE_WINDOWABLEVIO; 1034 else if (ulAppType == FAPPTYP_NOTWINDOWCOMPAT) { 1035 ulAppType = SSF_TYPE_FULLSCREEN; 1036 type &= ~WINDOWED; 1037 type |= FULLSCREEN; 1038 } 1039 else /* ? */ 1040 ulAppType = SSF_TYPE_WINDOWABLEVIO; 1041 } 1042 else if (ulAppType == FAPPTYP_WINDOWAPI) 1043 ulAppType = SSF_TYPE_PM; 1044 else if (ulAppType == FAPPTYP_WINDOWCOMPAT) 1045 ulAppType = SSF_TYPE_WINDOWABLEVIO; 1046 else if (ulAppType == FAPPTYP_NOTWINDOWCOMPAT) { 1047 type &= ~WINDOWED; 1048 ulAppType = SSF_TYPE_FULLSCREEN; 1049 } 1050 else 1051 ulAppType = SSF_TYPE_DEFAULT; 1052 if ((type & FULLSCREEN || ~type & WINDOWED) && 1053 ulAppType == SSF_TYPE_WINDOWABLEVIO) 1054 { 1055 ulAppType = SSF_TYPE_FULLSCREEN; 1056 } 1057 // fixme parens? 1058 else if (type & FULLSCREEN || 1059 (type & WINDOWED && ulAppType == SSF_TYPE_WINDOWEDVDM)) 1060 { 1061 ulAppType = SSF_TYPE_VDM; 1062 } 1063 1063 } 1064 1064 if (ulAppType == SSF_TYPE_WINDOWEDVDM && type & SEPARATEKEEP) { 1065 1066 1065 type &= ~SEPARATEKEEP; 1066 type |= SEPARATE; 1067 1067 } 1068 1068 … … 1070 1070 1071 1071 if (~type & WAIT) 1072 1072 useTermQ = FALSE; 1073 1073 else { 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1074 rc = 0; 1075 DosEnterCritSec(); 1076 if (!hTermQ) { 1077 // Create term queue and event semaphore just once 1078 sprintf(szTermQName, TERMQ_BASE_NAME "_%x", ppib->pib_ulpid); 1079 rc = DosCreateQueue(&hTermQ, QUE_FIFO | QUE_CONVERT_ADDRESS, szTermQName); 1080 if (rc) { 1081 hTermQ = (HQUEUE)0; // Try to survive 1082 DosExitCritSec(); 1083 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosCreateQueue"); 1084 } 1085 else { 1086 rc = DosCreateEventSem(NULL,(PHEV)&hTermQSem,0,FALSE); 1087 if (rc) { 1088 hTermQSem = (HEV)0; // Try to survive 1089 DosCloseQueue(hTermQ); 1090 hTermQ = (HQUEUE)0; // Try to survive 1091 DosExitCritSec(); 1092 Dos_Error(MB_ENTER,rc,HWND_DESKTOP,pszSrcFile,__LINE__,"DoCreateEventSem"); 1093 } 1094 // if (!rc) fprintf(stderr,"%s %d qcreated ptib %x hTermQ %x\n",__FILE__, __LINE__,ptib,hTermQ); 1095 } 1096 } // if 1st time 1097 useTermQ = hTermQ && hTermQSem; 1098 if (!rc) 1099 DosExitCritSec(); 1100 1100 } // if wait 1101 1101 … … 1103 1103 sdata.Length = sizeof(sdata); 1104 1104 sdata.Related = type & (WAIT | CHILD) ? SSF_RELATED_CHILD : 1105 1105 SSF_RELATED_INDEPENDENT; 1106 1106 sdata.FgBg = type & BACKGROUND ? SSF_FGBG_BACK : SSF_FGBG_FORE; 1107 1107 sdata.TraceOpt = SSF_TRACEOPT_NONE; 1108 1108 sdata.PgmName = pszPgm; 1109 1109 if (*pszArgs) 1110 1110 sdata.PgmInputs = (PBYTE)pszArgs; 1111 1111 if (useTermQ) 1112 1112 sdata.TermQ = (PBYTE)szTermQName; 1113 1113 sdata.Environment = (PBYTE)pszEnvironment; 1114 1114 sdata.InheritOpt = SSF_INHERTOPT_PARENT; … … 1117 1117 sdata.ObjectBuffLen = sizeof(szObject); 1118 1118 if ((type & RUNTYPE_MASK) == SEPARATEKEEP) 1119 1119 sdata.PgmControl |= SSF_CONTROL_NOAUTOCLOSE; 1120 1120 if (type & MAXIMIZED) 1121 1121 sdata.PgmControl |= SSF_CONTROL_MAXIMIZE; 1122 1122 if (type & MINIMIZED) 1123 1123 sdata.PgmControl |= SSF_CONTROL_MINIMIZE; 1124 1124 if (type & INVISIBLE) 1125 1125 sdata.PgmControl |= SSF_CONTROL_INVISIBLE; 1126 1126 1127 1127 if (pszDirectory && *pszDirectory) { 1128 1129 1128 strcpy(szSavedir, pFM2SaveDirectory); 1129 switch_to(pszDirectory); 1130 1130 } 1131 1131 ret = DosStartSession(&sdata, &ulSessID, &sessPID); … … 1133 1133 1134 1134 if (pszDirectory && *pszDirectory) 1135 1135 switch_to(szSavedir); 1136 1136 1137 1137 if (ret && ret != ERROR_SMG_START_IN_BACKGROUND) { 1138 1139 1140 1141 1138 if (!fNoErrorMsg) 1139 Dos_Error(MB_CANCEL,ret,hwnd,pszSrcFile,__LINE__, 1140 GetPString(IDS_DOSSTARTSESSIONFAILEDTEXT),pszPgm,pszArgs, 1141 pszCallingFile, uiLineNumber); // 26 May 08 SHL 1142 1142 } 1143 1143 else if (type & WAIT) { 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1144 if (!(type & (BACKGROUND | MINIMIZED | INVISIBLE))) 1145 ShowSession(hwnd, sessPID); 1146 1147 if (!useTermQ) { 1148 STATUSDATA sd; 1149 1150 memset(&sd, 0, sizeof(sd)); 1151 sd.Length = (USHORT) sizeof(sd); 1152 sd.SelectInd = SET_SESSION_UNCHANGED; 1153 sd.BondInd = SET_SESSION_UNCHANGED; 1154 for (ctr = 0;; ctr++) 1155 { 1156 DosSleep(100);//05 Aug 07 GKY 200 1157 if (DosSetSession(ulSessID, &sd)) // Check if session gone (i.e. finished) 1158 break; 1159 if (ctr > 10) { 1160 ShowSession(hwnd, sessPID); // Show every 2 seconds 1161 ctr = 0; 1162 } 1163 } 1164 } 1165 else { 1166 for (ctr = 0;; ctr++) 1167 { 1168 if (ctr < 20) { 1169 rc = DosReadQueue(hTermQ, &rq, &ulLength, (PPVOID)&pTermInfo, 0, 1170 DCWW_NOWAIT, &bPriority, hTermQSem); 1171 if (rc == ERROR_QUE_EMPTY) { 1172 DosSleep(50);//05 Aug 07 GKY 100 1173 continue; 1174 } 1175 } 1176 else { 1177 if (ctr == 20) { 1178 ShowSession(hwnd, sessPID); // Show long running session 1179 } 1180 rc = DosReadQueue(hTermQ, &rq, &ulLength, (PPVOID)&pTermInfo, 0, 1181 DCWW_WAIT, &bPriority, 0); 1182 } 1183 1184 if (rc) { 1185 // Oh heck 1186 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosReadQueue"); 1187 DosSleep(100);//05 Aug 07 GKY 500 1188 continue; 1189 } 1190 1191 // printf("%s %d DosReadQueue thread 0x%x sess %u sessRC %u rq.pid 0x%x rq.data 0x%x\n", 1192 // __FILE__, __LINE__,ptib->tib_ordinal,pTermInfo->usSessID,pTermInfo->usRC,rq.pid, rq.ulData); fflush(stdout); 1193 1194 if (pTermInfo->usSessID == ulSessID) 1195 break; // Our session is done 1196 1197 // Requeue session for other thread 1198 { 1199 static ULONG ulLastSessID; 1200 // printf("%s %d requeue thread 0x%x our sess %u term sess %u term rc %u\n", 1201 // __FILE__, __LINE__,ptib->tib_ordinal,ulSessID,pTermInfo->usSessID,pTermInfo->usRC); fflush(stdout); 1202 // fixme to be gone when no longer needed for debug? 1203 if (ulLastSessID) { 1204 DosSleep(100);//05 Aug 07 GKY 500 1205 ulLastSessID = pTermInfo->usSessID; 1206 } 1207 // requeue term report for other thread and do not free yet 1208 rc = DosWriteQueue(hTermQ, rq.ulData, ulLength,(PVOID)pTermInfo, bPriority); 1209 if (rc) 1210 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosWriteQueue"); 1211 DosSleep(50); //05 Aug 07 GKY 100 // Let other thread see queue entry 1212 } 1213 } // for 1214 1215 ret = pTermInfo->usRC == 0; // Set 1 if rc 0 else 0 1216 // printf("%s %d thread 0x%x term for sess %u\n", 1217 // __FILE__, __LINE__,ptib->tib_ordinal,ulSessID);fflush(stdout); 1218 DosFreeMem(pTermInfo); 1219 } 1220 1220 } // if wait 1221 1221 else if (!(type & (BACKGROUND | MINIMIZED | INVISIBLE))) 1222 1222 ShowSession(hwnd, sessPID); 1223 1223 } 1224 1224 } … … 1237 1237 #if 0 // JBS 11 Sep 08 1238 1238 HAPP Exec(HWND hwndNotify, BOOL child, char *startdir, char *env, 1239 1239 PROGTYPE *progt, ULONG fl, char *formatstring,...) 1240 1240 { 1241 1241 PROGDETAILS pgd; … … 1259 1259 parameters = xmalloc(MaxComLineStrg, pszSrcFile, __LINE__); 1260 1260 if (parameters) { 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1261 p = executable; 1262 wasquote = FALSE; 1263 while (*p && (wasquote || (*p != ' ' && *p != '\t'))) { 1264 if (*p == '\"') { 1265 if (!wasquote) { 1266 wasquote = TRUE; 1267 memmove(p, p + 1, strlen(p)); 1268 while (*p == ' ' || *p == '\t') 1269 p++; 1270 } 1271 else { 1272 memmove(p, p + 1, strlen(p)); 1273 break; 1274 } 1275 } 1276 else 1277 p++; 1278 } 1279 if (*p) { 1280 *p = 0; 1281 p++; 1282 } 1283 else 1284 p = NullStr; 1285 if (*p) 1286 strcpy(parameters, p); 1287 1288 if (p && (!stricmp(p, ".BAT") || !stricmp(p, ".CMD"))) { 1289 char *temp; 1290 1291 temp = xmalloc(CCHMAXPATH * 2,pszSrcFile,__LINE__); 1292 if (temp) { 1293 if (!stricmp(p, ".BAT")) { 1294 strcpy(temp, executable); 1295 strcpy(executable, parameters); 1296 strcpy(parameters, "/C "); 1297 strcat(parameters, temp); 1298 strcat(parameters, " "); 1299 strcat(parameters, executable); 1300 strcpy(executable, GetCmdSpec(TRUE)); 1301 } 1302 else if (!stricmp(p, ".CMD")) { 1303 strcpy(temp, executable); 1304 strcpy(executable, parameters); 1305 strcpy(parameters, "/C "); 1306 strcat(parameters, temp); 1307 strcat(parameters, " "); 1308 strcat(parameters, executable); 1309 strcpy(executable, GetCmdSpec(FALSE)); 1310 } 1311 free(temp); 1312 } 1313 } 1314 1315 memset(&pgd, 0, sizeof(pgd)); 1316 pgd.Length = sizeof(pgd); 1317 pgd.progt = *progt; 1318 pgd.swpInitial.fl = fl; 1319 pgd.pszEnvironment = env; 1320 pgd.pszStartupDir = startdir; 1321 pgd.pszParameters = *parameters ? parameters : NULL; 1322 pgd.pszExecutable = executable; 1323 pgd.swpInitial.hwndInsertBehind = HWND_TOP; 1324 happ = WinStartApp(hwndNotify, &pgd, NULL, NULL, ulOptions); 1325 free(parameters); 1326 1326 } 1327 1327 } -
trunk/dll/systemf.h
r1271 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2008 Steven H. Levine9 Copyright (c) 2008, 2009 Steven H. Levine 10 10 11 11 Change log … … 48 48 EXECARGS; 49 49 50 INT ExecOnList(HWND hwnd, CHAR * command, INT flags, CHAR *tpath,51 CHAR ** list, CHAR *prompt, PCSZ pszCallingFile, UINT uiLineNumber);50 INT ExecOnList(HWND hwnd, PSZ command, INT flags, PSZ tpath, 51 PSZ *list, PCSZ prompt, PCSZ pszCallingFile, UINT uiLineNumber); 52 52 BOOL ShowSession(HWND hwnd, PID pid); 53 53 INT runemf2(INT type, HWND hwnd, PCSZ pszCallingFile, UINT uiLineNumber, 54 CHAR * directory, CHAR *environment,55 CHAR *formatstring, ...);54 PSZ directory, PSZ environment, 55 PSZ formatstring, ...); 56 56 57 57 -
trunk/dll/treecnr.c
r1391 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 16 Oct 02 SHL Handle large partitions … … 56 56 27 Dec 08 GKY Add refresh removable media to tree container menus 57 57 28 Dec 08 GKY Rework partition submenu to gray out unavailable items (check for existence of files) 58 58 and have no default choice. 59 59 01 Jan 09 GKY Add Seek and Scan to drives & directory context menus pass drive/dir as search root 60 60 11 Jan 09 GKY Replace font names in the string file with global set at compile in init.c … … 248 248 MPFROMLONG(CMA_FIRST), MPFROMSHORT(CRA_CURSORED)); 249 249 if (pci && (INT) pci != -1 && !stricmp(pci->pszFileName, dirname)) { 250 // DbgMsg(pszSrcFile, __LINE__, "already at %s collapse %u maketop %u", dirname, collapsefirst, maketop); // 14 Aug 07 SHL fixme251 250 quickbail = TRUE; // Bypass repositioning 252 251 goto MakeTop; 253 252 } 254 253 WinEnableWindowUpdate(hwndCnr, FALSE); 255 // DbgMsg(pszSrcFile, __LINE__, "finding %s collapse %u maketop %u", dirname, collapsefirst, maketop); // 14 Aug 07 SHL fixme256 254 pci = FindCnrRecord(hwndCnr, dirname, NULL, TRUE, FALSE, TRUE); 257 255 if (!pci || (INT) pci == -1) { … … 285 283 pci = FindCnrRecord(hwndCnr, dirname, NULL, TRUE, FALSE, TRUE); 286 284 } 287 // DbgMsg(pszSrcFile, __LINE__, "found"); // 14 Aug 07 SHL fixme288 285 if (pci && (INT) pci != -1) { 289 286 if (~pci->rc.flRecordAttr & CRA_CURSORED) { 290 287 if (collapsefirst) { 291 // DbgMsg(pszSrcFile, __LINE__, "collapsing"); // 14 Aug 07 SHL fixme292 288 pciP = WinSendMsg(hwndCnr, 293 289 CM_QUERYRECORD, 294 290 MPVOID, MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER)); 295 291 while (pciP && (INT) pciP != -1) { 296 #if 1 // //05 Jan 08 SHL fixme to be sure this is correct code292 #if 1 // 05 Jan 08 SHL fixme to be sure this is correct code 297 293 if (pciP->rc.flRecordAttr & CRA_EXPANDED) { 298 294 // collapse top level of all branches … … 317 313 } 318 314 /* expand all parent branches */ 319 // DbgMsg(pszSrcFile, __LINE__, "expanding parents"); // 14 Aug 07 SHL fixme320 315 pciToSelect = pci; 321 316 for (;;) { … … 336 331 /* make record visible */ 337 332 MakeTop: 338 // DbgMsg(pszSrcFile, __LINE__, "moving into view"); // 14 Aug 07 SHL fixme339 333 pciToSelect = pci; 340 334 if (pciToSelect && (INT) pciToSelect != -1) { … … 343 337 } 344 338 if (fSwitchTreeExpand && ~pciToSelect->rc.flRecordAttr & CRA_EXPANDED) { 345 // DbgMsg(pszSrcFile, __LINE__, "expanding current"); // 14 Aug 07 SHL fixme346 339 WinSendMsg(hwndCnr, CM_EXPANDTREE, MPFROMP(pciToSelect), MPVOID); 347 // DbgMsg(pszSrcFile, __LINE__, "expanded"); // 14 Aug 07 SHL fixme348 340 } 349 341 if (!quickbail) { … … 355 347 } 356 348 } 357 // DbgMsg(pszSrcFile, __LINE__, "done"); // 14 Aug 07 SHL fixme358 349 WinEnableWindowUpdate(hwndCnr, TRUE); 359 350 // DosSleep(1); // Let GUI update … … 540 531 MPARAM mp2) 541 532 { 542 543 533 switch (msg) { 544 534 case UM_CONTAINERHWND: … … 623 613 624 614 switch (msg) { 625 case WM_CREATE:626 DbgMsg(pszSrcFile, __LINE__, "WM_CREATE mp1 %p mp2 %p", mp1, mp2); // 18 Jul 08 SHL fixme627 break;628 629 615 case UM_SHOWME: 630 // DbgMsg(pszSrcFile, __LINE__, "UM_SHOWME mp1 %p mp2 %p", mp1, mp2); // 14 Aug 07 SHL fixme631 616 if (mp1) { 632 617 # ifdef FORTIFY … … 634 619 # endif 635 620 dcd = INSTDATA(hwnd); 636 // DbgMsg(pszSrcFile, __LINE__, "UM_SHOWME dcd %p", dcd); // 14 Aug 07 SHL fixme637 621 if (dcd) { 638 622 BOOL tempsusp, tempfollow, temptop; … … 706 690 while (list[numentries]) 707 691 numentries++; 708 if (numentries) { 709 //DbgMsg(pszSrcFile, __LINE__, "UM_UPDATERECORD %s", *list); 710 UpdateCnrList(dcd->hwndCnr, list, numentries, TRUE, dcd); 711 } 692 if (numentries) 693 UpdateCnrList(dcd->hwndCnr, list, numentries, TRUE, dcd); 712 694 } 713 695 return 0; … … 981 963 982 964 switch (msg) { 983 case WM_CREATE:984 DbgMsg(pszSrcFile, __LINE__, "WM_CREATE mp1 %p mp2 %p", mp1, mp2); // 18 Jul 08 SHL fixme985 break;986 987 965 case DM_PRINTOBJECT: 988 966 return MRFROMLONG(DRR_TARGET); … … 1190 1168 case UM_UPDATERECORD: 1191 1169 if (dcd && mp1) { 1192 1193 1170 CHAR *filename; 1194 1195 1171 filename = mp1; 1196 1172 if (filename) { 1197 //DbgMsg(pszSrcFile, __LINE__, "UM_UPDATERECORD %s", filename); 1198 UpdateCnrRecord(hwnd, filename, TRUE, dcd); 1173 UpdateCnrRecord(hwnd, filename, TRUE, dcd); 1199 1174 } 1200 1175 } … … 1330 1305 cnri.flWindowAttr &= (~(CA_MIXEDTARGETEMPH | CA_ORDEREDTARGETEMPH)); 1331 1306 cnri.flWindowAttr |= CV_FLOW; 1332 1307 dcd->flWindowAttr = cnri.flWindowAttr; 1333 1308 WinSendMsg(hwnd, 1334 1309 CM_SETCNRINFO, 1335 1310 MPFROMP(&cnri), 1336 1311 MPFROMLONG(CMA_FLWINDOWATTR | CMA_LINESPACING | 1337 1312 CMA_CXTREEINDENT | CMA_PSORTRECORD)); 1338 1313 if (xbeginthread(MakeObjWin, 1339 1314 327680, … … 1431 1406 DrgFreeDraginfo(pDInfo); 1432 1407 } 1433 1408 return 0; 1434 1409 1435 1410 case CN_DROPHELP: … … 1449 1424 else { 1450 1425 numitems = DrgQueryDragitemCount(pDInfo); 1451 1452 1453 1426 usOperation = pDInfo->usOperation; 1427 if (usOperation == DO_DEFAULT) 1428 usOperation = fCopyDefault ? DO_COPY : DO_MOVE; 1454 1429 FreeDragInfoData(hwnd, pDInfo); 1455 1430 saymsg(MB_ENTER | MB_ICONASTERISK, … … 1865 1840 } 1866 1841 } 1867 1842 else if (SHORT2FROMMP(mp1) == CN_EXPANDTREE) { 1868 1843 if (Flesh(hwnd, pci) && !dcd->suspendview && fTopDir) 1869 1844 PostMsg(hwnd, UM_TOPDIR, MPFROMP(pci), MPVOID); … … 1996 1971 DRIVE_NOLOADICONS | DRIVE_NOLOADSUBJS | 1997 1972 DRIVE_NOLOADLONGS | DRIVE_INCLUDEFILES | 1998 1999 1973 DRIVE_SLOW | DRIVE_NOSTATS | 1974 DRIVE_WRITEVERIFYOFF); 2000 1975 2001 1976 if (removable == 1) … … 2026 2001 strcmp(FileSystem, FAT32) && 2027 2002 strcmp(FileSystem, NDFS32) && 2028 2003 strcmp(FileSystem, NTFS) && 2029 2004 strcmp(FileSystem, HPFS386)) { 2030 2005 driveflags[x] |= DRIVE_NOLONGNAMES; 2031 2006 } 2032 2007 SelectDriveIcon(pciP); 2033 2008 WinSendMsg(hwnd, … … 2234 2209 writeable = rdy 2235 2210 && !(driveflags[chDrvU - 'A'] & DRIVE_NOTWRITEABLE); 2236 2211 local = rdy && (!(driveflags[chDrvU - 'A'] & (DRIVE_REMOTE | DRIVE_VIRTUAL))); 2237 2212 underenv = (pci->flags & RECFLAGS_UNDERENV) != 0; 2238 2213 … … 2260 2235 WinEnableMenuItem((HWND) mp2, IDM_FORMAT, writeable && local); 2261 2236 WinEnableMenuItem((HWND) mp2, IDM_OPTIMIZE, writeable && local); 2262 2263 2264 2265 2266 2237 WinEnableMenuItem((HWND) mp2, IDM_PARTITIONSMENU, local); 2238 WinEnableMenuItem((HWND) mp2, IDM_PARTITION, fMiniLVM); 2239 WinEnableMenuItem((HWND) mp2, IDM_PARTITIONDF, fDFSee); 2240 WinEnableMenuItem((HWND) mp2, IDM_PARTITIONLVMG, fLVMGui); 2241 WinEnableMenuItem((HWND) mp2, IDM_PARTITIONFD, fFDisk); 2267 2242 2268 2243 WinEnableMenuItem((HWND) mp2, IDM_DETACH, !local); … … 2291 2266 CopyPresParams((HWND) mp2, hwndMainMenu); 2292 2267 WinEnableMenuItem((HWND) mp2, IDM_RESELECT, FALSE); 2293 2294 2295 2296 2268 WinEnableMenuItem((HWND) mp2, IDM_PARTITION, fMiniLVM); 2269 WinEnableMenuItem((HWND) mp2, IDM_PARTITIONDF, fDFSee); 2270 WinEnableMenuItem((HWND) mp2, IDM_PARTITIONLVMG, fLVMGui); 2271 WinEnableMenuItem((HWND) mp2, IDM_PARTITIONFD, fFDisk); 2297 2272 break; 2298 2273 … … 2452 2427 pgd.progt.progc = PROG_WINDOWABLEVIO; 2453 2428 pgd.progt.fbVisible = SHE_VISIBLE; 2454 pgd.pszTitle = GetPString(IDS_DETACHREQUESTTEXT);2429 pgd.pszTitle = (PSZ)GetPString(IDS_DETACHREQUESTTEXT); 2455 2430 pgd.pszExecutable = p; 2456 2431 pgd.pszParameters = params; … … 2642 2617 2643 2618 case IDM_REFRESHREMOVABLES: 2644 2645 2646 2647 2619 runemf2(SEPARATE | WINDOWED | BACKGROUND | MINIMIZED | WAIT, 2620 HWND_DESKTOP, pszSrcFile, __LINE__, NULL, NULL, 2621 "%s", "LVM.EXE /RediscoverPRM"); 2622 PostMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_RESCAN, 0), MPVOID); 2648 2623 break; 2649 2624 … … 2750 2725 else 2751 2726 StartCollector(dcd->hwndParent, 4); 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2727 if (SHORT1FROMMP(mp1) == IDM_GREP) { 2728 PCNRITEM pci = NULL; 2729 2730 pci = WinSendMsg(hwnd, 2731 CM_QUERYRECORDEMPHASIS, 2732 MPFROMLONG(CMA_FIRST), MPFROMSHORT(CRA_CURSORED)); 2733 if (pci && (INT) pci != -1) 2734 PostMsg(Collector, WM_COMMAND, 2735 MPFROM2SHORT(IDM_GREP, 0), MPFROMP(pci->pszFileName)); 2736 else 2737 PostMsg(Collector, WM_COMMAND, 2738 MPFROM2SHORT(IDM_GREP, 0), MPVOID); 2739 } 2740 else 2766 2741 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_COLLECTOR, 0), MPVOID); 2767 2742 break; … … 2818 2793 driveflags[toupper(*pci->pszFileName) - 'A'] &= 2819 2794 (DRIVE_IGNORE | DRIVE_NOPRESCAN | DRIVE_NOLOADICONS | 2820 2821 2795 DRIVE_NOLOADSUBJS | DRIVE_NOLOADLONGS | DRIVE_NOSTATS | 2796 DRIVE_WRITEVERIFYOFF); 2822 2797 DriveFlagsOne(toupper(*pci->pszFileName) - 'A'); 2823 2798 driveflag = driveflags[toupper(*pci->pszFileName) - 'A']; … … 3118 3093 /* kill object window */ 3119 3094 if (WinIsWindow((HAB) 0, dcd->hwndObject)) { 3120 3121 3095 if (!PostMsg(dcd->hwndObject, WM_CLOSE, MPVOID, MPVOID)) 3096 WinSendMsg(dcd->hwndObject, WM_CLOSE, MPVOID, MPVOID); 3122 3097 } 3123 3098 } … … 3302 3277 } 3303 3278 dcd->oldproc = WinSubclassWindow(dcd->hwndCnr, TreeCnrWndProc); 3304 // DbgMsg(pszSrcFile, __LINE__, "oldproc subclass %X", dcd->oldproc); // 05 Jul 07 SHL3305 3279 // fixme to document 01 test? 3306 3280 if (dcd->oldproc == 0) -
trunk/dll/valid.c
r1387 r1394 29 29 25 Dec 08 GKY Add code to allow write verify to be turned off on a per drive basis 30 30 03 Jan 09 GKY Check for system that is protectonly to gray out Dos/Win command lines and prevent 31 31 Dos/Win programs from being inserted into the execute dialog with message why. 32 32 03 Jan 09 GKY Modify IsExecutable to prevent some text files from being treated as executable 33 33 and prevent dlls from being loaded into execute dialog. 34 34 05 Jan 09 GKY Fix IsBinary to recognize values above \xc4 (maybe lower) as positive. 35 35 When these high codes were it text files they showed as hex in new view. 36 36 37 37 ***********************************************************************/ … … 121 121 122 122 int TestFDates(char *file1, char *file2, FDATE *datevar1, FTIME *timevar1, 123 123 FDATE *datevar2, FTIME *timevar2) 124 124 { 125 125 int comp = 0; … … 140 140 if (&datevar1 && &datevar2 && &timevar1 && &timevar2) { 141 141 comp = (datevar2->year > 142 142 datevar1->year) ? 1 : 143 143 (datevar2->year < 144 144 datevar1->year) ? -1 : … … 173 173 174 174 int TestCDates(CDATE *datevar1, CTIME *timevar1, 175 175 CDATE *datevar2, CTIME *timevar2) 176 176 { 177 177 int comp = 0; … … 179 179 if (&datevar1 && &datevar2 && &timevar1 && &timevar2) { 180 180 comp = (datevar2->year > 181 181 datevar1->year) ? 1 : 182 182 (datevar2->year < 183 183 datevar1->year) ? -1 : … … 212 212 } 213 213 214 #if 0 214 #if 0 // JBS 11 Sep 08 215 215 BOOL IsDesktop(HAB hab, HWND hwnd) 216 216 { … … 329 329 *pulType |= DRIVE_NOTWRITEABLE; 330 330 if (pulType && !strcmp(pfsn, NDFS32)){ 331 331 *pulType |= DRIVE_VIRTUAL; 332 332 } 333 333 if (pulType && !strcmp(pfsn, RAMFS)){ 334 334 *pulType |= DRIVE_RAMDISK; 335 335 } 336 336 if (((PFSQBUFFER2) pvBuffer)->iType == FSAT_REMOTEDRV && … … 359 359 !strcmp(pfsn, JFS) || 360 360 !strcmp(pfsn, FAT32) || 361 362 363 364 361 !strcmp(pfsn, RAMFS) || 362 !strcmp(pfsn, NDFS32) || 363 !strcmp(pfsn, NTFS) || 364 !strcmp(pfsn, HPFS386))) { 365 365 *pulType &= ~DRIVE_NOLONGNAMES; 366 366 } … … 401 401 NonRemovable = 1; // Preset as non removable 402 402 DosError(FERR_DISABLEHARDERR); 403 rc = DosDevIOCtl(hDev, IOCTL_DISK, DSK_BLOCKREMOVABLE, &parmPkt.Cmd, /* 404 sizeof(parmPkt.Cmd), /* 405 &clParmBytes, /* 406 &NonRemovable, /* 407 sizeof(NonRemovable), /* 408 &clDataBytes); /* 403 rc = DosDevIOCtl(hDev, IOCTL_DISK, DSK_BLOCKREMOVABLE, &parmPkt.Cmd, /* Address of the command-specific argument list. */ 404 sizeof(parmPkt.Cmd), /* Length, in bytes, of pParams. */ 405 &clParmBytes, /* Pointer to the length of parameters. */ 406 &NonRemovable, /* Address of the data area. */ 407 sizeof(NonRemovable), /* Length, in bytes, of pData. */ 408 &clDataBytes); /* Pointer to the length of data. */ 409 409 410 410 if (!rc && NonRemovable) { … … 414 414 memset(&dataPkt, 0xff, sizeof(dataPkt)); 415 415 DosError(FERR_DISABLEHARDERR); 416 rc = DosDevIOCtl(hDev, IOCTL_DISK, DSK_GETDEVICEPARAMS, &parmPkt.Cmd, /* 417 sizeof(parmPkt.Cmd), /* 418 &clParmBytes, /* 419 &dataPkt, /* 420 sizeof(dataPkt), /* 421 &clDataBytes); /* 416 rc = DosDevIOCtl(hDev, IOCTL_DISK, DSK_GETDEVICEPARAMS, &parmPkt.Cmd, /* Address of the command-specific argument list. */ 417 sizeof(parmPkt.Cmd), /* Length, in bytes, of pParams. */ 418 &clParmBytes, /* Pointer to the length of parameters. */ 419 &dataPkt, /* Address of the data area. */ 420 sizeof(dataPkt), /* Length, in bytes, of pData. */ 421 &clDataBytes); /* Pointer to the length of data. */ 422 422 423 423 if (!rc && (dataPkt.bpb.fsDeviceAttr & BPB_REMOVABLE_MEDIA)) … … 438 438 BOOL IsFileSame(CHAR * filename1, CHAR * filename2) 439 439 { 440 /* returns: 440 /* returns: -1 (error), 0 (is a directory), or 1 (is a file) */ 441 441 442 442 FILESTATUS3L fsa1, fsa2; … … 463 463 #endif 464 464 465 INT IsFile( CHAR *filename)466 { 467 /* returns: 465 INT IsFile(PCSZ filename) 466 { 467 /* returns: -1 (error), 0 (is a directory), or 1 (is a file) */ 468 468 469 469 FILESTATUS3 fsa; … … 487 487 } 488 488 489 BOOL IsRoot( CHAR *filename)489 BOOL IsRoot(PCSZ filename) 490 490 { 491 491 return (filename && isalpha(*filename) && filename[1] == ':' && … … 608 608 } 609 609 if (apptype & (FAPPTYP_DLL | 610 611 612 610 FAPPTYP_PHYSDRV | 611 FAPPTYP_VIRTDRV | 612 FAPPTYP_PROTDLL)) 613 613 return FALSE; 614 614 if (apptype == 0x000b && (!p || 615 616 617 618 619 615 (stricmp(p, ".EXE") && 616 stricmp(p, ".COM") && 617 stricmp(p, ".CMD") && 618 stricmp(p, ".BAT") && 619 stricmp(p, ".BTM")))) 620 620 return FALSE; 621 621 if (!fProtectOnly) { 622 622 if ((!ret && (!apptype || 623 624 625 626 627 628 629 630 631 632 633 634 623 (apptype & 624 (FAPPTYP_NOTWINDOWCOMPAT | 625 FAPPTYP_WINDOWCOMPAT | 626 FAPPTYP_WINDOWAPI | 627 FAPPTYP_BOUND | 628 FAPPTYP_DOS | 629 FAPPTYP_WINDOWSREAL | 630 FAPPTYP_WINDOWSPROT | 631 FAPPTYP_32BIT | 632 FAPPTYP_WINDOWSPROT31)))) || 633 (p && (!stricmp(p, ".CMD") || !stricmp(p, ".BAT") || !stricmp(p, ".BTM")))) 634 return TRUE; 635 635 } 636 636 else if ((!ret && (!apptype || 637 638 639 640 641 642 643 637 (apptype & 638 (FAPPTYP_NOTWINDOWCOMPAT | 639 FAPPTYP_WINDOWCOMPAT | 640 FAPPTYP_WINDOWAPI | 641 FAPPTYP_BOUND | 642 FAPPTYP_32BIT)))) || 643 (p && (!stricmp(p, ".CMD") || !stricmp(p, ".BTM")))) 644 644 return TRUE; 645 645 if (fProtectOnly && (apptype & 646 647 648 649 650 646 (FAPPTYP_DOS | 647 FAPPTYP_WINDOWSREAL | 648 FAPPTYP_WINDOWSPROT | 649 FAPPTYP_WINDOWSPROT31)) && 650 (p && (!stricmp(p, ".EXE") || !stricmp(p, ".COM")))) 651 651 saymsg(MB_OK, 652 653 654 655 652 HWND_DESKTOP, 653 NullStr, 654 GetPString(IDS_NOTPROTECTONLYEXE), 655 filename); 656 656 } 657 657 return FALSE; … … 733 733 driveflags[x] &= (DRIVE_IGNORE | DRIVE_NOPRESCAN | DRIVE_NOLOADICONS | 734 734 DRIVE_NOLOADSUBJS | DRIVE_NOLOADLONGS | 735 736 735 DRIVE_INCLUDEFILES | DRIVE_SLOW | DRIVE_NOSTATS | 736 DRIVE_WRITEVERIFYOFF); 737 737 if (removable != -1) { 738 738 struct … … 800 800 driveflags[x] &= (DRIVE_IGNORE | DRIVE_NOPRESCAN | DRIVE_NOLOADICONS | 801 801 DRIVE_NOLOADSUBJS | DRIVE_NOLOADLONGS | 802 803 802 DRIVE_INCLUDEFILES | DRIVE_SLOW | DRIVE_NOSTATS | 803 DRIVE_WRITEVERIFYOFF); 804 804 memset(driveserial, -1, sizeof(driveserial)); 805 805 DosError(FERR_DISABLEHARDERR); … … 808 808 if (ulDriveMap & (1 << x) && !(driveflags[x] & DRIVE_IGNORE)) { 809 809 { 810 811 812 813 814 815 816 810 ULONG flags = 0, size = sizeof(ULONG); 811 CHAR FlagKey[80]; 812 813 sprintf(FlagKey, "%c.DriveFlags", (CHAR) (x + 'A')); 814 if (PrfQueryProfileData(fmprof, appname, FlagKey, &flags, &size) && 815 size == sizeof(ULONG)) 816 driveflags[x] |= flags; 817 817 } 818 818 … … 849 849 PrfQueryProfileData(fmprof, appname, Key, &fVerifyOffChecked[x], &size); 850 850 if (!fVerifyOffChecked[x]) { 851 852 853 854 855 856 851 if (driveflags[x] & DRIVE_REMOVABLE) 852 driveflags[x] |= DRIVE_WRITEVERIFYOFF; 853 if (!(driveflags[x] & DRIVE_INVALID)) { 854 fVerifyOffChecked[x] = TRUE; 855 PrfWriteProfileData(fmprof, appname, Key, &fVerifyOffChecked[x], sizeof(BOOL)); 856 } 857 857 } 858 858 } … … 972 972 } 973 973 974 BOOL needs_quoting( register CHAR *f)974 BOOL needs_quoting(PCSZ f) 975 975 { 976 976 register CHAR *p = " &|<>"; … … 992 992 if ((UINT) str[x] < ' ' && str[x] != '\r' && str[x] != '\n' && str[x] != '\t' 993 993 && str[x] != '\x1b' && str[x] != '\x1a' && str[x] != '\x07' 994 995 994 && str[x] != '\x0c') { 995 return TRUE; 996 996 } 997 997 x++; -
trunk/dll/valid.h
r1358 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 05 Sep 08 JBS Ticket 187: Refactor FM3DLL.H … … 25 25 BOOL IsBinary(CHAR * str, ULONG len); 26 26 BOOL IsExecutable(CHAR * filename); 27 INT IsFile( CHAR *filename);27 INT IsFile(PCSZ filename); 28 28 BOOL IsFullName(CHAR * filename); 29 29 BOOL IsNewer(char *file1, char *file2); 30 BOOL IsRoot( CHAR *filename);30 BOOL IsRoot(PCSZ filename); 31 31 BOOL IsValidDir(CHAR * test); 32 32 BOOL IsValidDrive(CHAR drive); … … 40 40 FDATE *datevar2, FTIME *timevar2); 41 41 CHAR *assign_ignores(CHAR * s); 42 BOOL needs_quoting( CHAR *f);42 BOOL needs_quoting(PCSZ f); 43 43 44 44 // Data declarations -
trunk/dll/viewer.c
r1358 r1394 7 7 8 8 Copyright (c) 1993-97 M. Kimes 9 Copyright (c) 2005, 200 6Steven H. Levine9 Copyright (c) 2005, 2009 Steven H. Levine 10 10 11 11 23 May 05 SHL Use QWL_USER … … 97 97 if (fs3.attrFile & FILE_READONLY) { 98 98 ulResult = saymsg(MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP, 99 100 101 99 GetPString(IDS_WARNINGTEXT), 100 GetPString(IDS_EDITREADONLYFILETEXT), 101 filename); 102 102 switch (ulResult){ 103 103 case MBID_YES:{ … … 108 108 case MBID_NO: 109 109 if (fUseNewViewer) 110 110 return StartViewer(hwndClient, (USHORT) flags, filename, hwndRestore); 111 111 else{ 112 113 112 OpenInViewer = TRUE; 113 break; 114 114 } 115 115 116 116 case MBID_CANCEL: 117 117 return (HWND) 0; 118 118 } 119 119 } … … 706 706 switch (SHORT1FROMMP(mp1)) { 707 707 /* 708 709 710 708 case MLE_PREVIEW: 709 preview_text(hwndMLE); 710 break; 711 711 */ 712 712 case MLE_VIEWFTP: … … 786 786 if (temp == MBID_CANCEL) 787 787 break; 788 788 if (temp == MBID_YES){ 789 789 WinSendMsg(hwnd, 790 791 792 793 794 795 796 797 790 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 791 if (vw->fileattrreadonly) { 792 temp = saymsg(MB_OKCANCEL | MB_ICONEXCLAMATION, 793 hwnd, NullStr, "File is readonly and has not been saved"); 794 if (temp == MBID_CANCEL) 795 return 0; 796 } 797 } 798 798 } 799 799 MLEclearall(hwndMLE); … … 835 835 vw->saveas = TRUE; 836 836 WinSendMsg(hwnd, 837 837 WM_COMMAND, MPFROM2SHORT(MLE_SETEXPORTFILE, 0), MPVOID); 838 838 break; 839 839 … … 842 842 if (vw && !MLEgetreadonly(hwndMLE)) { 843 843 844 845 844 CHAR filename[1027]; 845 ULONG ulResult; 846 846 847 847 strcpy(filename, vw->exportfilename); 848 848 if (export_filename(hwnd, filename, !vw->fileattrreadonly)) { 849 849 if (stricmp(filename, vw->exportfilename)) { 850 851 852 850 vw->ch = TRUE; 851 vw->fileattrreadonly = FALSE; 852 MLEsetchanged(hwndMLE, TRUE); 853 853 strcpy(vw->exportfilename, filename); 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 854 WinSendMsg(hwnd, UM_SETUP2, MPVOID, MPVOID); 855 if (vw->saveas) { 856 vw->saveas = FALSE; 857 WinSendMsg(hwnd, 858 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 859 } 860 } 861 else if (vw->fileattrreadonly){ 862 ulResult = saymsg(MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP, 863 GetPString(IDS_WARNINGTEXT), 864 GetPString(IDS_EDITREADONLYFILETEXT2), 865 filename); 866 if (ulResult == MBID_OK){ 867 WinSendMsg(hwnd, 868 WM_COMMAND, MPFROM2SHORT(MLE_SETEXPORTFILE, 0), MPVOID); 869 break; 870 } 871 else 872 vw->saveas = FALSE; 873 } 874 else if (vw->saveas) { 875 vw->saveas = FALSE; 876 WinSendMsg(hwnd, 877 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 878 } 879 879 } 880 880 } … … 883 883 case MLE_EXPORTFILE: 884 884 if (vw->fileattrreadonly){ 885 886 887 885 WinSendMsg(hwnd, 886 WM_COMMAND, MPFROM2SHORT(MLE_SETEXPORTFILE, 0), MPVOID); 887 break; 888 888 } 889 889 if (!MLEgetreadonly(hwndMLE)) { … … 912 912 } 913 913 } 914 914 //printf("%s %s %d\n ",vw->exportfilename, __FILE__, __LINE__); fflush(stdout); 915 915 if (!MLEexportfile(hwndMLE, 916 916 vw->exportfilename, … … 1085 1085 sip.ret = s; 1086 1086 *s = 0; 1087 sip.prompt = ss;1088 1087 sip.inputlen = 34; 1089 1088 sip.title = GetPString(IDS_NVLINEJUMPTITLETEXT); … … 1092 1091 DosBeep(50, 100); 1093 1092 else { 1094 sprintf(s ip.prompt,1093 sprintf(ss, 1095 1094 GetPString(IDS_NVJUMPTEXT), 1096 1095 GetPString(IDS_LINETEXT), 1, numlines); 1096 sip.prompt = ss; 1097 1097 WinDlgBox(HWND_DESKTOP, 1098 1098 hwnd, InputDlgProc, FM3ModHandle, STR_FRAME, &sip); … … 1237 1237 if (temp == MBID_CANCEL) 1238 1238 return 0; 1239 1239 if (temp == MBID_YES){ 1240 1240 WinSendMsg(hwnd, 1241 1242 1243 1244 1245 1246 1247 1248 1241 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 1242 if (vw->fileattrreadonly) { 1243 temp = saymsg(MB_OKCANCEL | MB_ICONEXCLAMATION, 1244 hwnd, NullStr, "File is readonly and has not been saved"); 1245 if (temp == MBID_CANCEL) 1246 return 0; 1247 } 1248 } 1249 1249 } 1250 1250 } -
trunk/dll/walkem.c
r1321 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2005, 200 8Steven H. Levine9 Copyright (c) 2005, 2009 Steven H. Levine 10 10 11 11 01 Aug 04 SHL Rework lstrip/rstrip usage … … 140 140 #define LS_DELETE 2 141 141 142 static INT lookup_setup(P SZ name, UINT action)142 static INT lookup_setup(PCSZ name, UINT action) 143 143 { 144 144 LINKDIRS *pld; … … 336 336 */ 337 337 338 INT add_setup(P SZ name)338 INT add_setup(PCSZ name) 339 339 { 340 340 return lookup_setup(name, LS_ADD); … … 428 428 BldFullPathName(s, pFM2SaveDirectory, "USERDIRS.DAT"); 429 429 if (CheckDriveSpaceAvail(s, ullDATFileSpaceNeeded, 1) == 2) 430 430 return; //already gave error msg 431 431 fp = xfopen(s, "w", pszSrcFile, __LINE__); 432 432 if (fp) { … … 777 777 778 778 PrfQueryProfileData(fmprof, FM3Str, "WalkDir.Position", (PVOID) &swp, &size); 779 swp.fl &= ~SWP_SIZE; // 04 Feb 09 SHL ignore saved size 779 780 WinSetWindowPos(hwnd, 780 781 HWND_TOP, … … 1406 1407 1407 1408 PrfQueryProfileData(fmprof, FM3Str, "WalkDir2.Position", (PVOID) &swp, &size); 1409 swp.fl &= ~SWP_SIZE; // 04 Feb 09 SHL ignore saved size 1408 1410 WinSetWindowPos(hwnd, 1409 1411 HWND_TOP, -
trunk/dll/walkem.h
r1321 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2008 Steven H. Levine9 Copyright (c) 2008, 2009 Steven H. Levine 10 10 11 11 17 Jul 08 SHL Baseline … … 52 52 MRESULT EXPENTRY WalkTwoSetDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, 53 53 MPARAM mp2); 54 INT add_setup(P SZ stateName);54 INT add_setup(PCSZ stateName); 55 55 BOOL add_udir(BOOL userdirs, PSZ inpath); 56 56 VOID fill_setups_list(VOID); -
trunk/dll/worker.c
r1358 r1394 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 8Steven H. Levine9 Copyright (c) 2001, 2009 Steven H. Levine 10 10 11 11 16 Oct 02 SHL Comments … … 37 37 25 Dec 08 GKY Add code to allow write verify to be turned off on a per drive basis 38 38 25 Dec 08 GKY Add DRIVE_RSCANNED flag to monitor for the first recursive drive scan per session 39 39 to prevent duplicate directory names in tree following a copy before initial scan. 40 40 41 41 ***********************************************************************/ … … 678 678 Retry: 679 679 { 680 CHAR newname[CCHMAXPATH], *moving, *move, *moved; 680 CHAR newname[CCHMAXPATH]; 681 PCSZ moving, move, moved; 681 682 APIRET rc; 682 683 INT type; … … 808 809 (usedtarget) ? GetPString(IDS_TOTARGETTEXT) : 809 810 NullStr); 810 811 812 813 814 815 811 AddNote(message); 812 if (fVerify && (driveflags[toupper(*wk->li->targetpath) - 'A'] & DRIVE_WRITEVERIFYOFF) | 813 (driveflags[toupper(*wk->li->list[x]) - 'A'] & DRIVE_WRITEVERIFYOFF)) { 814 DosSetVerify(FALSE); 815 fResetVerify = TRUE; 816 } 816 817 if (plen) { 817 818 /* make directory/ies, if required */ … … 830 831 if (fRealIdle) 831 832 priority_idle(); 832 833 834 835 836 833 rc = docopyf(type, wk->li->list[x], "%s", newname); 834 if (fResetVerify) { 835 DosSetVerify(fVerify); 836 fResetVerify = FALSE; 837 } 837 838 priority_normal(); 838 839 if (rc) { … … 923 924 &files, &numfiles, &numalloc)) 924 925 Broadcast(hab2, 925 926 wk->hwndCnr, 926 927 UM_UPDATERECORD, 927 928 MPFROMP(wk->li->list[x]), MPVOID); 928 929 if ((driveflags[*wk->li->targetpath - 'A'] & DRIVE_RSCANNED) && 929 930 AddToList(newname, &files, &numfiles, &numalloc)) 930 931 Broadcast(hab2, 931 932 932 wk->hwndCnr, 933 UM_UPDATERECORD, MPFROMP(newname), MPVOID); 933 934 } 934 935 } … … 938 939 case IDM_COMPARE: 939 940 if ((!IsFile(wk->li->targetpath) || 940 941 IsRoot(wk->li->targetpath)) && 941 942 (!IsFile(wk->li->list[x]) || IsRoot(wk->li->list[x]))) { 942 943 if (!*dircompare && WinIsWindow(hab2, wk->hwndCnr)) … … 1031 1032 Abort: 1032 1033 1033 1034 1034 if (files) { 1035 if (driveflags[*wk->li->targetpath - 'A'] & DRIVE_RSCANNED) 1035 1036 Broadcast(hab2, 1036 1037 1038 1037 wk->hwndCnr, 1038 UM_UPDATERECORDLIST, MPFROMP(files), MPVOID); 1039 // DbgMsg(pszSrcFile, __LINE__, "UM_UPDATERECORD %s", *files); 1039 1040 FreeList(files); 1040 1041 } … … 1102 1103 Broadcast(hab2, 1103 1104 wk->hwndCnr, 1104 1105 UM_UPDATERECORDLIST, MPFROMP(wk->li->list), MPVOID); 1105 1106 break; 1106 1107 … … 1225 1226 Broadcast(hab2, 1226 1227 wk->hwndCnr, 1227 1228 UM_UPDATERECORDLIST, MPFROMP(wk->li->list), MPVOID); 1228 1229 } 1229 1230 break; … … 1245 1246 Broadcast(hab2, 1246 1247 wk->hwndCnr, 1247 1248 UM_UPDATERECORD, MPFROMP(wk->li->targetpath), MPVOID); 1248 1249 } 1249 1250 break; … … 1514 1515 Broadcast(hab2, 1515 1516 wk->hwndCnr, 1516 1517 UM_UPDATERECORDLIST, MPFROMP(wk->li->list), MPVOID); 1517 1518 } 1518 1519 break; … … 1529 1530 HOBJECT hObjectdest, hObjectofObject; 1530 1531 BYTE G_abSupportedDrives[24] = {0}; 1531 1532 ULONG cbSupportedDrives = sizeof(G_abSupportedDrives); 1532 1533 1533 1534 for (x = 0; wk->li->list[x]; x++) { … … 1624 1625 if (!wk->li->list || !wk->li->list[0]) 1625 1626 break; 1626 1627 1628 1627 } 1628 if (fVerify && driveflags[toupper(*wk->li->list[0]) - 'A'] & DRIVE_WRITEVERIFYOFF) 1629 DosSetVerify(FALSE); 1629 1630 DosRequestMutexSem(hmtxFM2Delete, SEM_INDEFINITE_WAIT); // Prevent race 12-3-08 GKY 1630 1631 for (x = 0; wk->li->list[x]; x++) { … … 1647 1648 DosDeleteDir(wk->li->list[x]); 1648 1649 } 1649 1650 else { 1650 1651 1651 1652 DosError(FERR_DISABLEHARDERR); … … 1666 1667 error = WinMoveObject(hObjectofObject, hObjectdest, 0); 1667 1668 } 1668 1669 1670 } 1671 } 1672 1673 1674 } 1675 1676 1669 else { 1670 error = DosDelete(wk->li->list[x]); 1671 } 1672 } 1673 else { 1674 error = DosForceDelete(wk->li->list[x]); ; 1675 } 1676 if (error) { 1677 DosError(FERR_DISABLEHARDERR); 1677 1678 make_deleteable(wk->li->list[x]); 1678 1679 if (wk->li->type == IDM_DELETE){ … … 1692 1693 error = WinMoveObject(hObjectofObject, hObjectdest, 0); 1693 1694 } 1694 1695 1695 else { 1696 error = DosDelete(wk->li->list[x]); 1696 1697 } 1697 1698 } 1698 1699 1699 else { 1700 error = DosForceDelete(wk->li->list[x]); 1700 1701 } 1701 1702 } … … 1714 1715 GetPString(IDS_DELETEFAILED2TEXT), 1715 1716 wk->li->list[x]) == MBID_CANCEL) { 1716 1717 1718 1717 DosSetVerify(fVerify); 1718 break; 1719 } 1719 1720 } 1720 1721 else { … … 1734 1735 } 1735 1736 } // for 1736 1737 1738 1737 } 1738 if (fVerify) 1739 DosSetVerify(fVerify); 1739 1740 break; 1740 1741 } // switch … … 1742 1743 Broadcast(hab2, 1743 1744 wk->hwndCnr, 1744 1745 UM_UPDATERECORDLIST, MPFROMP(files), MPVOID); 1745 1746 FreeList(files); 1746 1747 } -
trunk/warpin/bld_fm2_wpidirs.txt
r1264 r1394 5 5 ; 23 Feb 08 JBS: Added lines for debugging support package (#10) 6 6 ; 28 Oct 08 JBS: Added lines for new icons (ticket 294) 7 ; 04 Feb 09 SHL: Drop fm3res.str 7 8 ; 8 9 ; This is a file which will be used to simplify the process of … … 56 57 FILE: fm3dll.dll 1 dll . 57 58 FILE: fm3res.dll 1 dll . 58 FILE: fm3res.str 1 dll .59 59 FILE: fm4.exe 1 . . 60 60 FILE: cfgmgr.cmd 1 . .
Note:
See TracChangeset
for help on using the changeset viewer.