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 |