Skip to content

Commit

Permalink
Update screenshot folder validation
Browse files Browse the repository at this point in the history
- Allow screenshots w/o a splits folder
- Validate screenshot folder location is valid and exists
- Move validate_before_parsing to split_parser.py
  • Loading branch information
Avasam committed Mar 9, 2024
1 parent a6a1a03 commit 02cbb97
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 27 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -289,8 +289,8 @@ Not a developer? You can still help through the following methods:
- <https://bugreports.qt.io/browse/QTBUG-114436>
- <https://bugreports.qt.io/browse/QTBUG-114635>
- <https://bugreports.qt.io/browse/PYSIDE-2542>
- <https://github.com/astral-sh/ruff/issues?q=is%3Aissue+is%3Aopen+involves%3AAvasam>
- <https://github.com/opencv/opencv/issues?q=is%3Aissue+is%3Aopen+involves%3AAvasam>
- <https://github.com/astral-sh/ruff/issues?q=is%3Aissue+is%3Aopen+involves%3AAvasam+sort%3Areactions-%2B1-asc+>
- <https://github.com/opencv/opencv/issues?q=is%3Aissue+is%3Aopen+involves%3AAvasam+sort%3Areactions-%2B1-asc+>
- <https://github.com/opencv/opencv/issues/23906>
- <https://github.com/pywinrt/python-winsdk/issues/11>
- <https://github.com/microsoft/vscode/issues/40239>
Expand Down
20 changes: 13 additions & 7 deletions src/AutoSplit.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -381,18 +381,24 @@ 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.
# Below starts the file_name_number at #001 up to #999. After that it will go to 1000,
# 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
Expand Down
6 changes: 3 additions & 3 deletions src/error_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down
15 changes: 0 additions & 15 deletions src/region_selection.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
16 changes: 16 additions & 0 deletions src/split_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = [
Expand Down

0 comments on commit 02cbb97

Please sign in to comment.