11 import sys |
11 import sys |
12 |
12 |
13 sys.path.insert(0, os.path.dirname(__file__)) |
13 sys.path.insert(0, os.path.dirname(__file__)) |
14 import rope |
14 import rope |
15 import rope.base.libutils |
15 import rope.base.libutils |
16 import rope.base.project |
|
17 import rope.base.exceptions |
16 import rope.base.exceptions |
18 |
|
19 import rope.refactor.rename |
|
20 import rope.refactor.extract |
|
21 import rope.refactor.usefunction |
|
22 import rope.refactor.inline |
|
23 import rope.refactor.move |
|
24 import rope.refactor.change_signature |
|
25 import rope.refactor.introduce_factory |
|
26 import rope.refactor.introduce_parameter |
|
27 import rope.refactor.method_object |
|
28 import rope.refactor.encapsulate_field |
|
29 import rope.refactor.localtofield |
|
30 import rope.refactor.topackage |
|
31 from rope.refactor.importutils import ImportOrganizer |
|
32 |
|
33 import rope.contrib.findit |
|
34 |
17 |
35 from PyQt4.QtCore import QObject |
18 from PyQt4.QtCore import QObject |
36 from PyQt4.QtGui import QMenu, QApplication, QMessageBox, QDialog, QAction |
19 from PyQt4.QtGui import QMenu, QApplication, QMessageBox, QDialog, QAction |
37 from PyQt4.Qsci import QsciScintilla |
20 from PyQt4.Qsci import QsciScintilla |
38 |
21 |
39 from E5Gui.E5Application import e5App |
22 from E5Gui.E5Application import e5App |
40 |
23 |
41 from E5Gui.E5Action import E5Action |
24 from E5Gui.E5Action import E5Action |
42 |
25 |
43 from QScintilla.MiniEditor import MiniEditor |
|
44 |
|
45 from FileSystemCommands import e5FileSystemCommands |
|
46 from ProgressHandle import ProgressHandle |
|
47 from HelpDialog import HelpDialog |
|
48 from MatchesDialog import MatchesDialog |
|
49 from RenameDialog import RenameDialog |
|
50 from ChangeOccurrencesDialog import ChangeOccurrencesDialog |
|
51 from HistoryDialog import HistoryDialog |
|
52 from ExtractDialog import ExtractDialog |
|
53 from InlineDialog import InlineDialog |
|
54 from MoveMethodDialog import MoveMethodDialog |
|
55 from MoveGlobalMethodDialog import MoveGlobalMethodDialog |
|
56 from MoveModuleDialog import MoveModuleDialog |
|
57 from UseFunctionDialog import UseFunctionDialog |
|
58 from IntroduceFactoryDialog import IntroduceFactoryDialog |
|
59 from IntroduceParameterDialog import IntroduceParameterDialog |
|
60 from ConfirmationDialog import ConfirmationDialog |
|
61 from RestructureDialog import RestructureDialog |
|
62 from ChangeSignatureDialog import ChangeSignatureDialog |
|
63 from InlineArgumentDefaultDialog import InlineArgumentDefaultDialog |
|
64 from GetterSetterDialog import GetterSetterDialog |
|
65 from MethodToMethodObjectDialog import MethodToMethodObjectDialog |
|
66 |
|
67 import Utilities |
26 import Utilities |
68 |
27 |
69 |
28 |
70 class Refactoring(QObject): |
29 class Refactoring(QObject): |
71 """ |
30 """ |
1030 return |
991 return |
1031 index = int(index + (index1 - index) / 2) |
992 index = int(index + (index1 - index) / 2) |
1032 # keep it inside the object |
993 # keep it inside the object |
1033 offset = self.__getOffset(aw, line, index) |
994 offset = self.__getOffset(aw, line, index) |
1034 |
995 |
|
996 import rope.refactor.rename |
1035 resource = rope.base.libutils.path_to_resource( |
997 resource = rope.base.libutils.path_to_resource( |
1036 self.__project, filename) |
998 self.__project, filename) |
1037 try: |
999 try: |
1038 renamer = rope.refactor.rename.Rename( |
1000 renamer = rope.refactor.rename.Rename( |
1039 self.__project, resource, offset) |
1001 self.__project, resource, offset) |
1071 |
1034 |
1072 filename = aw.getFileName() |
1035 filename = aw.getFileName() |
1073 line, index, line1, index1 = aw.getSelection() |
1036 line, index, line1, index1 = aw.getSelection() |
1074 offset = self.__getOffset(aw, line, index) |
1037 offset = self.__getOffset(aw, line, index) |
1075 |
1038 |
|
1039 import rope.refactor.rename |
1076 resource = rope.base.libutils.path_to_resource( |
1040 resource = rope.base.libutils.path_to_resource( |
1077 self.__project, filename) |
1041 self.__project, filename) |
1078 try: |
1042 try: |
1079 renamer = rope.refactor.rename.ChangeOccurrences( |
1043 renamer = rope.refactor.rename.ChangeOccurrences( |
1080 self.__project, resource, offset) |
1044 self.__project, resource, offset) |
1081 except Exception as err: |
1045 except Exception as err: |
1082 self.handleRopeError(err, title) |
1046 self.handleRopeError(err, title) |
1083 return |
1047 return |
1084 |
1048 |
|
1049 from ChangeOccurrencesDialog import ChangeOccurrencesDialog |
1085 self.dlg = ChangeOccurrencesDialog(self, title, renamer, |
1050 self.dlg = ChangeOccurrencesDialog(self, title, renamer, |
1086 parent=self.__ui) |
1051 parent=self.__ui) |
1087 self.dlg.show() |
1052 self.dlg.show() |
1088 |
1053 |
1089 ##################################################### |
1054 ##################################################### |
1128 filename = aw.getFileName() |
1093 filename = aw.getFileName() |
1129 startline, startcolumn, endline, endcolumn = aw.getSelection() |
1094 startline, startcolumn, endline, endcolumn = aw.getSelection() |
1130 startOffset = self.__getOffset(aw, startline, startcolumn) |
1095 startOffset = self.__getOffset(aw, startline, startcolumn) |
1131 endOffset = self.__getOffset(aw, endline, endcolumn) |
1096 endOffset = self.__getOffset(aw, endline, endcolumn) |
1132 |
1097 |
|
1098 import rope.refactor.extract |
1133 resource = rope.base.libutils.path_to_resource( |
1099 resource = rope.base.libutils.path_to_resource( |
1134 self.__project, filename) |
1100 self.__project, filename) |
1135 try: |
1101 try: |
1136 if kind == "variable": |
1102 if kind == "variable": |
1137 extractor = rope.refactor.extract.ExtractVariable( |
1103 extractor = rope.refactor.extract.ExtractVariable( |
1143 raise Exception("Invalid extraction kind <{0}>.".format(kind)) |
1109 raise Exception("Invalid extraction kind <{0}>.".format(kind)) |
1144 except Exception as err: |
1110 except Exception as err: |
1145 self.handleRopeError(err, title) |
1111 self.handleRopeError(err, title) |
1146 return |
1112 return |
1147 |
1113 |
|
1114 from ExtractDialog import ExtractDialog |
1148 self.dlg = ExtractDialog(self, title, extractor, parent=self.__ui) |
1115 self.dlg = ExtractDialog(self, title, extractor, parent=self.__ui) |
1149 self.dlg.show() |
1116 self.dlg.show() |
1150 |
1117 |
1151 ##################################################### |
1118 ##################################################### |
1152 ## Inline refactorings |
1119 ## Inline refactorings |
1174 |
1141 |
1175 filename = aw.getFileName() |
1142 filename = aw.getFileName() |
1176 line, index, line1, index1 = aw.getSelection() |
1143 line, index, line1, index1 = aw.getSelection() |
1177 offset = self.__getOffset(aw, line, index) |
1144 offset = self.__getOffset(aw, line, index) |
1178 |
1145 |
|
1146 import rope.refactor.inline |
1179 resource = rope.base.libutils.path_to_resource( |
1147 resource = rope.base.libutils.path_to_resource( |
1180 self.__project, filename) |
1148 self.__project, filename) |
1181 try: |
1149 try: |
1182 inliner = rope.refactor.inline.create_inline( |
1150 inliner = rope.refactor.inline.create_inline( |
1183 self.__project, resource, offset) |
1151 self.__project, resource, offset) |
1184 except Exception as err: |
1152 except Exception as err: |
1185 self.handleRopeError(err, title) |
1153 self.handleRopeError(err, title) |
1186 return |
1154 return |
1187 |
1155 |
|
1156 from InlineDialog import InlineDialog |
1188 self.dlg = InlineDialog(self, title, inliner, parent=self.__ui) |
1157 self.dlg = InlineDialog(self, title, inliner, parent=self.__ui) |
1189 self.dlg.show() |
1158 self.dlg.show() |
1190 |
1159 |
1191 ##################################################### |
1160 ##################################################### |
1192 ## Move refactorings |
1161 ## Move refactorings |
1214 |
1183 |
1215 filename = aw.getFileName() |
1184 filename = aw.getFileName() |
1216 line, index, line1, index1 = aw.getSelection() |
1185 line, index, line1, index1 = aw.getSelection() |
1217 offset = self.__getOffset(aw, line, index) |
1186 offset = self.__getOffset(aw, line, index) |
1218 |
1187 |
|
1188 import rope.refactor.move |
1219 resource = rope.base.libutils.path_to_resource( |
1189 resource = rope.base.libutils.path_to_resource( |
1220 self.__project, filename) |
1190 self.__project, filename) |
1221 try: |
1191 try: |
1222 mover = rope.refactor.move.create_move( |
1192 mover = rope.refactor.move.create_move( |
1223 self.__project, resource, offset) |
1193 self.__project, resource, offset) |
1224 except Exception as err: |
1194 except Exception as err: |
1225 self.handleRopeError(err, title) |
1195 self.handleRopeError(err, title) |
1226 return |
1196 return |
1227 |
1197 |
1228 if isinstance(mover, rope.refactor.move.MoveGlobal): |
1198 if isinstance(mover, rope.refactor.move.MoveGlobal): |
|
1199 from MoveGlobalMethodDialog import MoveGlobalMethodDialog |
1229 self.dlg = MoveGlobalMethodDialog(self, title, mover, |
1200 self.dlg = MoveGlobalMethodDialog(self, title, mover, |
1230 self.__project, parent=self.__ui) |
1201 self.__project, parent=self.__ui) |
1231 else: |
1202 else: |
|
1203 from MoveMethodDialog import MoveMethodDialog |
1232 self.dlg = MoveMethodDialog(self, title, mover, parent=self.__ui) |
1204 self.dlg = MoveMethodDialog(self, title, mover, parent=self.__ui) |
1233 self.dlg.show() |
1205 self.dlg.show() |
1234 |
1206 |
1235 def __moveModule(self): |
1207 def __moveModule(self): |
1236 """ |
1208 """ |
1247 return |
1219 return |
1248 |
1220 |
1249 filename = aw.getFileName() |
1221 filename = aw.getFileName() |
1250 offset = None |
1222 offset = None |
1251 |
1223 |
|
1224 import rope.refactor.move |
1252 resource = rope.base.libutils.path_to_resource( |
1225 resource = rope.base.libutils.path_to_resource( |
1253 self.__project, filename) |
1226 self.__project, filename) |
1254 try: |
1227 try: |
1255 mover = rope.refactor.move.create_move( |
1228 mover = rope.refactor.move.create_move( |
1256 self.__project, resource, offset) |
1229 self.__project, resource, offset) |
1257 except Exception as err: |
1230 except Exception as err: |
1258 self.handleRopeError(err, title) |
1231 self.handleRopeError(err, title) |
1259 return |
1232 return |
1260 |
1233 |
|
1234 from MoveModuleDialog import MoveModuleDialog |
1261 self.dlg = MoveModuleDialog(self, title, mover, parent=self.__ui) |
1235 self.dlg = MoveModuleDialog(self, title, mover, parent=self.__ui) |
1262 self.dlg.show() |
1236 self.dlg.show() |
1263 |
1237 |
1264 ##################################################### |
1238 ##################################################### |
1265 ## Use function refactoring |
1239 ## Use function refactoring |
1286 |
1260 |
1287 filename = aw.getFileName() |
1261 filename = aw.getFileName() |
1288 line, index, line1, index1 = aw.getSelection() |
1262 line, index, line1, index1 = aw.getSelection() |
1289 offset = self.__getOffset(aw, line, index) |
1263 offset = self.__getOffset(aw, line, index) |
1290 |
1264 |
|
1265 import rope.refactor.usefunction |
1291 resource = rope.base.libutils.path_to_resource( |
1266 resource = rope.base.libutils.path_to_resource( |
1292 self.__project, filename) |
1267 self.__project, filename) |
1293 try: |
1268 try: |
1294 user = rope.refactor.usefunction.UseFunction( |
1269 user = rope.refactor.usefunction.UseFunction( |
1295 self.__project, resource, offset) |
1270 self.__project, resource, offset) |
1296 except Exception as err: |
1271 except Exception as err: |
1297 self.handleRopeError(err, title) |
1272 self.handleRopeError(err, title) |
1298 return |
1273 return |
1299 |
1274 |
|
1275 from UseFunctionDialog import UseFunctionDialog |
1300 self.dlg = UseFunctionDialog(self, title, user, parent=self.__ui) |
1276 self.dlg = UseFunctionDialog(self, title, user, parent=self.__ui) |
1301 self.dlg.show() |
1277 self.dlg.show() |
1302 |
1278 |
1303 ##################################################### |
1279 ##################################################### |
1304 ## Introduce refactorings |
1280 ## Introduce refactorings |
1326 |
1302 |
1327 filename = aw.getFileName() |
1303 filename = aw.getFileName() |
1328 line, index, line1, index1 = aw.getSelection() |
1304 line, index, line1, index1 = aw.getSelection() |
1329 offset = self.__getOffset(aw, line, index) |
1305 offset = self.__getOffset(aw, line, index) |
1330 |
1306 |
|
1307 import rope.refactor.introduce_factory |
1331 resource = rope.base.libutils.path_to_resource( |
1308 resource = rope.base.libutils.path_to_resource( |
1332 self.__project, filename) |
1309 self.__project, filename) |
1333 try: |
1310 try: |
1334 introducer = \ |
1311 introducer = \ |
1335 rope.refactor.introduce_factory.IntroduceFactoryRefactoring( |
1312 rope.refactor.introduce_factory.IntroduceFactoryRefactoring( |
1336 self.__project, resource, offset) |
1313 self.__project, resource, offset) |
1337 except Exception as err: |
1314 except Exception as err: |
1338 self.handleRopeError(err, title) |
1315 self.handleRopeError(err, title) |
1339 return |
1316 return |
1340 |
1317 |
|
1318 from IntroduceFactoryDialog import IntroduceFactoryDialog |
1341 self.dlg = IntroduceFactoryDialog(self, title, introducer, |
1319 self.dlg = IntroduceFactoryDialog(self, title, introducer, |
1342 parent=self.__ui) |
1320 parent=self.__ui) |
1343 self.dlg.show() |
1321 self.dlg.show() |
1344 |
1322 |
1345 def __introduceParameter(self): |
1323 def __introduceParameter(self): |
1364 |
1342 |
1365 filename = aw.getFileName() |
1343 filename = aw.getFileName() |
1366 line, index, line1, index1 = aw.getSelection() |
1344 line, index, line1, index1 = aw.getSelection() |
1367 offset = self.__getOffset(aw, line, index) |
1345 offset = self.__getOffset(aw, line, index) |
1368 |
1346 |
|
1347 import rope.refactor.introduce_parameter |
1369 resource = rope.base.libutils.path_to_resource( |
1348 resource = rope.base.libutils.path_to_resource( |
1370 self.__project, filename) |
1349 self.__project, filename) |
1371 try: |
1350 try: |
1372 introducer = rope.refactor.introduce_parameter.IntroduceParameter( |
1351 introducer = rope.refactor.introduce_parameter.IntroduceParameter( |
1373 self.__project, resource, offset) |
1352 self.__project, resource, offset) |
1374 except Exception as err: |
1353 except Exception as err: |
1375 self.handleRopeError(err, title) |
1354 self.handleRopeError(err, title) |
1376 return |
1355 return |
1377 |
1356 |
|
1357 from IntroduceParameterDialog import IntroduceParameterDialog |
1378 self.dlg = IntroduceParameterDialog(self, title, introducer, |
1358 self.dlg = IntroduceParameterDialog(self, title, introducer, |
1379 parent=self.__ui) |
1359 parent=self.__ui) |
1380 self.dlg.show() |
1360 self.dlg.show() |
1381 |
1361 |
1382 ##################################################### |
1362 ##################################################### |
1385 |
1365 |
1386 def __importsOrganize(self): |
1366 def __importsOrganize(self): |
1387 """ |
1367 """ |
1388 Private slot to organize imports. |
1368 Private slot to organize imports. |
1389 """ |
1369 """ |
|
1370 from rope.refactor.importutils import ImportOrganizer |
1390 self.__doImports(self.trUtf8("Organize Imports"), |
1371 self.__doImports(self.trUtf8("Organize Imports"), |
1391 ImportOrganizer.organize_imports) |
1372 ImportOrganizer.organize_imports) |
1392 |
1373 |
1393 def __importsExpandStar(self): |
1374 def __importsExpandStar(self): |
1394 """ |
1375 """ |
1395 Private slot to expand star imports. |
1376 Private slot to expand star imports. |
1396 """ |
1377 """ |
|
1378 from rope.refactor.importutils import ImportOrganizer |
1397 self.__doImports(self.trUtf8("Expand Star Imports"), |
1379 self.__doImports(self.trUtf8("Expand Star Imports"), |
1398 ImportOrganizer.expand_star_imports) |
1380 ImportOrganizer.expand_star_imports) |
1399 |
1381 |
1400 def __importsRelativeToAbsolute(self): |
1382 def __importsRelativeToAbsolute(self): |
1401 """ |
1383 """ |
1402 Private slot to transform relative to absolute imports. |
1384 Private slot to transform relative to absolute imports. |
1403 """ |
1385 """ |
|
1386 from rope.refactor.importutils import ImportOrganizer |
1404 self.__doImports(self.trUtf8("Relative to Absolute"), |
1387 self.__doImports(self.trUtf8("Relative to Absolute"), |
1405 ImportOrganizer.relatives_to_absolutes) |
1388 ImportOrganizer.relatives_to_absolutes) |
1406 |
1389 |
1407 def __importsFromToImport(self): |
1390 def __importsFromToImport(self): |
1408 """ |
1391 """ |
1409 Private slot to transform from imports to plain imports. |
1392 Private slot to transform from imports to plain imports. |
1410 """ |
1393 """ |
|
1394 from rope.refactor.importutils import ImportOrganizer |
1411 self.__doImports(self.trUtf8("Froms to Imports"), |
1395 self.__doImports(self.trUtf8("Froms to Imports"), |
1412 ImportOrganizer.froms_to_imports) |
1396 ImportOrganizer.froms_to_imports) |
1413 |
1397 |
1414 def __importsHandleLong(self): |
1398 def __importsHandleLong(self): |
1415 """ |
1399 """ |
1416 Private slot to handle long imports. |
1400 Private slot to handle long imports. |
1417 """ |
1401 """ |
|
1402 from rope.refactor.importutils import ImportOrganizer |
1418 self.__doImports(self.trUtf8("Handle Long Imports"), |
1403 self.__doImports(self.trUtf8("Handle Long Imports"), |
1419 ImportOrganizer.handle_long_imports) |
1404 ImportOrganizer.handle_long_imports) |
1420 |
1405 |
1421 def __doImports(self, title, method): |
1406 def __doImports(self, title, method): |
1422 """ |
1407 """ |
1435 line, index, line1, index1 = aw.getSelection() |
1420 line, index, line1, index1 = aw.getSelection() |
1436 offset = self.__getOffset(aw, line, index) |
1421 offset = self.__getOffset(aw, line, index) |
1437 else: |
1422 else: |
1438 offset = None |
1423 offset = None |
1439 |
1424 |
|
1425 from rope.refactor.importutils import ImportOrganizer |
1440 importOrganizer = ImportOrganizer(self.__project) |
1426 importOrganizer = ImportOrganizer(self.__project) |
1441 resource = rope.base.libutils.path_to_resource( |
1427 resource = rope.base.libutils.path_to_resource( |
1442 self.__project, filename) |
1428 self.__project, filename) |
1443 try: |
1429 try: |
1444 changes = method(importOrganizer, resource, offset=offset) |
1430 changes = method(importOrganizer, resource, offset=offset) |
1445 if changes is not None: |
1431 if changes is not None: |
|
1432 from ConfirmationDialog import ConfirmationDialog |
1446 dlg = ConfirmationDialog(changes, self.__ui) |
1433 dlg = ConfirmationDialog(changes, self.__ui) |
1447 if dlg.exec_() == QDialog.Accepted: |
1434 if dlg.exec_() == QDialog.Accepted: |
1448 self.__project.do(changes) |
1435 self.__project.do(changes) |
1449 self.refreshEditors(changes) |
1436 self.refreshEditors(changes) |
1450 if self.__e5project.isDirty(): |
1437 if self.__e5project.isDirty(): |
1490 |
1478 |
1491 filename = aw.getFileName() |
1479 filename = aw.getFileName() |
1492 line, index, line1, index1 = aw.getSelection() |
1480 line, index, line1, index1 = aw.getSelection() |
1493 offset = self.__getOffset(aw, line, index) |
1481 offset = self.__getOffset(aw, line, index) |
1494 |
1482 |
|
1483 import rope.refactor.change_signature |
1495 resource = rope.base.libutils.path_to_resource( |
1484 resource = rope.base.libutils.path_to_resource( |
1496 self.__project, filename) |
1485 self.__project, filename) |
1497 try: |
1486 try: |
1498 changer = rope.refactor.change_signature.ChangeSignature( |
1487 changer = rope.refactor.change_signature.ChangeSignature( |
1499 self.__project, resource, offset) |
1488 self.__project, resource, offset) |
1500 except Exception as err: |
1489 except Exception as err: |
1501 self.handleRopeError(err, title) |
1490 self.handleRopeError(err, title) |
1502 return |
1491 return |
1503 |
1492 |
|
1493 from ChangeSignatureDialog import ChangeSignatureDialog |
1504 self.dlg = ChangeSignatureDialog(self, title, changer, |
1494 self.dlg = ChangeSignatureDialog(self, title, changer, |
1505 parent=self.__ui) |
1495 parent=self.__ui) |
1506 self.dlg.show() |
1496 self.dlg.show() |
1507 |
1497 |
1508 def __inlineArgumentDefault(self): |
1498 def __inlineArgumentDefault(self): |
1528 |
1518 |
1529 filename = aw.getFileName() |
1519 filename = aw.getFileName() |
1530 line, index, line1, index1 = aw.getSelection() |
1520 line, index, line1, index1 = aw.getSelection() |
1531 offset = self.__getOffset(aw, line, index) |
1521 offset = self.__getOffset(aw, line, index) |
1532 |
1522 |
|
1523 import rope.refactor.change_signature |
1533 resource = rope.base.libutils.path_to_resource( |
1524 resource = rope.base.libutils.path_to_resource( |
1534 self.__project, filename) |
1525 self.__project, filename) |
1535 try: |
1526 try: |
1536 changer = rope.refactor.change_signature.ChangeSignature( |
1527 changer = rope.refactor.change_signature.ChangeSignature( |
1537 self.__project, resource, offset) |
1528 self.__project, resource, offset) |
1538 except Exception as err: |
1529 except Exception as err: |
1539 self.handleRopeError(err, title) |
1530 self.handleRopeError(err, title) |
1540 return |
1531 return |
1541 |
1532 |
|
1533 from InlineArgumentDefaultDialog import InlineArgumentDefaultDialog |
1542 self.dlg = InlineArgumentDefaultDialog(self, title, changer, |
1534 self.dlg = InlineArgumentDefaultDialog(self, title, changer, |
1543 parent=self.__ui) |
1535 parent=self.__ui) |
1544 self.dlg.show() |
1536 self.dlg.show() |
1545 |
1537 |
1546 def __transformModuleToPackage(self): |
1538 def __transformModuleToPackage(self): |
1557 if not self.confirmAllBuffersSaved(): |
1549 if not self.confirmAllBuffersSaved(): |
1558 return |
1550 return |
1559 |
1551 |
1560 filename = aw.getFileName() |
1552 filename = aw.getFileName() |
1561 |
1553 |
|
1554 import rope.refactor.topackage |
1562 resource = rope.base.libutils.path_to_resource( |
1555 resource = rope.base.libutils.path_to_resource( |
1563 self.__project, filename) |
1556 self.__project, filename) |
1564 try: |
1557 try: |
1565 changes = rope.refactor.topackage.ModuleToPackage( |
1558 changes = rope.refactor.topackage.ModuleToPackage( |
1566 self.__project, resource).get_changes() |
1559 self.__project, resource).get_changes() |
1593 |
1586 |
1594 filename = aw.getFileName() |
1587 filename = aw.getFileName() |
1595 line, index, line1, index1 = aw.getSelection() |
1588 line, index, line1, index1 = aw.getSelection() |
1596 offset = self.__getOffset(aw, line, index) |
1589 offset = self.__getOffset(aw, line, index) |
1597 |
1590 |
|
1591 import rope.refactor.encapsulate_field |
1598 resource = rope.base.libutils.path_to_resource( |
1592 resource = rope.base.libutils.path_to_resource( |
1599 self.__project, filename) |
1593 self.__project, filename) |
1600 |
|
1601 try: |
1594 try: |
1602 encapsulateField = \ |
1595 encapsulateField = \ |
1603 rope.refactor.encapsulate_field.EncapsulateField( |
1596 rope.refactor.encapsulate_field.EncapsulateField( |
1604 self.__project, resource, offset) |
1597 self.__project, resource, offset) |
1605 except Exception as err: |
1598 except Exception as err: |
1606 self.handleRopeError(err, title) |
1599 self.handleRopeError(err, title) |
1607 return |
1600 return |
1608 |
1601 |
|
1602 from GetterSetterDialog import GetterSetterDialog |
1609 dlg = GetterSetterDialog(encapsulateField.get_field_name()) |
1603 dlg = GetterSetterDialog(encapsulateField.get_field_name()) |
1610 if dlg.exec_() == QDialog.Accepted: |
1604 if dlg.exec_() == QDialog.Accepted: |
|
1605 from ProgressHandle import ProgressHandle |
|
1606 from ConfirmationDialog import ConfirmationDialog |
1611 getter, setter = dlg.getData() |
1607 getter, setter = dlg.getData() |
1612 handle = ProgressHandle(title, False, self.__ui) |
1608 handle = ProgressHandle(title, False, self.__ui) |
1613 handle.show() |
1609 handle.show() |
1614 QApplication.processEvents() |
1610 QApplication.processEvents() |
1615 try: |
1611 try: |
1647 |
1643 |
1648 filename = aw.getFileName() |
1644 filename = aw.getFileName() |
1649 line, index, line1, index1 = aw.getSelection() |
1645 line, index, line1, index1 = aw.getSelection() |
1650 offset = self.__getOffset(aw, line, index) |
1646 offset = self.__getOffset(aw, line, index) |
1651 |
1647 |
|
1648 import rope.refactor.localtofield |
|
1649 from ConfirmationDialog import ConfirmationDialog |
1652 resource = rope.base.libutils.path_to_resource( |
1650 resource = rope.base.libutils.path_to_resource( |
1653 self.__project, filename) |
1651 self.__project, filename) |
1654 try: |
1652 try: |
1655 changes = rope.refactor.localtofield.LocalToField( |
1653 changes = rope.refactor.localtofield.LocalToField( |
1656 self.__project, resource, offset).get_changes() |
1654 self.__project, resource, offset).get_changes() |
1685 |
1683 |
1686 filename = aw.getFileName() |
1684 filename = aw.getFileName() |
1687 line, index, line1, index1 = aw.getSelection() |
1685 line, index, line1, index1 = aw.getSelection() |
1688 offset = self.__getOffset(aw, line, index) |
1686 offset = self.__getOffset(aw, line, index) |
1689 |
1687 |
|
1688 import rope.refactor.method_object |
1690 resource = rope.base.libutils.path_to_resource( |
1689 resource = rope.base.libutils.path_to_resource( |
1691 self.__project, filename) |
1690 self.__project, filename) |
1692 try: |
1691 try: |
1693 converter = rope.refactor.method_object.MethodObject( |
1692 converter = rope.refactor.method_object.MethodObject( |
1694 self.__project, resource, offset) |
1693 self.__project, resource, offset) |
1695 except Exception as err: |
1694 except Exception as err: |
1696 self.handleRopeError(err, title) |
1695 self.handleRopeError(err, title) |
1697 return |
1696 return |
1698 |
1697 |
|
1698 from MethodToMethodObjectDialog import MethodToMethodObjectDialog |
1699 self.dlg = MethodToMethodObjectDialog(self, title, converter, |
1699 self.dlg = MethodToMethodObjectDialog(self, title, converter, |
1700 parent=self.__ui) |
1700 parent=self.__ui) |
1701 self.dlg.show() |
1701 self.dlg.show() |
1702 |
1702 |
1703 ##################################################### |
1703 ##################################################### |
1770 |
1772 |
1771 def __showProjectUndoHistory(self): |
1773 def __showProjectUndoHistory(self): |
1772 """ |
1774 """ |
1773 Private method to show list of changes available for an undo operation. |
1775 Private method to show list of changes available for an undo operation. |
1774 """ |
1776 """ |
|
1777 from HistoryDialog import HistoryDialog |
1775 undoList = list(reversed(self.__project.history.undo_list)) |
1778 undoList = list(reversed(self.__project.history.undo_list)) |
1776 self.dlg = HistoryDialog(self, undoList, True, self.__ui) |
1779 self.dlg = HistoryDialog(self, undoList, True, self.__ui) |
1777 self.dlg.show() |
1780 self.dlg.show() |
1778 |
1781 |
1779 def __showProjectRedoHistory(self): |
1782 def __showProjectRedoHistory(self): |
1780 """ |
1783 """ |
1781 Private method to show list of changes available for a redo operation. |
1784 Private method to show list of changes available for a redo operation. |
1782 """ |
1785 """ |
|
1786 from HistoryDialog import HistoryDialog |
1783 redoList = self.__project.history.redo_list |
1787 redoList = self.__project.history.redo_list |
1784 self.dlg = HistoryDialog(self, redoList, False, self.__ui) |
1788 self.dlg = HistoryDialog(self, redoList, False, self.__ui) |
1785 self.dlg.show() |
1789 self.dlg.show() |
1786 |
1790 |
1787 def __showFileUndoHistory(self): |
1791 def __showFileUndoHistory(self): |
1792 aw = e5App().getObject("ViewManager").activeWindow() |
1796 aw = e5App().getObject("ViewManager").activeWindow() |
1793 |
1797 |
1794 if aw is None: |
1798 if aw is None: |
1795 return |
1799 return |
1796 |
1800 |
|
1801 from HistoryDialog import HistoryDialog |
1797 filename = aw.getFileName() |
1802 filename = aw.getFileName() |
1798 resource = rope.base.libutils.path_to_resource( |
1803 resource = rope.base.libutils.path_to_resource( |
1799 self.__project, filename) |
1804 self.__project, filename) |
1800 undoList = list(reversed(self.__getFileUndoList(resource))) |
1805 undoList = list(reversed(self.__getFileUndoList(resource))) |
1801 self.dlg = HistoryDialog(self, undoList, True, self.__ui) |
1806 self.dlg = HistoryDialog(self, undoList, True, self.__ui) |
1809 aw = e5App().getObject("ViewManager").activeWindow() |
1814 aw = e5App().getObject("ViewManager").activeWindow() |
1810 |
1815 |
1811 if aw is None: |
1816 if aw is None: |
1812 return |
1817 return |
1813 |
1818 |
|
1819 from HistoryDialog import HistoryDialog |
1814 filename = aw.getFileName() |
1820 filename = aw.getFileName() |
1815 resource = rope.base.libutils.path_to_resource( |
1821 resource = rope.base.libutils.path_to_resource( |
1816 self.__project, filename) |
1822 self.__project, filename) |
1817 redoList = self.__getFileRedoList(resource) |
1823 redoList = self.__getFileRedoList(resource) |
1818 self.dlg = HistoryDialog(self, redoList, False, self.__ui) |
1824 self.dlg = HistoryDialog(self, redoList, False, self.__ui) |
1859 |
1865 |
1860 filename = aw.getFileName() |
1866 filename = aw.getFileName() |
1861 line, index, line1, index1 = aw.getSelection() |
1867 line, index, line1, index1 = aw.getSelection() |
1862 offset = self.__getOffset(aw, line, index) |
1868 offset = self.__getOffset(aw, line, index) |
1863 |
1869 |
|
1870 import rope.contrib.findit |
|
1871 from ProgressHandle import ProgressHandle |
1864 resource = rope.base.libutils.path_to_resource( |
1872 resource = rope.base.libutils.path_to_resource( |
1865 self.__project, filename) |
1873 self.__project, filename) |
1866 handle = ProgressHandle(title, True, self.__ui) |
1874 handle = ProgressHandle(title, True, self.__ui) |
1867 handle.show() |
1875 handle.show() |
1868 QApplication.processEvents() |
1876 QApplication.processEvents() |
1874 self.handleRopeError(err, title, handle) |
1882 self.handleRopeError(err, title, handle) |
1875 return |
1883 return |
1876 handle.reset() |
1884 handle.reset() |
1877 |
1885 |
1878 if occurrences: |
1886 if occurrences: |
|
1887 from MatchesDialog import MatchesDialog |
1879 self.dlg = MatchesDialog(self.__ui, True) |
1888 self.dlg = MatchesDialog(self.__ui, True) |
1880 self.dlg.show() |
1889 self.dlg.show() |
1881 for occurrence in occurrences: |
1890 for occurrence in occurrences: |
1882 self.dlg.addEntry(occurrence.resource, |
1891 self.dlg.addEntry(occurrence.resource, |
1883 occurrence.lineno, occurrence.unsure) |
1892 occurrence.lineno, occurrence.unsure) |
1908 |
1917 |
1909 filename = aw.getFileName() |
1918 filename = aw.getFileName() |
1910 line, index, line1, index1 = aw.getSelection() |
1919 line, index, line1, index1 = aw.getSelection() |
1911 offset = self.__getOffset(aw, line, index) |
1920 offset = self.__getOffset(aw, line, index) |
1912 |
1921 |
|
1922 import rope.contrib.findit |
1913 resource = rope.base.libutils.path_to_resource( |
1923 resource = rope.base.libutils.path_to_resource( |
1914 self.__project, filename) |
1924 self.__project, filename) |
1915 try: |
1925 try: |
1916 location = rope.contrib.findit.find_definition( |
1926 location = rope.contrib.findit.find_definition( |
1917 self.__project, aw.text(), offset, resource) |
1927 self.__project, aw.text(), offset, resource) |
1918 except Exception as err: |
1928 except Exception as err: |
1919 self.handleRopeError(err, title) |
1929 self.handleRopeError(err, title) |
1920 return |
1930 return |
1921 |
1931 |
1922 if location is not None: |
1932 if location is not None: |
|
1933 from MatchesDialog import MatchesDialog |
1923 self.dlg = MatchesDialog(self.__ui, False) |
1934 self.dlg = MatchesDialog(self.__ui, False) |
1924 self.dlg.show() |
1935 self.dlg.show() |
1925 self.dlg.addEntry(location.resource, location.lineno) |
1936 self.dlg.addEntry(location.resource, location.lineno) |
1926 else: |
1937 else: |
1927 QMessageBox.warning(self.__ui, title, |
1938 QMessageBox.warning(self.__ui, title, |
1949 |
1960 |
1950 filename = aw.getFileName() |
1961 filename = aw.getFileName() |
1951 line, index, line1, index1 = aw.getSelection() |
1962 line, index, line1, index1 = aw.getSelection() |
1952 offset = self.__getOffset(aw, line, index) |
1963 offset = self.__getOffset(aw, line, index) |
1953 |
1964 |
|
1965 import rope.contrib.findit |
|
1966 from ProgressHandle import ProgressHandle |
1954 resource = rope.base.libutils.path_to_resource(self.__project, |
1967 resource = rope.base.libutils.path_to_resource(self.__project, |
1955 filename) |
1968 filename) |
1956 handle = ProgressHandle(title, True, self.__ui) |
1969 handle = ProgressHandle(title, True, self.__ui) |
1957 handle.show() |
1970 handle.show() |
1958 QApplication.processEvents() |
1971 QApplication.processEvents() |
1963 self.handleRopeError(err, title, handle) |
1976 self.handleRopeError(err, title, handle) |
1964 return |
1977 return |
1965 handle.reset() |
1978 handle.reset() |
1966 |
1979 |
1967 if occurrences: |
1980 if occurrences: |
|
1981 from MatchesDialog import MatchesDialog |
1968 self.dlg = MatchesDialog(self.__ui, True) |
1982 self.dlg = MatchesDialog(self.__ui, True) |
1969 self.dlg.show() |
1983 self.dlg.show() |
1970 for occurrence in occurrences: |
1984 for occurrence in occurrences: |
1971 self.dlg.addEntry(occurrence.resource, |
1985 self.dlg.addEntry(occurrence.resource, |
1972 occurrence.lineno, occurrence.unsure) |
1986 occurrence.lineno, occurrence.unsure) |
1985 ropedir = self.__project.ropefolder |
1999 ropedir = self.__project.ropefolder |
1986 configfile = "" |
2000 configfile = "" |
1987 if ropedir is not None: |
2001 if ropedir is not None: |
1988 configfile = os.path.join(ropedir.real_path, "config.py") |
2002 configfile = os.path.join(ropedir.real_path, "config.py") |
1989 if os.path.exists(configfile): |
2003 if os.path.exists(configfile): |
|
2004 from QScintilla.MiniEditor import MiniEditor |
1990 self.__editor = MiniEditor(configfile) |
2005 self.__editor = MiniEditor(configfile) |
1991 self.__editor.show() |
2006 self.__editor.show() |
1992 self.__editor.editorSaved.connect(self.__configChanged) |
2007 self.__editor.editorSaved.connect(self.__configChanged) |
1993 else: |
2008 else: |
1994 QMessageBox.critical(self.__ui, |
2009 QMessageBox.critical(self.__ui, |
2032 def __showRopeHelp(self): |
2047 def __showRopeHelp(self): |
2033 """ |
2048 """ |
2034 Private slot to show help about the refactorings offered by Rope. |
2049 Private slot to show help about the refactorings offered by Rope. |
2035 """ |
2050 """ |
2036 if self.__helpDialog is None: |
2051 if self.__helpDialog is None: |
|
2052 from HelpDialog import HelpDialog |
2037 helpfile = os.path.join(os.path.dirname(__file__), |
2053 helpfile = os.path.join(os.path.dirname(__file__), |
2038 "rope", "docs", "overview.txt") |
2054 "rope", "docs", "overview.txt") |
2039 self.__helpDialog = \ |
2055 self.__helpDialog = \ |
2040 HelpDialog(self.trUtf8("Help about rope refactorings"), |
2056 HelpDialog(self.trUtf8("Help about rope refactorings"), |
2041 helpfile) |
2057 helpfile) |
2053 QMessageBox.StandardButtons(\ |
2069 QMessageBox.StandardButtons(\ |
2054 QMessageBox.No | \ |
2070 QMessageBox.No | \ |
2055 QMessageBox.Yes), |
2071 QMessageBox.Yes), |
2056 QMessageBox.No) |
2072 QMessageBox.No) |
2057 if res == QMessageBox.Yes: |
2073 if res == QMessageBox.Yes: |
|
2074 from ProgressHandle import ProgressHandle |
2058 handle = ProgressHandle(title, True, self.__ui) |
2075 handle = ProgressHandle(title, True, self.__ui) |
2059 handle.show() |
2076 handle.show() |
2060 QApplication.processEvents() |
2077 QApplication.processEvents() |
2061 try: |
2078 try: |
2062 rope.base.libutils.analyze_modules(self.__project, |
2079 rope.base.libutils.analyze_modules(self.__project, |
2090 |
2107 |
2091 def __configChanged(self): |
2108 def __configChanged(self): |
2092 """ |
2109 """ |
2093 Private slot called, when the rope config file has changed. |
2110 Private slot called, when the rope config file has changed. |
2094 """ |
2111 """ |
|
2112 import rope.base.project |
2095 self.__project.close() |
2113 self.__project.close() |
2096 self.__project = rope.base.project.Project(self.__projectpath, |
2114 self.__project = rope.base.project.Project(self.__projectpath, |
2097 fscommands=self.__fsCommands) |
2115 fscommands=self.__fsCommands) |
2098 |
2116 |
2099 def __defaultConfig(self): |
2117 def __defaultConfig(self): |
2130 self.__projectopen = True |
2148 self.__projectopen = True |
2131 self.__projectpath = self.__e5project.getProjectPath() |
2149 self.__projectpath = self.__e5project.getProjectPath() |
2132 self.__projectLanguage = self.__e5project.getProjectLanguage() |
2150 self.__projectLanguage = self.__e5project.getProjectLanguage() |
2133 |
2151 |
2134 if self.__projectLanguage in ["Python3"]: |
2152 if self.__projectLanguage in ["Python3"]: |
|
2153 import rope.base.project |
2135 self.__project = rope.base.project.Project(self.__projectpath, |
2154 self.__project = rope.base.project.Project(self.__projectpath, |
2136 fscommands=self.__fsCommands) |
2155 fscommands=self.__fsCommands) |
2137 for act in self.actions: |
2156 for act in self.actions: |
2138 act.setEnabled(True) |
2157 act.setEnabled(True) |
2139 |
2158 |