32 |
32 |
33 import rope.contrib.findit |
33 import rope.contrib.findit |
34 |
34 |
35 from PyQt4.QtCore import QObject |
35 from PyQt4.QtCore import QObject |
36 from PyQt4.QtGui import QMenu, QApplication, QMessageBox, QDialog, QAction |
36 from PyQt4.QtGui import QMenu, QApplication, QMessageBox, QDialog, QAction |
|
37 from PyQt4.Qsci import QsciScintilla |
37 |
38 |
38 from E5Gui.E5Application import e5App |
39 from E5Gui.E5Application import e5App |
39 |
40 |
40 from E5Gui.E5Action import E5Action |
41 from E5Gui.E5Action import E5Action |
41 |
42 |
941 err.filename), |
942 err.filename), |
942 err.lineno) |
943 err.lineno) |
943 else: |
944 else: |
944 QMessageBox.warning(self.__ui, title, |
945 QMessageBox.warning(self.__ui, title, |
945 self.trUtf8("Rope error: {0}").format(str(err))) |
946 self.trUtf8("Rope error: {0}").format(str(err))) |
|
947 |
|
948 def __getOffset(self, editor, line, index): |
|
949 """ |
|
950 Private method to get the offset into the text treating CRLF as ONE character. |
|
951 |
|
952 Note: rope seems to convert all EOL styles to just \n. |
|
953 |
|
954 @param editor reference to the editor (Editor) |
|
955 @param line line for the offset (integer) |
|
956 @param index index into line for the offset (integer) |
|
957 @return rope compliant offset into the file (integer) |
|
958 """ |
|
959 offset = editor.positionFromLineIndex(line, index) |
|
960 if editor.eolMode() == QsciScintilla.EolWindows: |
|
961 offset -= line |
|
962 return offset |
946 |
963 |
947 ################################################################## |
964 ################################################################## |
948 ## slots below implement the various refactorings |
965 ## slots below implement the various refactorings |
949 ################################################################## |
966 ################################################################## |
950 |
967 |
1011 self.trUtf8("The selection must not extend beyond" |
1028 self.trUtf8("The selection must not extend beyond" |
1012 " one line.")) |
1029 " one line.")) |
1013 return |
1030 return |
1014 index = int(index + (index1 - index) / 2) |
1031 index = int(index + (index1 - index) / 2) |
1015 # keep it inside the object |
1032 # keep it inside the object |
1016 offset = aw.positionFromLineIndex(line, index) |
1033 offset = self.__getOffset(aw, line, index) |
1017 |
1034 |
1018 resource = rope.base.libutils.path_to_resource( |
1035 resource = rope.base.libutils.path_to_resource( |
1019 self.__project, filename) |
1036 self.__project, filename) |
1020 try: |
1037 try: |
1021 renamer = rope.refactor.rename.Rename( |
1038 renamer = rope.refactor.rename.Rename( |
1052 if not self.confirmBufferIsSaved(aw): |
1069 if not self.confirmBufferIsSaved(aw): |
1053 return |
1070 return |
1054 |
1071 |
1055 filename = aw.getFileName() |
1072 filename = aw.getFileName() |
1056 line, index, line1, index1 = aw.getSelection() |
1073 line, index, line1, index1 = aw.getSelection() |
1057 offset = aw.positionFromLineIndex(line, index) |
1074 offset = self.__getOffset(aw, line, index) |
1058 |
1075 |
1059 resource = rope.base.libutils.path_to_resource( |
1076 resource = rope.base.libutils.path_to_resource( |
1060 self.__project, filename) |
1077 self.__project, filename) |
1061 try: |
1078 try: |
1062 renamer = rope.refactor.rename.ChangeOccurrences( |
1079 renamer = rope.refactor.rename.ChangeOccurrences( |
1108 if not self.confirmBufferIsSaved(aw): |
1125 if not self.confirmBufferIsSaved(aw): |
1109 return |
1126 return |
1110 |
1127 |
1111 filename = aw.getFileName() |
1128 filename = aw.getFileName() |
1112 startline, startcolumn, endline, endcolumn = aw.getSelection() |
1129 startline, startcolumn, endline, endcolumn = aw.getSelection() |
1113 startOffset = aw.positionFromLineIndex(startline, startcolumn) |
1130 startOffset = self.__getOffset(aw, startline, startcolumn) |
1114 endOffset = aw.positionFromLineIndex(endline, endcolumn) |
1131 endOffset = self.__getOffset(aw, endline, endcolumn) |
1115 |
1132 |
1116 resource = rope.base.libutils.path_to_resource( |
1133 resource = rope.base.libutils.path_to_resource( |
1117 self.__project, filename) |
1134 self.__project, filename) |
1118 try: |
1135 try: |
1119 if kind == "variable": |
1136 if kind == "variable": |
1155 if not self.confirmAllBuffersSaved(): |
1172 if not self.confirmAllBuffersSaved(): |
1156 return |
1173 return |
1157 |
1174 |
1158 filename = aw.getFileName() |
1175 filename = aw.getFileName() |
1159 line, index, line1, index1 = aw.getSelection() |
1176 line, index, line1, index1 = aw.getSelection() |
1160 offset = aw.positionFromLineIndex(line, index) |
1177 offset = self.__getOffset(aw, line, index) |
1161 |
1178 |
1162 resource = rope.base.libutils.path_to_resource( |
1179 resource = rope.base.libutils.path_to_resource( |
1163 self.__project, filename) |
1180 self.__project, filename) |
1164 try: |
1181 try: |
1165 inliner = rope.refactor.inline.create_inline( |
1182 inliner = rope.refactor.inline.create_inline( |
1195 if not self.confirmAllBuffersSaved(): |
1212 if not self.confirmAllBuffersSaved(): |
1196 return |
1213 return |
1197 |
1214 |
1198 filename = aw.getFileName() |
1215 filename = aw.getFileName() |
1199 line, index, line1, index1 = aw.getSelection() |
1216 line, index, line1, index1 = aw.getSelection() |
1200 offset = aw.positionFromLineIndex(line, index) |
1217 offset = self.__getOffset(aw, line, index) |
1201 |
1218 |
1202 resource = rope.base.libutils.path_to_resource( |
1219 resource = rope.base.libutils.path_to_resource( |
1203 self.__project, filename) |
1220 self.__project, filename) |
1204 try: |
1221 try: |
1205 mover = rope.refactor.move.create_move( |
1222 mover = rope.refactor.move.create_move( |
1267 if not self.confirmAllBuffersSaved(): |
1284 if not self.confirmAllBuffersSaved(): |
1268 return |
1285 return |
1269 |
1286 |
1270 filename = aw.getFileName() |
1287 filename = aw.getFileName() |
1271 line, index, line1, index1 = aw.getSelection() |
1288 line, index, line1, index1 = aw.getSelection() |
1272 offset = aw.positionFromLineIndex(line, index) |
1289 offset = self.__getOffset(aw, line, index) |
1273 |
1290 |
1274 resource = rope.base.libutils.path_to_resource( |
1291 resource = rope.base.libutils.path_to_resource( |
1275 self.__project, filename) |
1292 self.__project, filename) |
1276 try: |
1293 try: |
1277 user = rope.refactor.usefunction.UseFunction( |
1294 user = rope.refactor.usefunction.UseFunction( |
1307 if not self.confirmAllBuffersSaved(): |
1324 if not self.confirmAllBuffersSaved(): |
1308 return |
1325 return |
1309 |
1326 |
1310 filename = aw.getFileName() |
1327 filename = aw.getFileName() |
1311 line, index, line1, index1 = aw.getSelection() |
1328 line, index, line1, index1 = aw.getSelection() |
1312 offset = aw.positionFromLineIndex(line, index) |
1329 offset = self.__getOffset(aw, line, index) |
1313 |
1330 |
1314 resource = rope.base.libutils.path_to_resource( |
1331 resource = rope.base.libutils.path_to_resource( |
1315 self.__project, filename) |
1332 self.__project, filename) |
1316 try: |
1333 try: |
1317 introducer = \ |
1334 introducer = \ |
1345 if not self.confirmAllBuffersSaved(): |
1362 if not self.confirmAllBuffersSaved(): |
1346 return |
1363 return |
1347 |
1364 |
1348 filename = aw.getFileName() |
1365 filename = aw.getFileName() |
1349 line, index, line1, index1 = aw.getSelection() |
1366 line, index, line1, index1 = aw.getSelection() |
1350 offset = aw.positionFromLineIndex(line, index) |
1367 offset = self.__getOffset(aw, line, index) |
1351 |
1368 |
1352 resource = rope.base.libutils.path_to_resource( |
1369 resource = rope.base.libutils.path_to_resource( |
1353 self.__project, filename) |
1370 self.__project, filename) |
1354 try: |
1371 try: |
1355 introducer = rope.refactor.introduce_parameter.IntroduceParameter( |
1372 introducer = rope.refactor.introduce_parameter.IntroduceParameter( |
1414 return |
1431 return |
1415 |
1432 |
1416 filename = aw.getFileName() |
1433 filename = aw.getFileName() |
1417 if aw.hasSelectedText(): |
1434 if aw.hasSelectedText(): |
1418 line, index, line1, index1 = aw.getSelection() |
1435 line, index, line1, index1 = aw.getSelection() |
1419 offset = aw.positionFromLineIndex(line, index) |
1436 offset = self.__getOffset(aw, line, index) |
1420 else: |
1437 else: |
1421 offset = None |
1438 offset = None |
1422 |
1439 |
1423 importOrganizer = ImportOrganizer(self.__project) |
1440 importOrganizer = ImportOrganizer(self.__project) |
1424 resource = rope.base.libutils.path_to_resource( |
1441 resource = rope.base.libutils.path_to_resource( |
1471 if not self.confirmAllBuffersSaved(): |
1488 if not self.confirmAllBuffersSaved(): |
1472 return |
1489 return |
1473 |
1490 |
1474 filename = aw.getFileName() |
1491 filename = aw.getFileName() |
1475 line, index, line1, index1 = aw.getSelection() |
1492 line, index, line1, index1 = aw.getSelection() |
1476 offset = aw.positionFromLineIndex(line, index) |
1493 offset = self.__getOffset(aw, line, index) |
1477 |
1494 |
1478 resource = rope.base.libutils.path_to_resource( |
1495 resource = rope.base.libutils.path_to_resource( |
1479 self.__project, filename) |
1496 self.__project, filename) |
1480 try: |
1497 try: |
1481 changer = rope.refactor.change_signature.ChangeSignature( |
1498 changer = rope.refactor.change_signature.ChangeSignature( |
1509 if not self.confirmAllBuffersSaved(): |
1526 if not self.confirmAllBuffersSaved(): |
1510 return |
1527 return |
1511 |
1528 |
1512 filename = aw.getFileName() |
1529 filename = aw.getFileName() |
1513 line, index, line1, index1 = aw.getSelection() |
1530 line, index, line1, index1 = aw.getSelection() |
1514 offset = aw.positionFromLineIndex(line, index) |
1531 offset = self.__getOffset(aw, line, index) |
1515 |
1532 |
1516 resource = rope.base.libutils.path_to_resource( |
1533 resource = rope.base.libutils.path_to_resource( |
1517 self.__project, filename) |
1534 self.__project, filename) |
1518 try: |
1535 try: |
1519 changer = rope.refactor.change_signature.ChangeSignature( |
1536 changer = rope.refactor.change_signature.ChangeSignature( |
1574 if not self.confirmAllBuffersSaved(): |
1591 if not self.confirmAllBuffersSaved(): |
1575 return |
1592 return |
1576 |
1593 |
1577 filename = aw.getFileName() |
1594 filename = aw.getFileName() |
1578 line, index, line1, index1 = aw.getSelection() |
1595 line, index, line1, index1 = aw.getSelection() |
1579 offset = aw.positionFromLineIndex(line, index) |
1596 offset = self.__getOffset(aw, line, index) |
1580 |
1597 |
1581 resource = rope.base.libutils.path_to_resource( |
1598 resource = rope.base.libutils.path_to_resource( |
1582 self.__project, filename) |
1599 self.__project, filename) |
1583 |
1600 |
1584 try: |
1601 try: |
1628 if not self.confirmAllBuffersSaved(): |
1645 if not self.confirmAllBuffersSaved(): |
1629 return |
1646 return |
1630 |
1647 |
1631 filename = aw.getFileName() |
1648 filename = aw.getFileName() |
1632 line, index, line1, index1 = aw.getSelection() |
1649 line, index, line1, index1 = aw.getSelection() |
1633 offset = aw.positionFromLineIndex(line, index) |
1650 offset = self.__getOffset(aw, line, index) |
1634 |
1651 |
1635 resource = rope.base.libutils.path_to_resource( |
1652 resource = rope.base.libutils.path_to_resource( |
1636 self.__project, filename) |
1653 self.__project, filename) |
1637 try: |
1654 try: |
1638 changes = rope.refactor.localtofield.LocalToField( |
1655 changes = rope.refactor.localtofield.LocalToField( |
1666 if not self.confirmAllBuffersSaved(): |
1683 if not self.confirmAllBuffersSaved(): |
1667 return |
1684 return |
1668 |
1685 |
1669 filename = aw.getFileName() |
1686 filename = aw.getFileName() |
1670 line, index, line1, index1 = aw.getSelection() |
1687 line, index, line1, index1 = aw.getSelection() |
1671 offset = aw.positionFromLineIndex(line, index) |
1688 offset = self.__getOffset(aw, line, index) |
1672 |
1689 |
1673 resource = rope.base.libutils.path_to_resource( |
1690 resource = rope.base.libutils.path_to_resource( |
1674 self.__project, filename) |
1691 self.__project, filename) |
1675 try: |
1692 try: |
1676 converter = rope.refactor.method_object.MethodObject( |
1693 converter = rope.refactor.method_object.MethodObject( |
1840 if not self.confirmAllBuffersSaved(): |
1857 if not self.confirmAllBuffersSaved(): |
1841 return |
1858 return |
1842 |
1859 |
1843 filename = aw.getFileName() |
1860 filename = aw.getFileName() |
1844 line, index, line1, index1 = aw.getSelection() |
1861 line, index, line1, index1 = aw.getSelection() |
1845 offset = aw.positionFromLineIndex(line, index) |
1862 offset = self.__getOffset(aw, line, index) |
1846 |
1863 |
1847 resource = rope.base.libutils.path_to_resource( |
1864 resource = rope.base.libutils.path_to_resource( |
1848 self.__project, filename) |
1865 self.__project, filename) |
1849 handle = ProgressHandle(title, True, self.__ui) |
1866 handle = ProgressHandle(title, True, self.__ui) |
1850 handle.show() |
1867 handle.show() |
1889 if not self.confirmAllBuffersSaved(): |
1906 if not self.confirmAllBuffersSaved(): |
1890 return |
1907 return |
1891 |
1908 |
1892 filename = aw.getFileName() |
1909 filename = aw.getFileName() |
1893 line, index, line1, index1 = aw.getSelection() |
1910 line, index, line1, index1 = aw.getSelection() |
1894 offset = aw.positionFromLineIndex(line, index) |
1911 offset = self.__getOffset(aw, line, index) |
1895 |
1912 |
1896 resource = rope.base.libutils.path_to_resource( |
1913 resource = rope.base.libutils.path_to_resource( |
1897 self.__project, filename) |
1914 self.__project, filename) |
1898 try: |
1915 try: |
1899 location = rope.contrib.findit.find_definition( |
1916 location = rope.contrib.findit.find_definition( |
1930 if not self.confirmAllBuffersSaved(): |
1947 if not self.confirmAllBuffersSaved(): |
1931 return |
1948 return |
1932 |
1949 |
1933 filename = aw.getFileName() |
1950 filename = aw.getFileName() |
1934 line, index, line1, index1 = aw.getSelection() |
1951 line, index, line1, index1 = aw.getSelection() |
1935 offset = aw.positionFromLineIndex(line, index) |
1952 offset = self.__getOffset(aw, line, index) |
1936 |
1953 |
1937 resource = rope.base.libutils.path_to_resource(self.__project, |
1954 resource = rope.base.libutils.path_to_resource(self.__project, |
1938 filename) |
1955 filename) |
1939 handle = ProgressHandle(title, True, self.__ui) |
1956 handle = ProgressHandle(title, True, self.__ui) |
1940 handle.show() |
1957 handle.show() |