RefactoringRope/Refactoring.py

changeset 44
8aa985c8dee5
parent 43
39924831c795
child 46
a726d19facfc
equal deleted inserted replaced
43:39924831c795 44:8aa985c8dee5
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()

eric ide

mercurial