|
| 1 | +import typing |
| 2 | +from sys import stderr |
| 3 | + |
| 4 | +from je_auto_control.utils.exception.exception_tags import get_bad_trigger_method, get_bad_trigger_function |
| 5 | +from je_auto_control.utils.exception.exceptions import CallbackExecutorException |
| 6 | +# executor |
| 7 | +from je_auto_control.utils.executor.action_executor import execute_action |
| 8 | +from je_auto_control.utils.executor.action_executor import execute_files |
| 9 | +from je_auto_control.utils.file_process.create_project_structure import create_template_dir |
| 10 | +# file process |
| 11 | +from je_auto_control.utils.file_process.get_dir_file_list import get_dir_files_as_list |
| 12 | +# html report |
| 13 | +from je_auto_control.utils.generate_report.generate_html_report import generate_html |
| 14 | +from je_auto_control.utils.generate_report.generate_html_report import generate_html_report |
| 15 | +from je_auto_control.utils.generate_report.generate_json_report import generate_json |
| 16 | +from je_auto_control.utils.generate_report.generate_json_report import generate_json_report |
| 17 | +# xml |
| 18 | +from je_auto_control.utils.generate_report.generate_xml_report import generate_xml |
| 19 | +from je_auto_control.utils.generate_report.generate_xml_report import generate_xml_report |
| 20 | +# utils image |
| 21 | +from je_auto_control.utils.image.screenshot import pil_screenshot |
| 22 | +# json |
| 23 | +from je_auto_control.utils.json.json_file import read_action_json |
| 24 | +from je_auto_control.utils.json.json_file import write_action_json |
| 25 | +# socket server |
| 26 | +from je_auto_control.utils.socket_server.auto_control_socket_server import start_autocontrol_socket_server |
| 27 | +# test record |
| 28 | +from je_auto_control.utils.test_record.record_test_class import test_record_instance |
| 29 | +# import image |
| 30 | +from je_auto_control.wrapper.auto_control_image import locate_all_image |
| 31 | +from je_auto_control.wrapper.auto_control_image import locate_and_click |
| 32 | +from je_auto_control.wrapper.auto_control_image import locate_image_center |
| 33 | +from je_auto_control.wrapper.auto_control_keyboard import check_key_is_press |
| 34 | +from je_auto_control.wrapper.auto_control_keyboard import hotkey |
| 35 | +# import keyboard |
| 36 | +from je_auto_control.wrapper.auto_control_keyboard import keys_table |
| 37 | +from je_auto_control.wrapper.auto_control_keyboard import press_key |
| 38 | +from je_auto_control.wrapper.auto_control_keyboard import release_key |
| 39 | +from je_auto_control.wrapper.auto_control_keyboard import type_key |
| 40 | +from je_auto_control.wrapper.auto_control_keyboard import write |
| 41 | +# import mouse |
| 42 | +from je_auto_control.wrapper.auto_control_mouse import click_mouse |
| 43 | +from je_auto_control.wrapper.auto_control_mouse import mouse_table |
| 44 | +from je_auto_control.wrapper.auto_control_mouse import position |
| 45 | +from je_auto_control.wrapper.auto_control_mouse import press_mouse |
| 46 | +from je_auto_control.wrapper.auto_control_mouse import release_mouse |
| 47 | +from je_auto_control.wrapper.auto_control_mouse import scroll |
| 48 | +from je_auto_control.wrapper.auto_control_mouse import set_position |
| 49 | +from je_auto_control.wrapper.auto_control_mouse import special_table |
| 50 | +# test_record |
| 51 | +from je_auto_control.wrapper.auto_control_record import record |
| 52 | +from je_auto_control.wrapper.auto_control_record import stop_record |
| 53 | +from je_auto_control.wrapper.auto_control_screen import screenshot |
| 54 | +# import screen |
| 55 | +from je_auto_control.wrapper.auto_control_screen import size |
| 56 | + |
| 57 | + |
| 58 | +class CallbackFunctionExecutor(object): |
| 59 | + |
| 60 | + def __init__(self): |
| 61 | + self.event_dict: dict = { |
| 62 | + # mouse |
| 63 | + "mouse_left": click_mouse, |
| 64 | + "mouse_right": click_mouse, |
| 65 | + "mouse_middle": click_mouse, |
| 66 | + "click_mouse": click_mouse, |
| 67 | + "mouse_table": mouse_table, |
| 68 | + "position": position, |
| 69 | + "press_mouse": press_mouse, |
| 70 | + "release_mouse": release_mouse, |
| 71 | + "scroll": scroll, |
| 72 | + "set_position": set_position, |
| 73 | + "special_table": special_table, |
| 74 | + # keyboard |
| 75 | + "keys_table": keys_table, |
| 76 | + "type_key": type_key, |
| 77 | + "press_key": press_key, |
| 78 | + "release_key": release_key, |
| 79 | + "check_key_is_press": check_key_is_press, |
| 80 | + "write": write, |
| 81 | + "hotkey": hotkey, |
| 82 | + # image |
| 83 | + "locate_all_image": locate_all_image, |
| 84 | + "locate_image_center": locate_image_center, |
| 85 | + "locate_and_click": locate_and_click, |
| 86 | + # screen |
| 87 | + "size": size, |
| 88 | + "screenshot": screenshot, |
| 89 | + # test record |
| 90 | + "set_record_enable": test_record_instance.set_record_enable, |
| 91 | + # only generate |
| 92 | + "generate_html": generate_html, |
| 93 | + "generate_json": generate_json, |
| 94 | + "generate_xml": generate_xml, |
| 95 | + # generate report |
| 96 | + "generate_html_report": generate_html_report, |
| 97 | + "generate_json_report": generate_json_report, |
| 98 | + "generate_xml_report": generate_xml_report, |
| 99 | + # record |
| 100 | + "record": record, |
| 101 | + "stop_record": stop_record, |
| 102 | + "execute_action": execute_action, |
| 103 | + "execute_files": execute_files, |
| 104 | + "create_template_dir": create_template_dir, |
| 105 | + "get_dir_files_as_list": get_dir_files_as_list, |
| 106 | + "pil_screenshot": pil_screenshot, |
| 107 | + "read_action_json": read_action_json, |
| 108 | + "write_action_json": write_action_json, |
| 109 | + "start_autocontrol_socket_server": start_autocontrol_socket_server, |
| 110 | + |
| 111 | + } |
| 112 | + |
| 113 | + def callback_function( |
| 114 | + self, |
| 115 | + trigger_function_name: str, |
| 116 | + callback_function: typing.Callable, |
| 117 | + callback_function_param: dict, |
| 118 | + callback_param_method: str = "kwargs", |
| 119 | + **kwargs |
| 120 | + ): |
| 121 | + """ |
| 122 | + :param trigger_function_name: what function we want to trigger only accept function in event_dict |
| 123 | + :param callback_function: what function we want to callback |
| 124 | + :param callback_function_param: callback function's param only accept dict |
| 125 | + :param callback_param_method: what type param will use on callback function only accept kwargs and args |
| 126 | + :param kwargs: trigger_function's param |
| 127 | + :return: |
| 128 | + """ |
| 129 | + try: |
| 130 | + if trigger_function_name not in self.event_dict.keys(): |
| 131 | + raise CallbackExecutorException(get_bad_trigger_function) |
| 132 | + execute_return_value = self.event_dict.get(trigger_function_name)(**kwargs) |
| 133 | + if callback_param_method not in ["kwargs", "args"]: |
| 134 | + raise CallbackExecutorException(get_bad_trigger_method) |
| 135 | + if callback_param_method == "kwargs": |
| 136 | + callback_function(**callback_function_param) |
| 137 | + else: |
| 138 | + callback_function(*callback_function_param.values()) |
| 139 | + return execute_return_value |
| 140 | + except Exception as error: |
| 141 | + print(repr(error), file=stderr) |
| 142 | + |
| 143 | + |
| 144 | +callback_executor = CallbackFunctionExecutor() |
| 145 | + |
| 146 | + |
0 commit comments