RefactoringRope/RefactoringClient.py

branch
server_client_variant
changeset 179
8ae4e95f5fa6
parent 178
70b4fb448811
child 180
a33ef7ab8c54
equal deleted inserted replaced
178:70b4fb448811 179:8ae4e95f5fa6
23 import rope 23 import rope
24 import rope.base.project 24 import rope.base.project
25 import rope.base.libutils 25 import rope.base.libutils
26 26
27 from JsonClient import JsonClient 27 from JsonClient import JsonClient
28 from ProgressHandle import ProgressHandle
28 29
29 30
30 class RefactoringClient(JsonClient): 31 class RefactoringClient(JsonClient):
31 """ 32 """
32 Class implementing the refactoring client interface to rope. 33 Class implementing the refactoring client interface to rope.
65 "CalculateExtractChanges": self.__calculateExtractChanges, 66 "CalculateExtractChanges": self.__calculateExtractChanges,
66 "RequestInlineType": self.__requestInlineType, 67 "RequestInlineType": self.__requestInlineType,
67 "CalculateInlineChanges": self.__calculateInlineChanges, 68 "CalculateInlineChanges": self.__calculateInlineChanges,
68 "RequestMoveType": self.__requestMoveType, 69 "RequestMoveType": self.__requestMoveType,
69 "CalculateMoveChanges": self.__calculateMoveChanges, 70 "CalculateMoveChanges": self.__calculateMoveChanges,
71 "RequestUseFunction": self.__requestUseFunction,
72 "CalculateUseFunctionChanges": self.__calculateUseFunctionChanges,
70 } 73 }
71 74
72 from FileSystemCommands import RefactoringClientFileSystemCommands 75 from FileSystemCommands import RefactoringClientFileSystemCommands
73 self.__fsCommands = RefactoringClientFileSystemCommands(self) 76 self.__fsCommands = RefactoringClientFileSystemCommands(self)
74 77
195 198
196 errorDict = {} 199 errorDict = {}
197 occurrences = [] 200 occurrences = []
198 201
199 import rope.contrib.findit 202 import rope.contrib.findit
200 from ProgressHandle import ProgressHandle
201 resource = rope.base.libutils.path_to_resource( 203 resource = rope.base.libutils.path_to_resource(
202 self.__project, filename) 204 self.__project, filename)
203 self.__progressHandle = ProgressHandle(self, title, True) 205 self.__progressHandle = ProgressHandle(self, title, True)
204 try: 206 try:
205 occurrences = rope.contrib.findit.find_occurrences( 207 occurrences = rope.contrib.findit.find_occurrences(
275 277
276 errorDict = {} 278 errorDict = {}
277 occurrences = [] 279 occurrences = []
278 280
279 import rope.contrib.findit 281 import rope.contrib.findit
280 from ProgressHandle import ProgressHandle
281 resource = rope.base.libutils.path_to_resource( 282 resource = rope.base.libutils.path_to_resource(
282 self.__project, filename) 283 self.__project, filename)
283 self.__progressHandle = ProgressHandle(self, title, True) 284 self.__progressHandle = ProgressHandle(self, title, True)
284 try: 285 try:
285 occurrences = rope.contrib.findit.find_implementations( 286 occurrences = rope.contrib.findit.find_implementations(
312 """ 313 """
313 title = params["Title"] 314 title = params["Title"]
314 315
315 errorDict = {} 316 errorDict = {}
316 317
317 from ProgressHandle import ProgressHandle
318 self.__progressHandle = ProgressHandle(self, title, True) 318 self.__progressHandle = ProgressHandle(self, title, True)
319 try: 319 try:
320 rope.base.libutils.analyze_modules( 320 rope.base.libutils.analyze_modules(
321 self.__project, task_handle=self.__progressHandle) 321 self.__project, task_handle=self.__progressHandle)
322 except Exception as err: 322 except Exception as err:
400 400
401 self.sendJson("HistoryResult", result) 401 self.sendJson("HistoryResult", result)
402 402
403 elif subcommand in ["Undo", "Redo"]: 403 elif subcommand in ["Undo", "Redo"]:
404 change = self.__changes["History"][params["Id"]] 404 change = self.__changes["History"][params["Id"]]
405 from ProgressHandle import ProgressHandle
406 self.__progressHandle = ProgressHandle(self, change.description, 405 self.__progressHandle = ProgressHandle(self, change.description,
407 False) 406 False)
408 if subcommand == "Undo": 407 if subcommand == "Undo":
409 self.__project.history.undo( 408 self.__project.history.undo(
410 change, task_handle=self.__progressHandle) 409 change, task_handle=self.__progressHandle)
453 the server 452 the server
454 @type dict 453 @type dict
455 """ 454 """
456 errorDict = {} 455 errorDict = {}
457 456
458 from ProgressHandle import ProgressHandle
459 self.__progressHandle = ProgressHandle(self, params["Title"], False) 457 self.__progressHandle = ProgressHandle(self, params["Title"], False)
460 try: 458 try:
461 changes = self.__changes[params["ChangeGroup"]] 459 changes = self.__changes[params["ChangeGroup"]]
462 self.__project.do(changes, self.__progressHandle) 460 self.__project.do(changes, self.__progressHandle)
463 except Exception as err: 461 except Exception as err:
543 if isLocal: 541 if isLocal:
544 resources = [resource] 542 resources = [resource]
545 else: 543 else:
546 resources = None 544 resources = None
547 545
548 from ProgressHandle import ProgressHandle
549 self.__progressHandle = ProgressHandle(self, title, True) 546 self.__progressHandle = ProgressHandle(self, title, True)
550 try: 547 try:
551 renamer = rope.refactor.rename.Rename( 548 renamer = rope.refactor.rename.Rename(
552 self.__project, resource, offset) 549 self.__project, resource, offset)
553 changes = renamer.get_changes( 550 changes = renamer.get_changes(
749 } 746 }
750 747
751 import rope.refactor.extract 748 import rope.refactor.extract
752 resource = rope.base.libutils.path_to_resource( 749 resource = rope.base.libutils.path_to_resource(
753 self.__project, filename) 750 self.__project, filename)
754 from ProgressHandle import ProgressHandle
755 self.__progressHandle = ProgressHandle(self, title, True) 751 self.__progressHandle = ProgressHandle(self, title, True)
756 try: 752 try:
757 inliner = rope.refactor.inline.create_inline( 753 inliner = rope.refactor.inline.create_inline(
758 self.__project, resource, offset) 754 self.__project, resource, offset)
759 if kind == "parameter": 755 if kind == "parameter":
849 } 845 }
850 846
851 import rope.refactor.move 847 import rope.refactor.move
852 resource = rope.base.libutils.path_to_resource( 848 resource = rope.base.libutils.path_to_resource(
853 self.__project, filename) 849 self.__project, filename)
854 from ProgressHandle import ProgressHandle
855 self.__progressHandle = ProgressHandle(self, title, True) 850 self.__progressHandle = ProgressHandle(self, title, True)
856 try: 851 try:
857 mover = rope.refactor.move.create_move( 852 mover = rope.refactor.move.create_move(
858 self.__project, resource, offset) 853 self.__project, resource, offset)
859 if kind == "move_method": 854 if kind == "move_method":
880 875
881 result["Subcommand"] = "ChangesCalculated" 876 result["Subcommand"] = "ChangesCalculated"
882 result.update(errorDict) 877 result.update(errorDict)
883 878
884 self.sendJson("Changes", result) 879 self.sendJson("Changes", result)
880
881 def __requestUseFunction(self, params):
882 """
883 Private method to determine the 'Use Function' function name based on
884 the parameters sent by the server.
885
886 @param params dictionary containing the method parameters sent by
887 the server
888 @type dict
889 """
890 changeGroup = params["ChangeGroup"]
891 title = params["Title"]
892 filename = params["FileName"]
893 offset = params["Offset"]
894
895 errorDict = {}
896 result = {
897 "Subcommand": "UseFunctionName",
898 "ChangeGroup": changeGroup,
899 "Title": title,
900 }
901
902 import rope.refactor.usefunction
903 resource = rope.base.libutils.path_to_resource(
904 self.__project, filename)
905 try:
906 user = rope.refactor.usefunction.UseFunction(
907 self.__project, resource, offset)
908 result["FunctionName"] = user.get_function_name()
909 except Exception as err:
910 errorDict = self.__handleRopeError(err)
911
912 result.update(errorDict)
913
914 self.sendJson("Changes", result)
915
916 def __calculateUseFunctionChanges(self, params):
917 """
918 Private method to calculate the 'Use Function' changes based on the
919 parameters sent by the server.
920
921 @param params dictionary containing the method parameters sent by
922 the server
923 @type dict
924 """
925 changeGroup = params["ChangeGroup"]
926 title = params["Title"]
927 filename = params["FileName"]
928 offset = params["Offset"]
929
930 errorDict = {}
931 changes = []
932 result = {
933 "ChangeGroup": changeGroup,
934 "Title": title,
935 }
936
937 import rope.refactor.usefunction
938 resource = rope.base.libutils.path_to_resource(
939 self.__project, filename)
940 self.__progressHandle = ProgressHandle(self, title, True)
941 try:
942 user = rope.refactor.usefunction.UseFunction(
943 self.__project, resource, offset)
944 changes = user.get_changes(task_handle=self.__progressHandle)
945 except Exception as err:
946 errorDict = self.__handleRopeError(err)
947 self.__progressHandle.reset()
948 self.__progressHandle = None
949
950 self.__changes[changeGroup] = changes
951
952 result["Subcommand"] = "ChangesCalculated"
953 result.update(errorDict)
954
955 self.sendJson("Changes", result)
885 956
886 if __name__ == '__main__': 957 if __name__ == '__main__':
887 if len(sys.argv) != 4: 958 if len(sys.argv) != 4:
888 print('Host, port and project path parameters are missing. Abort.') 959 print('Host, port and project path parameters are missing. Abort.')
889 sys.exit(1) 960 sys.exit(1)

eric ide

mercurial