RefactoringRope/Refactoring.py

changeset 13
dad628301abc
parent 12
75fff1da56b6
child 14
cc9f4507be3d
equal deleted inserted replaced
12:75fff1da56b6 13:dad628301abc
22 import rope.refactor.inline 22 import rope.refactor.inline
23 import rope.refactor.move 23 import rope.refactor.move
24 import rope.refactor.change_signature 24 import rope.refactor.change_signature
25 import rope.refactor.introduce_factory 25 import rope.refactor.introduce_factory
26 import rope.refactor.introduce_parameter 26 import rope.refactor.introduce_parameter
27 ##import rope.refactor.method_object 27 import rope.refactor.method_object
28 import rope.refactor.encapsulate_field 28 import rope.refactor.encapsulate_field
29 import rope.refactor.localtofield 29 import rope.refactor.localtofield
30 import rope.refactor.topackage 30 import rope.refactor.topackage
31 from rope.refactor.importutils import ImportOrganizer 31 from rope.refactor.importutils import ImportOrganizer
32 32
60 from ConfirmationDialog import ConfirmationDialog 60 from ConfirmationDialog import ConfirmationDialog
61 from RestructureDialog import RestructureDialog 61 from RestructureDialog import RestructureDialog
62 from ChangeSignatureDialog import ChangeSignatureDialog 62 from ChangeSignatureDialog import ChangeSignatureDialog
63 from InlineArgumentDefaultDialog import InlineArgumentDefaultDialog 63 from InlineArgumentDefaultDialog import InlineArgumentDefaultDialog
64 from GetterSetterDialog import GetterSetterDialog 64 from GetterSetterDialog import GetterSetterDialog
65 from MethodToMethodObjectDialog import MethodToMethodObjectDialog
65 66
66 import Utilities 67 import Utilities
67 68
68 69
69 class Refactoring(QObject): 70 class Refactoring(QObject):
484 """<p>Change a local variable to an attribute.</p>""" 485 """<p>Change a local variable to an attribute.</p>"""
485 )) 486 ))
486 self.refactoringLocalVariableToAttributeAct.triggered[()].connect( 487 self.refactoringLocalVariableToAttributeAct.triggered[()].connect(
487 self.__convertLocalToAttribute) 488 self.__convertLocalToAttribute)
488 self.actions.append(self.refactoringLocalVariableToAttributeAct) 489 self.actions.append(self.refactoringLocalVariableToAttributeAct)
490
491 self.refactoringMethodToMethodObjectAct = E5Action(
492 self.trUtf8('Method To Method Object'),
493 self.trUtf8('Method To Method Ob&ject'),
494 0, 0,
495 self,'refactoring_method_to_methodobject')
496 self.refactoringMethodToMethodObjectAct.setStatusTip(self.trUtf8(
497 'Transform a function or a method to a method object'))
498 self.refactoringMethodToMethodObjectAct.setWhatsThis(self.trUtf8(
499 """<b>Method To Method Object</b>"""
500 """<p>Transform a function or a method to a method object.</p>"""
501 ))
502 self.refactoringMethodToMethodObjectAct.triggered[()].connect(
503 self.__methodToMethodObject)
504 self.actions.append(self.refactoringMethodToMethodObjectAct)
489 505
490 ##################################################### 506 #####################################################
491 ## Undo/Redo actions 507 ## Undo/Redo actions
492 ##################################################### 508 #####################################################
493 509
722 smenu.addSeparator() 738 smenu.addSeparator()
723 smenu.addAction(self.refactoringRestructureAct) 739 smenu.addAction(self.refactoringRestructureAct)
724 smenu.addSeparator() 740 smenu.addSeparator()
725 smenu.addAction(self.refactoringIntroduceFactoryAct) 741 smenu.addAction(self.refactoringIntroduceFactoryAct)
726 smenu.addAction(self.refactoringIntroduceParameterAct) 742 smenu.addAction(self.refactoringIntroduceParameterAct)
727 ## smenu.addAction(self.refactoringMethodToMethodObjectAct) 743 smenu.addAction(self.refactoringMethodToMethodObjectAct)
728 smenu.addSeparator() 744 smenu.addSeparator()
729 smenu.addAction(self.refactoringEncapsulateAttributeAct) 745 smenu.addAction(self.refactoringEncapsulateAttributeAct)
730 smenu.addAction(self.refactoringLocalVariableToAttributeAct) 746 smenu.addAction(self.refactoringLocalVariableToAttributeAct)
731 smenu.addSeparator() 747 smenu.addSeparator()
732 smenu.addAction(self.refactoringRenameModuleAct) 748 smenu.addAction(self.refactoringRenameModuleAct)
1587 self.refreshEditors(changes) 1603 self.refreshEditors(changes)
1588 if self.__e5project.isDirty(): 1604 if self.__e5project.isDirty():
1589 self.__e5project.saveProject() 1605 self.__e5project.saveProject()
1590 except Exception as err: 1606 except Exception as err:
1591 self.handleRopeError(err, title) 1607 self.handleRopeError(err, title)
1608
1609 def __methodToMethodObject(self):
1610 """
1611 Private slot to change the signature of a method or function.
1612 """
1613 aw = e5App().getObject("ViewManager").activeWindow()
1614
1615 if aw is None:
1616 return
1617
1618 title = self.trUtf8("Replace Method With Method Object")
1619 if not aw.hasSelectedText():
1620 # no selection available
1621 E5MessageBox.warning(self.__ui, title,
1622 self.trUtf8("Highlight the method or function to convert"
1623 " and try again."))
1624 return
1625
1626 if not self.confirmAllBuffersSaved():
1627 return
1628
1629 filename = aw.getFileName()
1630 line, index, line1, index1 = aw.getSelection()
1631 offset = aw.positionFromLineIndex(line, index)
1632
1633 resource = rope.base.libutils.path_to_resource(
1634 self.__project, filename)
1635 try:
1636 converter = rope.refactor.method_object.MethodObject(
1637 self.__project, resource, offset)
1638 except Exception as err:
1639 self.handleRopeError(err, title)
1640 return
1641
1642 self.dlg = MethodToMethodObjectDialog(self, title, converter,
1643 parent=self.__ui)
1644 self.dlg.show()
1592 1645
1593 ##################################################### 1646 #####################################################
1594 ## Undo/Redo refactorings 1647 ## Undo/Redo refactorings
1595 ##################################################### 1648 #####################################################
1596 1649

eric ide

mercurial