--- a/RefactoringRope/RefactoringDialogBase.py Sun Sep 17 20:03:39 2017 +0200 +++ b/RefactoringRope/RefactoringDialogBase.py Mon Sep 18 20:05:28 2017 +0200 @@ -34,6 +34,17 @@ self._refactoring = refactoring self._title = title + + self._changesCalculated = False + + def getChangeGroupName(self): + """ + Public method to get the name of the change group. + + @return name of the associated change group + @rtype str + """ + return self._changeGroupName def calculateChanges(self): """ @@ -44,6 +55,16 @@ """ raise NotImplementedError("_calculateChanges must be overridden.") + def requestPreview(self): + """ + Public method to request a preview of the calculated changes. + """ + self._calculateChanges() + + self._refactoring.sendJson("PreviewChanges", { + "ChangeGroup": self._changeGroupName, + }) + def previewChanges(self, data): """ Public method to preview the changes. @@ -61,18 +82,13 @@ """ Public method to apply the changes. """ + if not self._changesCalculated: + self.calculateChanges() + self._refactoring.sendJson("ApplyChanges", { "ChangeGroup": self._changeGroupName, + "Title": self._title, }) -## if changes is not None: -## self.__createProgressHandle(False) -## try: -## self._refactoring.getProject().do(changes, self.__handle) -## except Exception as err: -## self._refactoring.handleRopeError( -## err, self._title, self.__handle) -## self.__handle.reset() -## self.__handle = None def processChangeData(self, data): """ @@ -85,12 +101,15 @@ subcommand = data["Subcommand"] if subcommand == "PreviewChanges": self.previewChanges(data) + elif subcommand == "ChangesCalculated": + self._changesCalculated = True elif subcommand == "ChangesApplied": - self._refactoring.refreshEditors(data["ChangedFiles"]) - p = e5App().getObject("Project") - if p.isDirty(): - p.saveProject() - + if self._refactoring.handleRopeError(data): + self._refactoring.refreshEditors(data["ChangedFiles"]) + p = e5App().getObject("Project") + if p.isDirty(): + p.saveProject() + self.accept() def closeEvent(self, evt):