922 |
950 |
923 return res |
951 return res |
924 |
952 |
925 def __readUserProperties(self): |
953 def __readUserProperties(self): |
926 """ |
954 """ |
927 Private method to read in the user specific project file (.e4q). |
955 Private method to read in the user specific project file (.eqj or |
|
956 .e4q). |
928 """ |
957 """ |
929 if self.pfile is None: |
958 if self.pfile is None: |
930 return |
959 return |
931 |
960 |
932 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
961 fn1, ext = os.path.splitext(os.path.basename(self.pfile)) |
933 fn = os.path.join(self.getProjectManagementDir(), '{0}.e4q'.format(fn)) |
962 fn = os.path.join(self.getProjectManagementDir(), |
|
963 '{0}.eqj'.format(fn1)) |
934 if os.path.exists(fn): |
964 if os.path.exists(fn): |
935 f = QFile(fn) |
965 # try the new JSON based format first |
936 if f.open(QIODevice.ReadOnly): |
966 self.__userProjectFile.readFile(fn) |
937 from E5XML.UserProjectReader import UserProjectReader |
967 else: |
938 reader = UserProjectReader(f, self) |
968 # try the old XML based format second |
939 reader.readXML() |
969 fn = os.path.join(self.getProjectManagementDir(), |
940 f.close() |
970 '{0}.e4q'.format(fn1)) |
941 else: |
971 if os.path.exists(fn): |
942 E5MessageBox.critical( |
972 f = QFile(fn) |
943 self.ui, |
973 if f.open(QIODevice.ReadOnly): |
944 self.tr("Read user project properties"), |
974 from E5XML.UserProjectReader import UserProjectReader |
945 self.tr( |
975 reader = UserProjectReader(f, self) |
946 "<p>The user specific project properties file" |
976 reader.readXML() |
947 " <b>{0}</b> could not be read.</p>").format(fn)) |
977 f.close() |
|
978 else: |
|
979 E5MessageBox.critical( |
|
980 self.ui, |
|
981 self.tr("Read User Project Properties"), |
|
982 self.tr( |
|
983 "<p>The user specific project properties file" |
|
984 " <b>{0}</b> could not be read.</p>").format(fn)) |
948 |
985 |
949 def __writeUserProperties(self): |
986 def __writeUserProperties(self): |
950 """ |
987 """ |
951 Private method to write the project data to an XML file. |
988 Private method to write the user specific project data to a JSON file. |
952 """ |
989 """ |
953 if self.pfile is None: |
990 if self.pfile is None: |
954 return |
991 return |
955 |
992 |
956 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
993 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
957 fn = os.path.join(self.getProjectManagementDir(), '{0}.e4q'.format(fn)) |
994 fn = os.path.join(self.getProjectManagementDir(), '{0}.eqj'.format(fn)) |
958 |
995 |
959 f = QFile(fn) |
996 with E5OverrideCursor(): |
960 if f.open(QIODevice.WriteOnly): |
997 self.__userProjectFile.writeFile(fn) |
961 from E5XML.UserProjectWriter import UserProjectWriter |
998 |
962 UserProjectWriter( |
|
963 f, os.path.splitext(os.path.basename(fn))[0]).writeXML() |
|
964 f.close() |
|
965 else: |
|
966 E5MessageBox.critical( |
|
967 self.ui, |
|
968 self.tr("Save user project properties"), |
|
969 self.tr( |
|
970 "<p>The user specific project properties file <b>{0}</b>" |
|
971 " could not be written.</p>").format(fn)) |
|
972 |
|
973 def __showContextMenuSession(self): |
999 def __showContextMenuSession(self): |
974 """ |
1000 """ |
975 Private slot called before the Session menu is shown. |
1001 Private slot called before the Session menu is shown. |
976 """ |
1002 """ |
977 enable = True |
1003 enable = True |
978 if self.pfile is None: |
1004 if self.pfile is None: |
979 enable = False |
1005 enable = False |
980 else: |
1006 else: |
981 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
1007 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
982 fn_new = os.path.join(self.getProjectManagementDir(), |
1008 fn_new = os.path.join(self.getProjectManagementDir(), |
|
1009 '{0}.esj'.format(fn)) |
|
1010 fn_old = os.path.join(self.getProjectManagementDir(), |
983 '{0}.e5s'.format(fn)) |
1011 '{0}.e5s'.format(fn)) |
984 fn_old = os.path.join(self.getProjectManagementDir(), |
|
985 '{0}.e4s'.format(fn)) |
|
986 enable = os.path.exists(fn_new) or os.path.exists(fn_old) |
1012 enable = os.path.exists(fn_new) or os.path.exists(fn_old) |
987 self.sessActGrp.findChild( |
1013 self.sessActGrp.findChild( |
988 QAction, "project_load_session").setEnabled(enable) |
1014 QAction, "project_load_session").setEnabled(enable) |
989 self.sessActGrp.findChild( |
1015 self.sessActGrp.findChild( |
990 QAction, "project_delete_session").setEnabled(enable) |
1016 QAction, "project_delete_session").setEnabled(enable) |
991 |
1017 |
992 @pyqtSlot() |
1018 @pyqtSlot() |
993 def __readSession(self, quiet=False, indicator=""): |
1019 def __readSession(self, quiet=False, indicator=""): |
994 """ |
1020 """ |
995 Private method to read in the project session file (.e5s or .e4s). |
1021 Private method to read in the project session file (.esj or .e5s). |
996 |
1022 |
997 @param quiet flag indicating quiet operations. |
1023 @param quiet flag indicating quiet operations. |
998 If this flag is true, no errors are reported. |
1024 If this flag is true, no errors are reported. |
999 @param indicator indicator string (string) |
1025 @param indicator indicator string (string) |
1000 """ |
1026 """ |
1001 if self.pfile is None: |
1027 if self.pfile is None: |
1002 if not quiet: |
1028 if not quiet: |
1003 E5MessageBox.critical( |
1029 E5MessageBox.critical( |
1004 self.ui, |
1030 self.ui, |
1005 self.tr("Read project session"), |
1031 self.tr("Read Project Session"), |
1006 self.tr("Please save the project first.")) |
1032 self.tr("Please save the project first.")) |
1007 return |
1033 return |
1008 |
1034 |
1009 fn1, ext = os.path.splitext(os.path.basename(self.pfile)) |
1035 fn1, ext = os.path.splitext(os.path.basename(self.pfile)) |
1010 fn = os.path.join(self.getProjectManagementDir(), |
1036 fn = os.path.join(self.getProjectManagementDir(), |
1011 '{0}{1}.e5s'.format(fn1, indicator)) |
1037 '{0}{1}.esj'.format(fn1, indicator)) |
1012 if not os.path.exists(fn): |
1038 if os.path.exists(fn): |
|
1039 # try the new JSON based format first |
|
1040 self.__sessionFile.readFile(fn) |
|
1041 else: |
|
1042 # try the old XML based format second |
1013 fn = os.path.join(self.getProjectManagementDir(), |
1043 fn = os.path.join(self.getProjectManagementDir(), |
1014 '{0}{1}.e4s'.format(fn1, indicator)) |
1044 '{0}{1}.e5s'.format(fn1, indicator)) |
1015 |
1045 if os.path.exists(fn): |
1016 f = QFile(fn) |
1046 f = QFile(fn) |
1017 if f.open(QIODevice.ReadOnly): |
1047 if f.open(QIODevice.ReadOnly): |
1018 from E5XML.SessionReader import SessionReader |
1048 from E5XML.SessionReader import SessionReader |
1019 reader = SessionReader(f, False) |
1049 reader = SessionReader(f, False) |
1020 reader.readXML(quiet=quiet) |
1050 reader.readXML(quiet=quiet) |
1021 f.close() |
1051 f.close() |
1022 else: |
1052 else: |
1023 if not quiet: |
1053 if not quiet: |
1024 E5MessageBox.critical( |
1054 E5MessageBox.critical( |
1025 self.ui, |
1055 self.ui, |
1026 self.tr("Read project session"), |
1056 self.tr("Read project session"), |
1027 self.tr( |
1057 self.tr( |
1028 "<p>The project session file <b>{0}</b> could not be" |
1058 "<p>The project session file <b>{0}</b> could" |
1029 " read.</p>").format(fn)) |
1059 " not be read.</p>").format(fn)) |
1030 |
1060 |
1031 @pyqtSlot() |
1061 @pyqtSlot() |
1032 def __writeSession(self, quiet=False, indicator=""): |
1062 def __writeSession(self, quiet=False, indicator=""): |
1033 """ |
1063 """ |
1034 Private method to write the session data to an XML file (.e5s). |
1064 Private method to write the session data to an XML file (.esj). |
1035 |
1065 |
1036 @param quiet flag indicating quiet operations. |
1066 @param quiet flag indicating quiet operations. |
1037 If this flag is true, no errors are reported. |
1067 If this flag is true, no errors are reported. |
1038 @param indicator indicator string (string) |
1068 @param indicator indicator string (string) |
1039 """ |
1069 """ |
1040 if self.pfile is None: |
1070 if self.pfile is None: |
1041 if not quiet: |
1071 if not quiet: |
1042 E5MessageBox.critical( |
1072 E5MessageBox.critical( |
1043 self.ui, |
1073 self.ui, |
1044 self.tr("Save project session"), |
1074 self.tr("Save Project Session"), |
1045 self.tr("Please save the project first.")) |
1075 self.tr("Please save the project first.")) |
1046 return |
1076 return |
1047 |
1077 |
1048 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
1078 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
1049 fn = os.path.join(self.getProjectManagementDir(), |
1079 fn = os.path.join(self.getProjectManagementDir(), |
1050 '{0}{1}.e5s'.format(fn, indicator)) |
1080 '{0}{1}.esj'.format(fn, indicator)) |
1051 |
1081 |
1052 f = QFile(fn) |
1082 self.__sessionFile.writeFile(fn) |
1053 if f.open(QIODevice.WriteOnly): |
1083 |
1054 from E5XML.SessionWriter import SessionWriter |
|
1055 SessionWriter( |
|
1056 f, os.path.splitext(os.path.basename(fn))[0]).writeXML() |
|
1057 f.close() |
|
1058 else: |
|
1059 if not quiet: |
|
1060 E5MessageBox.critical( |
|
1061 self.ui, |
|
1062 self.tr("Save project session"), |
|
1063 self.tr( |
|
1064 "<p>The project session file <b>{0}</b> could not be" |
|
1065 " written.</p>").format(fn)) |
|
1066 |
|
1067 def __deleteSession(self): |
1084 def __deleteSession(self): |
1068 """ |
1085 """ |
1069 Private method to delete the session file. |
1086 Private method to delete the session file. |
1070 """ |
1087 """ |
1071 if self.pfile is None: |
1088 if self.pfile is None: |
1072 E5MessageBox.critical( |
1089 E5MessageBox.critical( |
1073 self.ui, |
1090 self.ui, |
1074 self.tr("Delete project session"), |
1091 self.tr("Delete Project Session"), |
1075 self.tr("Please save the project first.")) |
1092 self.tr("Please save the project first.")) |
1076 return |
1093 return |
1077 |
1094 |
1078 fname, ext = os.path.splitext(os.path.basename(self.pfile)) |
1095 fname, ext = os.path.splitext(os.path.basename(self.pfile)) |
1079 |
1096 |
1080 for fn in [ |
1097 for ext in (".esj", ".e5s", ".e4s"): |
1081 os.path.join( |
1098 fn = os.path.join( |
1082 self.getProjectManagementDir(), "{0}.e5s".format(fname)), |
1099 self.getProjectManagementDir(), "{0}{1}".format(fname, ext)), |
1083 os.path.join( |
|
1084 self.getProjectManagementDir(), "{0}.e4s".format(fname))]: |
|
1085 if os.path.exists(fn): |
1100 if os.path.exists(fn): |
1086 try: |
1101 try: |
1087 os.remove(fn) |
1102 os.remove(fn) |
1088 except OSError: |
1103 except OSError: |
1089 E5MessageBox.critical( |
1104 E5MessageBox.critical( |
1090 self.ui, |
1105 self.ui, |
1091 self.tr("Delete project session"), |
1106 self.tr("Delete Project Session"), |
1092 self.tr( |
1107 self.tr( |
1093 "<p>The project session file <b>{0}</b> could" |
1108 "<p>The project session file <b>{0}</b> could" |
1094 " not be deleted.</p>").format(fn)) |
1109 " not be deleted.</p>").format(fn)) |
1095 |
1110 |
1096 def __readTasks(self): |
1111 def __readTasks(self): |
1097 """ |
1112 """ |
1098 Private method to read in the project tasks file (.e6t). |
1113 Private method to read in the project tasks file (.etj or .e6t). |
1099 """ |
1114 """ |
1100 if self.pfile is None: |
1115 if self.pfile is None: |
1101 E5MessageBox.critical( |
1116 E5MessageBox.critical( |
1102 self.ui, |
1117 self.ui, |
1103 self.tr("Read tasks"), |
1118 self.tr("Read Tasks"), |
1104 self.tr("Please save the project first.")) |
1119 self.tr("Please save the project first.")) |
1105 return |
1120 return |
1106 |
1121 |
1107 base, ext = os.path.splitext(os.path.basename(self.pfile)) |
1122 base, ext = os.path.splitext(os.path.basename(self.pfile)) |
1108 fn = os.path.join(self.getProjectManagementDir(), |
1123 fn = os.path.join(self.getProjectManagementDir(), |
1109 '{0}.e6t'.format(base)) |
1124 '{0}.etj'.format(base)) |
1110 if not os.path.exists(fn): |
1125 if os.path.exists(fn): |
1111 # try again with the old extension |
1126 # try new style JSON file first |
|
1127 self.__tasksFile.readFile(fn) |
|
1128 else: |
|
1129 # try old style XML file second |
1112 fn = os.path.join(self.getProjectManagementDir(), |
1130 fn = os.path.join(self.getProjectManagementDir(), |
1113 '{0}.e4t'.format(base)) |
1131 '{0}.e6t'.format(base)) |
1114 if not os.path.exists(fn): |
1132 if os.path.exists(fn): |
1115 return |
1133 f = QFile(fn) |
1116 f = QFile(fn) |
1134 if f.open(QIODevice.ReadOnly): |
1117 if f.open(QIODevice.ReadOnly): |
1135 from E5XML.TasksReader import TasksReader |
1118 from E5XML.TasksReader import TasksReader |
1136 reader = TasksReader(f, True) |
1119 reader = TasksReader(f, True) |
1137 reader.readXML() |
1120 reader.readXML() |
1138 f.close() |
1121 f.close() |
1139 else: |
1122 else: |
1140 E5MessageBox.critical( |
1123 E5MessageBox.critical( |
1141 self.ui, |
1124 self.ui, |
1142 self.tr("Read Tasks"), |
1125 self.tr("Read tasks"), |
1143 self.tr( |
1126 self.tr( |
1144 "<p>The tasks file <b>{0}</b> could not be read." |
1127 "<p>The tasks file <b>{0}</b> could not be read.</p>") |
1145 "</p>") |
1128 .format(fn)) |
1146 .format(fn)) |
1129 |
1147 |
1130 def writeTasks(self): |
1148 def writeTasks(self): |
1131 """ |
1149 """ |
1132 Public method to write the tasks data to an XML file (.e6t). |
1150 Public method to write the tasks data to a JSON file (.etj). |
1133 """ |
1151 """ |
1134 if self.pfile is None: |
1152 if self.pfile is None: |
1135 return |
1153 return |
1136 |
1154 |
1137 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
1155 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
1138 |
1156 |
1139 fn = os.path.join(self.getProjectManagementDir(), '{0}.e6t'.format(fn)) |
1157 fn = os.path.join(self.getProjectManagementDir(), |
1140 f = QFile(fn) |
1158 '{0}.etj'.format(fn)) |
1141 ok = f.open(QIODevice.WriteOnly) |
1159 self.__tasksFile.writeFile(fn) |
1142 if not ok: |
1160 |
1143 E5MessageBox.critical( |
|
1144 self.ui, |
|
1145 self.tr("Save tasks"), |
|
1146 self.tr( |
|
1147 "<p>The tasks file <b>{0}</b> could not be written.</p>") |
|
1148 .format(fn)) |
|
1149 return |
|
1150 |
|
1151 from E5XML.TasksWriter import TasksWriter |
|
1152 TasksWriter( |
|
1153 f, True, os.path.splitext(os.path.basename(fn))[0]).writeXML() |
|
1154 f.close() |
|
1155 |
|
1156 def __showContextMenuDebugger(self): |
1161 def __showContextMenuDebugger(self): |
1157 """ |
1162 """ |
1158 Private slot called before the Debugger menu is shown. |
1163 Private slot called before the Debugger menu is shown. |
1159 """ |
1164 """ |
1160 enable = True |
1165 enable = True |
1161 if self.pfile is None: |
1166 if self.pfile is None: |
1162 enable = False |
1167 enable = False |
1163 else: |
1168 else: |
1164 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
1169 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
|
1170 # try new style file first |
1165 fn = os.path.join(self.getProjectManagementDir(), |
1171 fn = os.path.join(self.getProjectManagementDir(), |
1166 '{0}.e4d'.format(fn)) |
1172 '{0}.edj'.format(fn)) |
|
1173 if not os.path.exists(fn): |
|
1174 # try old style file second |
|
1175 fn = os.path.join(self.getProjectManagementDir(), |
|
1176 '{0}.e4d'.format(fn)) |
1167 enable = os.path.exists(fn) |
1177 enable = os.path.exists(fn) |
1168 self.dbgActGrp.findChild( |
1178 self.dbgActGrp.findChild( |
1169 QAction, "project_debugger_properties_load").setEnabled(enable) |
1179 QAction, "project_debugger_properties_load").setEnabled(enable) |
1170 self.dbgActGrp.findChild( |
1180 self.dbgActGrp.findChild( |
1171 QAction, "project_debugger_properties_delete").setEnabled(enable) |
1181 QAction, "project_debugger_properties_delete").setEnabled(enable) |
1172 |
1182 |
1173 @pyqtSlot() |
1183 @pyqtSlot() |
1174 def __readDebugProperties(self, quiet=False): |
1184 def __readDebugProperties(self, quiet=False): |
1175 """ |
1185 """ |
1176 Private method to read in the project debugger properties file (.e4d). |
1186 Private method to read in the project debugger properties file |
|
1187 (.edj or .e4d). |
1177 |
1188 |
1178 @param quiet flag indicating quiet operations. |
1189 @param quiet flag indicating quiet operations. |
1179 If this flag is true, no errors are reported. |
1190 If this flag is true, no errors are reported. |
1180 """ |
1191 """ |
1181 if self.pfile is None: |
1192 if self.pfile is None: |
1182 if not quiet: |
1193 if not quiet: |
1183 E5MessageBox.critical( |
1194 E5MessageBox.critical( |
1184 self.ui, |
1195 self.ui, |
1185 self.tr("Read debugger properties"), |
1196 self.tr("Read Debugger Properties"), |
1186 self.tr("Please save the project first.")) |
1197 self.tr("Please save the project first.")) |
1187 return |
1198 return |
|
1199 |
|
1200 fn1, ext = os.path.splitext(os.path.basename(self.pfile)) |
|
1201 fn = os.path.join(self.getProjectManagementDir(), |
|
1202 '{0}.edj'.format(fn1)) |
|
1203 if os.path.exists(fn): |
|
1204 # try the new JSON based format first |
|
1205 self.__debuggerPropertiesFile.readFile(fn) |
|
1206 else: |
|
1207 # try the old XML based format second |
|
1208 fn = os.path.join(self.getProjectManagementDir(), |
|
1209 '{0}.e4d'.format(fn1)) |
1188 |
1210 |
1189 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
1211 f = QFile(fn) |
1190 fn = os.path.join(self.getProjectManagementDir(), '{0}.e4d'.format(fn)) |
1212 if f.open(QIODevice.ReadOnly): |
1191 |
1213 from E5XML.DebuggerPropertiesReader import ( |
1192 f = QFile(fn) |
1214 DebuggerPropertiesReader |
1193 if f.open(QIODevice.ReadOnly): |
1215 ) |
1194 from E5XML.DebuggerPropertiesReader import DebuggerPropertiesReader |
1216 reader = DebuggerPropertiesReader(f, self) |
1195 reader = DebuggerPropertiesReader(f, self) |
1217 reader.readXML(quiet=quiet) |
1196 reader.readXML(quiet=quiet) |
1218 f.close() |
1197 f.close() |
1219 self.debugPropertiesLoaded = True |
1198 self.debugPropertiesLoaded = True |
1220 self.debugPropertiesChanged = False |
1199 self.debugPropertiesChanged = False |
1221 else: |
1200 else: |
1222 if not quiet: |
1201 if not quiet: |
1223 E5MessageBox.critical( |
1202 E5MessageBox.critical( |
1224 self.ui, |
1203 self.ui, |
1225 self.tr("Read Debugger Properties"), |
1204 self.tr("Read debugger properties"), |
1226 self.tr( |
1205 self.tr( |
1227 "<p>The project debugger properties file" |
1206 "<p>The project debugger properties file <b>{0}</b>" |
1228 " <b>{0}</b> could not be read.</p>").format(fn)) |
1207 " could not be read.</p>").format(fn)) |
1229 |
1208 |
|
1209 @pyqtSlot() |
1230 @pyqtSlot() |
1210 def __writeDebugProperties(self, quiet=False): |
1231 def __writeDebugProperties(self, quiet=False): |
1211 """ |
1232 """ |
1212 Private method to write the project debugger properties file (.e4d). |
1233 Private method to write the project debugger properties file (.edj). |
1213 |
1234 |
1214 @param quiet flag indicating quiet operations. |
1235 @param quiet flag indicating quiet operations. |
1215 If this flag is true, no errors are reported. |
1236 If this flag is true, no errors are reported. |
1216 """ |
1237 """ |
1217 if self.pfile is None: |
1238 if self.pfile is None: |
1218 if not quiet: |
1239 if not quiet: |
1219 E5MessageBox.critical( |
1240 E5MessageBox.critical( |
1220 self.ui, |
1241 self.ui, |
1221 self.tr("Save debugger properties"), |
1242 self.tr("Save Debugger Properties"), |
1222 self.tr("Please save the project first.")) |
1243 self.tr("Please save the project first.")) |
1223 return |
1244 return |
1224 |
1245 |
1225 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
1246 fn, ext = os.path.splitext(os.path.basename(self.pfile)) |
1226 fn = os.path.join(self.getProjectManagementDir(), '{0}.e4d'.format(fn)) |
1247 fn = os.path.join(self.getProjectManagementDir(), '{0}.edj'.format(fn)) |
1227 |
1248 |
1228 f = QFile(fn) |
1249 with E5OverrideCursor(): |
1229 if f.open(QIODevice.WriteOnly): |
1250 self.__debuggerPropertiesFile.writeFile(fn) |
1230 from E5XML.DebuggerPropertiesWriter import DebuggerPropertiesWriter |
1251 |
1231 DebuggerPropertiesWriter( |
|
1232 f, os.path.splitext(os.path.basename(fn))[0]).writeXML() |
|
1233 f.close() |
|
1234 self.debugPropertiesChanged = False |
|
1235 else: |
|
1236 if not quiet: |
|
1237 E5MessageBox.critical( |
|
1238 self.ui, |
|
1239 self.tr("Save debugger properties"), |
|
1240 self.tr( |
|
1241 "<p>The project debugger properties file <b>{0}</b>" |
|
1242 " could not be written.</p>").format(fn)) |
|
1243 |
|
1244 def __deleteDebugProperties(self): |
1252 def __deleteDebugProperties(self): |
1245 """ |
1253 """ |
1246 Private method to delete the project debugger properties file (.e4d). |
1254 Private method to delete the project debugger properties file |
|
1255 (.edj or .e4d). |
1247 """ |
1256 """ |
1248 if self.pfile is None: |
1257 if self.pfile is None: |
1249 E5MessageBox.critical( |
1258 E5MessageBox.critical( |
1250 self.ui, |
1259 self.ui, |
1251 self.tr("Delete debugger properties"), |
1260 self.tr("Delete Debugger Properties"), |
1252 self.tr("Please save the project first.")) |
1261 self.tr("Please save the project first.")) |
1253 return |
1262 return |
1254 |
1263 |
1255 fname, ext = os.path.splitext(os.path.basename(self.pfile)) |
1264 fname, ext = os.path.splitext(os.path.basename(self.pfile)) |
1256 |
1265 |
1257 for fn in [os.path.join(self.getProjectManagementDir(), |
1266 for ext in (".edj", ".e4d"): |
1258 "{0}.e4d".format(fname))]: |
1267 fn = os.path.join(self.getProjectManagementDir(), |
|
1268 "{0}{1}".format(fname, ext)) |
1259 if os.path.exists(fn): |
1269 if os.path.exists(fn): |
1260 try: |
1270 try: |
1261 os.remove(fn) |
1271 os.remove(fn) |
1262 except OSError: |
1272 except OSError: |
1263 E5MessageBox.critical( |
1273 E5MessageBox.critical( |
1264 self.ui, |
1274 self.ui, |
1265 self.tr("Delete debugger properties"), |
1275 self.tr("Delete Debugger Properties"), |
1266 self.tr( |
1276 self.tr( |
1267 "<p>The project debugger properties file" |
1277 "<p>The project debugger properties file" |
1268 " <b>{0}</b> could not be deleted.</p>") |
1278 " <b>{0}</b> could not be deleted.</p>") |
1269 .format(fn)) |
1279 .format(fn)) |
1270 |
1280 |