RefactoringRope/RefactoringDialogBase.py

branch
server_client_variant
changeset 172
c8890f852917
parent 171
9872d31f8755
child 173
2cdb7c48b719
diff -r 9872d31f8755 -r c8890f852917 RefactoringRope/RefactoringDialogBase.py
--- 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):

eric ide

mercurial