--- a/RefactoringRope/Refactoring.py Fri Sep 22 19:47:09 2017 +0200 +++ b/RefactoringRope/Refactoring.py Fri Sep 22 19:47:36 2017 +0200 @@ -234,7 +234,7 @@ """<p>Move the highlighted method to another class.</p>""" )) self.refactoringMoveMethodAct.triggered.connect( - self.__moveMethod) + lambda: self.__move("move_method")) self.actions.append(self.refactoringMoveMethodAct) self.refactoringMoveModuleAct = E5Action( @@ -249,7 +249,7 @@ """<p>Move the current module to another package.</p>""" )) self.refactoringMoveModuleAct.triggered.connect( - self.__moveModule) + lambda: self.__move("move_module")) self.actions.append(self.refactoringMoveModuleAct) ##################################################### @@ -1087,86 +1087,53 @@ ## Move refactorings ##################################################### - # TODO: continue from here - def __moveMethod(self): + def __move(self, moveKind): """ Private slot to handle the Move Method action. + + @param moveKind kind of move to be performed + @type str (one of 'move_method' or 'move_module') """ aw = e5App().getObject("ViewManager").activeWindow() if aw is None: return - title = self.tr("Move Method") - if not aw.hasSelectedText(): - # no selection available - E5MessageBox.warning( - self.__ui, title, - self.tr("Highlight the method to move" - " and try again.")) - return + if moveKind == "move_method": + title = self.tr("Move Method") + if not aw.hasSelectedText(): + # no selection available + E5MessageBox.warning( + self.__ui, title, + self.tr("Highlight the method to move" + " and try again.")) + return + else: + title = self.tr("Move Current Module") if not self.confirmAllBuffersSaved(): return filename = aw.getFileName() - line, index, line1, index1 = aw.getSelection() - offset = self.__getOffset(aw, line, index) - - import rope.refactor.move - 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 - - if isinstance(mover, rope.refactor.move.MoveGlobal): - from MoveGlobalMethodDialog import MoveGlobalMethodDialog - self.dlg = MoveGlobalMethodDialog( - self, title, mover, self.__project, parent=self.__ui) + if moveKind == "move_method": + line, index, line1, index1 = aw.getSelection() + offset = self.__getOffset(aw, line, index) else: - from MoveMethodDialog import MoveMethodDialog - 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.tr("Move Current Module") + offset = None - if not self.confirmAllBuffersSaved(): - return - - filename = aw.getFileName() - offset = None - - import rope.refactor.move - 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 - - from MoveModuleDialog import MoveModuleDialog - self.dlg = MoveModuleDialog(self, title, mover, parent=self.__ui) - self.dlg.show() + from MoveDialog import MoveDialog + dlg = MoveDialog(self, title, filename, offset, parent=self.__ui) + changeGroup = dlg.getChangeGroupName() + self.__refactoringDialogs[changeGroup] = dlg + dlg.finished.connect( + lambda: self.__refactoringDialogClosed(changeGroup)) + dlg.show() ##################################################### ## Use function refactoring ##################################################### + # TODO: continue from here def __useFunction(self): """ Private slot to use a function wherever possible.