- Timestamp:
- Sep 15, 2009, 9:45:38 PM (16 years ago)
- Location:
- trunk/dll
- Files:
-
- 4 edited
-
fm3res.rc (modified) (4 diffs)
-
ipf/fm3.ipf (modified) (2 diffs)
-
ipf/fm4.ipf (modified) (1 diff)
-
worker.c (modified) (27 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/fm3res.rc
r1454 r1458 10 10 11 11 08 Feb 03 SHL Enable SYS_FRAME 12 04 Nov 03 SHL Drop obsoletes13 01 Nov 04 SHL Rename SKULL? defines to avoid rc issues14 07 Jun 05 SHL Comments15 29 Jul 06 SHL Drop duplicate icons16 31 Aug 06 GKY Add partitioning menu items17 01 Sep 06 GKY Add partitioning to files > misc menu18 01 Sep 06 GKY Add Make Directory to files menu in addition to files > misc19 24 Sep 06 GKY Changed "Help" to F1 only20 20 Oct 06 SHL Sync Seek and scan dialog title and menus21 29 Dec 06 GKY Move all extract options to main menu for archiver22 29 Dec 06 GKY Removed "Make directory" from all Misc subdirectories23 12 17 Feb 07 GKY Add Make direcroy to white space directory container menu 24 13 17 Feb 07 GKY Additional drive type icons … … 54 43 inappropriate menu context choices 55 44 12 Sep 09 GKY Add FM3.INI User ini and system ini to submenu for view ini 45 15 Sep 09 SHL Update for Thread notes text changes 56 46 57 47 ***********************************************************************/ … … 3097 3087 IDS_DISKFULLTEXT "Disk is full" 3098 3088 IDS_ANOTHERDISKTEXT "Please insert another disk." 3099 IDS_OFTEXT "of "3089 IDS_OFTEXT "of " 3100 3090 IDS_FAILEDTEXT "failed" 3101 3091 IDS_WPSMOVETEXT "WPS Move" … … 3267 3257 IDS_NOTEBUBBLE1TEXT "~Bubbles" 3268 3258 IDS_NOTEBUBBLE2TEXT "Bubble help settings" 3269 IDS_TOTARGETTEXT " ( toTarget directory)"3259 IDS_TOTARGETTEXT " (Target directory)" 3270 3260 IDS_CANTADDCOMMANDTEXT "Can't add %s to command list" 3271 3261 IDS_CANTADDCOMMANDTEXTDUP "Can't add %s to command list It has a duplicate title" -
trunk/dll/ipf/fm3.ipf
r1441 r1458 347 347 quicklists:elink. section). 348 348 :p. 349 Status line #1can be clicked to shift the focus to FM/2 without350 activating any commands. In addition, if the Drive Treeis the349 :hp1.Status line #1:ehp1. can be clicked to shift the focus to FM/2 without 350 activating any commands. In addition, if the :hp1.Drive Tree:ehp1. is the 351 351 active window within FM/2's monolithic window, the Swapfile and 352 memory available indicators in Status line #2 will be continuously 353 updated (otherwise they update about every ten seconds). 354 :p. 355 You can get information on most areas of the window just by moving the 352 memory available indicators in :hp1.Status. line #2:ehp1. will be continuously 353 updated. Otherwise, they update about every ten seconds. 354 :p. 355 The :hp1.Thread LED:ehp1. button blinks to indicate background thread activity. 356 The displayed count is number of active background threads. 357 To monitor the activity of the background thread, 358 click on the :hp1.Thread LED:ehp1. button to open the :hp1.Thread notes:ehp1. window. 359 :p. 360 The :hp1.Interface:ehp1. button allows toolbars and quicklists to be toggled 361 on or off with a single click. 362 :p. 363 The :hp1.Walk:ehp1. button provides single click access to the 364 :link reftype=hd res=91500.Walk Directories:elink. dialog 365 to change the directory displayed in a directory container 366 or to open new directory container. 367 :p. 368 You can get information on most areas of the window by moving the 356 369 mouse pointer over the area of interest (unless you've turned off 357 bubble help in the internal Settings notebook). For help with the 370 bubble help on the Bubbles page of the Settings notebook). 371 For help with the 358 372 quicklists, which don't have bubble help, see :link reftype=hd 359 373 res=99400.Using quicklists:elink.. 360 374 :p. 361 .br362 375 Here's a Directory Container window in more detail&colon. See 363 376 :link reftype=hd res=98900.Opening a Directory Container:elink. and … … 380 393 commands you select will effect. 381 394 :p. 382 .br383 395 Here's a look at the default text file 384 396 viewer built into FM/2. It is opened when you double-click a text file in -
trunk/dll/ipf/fm4.ipf
r1441 r1458 42 42 If the Drive Tree is active and the current window, the Directory 43 43 Container that will be affected by double-clicking a directory in the 44 Tree is surrounded by a dark red line. :color fc=default bc=palegray.Tab:color fc=default bc=default. 45 and &ShiftKey. -:color fc=default bc=palegray.Tab:color fc=default bc=default. can be used 44 Tree is surrounded by a dark red line. 45 :color fc=default bc=palegray.Tab:color fc=default bc=default. 46 and 47 &ShiftKey. + :color fc=default bc=palegray.Tab:color fc=default bc=default. 48 can be used 46 49 to switch between the windows. 47 50 :p. -
trunk/dll/worker.c
r1455 r1458 187 187 #endif // defined(UNDO) 188 188 189 /** 190 * Apply action to file list 191 * Action repeated for each item in list 192 */ 193 189 194 VOID Action(VOID * args) 190 195 { … … 193 198 HMQ hmq2; 194 199 CHAR **files = NULL; 195 UINT numfiles = 0, numalloc = 0;196 200 INT plen = 0; 197 201 CHAR *p, *pp; … … 210 214 if (hmq2) { 211 215 CHAR message[(CCHMAXPATH * 2) + 80], wildname[CCHMAXPATH]; 212 INT x;216 UINT x; 213 217 BOOL dontask = FALSE, wildcarding = FALSE, overold = 214 218 FALSE, overnew = FALSE, usedtarget; … … 326 330 // Process each list item 327 331 if (wk->li && wk->li->list && wk->li->list[0]) { 332 UINT cFilesModified = 0; // Required for AddToList 333 UINT cItemsAllocated = 0; // Required for AddToList 334 UINT cItemsInList; 335 for (cItemsInList = 0; wk->li->list[cItemsInList]; cItemsInList++); // Count 328 336 for (x = 0; wk->li->list[x]; x++) { 329 337 switch (wk->li->type) { … … 428 436 AddNote(message); 429 437 if (//fSyncUpdates || 430 AddToList(outname, &files, & numfiles, &numalloc))438 AddToList(outname, &files, &cFilesModified, &cItemsAllocated)) 431 439 Broadcast(hab2, 432 440 wk->hwndCnr, … … 523 531 if (//fSyncUpdates || 524 532 AddToList(wk->li->list[x], 525 &files, & numfiles, &numalloc))533 &files, &cFilesModified, &cItemsAllocated)) 526 534 Broadcast(hab2, 527 535 wk->hwndCnr, … … 616 624 { 617 625 626 // Select target 618 627 if (!*wk->li->targetpath && (wk->li->type == IDM_MOVE || 619 628 wk->li->type == IDM_COPY || … … 622 631 623 632 APIRET rc = 1; 624 625 633 usedtarget = FALSE; 626 634 if (hwndMain) { … … 648 656 (!*targetdir && strcmp(realappname, "FM/4"))) { 649 657 RetryPath: 658 // Confirm target 650 659 usedtarget = FALSE; 651 660 if (wk->li->type == IDM_MOVE || … … 674 683 if (!rc || !*wk->li->targetpath) 675 684 goto Abort; 685 // Check target OK 676 686 if (driveflags[toupper(*wk->li->targetpath) - 'A'] & 677 687 DRIVE_NOTWRITEABLE) { … … 685 695 Retry: 686 696 { 697 // Target OK so far 687 698 CHAR newname[CCHMAXPATH]; 688 PCSZ moving, move, moved;689 699 APIRET rc; 690 INT type;691 700 FILESTATUS4L fs4; 692 BOOL isnewer, existed, fResetVerify = FALSE; 693 694 type = (wk->li->type == IDM_RENAME) ? MOVE : 695 (wk->li->type == IDM_MOVE) ? MOVE : 696 (wk->li->type == IDM_WPSMOVE) ? WPSMOVE : 697 (wk->li->type == IDM_WPSCOPY) ? WPSCOPY : COPY; 698 moving = (wk->li->type == IDM_RENAME) ? 701 BOOL isnewer; 702 BOOL existed; 703 BOOL fResetVerify = FALSE; 704 INT type = wk->li->type == IDM_RENAME ? 705 MOVE : 706 wk->li->type == IDM_MOVE ? 707 MOVE : (wk->li->type == IDM_WPSMOVE) ? 708 WPSMOVE : wk->li->type == IDM_WPSCOPY ? 709 WPSCOPY : COPY; 710 PCSZ moving = wk->li->type == IDM_RENAME ? 699 711 GetPString(IDS_RENAMINGTEXT) : 700 (wk->li->type == IDM_MOVE || 701 wk->li->type == IDM_WPSMOVE) ? 702 GetPString(IDS_MOVINGTEXT) : GetPString(IDS_COPYINGTEXT); 703 move = (wk->li->type == IDM_RENAME) ? 712 wk->li->type == IDM_MOVE || wk->li->type == IDM_WPSMOVE ? 713 GetPString(IDS_MOVINGTEXT) : GetPString(IDS_COPYINGTEXT); 714 PCSZ move = wk->li->type == IDM_RENAME ? 704 715 GetPString(IDS_RENAMETEXT) : 705 (wk->li->type == IDM_MOVE ||706 wk->li->type == IDM_WPSMOVE )?707 GetPString(IDS_MOVETEXT) : GetPString(IDS_COPYTEXT);708 moved = (wk->li->type == IDM_RENAME)?716 wk->li->type == IDM_MOVE || 717 wk->li->type == IDM_WPSMOVE ? 718 GetPString(IDS_MOVETEXT) : GetPString(IDS_COPYTEXT); 719 PCSZ moved = wk->li->type == IDM_RENAME ? 709 720 GetPString(IDS_RENAMEDTEXT) : 710 (wk->li->type == IDM_MOVE ||711 wk->li->type == IDM_WPSMOVE) ?712 GetPString(IDS_MOVEDTEXT) : GetPString(IDS_COPIEDTEXT); 721 wk->li->type == IDM_MOVE || wk->li->type == IDM_WPSMOVE ? 722 GetPString(IDS_MOVEDTEXT) : GetPString(IDS_COPIEDTEXT); 723 713 724 if (*wk->li->targetpath) { 714 725 strcpy(newname, wk->li->targetpath); 715 726 AddBackslashToPath(newname); 716 //if (newname[strlen(newname) - 1] != '\\')717 // strcat(newname, "\\");718 727 if (plen) 719 728 p = wk->li->list[x] + plen; … … 730 739 strcpy(newname, wk->li->list[x]); 731 740 if ((wildcarding || wk->li->type == IDM_RENAME) && 732 *wildname) {733 741 *wildname) 742 { 734 743 CHAR testname[CCHMAXPATH]; 735 736 744 strcpy(testname, wildname); 737 745 if (AdjustWildcardName(newname, testname)) 738 746 strcpy(newname, testname); 739 747 } 740 existed = (IsFile(newname) != -1);748 existed = IsFile(newname) != -1; 741 749 isnewer = IsNewer(wk->li->list[x], newname); 742 750 if (existed && wk->li->type != IDM_RENAME && dontask) { … … 748 756 break; 749 757 } 758 // Confirm overwrite unless bypassed 750 759 if ((wk->li->type == IDM_RENAME && 751 760 (!dontask || !*wildname)) || 752 761 (!dontask && existed) || 753 762 (!dontask && wildcarding) || 754 (IsFile(newname) == 0 && IsFile(wk->li->list[x]) > 0)) {755 763 (IsFile(newname) == 0 && IsFile(wk->li->list[x]) > 0)) 764 { 756 765 MOVEIT mv; 757 758 766 memset(&mv, 0, sizeof(MOVEIT)); 759 767 mv.rename = (wk->li->type == IDM_RENAME); … … 766 774 if (!rc) 767 775 goto Abort; 776 768 777 DosSleep(1); 769 778 if (mv.skip || !*mv.target) … … 803 812 break; 804 813 sprintf(message, 805 " %s \"%s\" %s\"%s\"%s ",814 " %s \"%s\" %s\"%s\"%s [%u %s%u]", 806 815 moving, 807 816 wk->li->list[x], 808 GetPString(IDS_TOTEXT), 817 GetPString(IDS_TOTEXT), // Has trailing space 809 818 newname, 810 (usedtarget) ? GetPString(IDS_TOTARGETTEXT) : 811 NullStr); 819 usedtarget ? 820 GetPString(IDS_TOTARGETTEXT) : 821 NullStr, 822 x + 1, 823 GetPString(IDS_OFTEXT), // Has trailing space 824 cItemsInList); 812 825 AddNote(message); 813 826 if (fVerify && (driveflags[toupper(*wk->li->targetpath) - 'A'] & DRIVE_WRITEVERIFYOFF) | … … 906 919 pszSrcFile, 907 920 __LINE__, 908 "%s %s \"%s\" %s\"%s\" %s.",921 "%s %s\"%s\" %s\"%s\" %s.", 909 922 move, 910 GetPString(IDS_OFTEXT), 923 GetPString(IDS_OFTEXT), // Has trailing space 911 924 wk->li->list[x], 912 925 GetPString(IDS_TOTEXT), … … 924 937 GetPString(IDS_TOTEXT), newname); 925 938 } 926 if (!hwndTree ||927 ((driveflags[*wk->li->targetpath - 'A'] & DRIVE_RSCANNED) &&939 if (!hwndTree || 940 ((driveflags[*wk->li->targetpath - 'A'] & DRIVE_RSCANNED) && 928 941 AddToList(wk->li->list[x], 929 &files, & numfiles, &numalloc)))942 &files, &cFilesModified, &cItemsAllocated))) 930 943 Broadcast(hab2, 931 944 wk->hwndCnr, 932 945 UM_UPDATERECORD, 933 946 MPFROMP(wk->li->list[x]), MPVOID); 934 if (!hwndTree ||935 (driveflags[*wk->li->targetpath - 'A'] & DRIVE_RSCANNED) &&936 AddToList(newname, &files, & numfiles, &numalloc))947 if (!hwndTree || 948 (driveflags[*wk->li->targetpath - 'A'] & DRIVE_RSCANNED) && 949 AddToList(newname, &files, &cFilesModified, &cItemsAllocated)) 937 950 Broadcast(hab2, 938 951 wk->hwndCnr, … … 1001 1014 sprintf(message, 1002 1015 GetPString(IDS_OPSCOMPLETETEXT), 1003 (wk->li->type == IDM_MOVE)?1004 GetPString(IDS_MOVETEXT) :1005 (wk->li->type == IDM_COPY)?1006 GetPString(IDS_COPYTEXT) :1007 (wk->li->type == IDM_WPSMOVE)?1008 GetPString(IDS_WPSMOVETEXT) :1009 (wk->li->type == IDM_WPSCOPY)?1010 GetPString(IDS_WPSCOPYTEXT) :1011 GetPString(IDS_RENAMETEXT),1012 &"s"[x == 1], 1016 wk->li->type == IDM_MOVE ? 1017 GetPString(IDS_MOVETEXT) : 1018 wk->li->type == IDM_COPY ? 1019 GetPString(IDS_COPYTEXT) : 1020 wk->li->type == IDM_WPSMOVE ? 1021 GetPString(IDS_WPSMOVETEXT) : 1022 wk->li->type == IDM_WPSCOPY ? 1023 GetPString(IDS_WPSCOPYTEXT) : 1024 GetPString(IDS_RENAMETEXT), 1025 &"s"[x == 1], /* s or nul */ 1013 1026 (wk->li->type == IDM_MOVE || 1014 1027 wk->li->type == IDM_COPY || 1015 1028 wk->li->type == IDM_WPSMOVE || 1016 1029 wk->li->type == IDM_WPSCOPY) ? 1017 GetPString(IDS_TOTEXT) : 1018 NullStr, 1030 GetPString(IDS_TOTEXT) : NullStr, 1019 1031 (wk->li->type == IDM_MOVE || 1020 1032 wk->li->type == IDM_COPY || 1021 1033 wk->li->type == IDM_WPSMOVE || 1022 1034 wk->li->type == IDM_WPSCOPY) ? 1023 wk->li->targetpath : 1024 NullStr, 1025 (x != 1) ? 1026 GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT)); 1035 wk->li->targetpath : NullStr, 1036 GetPString(x != 1 ? IDS_ARETEXT : IDS_ISTEXT)); 1027 1037 Notify(message); 1028 1038 if (toupper(*wk->li->targetpath) < 'C' && !fAlertBeepOff) … … 1051 1061 1052 1062 WinDestroyMsgQueue(hmq2); 1053 } 1063 } // if queue 1054 1064 DecrThreadUsage(); 1055 1065 WinTerminate(hab2); 1056 } 1057 } 1066 } // if hab2 1067 } // if list not empty 1058 1068 1059 1069 if (wk->li) … … 1067 1077 } 1068 1078 1079 /** 1080 * Apply file list to action 1081 * All items in list processed as a group, if possible 1082 */ 1083 1069 1084 VOID MassAction(VOID * args) 1070 1085 { … … 1073 1088 HMQ hmq2; 1074 1089 CHAR **files = NULL; 1075 registerCHAR *p, *pp;1090 CHAR *p, *pp; 1076 1091 UINT numfiles = 0, numalloc = 0; 1077 1092 … … 1132 1147 case IDM_MCIPLAY: 1133 1148 { 1134 INT x, MaxFM2playStrLen = 24; 1149 UINT x; 1150 UINT MaxFM2playStrLen = 24; 1135 1151 ULONG total; 1136 1152 CHAR fbuf[CCHMAXPATH]; … … 1174 1190 CHAR szBuffer[1025]; 1175 1191 CHAR fbuf[CCHMAXPATH]; 1176 registerINT x;1192 UINT x; 1177 1193 1178 1194 if (wk->li->type == IDM_FAKEEXTRACT || … … 1273 1289 ARC_TYPE *info = NULL; 1274 1290 char *pch; 1275 registerINT x;1291 UINT x; 1276 1292 1277 1293 memset(&ad, 0, sizeof(DIRCNRDATA)); … … 1401 1417 1402 1418 CHAR *temp; 1403 registerINT x;1419 UINT x; 1404 1420 ULONG viewtype; 1405 1421 … … 1446 1462 1447 1463 CHAR *temp; 1448 registerINT x;1464 UINT x; 1449 1465 ULONG viewtype; 1450 1466 … … 1533 1549 CHECKLIST cl; 1534 1550 INT isdir = 0, sysdir = 0, ro = 0, hs = 0; 1535 registerINT x;1551 UINT x; 1536 1552 FILESTATUS3 fsa; 1537 1553 CHAR prompt[CCHMAXPATH * 3];
Note:
See TracChangeset
for help on using the changeset viewer.
