diff --git a/README.md b/README.md index b8711ff5..fa058298 100644 --- a/README.md +++ b/README.md @@ -289,8 +289,8 @@ Not a developer? You can still help through the following methods: - - - - - - - + - + - - - - diff --git a/src/AutoSplit.py b/src/AutoSplit.py index 49328011..6c044263 100644 --- a/src/AutoSplit.py +++ b/src/AutoSplit.py @@ -33,8 +33,8 @@ open_update_checker, view_help, ) -from region_selection import align_region, select_region, select_window, validate_before_parsing -from split_parser import BELOW_FLAG, DUMMY_FLAG, PAUSE_FLAG, parse_and_validate_images +from region_selection import align_region, select_region, select_window +from split_parser import BELOW_FLAG, DUMMY_FLAG, PAUSE_FLAG, parse_and_validate_images, validate_before_parsing from user_profile import DEFAULT_PROFILE from utils import ( AUTOSPLIT_VERSION, @@ -381,7 +381,16 @@ def __update_height(self): self.settings_dict["capture_region"]["height"] = self.height_spinbox.value() def __take_screenshot(self): - if not validate_before_parsing(self, check_empty_directory=False): + if not self.capture_method.check_selected_region_exists(): + error_messages.region() + return + + screenshot_directory = self.settings_dict["screenshot_directory"] or self.settings_dict["split_image_directory"] + if not screenshot_directory: + error_messages.split_image_directory() + return + if not os.path.exists(screenshot_directory): + error_messages.invalid_directory(screenshot_directory) return # Check if file exists and rename it if it does. @@ -389,10 +398,7 @@ def __take_screenshot(self): # which is a problem, but I doubt anyone will get to 1000 split images... screenshot_index = 1 while True: - screenshot_path = os.path.join( - self.settings_dict["screenshot_directory"] or self.settings_dict["split_image_directory"], - f"{screenshot_index:03}_SplitImage.png", - ) + screenshot_path = os.path.join(screenshot_directory, f"{screenshot_index:03}_SplitImage.png") if not os.path.exists(screenshot_path): break screenshot_index += 1 diff --git a/src/error_messages.py b/src/error_messages.py index 6cf64805..218cb3b7 100644 --- a/src/error_messages.py +++ b/src/error_messages.py @@ -43,11 +43,11 @@ def set_text_message(message: str, details: str = "", kill_button: str = "", acc def split_image_directory(): - set_text_message("No split image folder is selected.") + set_text_message("No Split Image Folder is selected.") -def split_image_directory_not_found(): - set_text_message("The Split Image Folder does not exist.") +def invalid_directory(directory: str): + set_text_message(f"Folder {directory!r} is invalid or does not exist.") def split_image_directory_empty(): diff --git a/src/region_selection.py b/src/region_selection.py index 2b742f0d..fc99c553 100644 --- a/src/region_selection.py +++ b/src/region_selection.py @@ -307,21 +307,6 @@ def __test_alignment(capture: MatLike, template: MatLike): return best_match, best_height, best_width, best_loc -def validate_before_parsing(autosplit: "AutoSplit", show_error: bool = True, check_empty_directory: bool = True): - error = None - if not autosplit.settings_dict["split_image_directory"]: - error = error_messages.split_image_directory - elif not os.path.isdir(autosplit.settings_dict["split_image_directory"]): - error = error_messages.split_image_directory_not_found - elif check_empty_directory and not os.listdir(autosplit.settings_dict["split_image_directory"]): - error = error_messages.split_image_directory_empty - elif not autosplit.capture_method.check_selected_region_exists(): - error = error_messages.region - if error and show_error: - error() - return not error - - class BaseSelectWidget(QtWidgets.QWidget): selection: Region | None = None diff --git a/src/split_parser.py b/src/split_parser.py index 7c2ab55c..029433fa 100644 --- a/src/split_parser.py +++ b/src/split_parser.py @@ -173,6 +173,22 @@ def __pop_image_type(split_image: list[AutoSplitImage], image_type: ImageType): return None +def validate_before_parsing(autosplit: "AutoSplit", show_error: bool = True): + error = None + split_image_directory = autosplit.settings_dict["split_image_directory"] + if not split_image_directory: + error = error_messages.split_image_directory + elif not os.path.isdir(split_image_directory): + error = partial(error_messages.invalid_directory, split_image_directory) + elif not os.listdir(split_image_directory): + error = error_messages.split_image_directory_empty + elif not autosplit.capture_method.check_selected_region_exists(): + error = error_messages.region + if error and show_error: + error() + return not error + + def parse_and_validate_images(autosplit: "AutoSplit"): # Get split images all_images = [