RefactoringRope/Refactoring.py

branch
server_client_variant
changeset 172
c8890f852917
parent 168
53d76b4fc1ac
child 173
2cdb7c48b719
diff -r 9872d31f8755 -r c8890f852917 RefactoringRope/Refactoring.py
--- 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)
         

eric ide

mercurial