--- 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: