diff -r 07dabc6bb157 -r 5ecf9ef23d39 RefactoringRope/Refactoring.py --- a/RefactoringRope/Refactoring.py Sat Jan 29 19:57:25 2011 +0100 +++ b/RefactoringRope/Refactoring.py Sun Jan 30 14:02:31 2011 +0100 @@ -20,7 +20,7 @@ import rope.refactor.extract ##import rope.refactor.usefunction import rope.refactor.inline -##import rope.refactor.move +import rope.refactor.move ##import rope.refactor.change_signature ##import rope.refactor.introduce_factory ##import rope.refactor.introduce_parameter @@ -52,6 +52,8 @@ from HistoryDialog import HistoryDialog from ExtractDialog import ExtractDialog from InlineDialog import InlineDialog +from MoveMethodDialog import MoveMethodDialog +from MoveModuleDialog import MoveModuleDialog import Utilities @@ -236,6 +238,48 @@ self.actions.append(self.refactoringInlineAct) ##################################################### + ## Move refactoring actions + ##################################################### + + self.refactoringMoveMethodAct = E5Action( + self.trUtf8('Move method'), + self.trUtf8('Mo&ve Method'), + 0, 0, + self,'refactoring_move_method') + self.refactoringMoveMethodAct.setStatusTip(self.trUtf8( + 'Move the highlighted method to another class')) + self.refactoringMoveMethodAct.setWhatsThis(self.trUtf8( + """<b>Move method</b>""" + """<p>Move the highlighted method to another class.</p>""" + )) + if self.__newStyle: + self.refactoringMoveMethodAct.triggered[()].connect( + self.__moveMethod) + else: + self.connect(self.refactoringMoveMethodAct, + SIGNAL('triggered()'), self.__moveMethod) + self.actions.append(self.refactoringMoveMethodAct) + + self.refactoringMoveModuleAct = E5Action( + self.trUtf8('Move current module'), + self.trUtf8('Move Current Module'), + 0, 0, + self,'refactoring_move_module') + self.refactoringMoveModuleAct.setStatusTip(self.trUtf8( + 'Move the current module to another package')) + self.refactoringMoveModuleAct.setWhatsThis(self.trUtf8( + """<b>Move current module</b>""" + """<p>Move the current module to another package.</p>""" + )) + if self.__newStyle: + self.refactoringMoveModuleAct.triggered[()].connect( + self.__moveModule) + else: + self.connect(self.refactoringMoveModuleAct, + SIGNAL('triggered()'), self.__moveModule) + self.actions.append(self.refactoringMoveModuleAct) + + ##################################################### ## Undo/Redo actions ##################################################### @@ -509,13 +553,14 @@ smenu.addAction(self.refactoringChangeOccurrencesAct) smenu.addSeparator() smenu.addAction(self.refactoringExtractMethodAct) -## smenu.addAction(self.refactoringMoveMethodAct) + smenu.addAction(self.refactoringMoveMethodAct) smenu.addSeparator() smenu.addAction(self.refactoringInlineAct) smenu.addSeparator() smenu.addAction(self.refactoringExtractLocalVariableAct) smenu.addSeparator() smenu.addAction(self.refactoringRenameModuleAct) + smenu.addAction(self.refactoringMoveModuleAct) smenu.addSeparator() smenu.addSeparator() @@ -897,6 +942,75 @@ self.dlg.show() ##################################################### + ## Move refactorings + ##################################################### + + def __moveMethod(self): + """ + Private slot to handle the Move Method action. + """ + aw = e5App().getObject("ViewManager").activeWindow() + + if aw is None: + return + + title = self.trUtf8("Move Method") + if not aw.hasSelectedText(): + # no selection available + E5MessageBox.warning(self.__ui, title, + self.trUtf8("Highlight the method to move" + " and try again.")) + return + + if not self.confirmAllBuffersSaved(): + return + + filename = aw.getFileName() + line, index, line1, index1 = aw.getSelection() + offset = aw.positionFromLineIndex(line, index) + + resource = rope.base.libutils.path_to_resource( + self.__project, filename) + try: + mover = rope.refactor.move.create_move( + self.__project, resource, offset) + except Exception as err: + self.handleRopeError(err, title) + return + + self.dlg = MoveMethodDialog(self, title, mover, parent=self.__ui) + self.dlg.show() + + def __moveModule(self): + """ + Private slot to handle the Move Current Module action. + """ + aw = e5App().getObject("ViewManager").activeWindow() + + if aw is None: + return + + title = self.trUtf8("Move Current Module") + + if not self.confirmAllBuffersSaved(): + return + + filename = aw.getFileName() + offset = None + + resource = rope.base.libutils.path_to_resource( + self.__project, filename) + try: + mover = rope.refactor.move.create_move( + self.__project, resource, offset) + except Exception as err: + self.handleRopeError(err, title) + return + + self.dlg = MoveModuleDialog(self, title, mover, parent=self.__ui) + self.dlg.show() + + ##################################################### ## Undo/Redo refactorings #####################################################