RefactoringRope/RefactoringClient.py

branch
server_client_variant
changeset 179
8ae4e95f5fa6
parent 178
70b4fb448811
child 180
a33ef7ab8c54
--- a/RefactoringRope/RefactoringClient.py	Fri Sep 22 19:47:36 2017 +0200
+++ b/RefactoringRope/RefactoringClient.py	Sat Sep 23 12:01:48 2017 +0200
@@ -25,6 +25,7 @@
 import rope.base.libutils
 
 from JsonClient import JsonClient
+from ProgressHandle import ProgressHandle
 
 
 class RefactoringClient(JsonClient):
@@ -67,6 +68,8 @@
             "CalculateInlineChanges": self.__calculateInlineChanges,
             "RequestMoveType": self.__requestMoveType,
             "CalculateMoveChanges": self.__calculateMoveChanges,
+            "RequestUseFunction": self.__requestUseFunction,
+            "CalculateUseFunctionChanges": self.__calculateUseFunctionChanges,
         }
         
         from FileSystemCommands import RefactoringClientFileSystemCommands
@@ -197,7 +200,6 @@
         occurrences = []
         
         import rope.contrib.findit
-        from ProgressHandle import ProgressHandle
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
         self.__progressHandle = ProgressHandle(self, title, True)
@@ -277,7 +279,6 @@
         occurrences = []
         
         import rope.contrib.findit
-        from ProgressHandle import ProgressHandle
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
         self.__progressHandle = ProgressHandle(self, title, True)
@@ -314,7 +315,6 @@
         
         errorDict = {}
         
-        from ProgressHandle import ProgressHandle
         self.__progressHandle = ProgressHandle(self, title, True)
         try:
             rope.base.libutils.analyze_modules(
@@ -402,7 +402,6 @@
         
         elif subcommand in ["Undo", "Redo"]:
             change = self.__changes["History"][params["Id"]]
-            from ProgressHandle import ProgressHandle
             self.__progressHandle = ProgressHandle(self, change.description,
                                                    False)
             if subcommand == "Undo":
@@ -455,7 +454,6 @@
         """
         errorDict = {}
         
-        from ProgressHandle import ProgressHandle
         self.__progressHandle = ProgressHandle(self, params["Title"], False)
         try:
             changes = self.__changes[params["ChangeGroup"]]
@@ -545,7 +543,6 @@
         else:
             resources = None
         
-        from ProgressHandle import ProgressHandle
         self.__progressHandle = ProgressHandle(self, title, True)
         try:
             renamer = rope.refactor.rename.Rename(
@@ -751,7 +748,6 @@
         import rope.refactor.extract
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
-        from ProgressHandle import ProgressHandle
         self.__progressHandle = ProgressHandle(self, title, True)
         try:
             inliner = rope.refactor.inline.create_inline(
@@ -851,7 +847,6 @@
         import rope.refactor.move
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
-        from ProgressHandle import ProgressHandle
         self.__progressHandle = ProgressHandle(self, title, True)
         try:
             mover = rope.refactor.move.create_move(
@@ -882,6 +877,82 @@
         result.update(errorDict)
         
         self.sendJson("Changes", result)
+    
+    def __requestUseFunction(self, params):
+        """
+        Private method to determine the 'Use Function' function name based on
+        the parameters sent by the server.
+        
+        @param params dictionary containing the method parameters sent by
+            the server
+        @type dict
+        """
+        changeGroup = params["ChangeGroup"]
+        title = params["Title"]
+        filename = params["FileName"]
+        offset = params["Offset"]
+        
+        errorDict = {}
+        result = {
+            "Subcommand": "UseFunctionName",
+            "ChangeGroup": changeGroup,
+            "Title": title,
+        }
+        
+        import rope.refactor.usefunction
+        resource = rope.base.libutils.path_to_resource(
+            self.__project, filename)
+        try:
+            user = rope.refactor.usefunction.UseFunction(
+                self.__project, resource, offset)
+            result["FunctionName"] = user.get_function_name()
+        except Exception as err:
+            errorDict = self.__handleRopeError(err)
+        
+        result.update(errorDict)
+        
+        self.sendJson("Changes", result)
+    
+    def __calculateUseFunctionChanges(self, params):
+        """
+        Private method to calculate the 'Use Function' changes based on the
+        parameters sent by the server.
+        
+        @param params dictionary containing the method parameters sent by
+            the server
+        @type dict
+        """
+        changeGroup = params["ChangeGroup"]
+        title = params["Title"]
+        filename = params["FileName"]
+        offset = params["Offset"]
+        
+        errorDict = {}
+        changes = []
+        result = {
+            "ChangeGroup": changeGroup,
+            "Title": title,
+        }
+        
+        import rope.refactor.usefunction
+        resource = rope.base.libutils.path_to_resource(
+            self.__project, filename)
+        self.__progressHandle = ProgressHandle(self, title, True)
+        try:
+            user = rope.refactor.usefunction.UseFunction(
+                self.__project, resource, offset)
+            changes = user.get_changes(task_handle=self.__progressHandle)
+        except Exception as err:
+            errorDict = self.__handleRopeError(err)
+        self.__progressHandle.reset()
+        self.__progressHandle = None
+        
+        self.__changes[changeGroup] = changes
+        
+        result["Subcommand"] = "ChangesCalculated"
+        result.update(errorDict)
+        
+        self.sendJson("Changes", result)
 
 if __name__ == '__main__':
     if len(sys.argv) != 4:

eric ide

mercurial