Changeset 878 for trunk/dll/viewer.c
- Timestamp:
- Nov 26, 2007, 2:20:00 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/viewer.c
r847 r878 14 14 30 Mar 07 GKY Remove GetPString for window class names 15 15 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat 16 26 Nov 07 GKY Allow open of readonly files in the editor with warning 17 26 Nov 07 GKY Add "Save as" menu option to editor 16 18 17 19 ***********************************************************************/ … … 64 66 XMLEWNDPTR *vw; 65 67 ULONG flFrameFlags = FCF_SYSMENU | FCF_SIZEBORDER | FCF_ICON | 66 FCF_TITLEBAR | FCF_MINMAX | FCF_MENU | FCF_ACCELTABLE | FCF_NOBYTEALIGN; 68 FCF_TITLEBAR | FCF_MINMAX | FCF_MENU | FCF_ACCELTABLE | FCF_NOBYTEALIGN; 69 ULONG ulResult; 70 BOOL OpenInViewer = FALSE, readonly = FALSE; 71 FILESTATUS3 fs3; 67 72 68 73 if (fExternalViewer || strcmp(realappname, FM3Str)) 69 74 hwndClient = HWND_DESKTOP; 70 if ((flags & 1) && fUseNewViewer) 71 return StartViewer(hwndClient, (USHORT) flags, filename, hwndRestore); 75 DosQueryPathInfo(filename, FIL_STANDARD, &fs3, sizeof(fs3)); 76 if (fs3.attrFile & FILE_READONLY) { 77 ulResult = saymsg(MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP, 78 GetPString(IDS_WARNINGTEXT), 79 GetPString(IDS_EDITREADONLYFILETEXT), 80 filename); 81 switch (ulResult){ 82 case MBID_YES:{ 83 readonly = TRUE; 84 break; 85 } 86 87 case MBID_NO: 88 if (fUseNewViewer) 89 return StartViewer(hwndClient, (USHORT) flags, filename, hwndRestore); 90 else{ 91 OpenInViewer = TRUE; 92 break; 93 } 94 95 case MBID_CANCEL: 96 return (HWND) 0; 97 } 98 } 72 99 73 100 vw = xmallocz(sizeof(XMLEWNDPTR), pszSrcFile, __LINE__); … … 75 102 return (HWND) 0; 76 103 vw->size = sizeof(XMLEWNDPTR); 104 if (readonly) 105 vw->fileattrreadonly = TRUE; 106 else 107 vw->fileattrreadonly = FALSE; 77 108 if (flags & 1) { 78 109 if (flags & 8) … … 95 126 flFrameFlags |= FCF_TASKLIST; 96 127 hwndFrame = WinCreateStdWindow(hwndClient, 97 WS_VISIBLE,128 0, 98 129 &flFrameFlags, 99 130 WC_MLEEDITOR, 100 131 NullStr, 101 WS_VISIBLE |fwsAnimate,132 fwsAnimate, 102 133 FM3ModHandle, MLE_FRAME, &hwnd); 103 134 if (hwndFrame) { … … 143 174 SWP_ACTIVATE); 144 175 } 145 MLEsetreadonly(hwndMLE, ((flags & 1) != 0)); 176 if (OpenInViewer | (flags & 1)) 177 MLEsetreadonly(hwndMLE, ((flags & 1) != 0)); 146 178 WinSetWindowPtr(hwnd, QWL_USER, (PVOID) vw); 147 179 if (!PostMsg(hwnd, UM_SETUP, MPVOID, MPFROMLONG(hwndClient))) … … 731 763 if (temp == MBID_CANCEL) 732 764 break; 733 if (temp == MBID_YES) 765 if (temp == MBID_YES){ 734 766 WinSendMsg(hwnd, 735 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 767 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 768 if (vw->fileattrreadonly) { 769 temp = saymsg(MB_OKCANCEL | MB_ICONEXCLAMATION, 770 hwnd, NullStr, "File is readonly and has not been saved"); 771 if (temp == MBID_CANCEL) 772 return 0; 773 } 774 } 736 775 } 737 776 MLEclearall(hwndMLE); … … 770 809 break; 771 810 811 case MLE_EXPORTAS: 812 vw->saveas = TRUE; 813 WinSendMsg(hwnd, 814 WM_COMMAND, MPFROM2SHORT(MLE_SETEXPORTFILE, 0), MPVOID); 815 break; 816 772 817 case IDM_RENAME: 773 818 case MLE_SETEXPORTFILE: 774 819 if (vw && !MLEgetreadonly(hwndMLE)) { 775 820 776 CHAR filename[1027]; 821 CHAR filename[1027]; 822 ULONG ulResult; 777 823 778 824 strcpy(filename, vw->exportfilename); 779 if (export_filename(hwnd, filename, 1)) {825 if (export_filename(hwnd, filename, !vw->fileattrreadonly)) { 780 826 if (stricmp(filename, vw->exportfilename)) { 781 vw->ch = TRUE; 782 MLEsetchanged(hwndMLE, TRUE); 827 vw->ch = TRUE; 828 vw->fileattrreadonly = FALSE; 829 MLEsetchanged(hwndMLE, TRUE); 783 830 strcpy(vw->exportfilename, filename); 784 WinSendMsg(hwnd, UM_SETUP2, MPVOID, MPVOID); 785 } 831 WinSendMsg(hwnd, UM_SETUP2, MPVOID, MPVOID); 832 if (vw->saveas) { 833 vw->saveas = FALSE; 834 WinSendMsg(hwnd, 835 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 836 } 837 } 838 else if (vw->fileattrreadonly){ 839 ulResult = saymsg(MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP, 840 GetPString(IDS_WARNINGTEXT), 841 GetPString(IDS_EDITREADONLYFILETEXT2), 842 filename); 843 if (ulResult == MBID_OK){ 844 WinSendMsg(hwnd, 845 WM_COMMAND, MPFROM2SHORT(MLE_SETEXPORTFILE, 0), MPVOID); 846 break; 847 } 848 else 849 vw->saveas = FALSE; 850 } 851 else if (vw->saveas = TRUE) { 852 vw->saveas = FALSE; 853 WinSendMsg(hwnd, 854 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 855 } 786 856 } 787 857 } … … 789 859 790 860 case MLE_EXPORTFILE: 861 if (vw->fileattrreadonly){ 862 WinSendMsg(hwnd, 863 WM_COMMAND, MPFROM2SHORT(MLE_SETEXPORTFILE, 0), MPVOID); 864 break; 865 } 791 866 if (!MLEgetreadonly(hwndMLE)) { 792 867 … … 807 882 FILE *fp; 808 883 809 fp = xfopen(vw->exportfilename, "r+", pszSrcFile, __LINE__);884 fp = fopen(vw->exportfilename, "r+"); //, pszSrcFile, __LINE__); 810 885 if (fp) { 811 886 oldsize = filelength(fileno(fp)); … … 942 1017 943 1018 strcpy(filename, vw->exportfilename); 944 if (export_filename(hwnd, filename, 1))1019 if (export_filename(hwnd, filename, !vw->fileattrreadonly)) 945 1020 MLEdoblock(hwndMLE, WRITE, filename); 946 1021 } … … 1138 1213 if (temp == MBID_CANCEL) 1139 1214 return 0; 1140 if (temp == MBID_YES) 1215 if (temp == MBID_YES){ 1141 1216 WinSendMsg(hwnd, 1142 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 1217 WM_COMMAND, MPFROM2SHORT(MLE_EXPORTFILE, 0), MPVOID); 1218 if (vw->fileattrreadonly) { 1219 temp = saymsg(MB_OKCANCEL | MB_ICONEXCLAMATION, 1220 hwnd, NullStr, "File is readonly and has not been saved"); 1221 if (temp == MBID_CANCEL) 1222 return 0; 1223 } 1224 } 1143 1225 } 1144 1226 }
Note:
See TracChangeset
for help on using the changeset viewer.