--- a/RefactoringRope/Refactoring.py Sun Sep 17 20:03:39 2017 +0200 +++ b/RefactoringRope/Refactoring.py Mon Sep 18 20:05:28 2017 +0200 @@ -63,6 +63,7 @@ self.__progressDialog = None self.__helpDialog = None self.__historyDialog = None + self.__refactoringDialogs = {} from FileSystemCommands import E5FileSystemCommands self.__fsCommands = E5FileSystemCommands(self.__e5project) @@ -80,6 +81,8 @@ "ClientException": self.__processClientException, "HistoryResult": self.__processHistoryResult, + + "Changes": self.__processChanges, } def initActions(self): @@ -827,6 +830,30 @@ ## slots below implement the various refactorings ################################################################## + def __processChanges(self, result): + """ + Private method to process the changes data sent by the refactoring + client. + + @param result dictionary containing the changes data + @type dict + """ + if self.handleRopeError(result): + changeGroup = result["ChangeGroup"] + try: + self.__refactoringDialogs[changeGroup].processChangeData(result) + except KeyError: + # ignore data for non-existing dialogs + pass + + def __refactoringDialogClosed(self): + """ + Private slot handling the closing of a refactoring dialog. + """ + dlg = self.sender() + changeGroup = dlg.getChangeGroupName() + del self.__refactoringDialogs[changeGroup] + ##################################################### ## Rename refactorings ##################################################### @@ -898,24 +925,29 @@ offset = self.__getOffset(aw, line, index) selectedText = aw.selectedText() - import rope.refactor.rename - resource = rope.base.libutils.path_to_resource( - self.__project, filename) - try: - renamer = rope.refactor.rename.Rename( - self.__project, resource, offset) - except Exception as err: - self.handleRopeError(err, title) - return - - if isLocal: - localResource = resource - else: - localResource = None +## import rope.refactor.rename +## resource = rope.base.libutils.path_to_resource( +## self.__project, filename) +## try: +## renamer = rope.refactor.rename.Rename( +## self.__project, resource, offset) +## except Exception as err: +## self.handleRopeError(err, title) +## return +## +## if isLocal: +## localResource = resource +## else: +## localResource = None +## from RenameDialog import RenameDialog - self.dlg = RenameDialog(self, title, renamer, resource=localResource, - selectedText=selectedText, parent=self.__ui) - self.dlg.show() + dlg = RenameDialog( + self, title, filename, offset, isLocal, + selectedText=selectedText, parent=self.__ui) + changeGroup = dlg.getChangeGroupName() + self.__refactoringDialogs[changeGroup] = dlg + dlg.finished.connect(self.__refactoringDialogClosed) + dlg.show() def __changeOccurrences(self): """ @@ -2126,6 +2158,9 @@ if self.__historyDialog is not None: self.__historyDialog.close() self.__historyDialog = None + for dlg in self.__refactoringDialogs.values(): + dlg.close() + self.__refactoringDialogs = {} self.sendJson("CloseProject", {}, flush=True)