From c940434988d9edeafe1c7d508c1659c36f6d8b68 Mon Sep 17 00:00:00 2001 From: rakima Date: Sun, 12 Jul 2026 04:20:29 +0900 Subject: [PATCH 01/11] =?UTF-8?q?change:=20Test=E6=99=82=E3=81=AB=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E7=8E=87=E3=82=92=E5=87=BA=E5=8A=9B=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/detector.py | 11 ++++++++--- app/runner.py | 19 ++++++++++++++++++- app/ui/main_window.py | 6 ++++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/detector.py b/app/detector.py index 36888e2..a643ee0 100644 --- a/app/detector.py +++ b/app/detector.py @@ -48,6 +48,14 @@ def __init__(self, base_dir: str | Path = ".") -> None: def detect(self, screenshot: np.ndarray, rule: Rule) -> MatchResult | None: """Return the best match when it meets the rule confidence.""" + match = self.find_best_match(screenshot, rule) + if match is None or match.score < rule.confidence: + return None + + return match + + def find_best_match(self, screenshot: np.ndarray, rule: Rule) -> MatchResult | None: + """Return the best match even when it is below the rule confidence.""" origin_x = 0 origin_y = 0 if isinstance(screenshot, CapturedScreenshot): @@ -67,9 +75,6 @@ def detect(self, screenshot: np.ndarray, rule: Rule) -> MatchResult | None: result = self._match_template(region_image, template) _, max_score, _, max_location = cv2.minMaxLoc(result) - if max_score < rule.confidence: - return None - match_x = rule.region.x + max_location[0] match_y = rule.region.y + max_location[1] return MatchResult( diff --git a/app/runner.py b/app/runner.py index 0dc5793..6857bf2 100644 --- a/app/runner.py +++ b/app/runner.py @@ -33,6 +33,7 @@ class RuleRunResult: matched: bool = False triggered: bool = False skipped_cooldown: bool = False + score: float | None = None match: MatchResult | None = None click_target: ClickTarget | None = None error: str | None = None @@ -108,7 +109,7 @@ def test_once(self, screenshot: Any) -> RunnerCycleResult: continue try: - match = self.detector.detect(screenshot, rule) + match = self._find_best_match_for_test(screenshot, rule) except DetectionError as error: results.append( RuleRunResult( @@ -120,11 +121,19 @@ def test_once(self, screenshot: Any) -> RunnerCycleResult: if match is None: results.append(RuleRunResult(rule_name=rule.name)) + elif match.score < rule.confidence: + results.append( + RuleRunResult( + rule_name=rule.name, + score=match.score, + ) + ) else: results.append( RuleRunResult( rule_name=rule.name, matched=True, + score=match.score, match=match, ) ) @@ -162,6 +171,7 @@ def run_once(self, screenshot: Any) -> RunnerCycleResult: rule_name=rule.name, matched=True, triggered=True, + score=match.score, match=match, click_target=click_target, ) @@ -190,3 +200,10 @@ def _capture_screenshot(self, screenshot_provider: ScreenshotProvider) -> Any: return capture_frame() return screenshot_provider.capture() + + def _find_best_match_for_test(self, screenshot: Any, rule: Rule) -> MatchResult | None: + find_best_match = getattr(self.detector, "find_best_match", None) + if callable(find_best_match): + return find_best_match(screenshot, rule) + + return self.detector.detect(screenshot, rule) diff --git a/app/ui/main_window.py b/app/ui/main_window.py index ad92cc9..3050483 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -424,9 +424,15 @@ def _append_test_detection_result(self, result: RunnerCycleResult) -> None: elif item.matched and item.match is not None: self.append_log( f"[{item.rule_name}] matched score={item.match.score:.3f} " + f"({item.match.score * 100:.1f}%) " f"at x={item.match.x}, y={item.match.y} " f"center=({item.match.center_x}, {item.match.center_y})" ) + elif item.score is not None: + self.append_log( + f"[{item.rule_name}] not matched best_score={item.score:.3f} " + f"({item.score * 100:.1f}%)" + ) else: self.append_log(f"[{item.rule_name}] not matched") From b5f2a237019dd72b1f9d4b6bcba7651ab5c77f6d Mon Sep 17 00:00:00 2001 From: rakima Date: Sun, 12 Jul 2026 04:20:40 +0900 Subject: [PATCH 02/11] =?UTF-8?q?add:=20=E9=96=BE=E5=80=A4=E3=83=86?= =?UTF-8?q?=E3=82=B9=E3=83=88=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_detector.py | 13 +++++++++++++ tests/test_runner.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/tests/test_detector.py b/tests/test_detector.py index 8f93f01..1976e7c 100644 --- a/tests/test_detector.py +++ b/tests/test_detector.py @@ -145,6 +145,19 @@ def test_detect_returns_none_when_score_is_below_confidence(tmp_path): assert result is None +def test_find_best_match_returns_score_below_confidence(tmp_path): + screenshot = np.zeros((80, 80, 3), dtype=np.uint8) + screenshot[25:35, 30:40] = make_marker((0, 255, 0)) + template = make_marker((0, 0, 255)) + write_image(tmp_path / "marker.png", template) + + detector = TemplateDetector(base_dir=tmp_path) + result = detector.find_best_match(screenshot, make_rule("marker.png", confidence=0.99)) + + assert result is not None + assert result.score < 0.99 + + def test_detect_returns_none_when_template_is_larger_than_region(tmp_path): screenshot = np.zeros((80, 80, 3), dtype=np.uint8) template = np.zeros((50, 50, 3), dtype=np.uint8) diff --git a/tests/test_runner.py b/tests/test_runner.py index 0d7689c..e000381 100644 --- a/tests/test_runner.py +++ b/tests/test_runner.py @@ -23,6 +23,19 @@ def detect(self, screenshot, rule: Rule) -> MatchResult | None: return self.matches.get(rule.name) +class FakeBestMatchDetector: + def __init__(self, matches: dict[str, MatchResult | None]) -> None: + self.matches = matches + self.calls = [] + + def find_best_match(self, screenshot, rule: Rule) -> MatchResult | None: + self.calls.append(rule.name) + return self.matches.get(rule.name) + + def detect(self, screenshot, rule: Rule) -> MatchResult | None: + raise AssertionError("test_once should use find_best_match when available") + + class FailingDetector: def detect(self, screenshot, rule: Rule) -> MatchResult | None: raise DetectionError("detection failed") @@ -232,6 +245,33 @@ def test_test_once_detects_without_clicking_or_cooldown(): assert runner.last_triggered_at == {} +def test_test_once_records_below_confidence_score_without_clicking(): + rule = make_rule() + match = MatchResult( + rule_name="Rule", + score=0.84, + x=10, + y=20, + width=10, + height=10, + ) + mouse = FakeMouse() + detector = FakeBestMatchDetector({"Rule": match}) + runner = MacroRunner( + rules=[rule], + detector=detector, + mouse=mouse, + ) + + result = runner.test_once(screenshot=object()) + + assert result.results[0].matched is False + assert result.results[0].score == 0.84 + assert result.results[0].match is None + assert mouse.clicks == [] + assert detector.calls == ["Rule"] + + def test_test_once_skips_disabled_rules(): rule = make_rule(enabled=False) detector = FakeDetector({"Rule": make_match()}) From 65eabd615887a28a2f3f56aca62283997cc169f7 Mon Sep 17 00:00:00 2001 From: rakima Date: Mon, 13 Jul 2026 03:11:44 +0900 Subject: [PATCH 03/11] =?UTF-8?q?change;=20Test=20Detection=E7=B5=90?= =?UTF-8?q?=E6=9E=9C=E3=82=92UI=E3=81=AB=E8=A1=A8=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/ui/main_window.py | 44 +++++++++++++++++++++++++++- tests/test_ui_main_window.py | 56 +++++++++++++++++++++++++++++++++++- 2 files changed, 98 insertions(+), 2 deletions(-) diff --git a/app/ui/main_window.py b/app/ui/main_window.py index 3050483..a55338a 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -14,7 +14,7 @@ remove_rule, replace_rule, ) -from app.runner import MacroRunner, RunnerCycleResult +from app.runner import MacroRunner, RuleRunResult, RunnerCycleResult from app.storage import RuleStorageError, save_rules from app.system import is_windows_admin @@ -44,6 +44,37 @@ def is_check_area_position(x: int, check_area_width: int = 28) -> bool: return x <= check_area_width +def format_score_percent(score: float) -> str: + """Format an OpenCV match score as a percentage.""" + return f"{score * 100:.1f}%" + + +def format_rule_test_result(result: RuleRunResult | None, confidence: float) -> list[str]: + """Format the latest test detection result for the rule summary panel.""" + if result is None: + return ["Last Test: not run"] + + confidence_text = format_score_percent(confidence) + if result.error: + return [ + "Last Test: error", + f"Error: {result.error}", + ] + + if result.matched and result.match is not None: + score_text = format_score_percent(result.match.score) + return [ + f"Last Test: matched ({score_text} >= {confidence_text})", + f"Match: x={result.match.x}, y={result.match.y}, center=({result.match.center_x}, {result.match.center_y})", + ] + + if result.score is not None: + score_text = format_score_percent(result.score) + return [f"Last Test: below threshold ({score_text} < {confidence_text})"] + + return ["Last Test: not matched"] + + def import_qt_widgets(): try: from PySide6.QtWidgets import ( # type: ignore[import-not-found] @@ -130,6 +161,7 @@ def __init__(self, rules: RuleSet, path: str | Path | None = None) -> None: self.is_tick_running = False self.is_loading_rules = False self.last_rule_log_states = {} + self.last_test_results = {} self.setWindowTitle("Macro Tool") self.resize(980, 680) self._build_ui() @@ -242,6 +274,10 @@ def _show_rule_summary(self, row: int) -> None: rule = self.rule_set.rules[row] region = rule.region offset = rule.action.offset + test_result_lines = format_rule_test_result( + self.last_test_results.get(rule.name), + rule.confidence, + ) self.summary_label.setText( "\n".join( [ @@ -253,6 +289,8 @@ def _show_rule_summary(self, row: int) -> None: f"Action: {rule.action.type} / {rule.action.button}", f"Offset: x={offset.x}, y={offset.y}", f"Cooldown: {rule.cooldown}s", + "", + *test_result_lines, ] ) ) @@ -315,6 +353,7 @@ def _open_rule_editor(self, rule, index) -> None: self.append_log(f"Rule save failed: {error}") return + self.last_test_results = {} self._load_rules() self.rule_list.setCurrentRow(selected_row) self.append_log(f"Saved rule: {edited_rule.name}") @@ -345,6 +384,7 @@ def _delete_selected_rule(self) -> None: self.append_log(f"Rule delete failed: {error}") return + self.last_test_results = {} self._load_rules() if self.rule_set.rules: self.rule_list.setCurrentRow(min(row, len(self.rule_set.rules) - 1)) @@ -419,6 +459,7 @@ def _append_test_detection_result(self, result: RunnerCycleResult) -> None: not_matched_count = len(result.results) - matched_count - error_count for item in result.results: + self.last_test_results[item.rule_name] = item if item.error: self.append_log(f"[{item.rule_name}] error: {item.error}") elif item.matched and item.match is not None: @@ -440,6 +481,7 @@ def _append_test_detection_result(self, result: RunnerCycleResult) -> None: "Test detection completed: " f"matched={matched_count}, not_matched={not_matched_count}, errors={error_count}" ) + self._show_rule_summary(self.rule_list.currentRow()) def _start_running(self) -> None: enabled_rules = [rule for rule in self.rule_set.rules if rule.enabled] diff --git a/tests/test_ui_main_window.py b/tests/test_ui_main_window.py index 57ae185..681ce99 100644 --- a/tests/test_ui_main_window.py +++ b/tests/test_ui_main_window.py @@ -1,5 +1,13 @@ from app.models import RuleSet -from app.ui.main_window import UiDependencyError, is_check_area_position, rectangles_overlap +from app.detector import MatchResult +from app.runner import RuleRunResult +from app.ui.main_window import ( + UiDependencyError, + format_rule_test_result, + format_score_percent, + is_check_area_position, + rectangles_overlap, +) import pytest @@ -41,3 +49,49 @@ def test_rectangles_overlap_returns_false_when_areas_do_not_intersect(): def test_is_check_area_position_detects_left_edge(): assert is_check_area_position(12) is True assert is_check_area_position(40) is False + + +def test_format_score_percent(): + assert format_score_percent(0.842) == "84.2%" + + +def test_format_rule_test_result_returns_not_run_without_result(): + assert format_rule_test_result(None, confidence=0.85) == ["Last Test: not run"] + + +def test_format_rule_test_result_returns_matched_summary(): + result = RuleRunResult( + rule_name="Rule", + matched=True, + score=0.95, + match=MatchResult( + rule_name="Rule", + score=0.95, + x=10, + y=20, + width=10, + height=10, + ), + ) + + assert format_rule_test_result(result, confidence=0.85) == [ + "Last Test: matched (95.0% >= 85.0%)", + "Match: x=10, y=20, center=(15, 25)", + ] + + +def test_format_rule_test_result_returns_below_threshold_summary(): + result = RuleRunResult(rule_name="Rule", score=0.842) + + assert format_rule_test_result(result, confidence=0.85) == [ + "Last Test: below threshold (84.2% < 85.0%)" + ] + + +def test_format_rule_test_result_returns_error_summary(): + result = RuleRunResult(rule_name="Rule", error="template missing") + + assert format_rule_test_result(result, confidence=0.85) == [ + "Last Test: error", + "Error: template missing", + ] From 92926fc03e99b4ee3e4fea5f4c721da6d5def88c Mon Sep 17 00:00:00 2001 From: rakima Date: Mon, 13 Jul 2026 03:17:23 +0900 Subject: [PATCH 04/11] =?UTF-8?q?add:=20=E3=83=AB=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E8=A4=87=E8=A3=BD=E3=80=81=E4=B8=A6=E3=81=B3=E6=9B=BF?= =?UTF-8?q?=E3=81=88=E6=A9=9F=E8=83=BD=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 1 + README.md | 1 + app/rule_operations.py | 54 ++++++++++++++ app/ui/main_window.py | 128 ++++++++++++++++++++++++++++++++-- tests/test_rule_operations.py | 70 +++++++++++++++++++ 5 files changed, 247 insertions(+), 7 deletions(-) diff --git a/README.ja.md b/README.ja.md index c452be9..9407e85 100644 --- a/README.ja.md +++ b/README.ja.md @@ -22,6 +22,7 @@ v0.1.0を公開済みです。 - PySide6によるデスクトップGUI - JSONによるルール保存・読み込み - ルールの追加・編集・削除 +- ルールの複製・並び替え - 画面上での探索範囲選択 - 検知画像上でのクリック位置指定 - マルチディスプレイ対応 diff --git a/README.md b/README.md index c0c2d73..4177407 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Current implementation includes: - PySide6 desktop GUI - JSON rule loading and saving - Rule add, edit, and delete +- Rule duplication and reordering - Screen region selection - Click position selection on the template image - Multi-monitor region support diff --git a/app/rule_operations.py b/app/rule_operations.py index cb7fa0d..207b251 100644 --- a/app/rule_operations.py +++ b/app/rule_operations.py @@ -2,6 +2,7 @@ from __future__ import annotations +from dataclasses import replace from pathlib import Path from app.models import Rule, RuleSet @@ -36,6 +37,59 @@ def remove_rule(rule_set: RuleSet, index: int) -> RuleSet: return RuleSet(version=rule_set.version, rules=rules) +def duplicate_rule(rule_set: RuleSet, index: int) -> RuleSet: + """Return a new RuleSet with the selected rule copied after itself.""" + if index < 0 or index >= len(rule_set.rules): + raise RuleOperationError("rule index is out of range") + + rules = list(rule_set.rules) + original = rules[index] + duplicated = replace( + original, + name=_copy_rule_name(original.name, {rule.name for rule in rules}), + ) + rules.insert(index + 1, duplicated) + return RuleSet(version=rule_set.version, rules=rules) + + +def move_rule(rule_set: RuleSet, index: int, target_index: int) -> RuleSet: + """Return a new RuleSet with one rule moved to target_index.""" + if index < 0 or index >= len(rule_set.rules): + raise RuleOperationError("rule index is out of range") + if target_index < 0 or target_index >= len(rule_set.rules): + raise RuleOperationError("target rule index is out of range") + + rules = list(rule_set.rules) + rule = rules.pop(index) + rules.insert(target_index, rule) + return RuleSet(version=rule_set.version, rules=rules) + + +def reorder_rules(rule_set: RuleSet, order: list[int]) -> RuleSet: + """Return a new RuleSet reordered by a list of original indices.""" + if len(order) != len(rule_set.rules): + raise RuleOperationError("rule order length does not match rule count") + if sorted(order) != list(range(len(rule_set.rules))): + raise RuleOperationError("rule order must contain each rule index exactly once") + + return RuleSet( + version=rule_set.version, + rules=[rule_set.rules[index] for index in order], + ) + + +def _copy_rule_name(name: str, existing_names: set[str]) -> str: + base_name = f"{name} copy" + if base_name not in existing_names: + return base_name + + suffix = 2 + while f"{base_name} {suffix}" in existing_names: + suffix += 1 + + return f"{base_name} {suffix}" + + def make_image_path_relative(rule: Rule, base_dir: str | Path) -> Rule: """Return a copy of rule with image path relative to base_dir when possible.""" image_path = Path(rule.image) diff --git a/app/ui/main_window.py b/app/ui/main_window.py index a55338a..1c2aa69 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -9,8 +9,11 @@ from app.models import RuleSet from app.rule_operations import ( add_rule, + duplicate_rule, make_image_path_relative, make_rule_set_image_paths_relative, + move_rule, + reorder_rules, remove_rule, replace_rule, ) @@ -142,6 +145,10 @@ def create_main_window(rule_set: RuleSet, rules_path: str | Path | None = None): QWidget = qt["QWidget"] class RuleListWidget(QListWidget): + def __init__(self) -> None: + super().__init__() + self.on_reordered = None + def mouseDoubleClickEvent(self, event) -> None: position = event.position().toPoint() if self.itemAt(position) is not None and is_check_area_position(position.x()): @@ -150,6 +157,16 @@ def mouseDoubleClickEvent(self, event) -> None: super().mouseDoubleClickEvent(event) + def dropEvent(self, event) -> None: + before_order = self.rule_order() + super().dropEvent(event) + after_order = self.rule_order() + if after_order != before_order and callable(self.on_reordered): + self.on_reordered(after_order) + + def rule_order(self) -> list[int]: + return [self.item(row).data(Qt.UserRole) for row in range(self.count())] + class MainWindow(QMainWindow): def __init__(self, rules: RuleSet, path: str | Path | None = None) -> None: super().__init__() @@ -212,21 +229,40 @@ def _build_ui(self) -> None: self.rule_list.currentRowChanged.connect(self._show_rule_summary) self.rule_list.itemChanged.connect(self._on_rule_item_changed) self.rule_list.itemDoubleClicked.connect(self._open_rule_item_editor) + self.rule_list.on_reordered = self._on_rule_list_reordered + self.rule_list.setDragDropMode(QListWidget.InternalMove) + self.rule_list.setDefaultDropAction(Qt.MoveAction) + self.rule_list.setDropIndicatorShown(True) left_layout.addWidget(self.rule_list, 1) rule_buttons = QHBoxLayout() self.add_button = QPushButton("Add") self.edit_button = QPushButton("Edit") + self.duplicate_button = QPushButton("Duplicate") self.delete_button = QPushButton("Delete") self.edit_button.setEnabled(False) + self.duplicate_button.setEnabled(False) self.delete_button.setEnabled(False) self.add_button.clicked.connect(self._open_new_rule_editor) self.edit_button.clicked.connect(self._open_selected_rule_editor) + self.duplicate_button.clicked.connect(self._duplicate_selected_rule) self.delete_button.clicked.connect(self._delete_selected_rule) rule_buttons.addWidget(self.add_button) rule_buttons.addWidget(self.edit_button) + rule_buttons.addWidget(self.duplicate_button) rule_buttons.addWidget(self.delete_button) left_layout.addLayout(rule_buttons) + + move_buttons = QHBoxLayout() + self.move_up_button = QPushButton("Up") + self.move_down_button = QPushButton("Down") + self.move_up_button.setEnabled(False) + self.move_down_button.setEnabled(False) + self.move_up_button.clicked.connect(self._move_selected_rule_up) + self.move_down_button.clicked.connect(self._move_selected_rule_down) + move_buttons.addWidget(self.move_up_button) + move_buttons.addWidget(self.move_down_button) + left_layout.addLayout(move_buttons) splitter.addWidget(left_panel) right_panel = QWidget() @@ -254,9 +290,10 @@ def _build_ui(self) -> None: def _load_rules(self) -> None: self.is_loading_rules = True self.rule_list.clear() - for rule in self.rule_set.rules: + for index, rule in enumerate(self.rule_set.rules): item = QListWidgetItem(rule.name) - item.setFlags(item.flags() | Qt.ItemIsUserCheckable) + item.setFlags(item.flags() | Qt.ItemIsUserCheckable | Qt.ItemIsDragEnabled) + item.setData(Qt.UserRole, index) item.setCheckState(Qt.Checked if rule.enabled else Qt.Unchecked) self.rule_list.addItem(item) self.is_loading_rules = False @@ -265,8 +302,7 @@ def _load_rules(self) -> None: self.rule_list.setCurrentRow(0) def _show_rule_summary(self, row: int) -> None: - self.edit_button.setEnabled(row >= 0 and not self.is_running) - self.delete_button.setEnabled(row >= 0 and not self.is_running) + self._update_rule_buttons(row) if row < 0: self.summary_label.setText("No rule selected.") return @@ -358,6 +394,26 @@ def _open_rule_editor(self, rule, index) -> None: self.rule_list.setCurrentRow(selected_row) self.append_log(f"Saved rule: {edited_rule.name}") + def _duplicate_selected_rule(self) -> None: + if self.is_running: + return + row = self.rule_list.currentRow() + if row < 0: + return + + try: + self.rule_set = duplicate_rule(self.rule_set, row) + self._save_rules() + except Exception as error: + QMessageBox.warning(self, "Could not duplicate rule", str(error)) + self.append_log(f"Rule duplicate failed: {error}") + return + + duplicated_rule = self.rule_set.rules[row + 1] + self._load_rules() + self.rule_list.setCurrentRow(row + 1) + self.append_log(f"Duplicated rule: {duplicated_rule.name}") + def _delete_selected_rule(self) -> None: if self.is_running: return @@ -392,6 +448,56 @@ def _delete_selected_rule(self) -> None: self._show_rule_summary(-1) self.append_log(f"Deleted rule: {rule.name}") + def _move_selected_rule_up(self) -> None: + self._move_selected_rule(-1) + + def _move_selected_rule_down(self) -> None: + self._move_selected_rule(1) + + def _move_selected_rule(self, direction: int) -> None: + if self.is_running: + return + row = self.rule_list.currentRow() + target_row = row + direction + if row < 0 or target_row < 0 or target_row >= len(self.rule_set.rules): + return + + rule_name = self.rule_set.rules[row].name + try: + self.rule_set = move_rule(self.rule_set, row, target_row) + self._save_rules() + except Exception as error: + QMessageBox.warning(self, "Could not move rule", str(error)) + self.append_log(f"Rule move failed: {error}") + return + + self._load_rules() + self.rule_list.setCurrentRow(target_row) + self.append_log(f"Moved rule: {rule_name}") + + def _on_rule_list_reordered(self, order: list[int]) -> None: + if self.is_loading_rules: + return + if self.is_running: + self._load_rules() + return + + current_item = self.rule_list.currentItem() + selected_original_index = current_item.data(Qt.UserRole) if current_item is not None else None + try: + self.rule_set = reorder_rules(self.rule_set, order) + self._save_rules() + except Exception as error: + QMessageBox.warning(self, "Could not reorder rules", str(error)) + self.append_log(f"Rule reorder failed: {error}") + self._load_rules() + return + + selected_row = order.index(selected_original_index) if selected_original_index in order else 0 + self._load_rules() + self.rule_list.setCurrentRow(selected_row) + self.append_log("Reordered rules.") + def _on_rule_item_changed(self, item) -> None: if self.is_loading_rules: return @@ -570,9 +676,17 @@ def _set_running_state(self, running: bool) -> None: self.stop_button.setEnabled(running) self.test_button.setEnabled(not running) self.add_button.setEnabled(not running) - selected = self.rule_list.currentRow() >= 0 - self.edit_button.setEnabled(selected and not running) - self.delete_button.setEnabled(selected and not running) + self.rule_list.setDragDropMode(QListWidget.NoDragDrop if running else QListWidget.InternalMove) + self._update_rule_buttons(self.rule_list.currentRow()) + + def _update_rule_buttons(self, row: int) -> None: + selected = row >= 0 + can_edit = selected and not self.is_running + self.edit_button.setEnabled(can_edit) + self.duplicate_button.setEnabled(can_edit) + self.delete_button.setEnabled(can_edit) + self.move_up_button.setEnabled(can_edit and row > 0) + self.move_down_button.setEnabled(can_edit and row < len(self.rule_set.rules) - 1) def _run_loop_tick(self) -> None: if ( diff --git a/tests/test_rule_operations.py b/tests/test_rule_operations.py index 2fea5b9..c966b5e 100644 --- a/tests/test_rule_operations.py +++ b/tests/test_rule_operations.py @@ -4,8 +4,11 @@ from app.rule_operations import ( RuleOperationError, add_rule, + duplicate_rule, make_image_path_relative, make_rule_set_image_paths_relative, + move_rule, + reorder_rules, remove_rule, replace_rule, ) @@ -60,6 +63,73 @@ def test_remove_rule_rejects_out_of_range_index(): remove_rule(RuleSet(rules=[]), 0) +def test_duplicate_rule_inserts_copy_after_selected_rule(): + original = RuleSet(rules=[make_rule("a"), make_rule("b")]) + + updated = duplicate_rule(original, 0) + + assert [rule.name for rule in original.rules] == ["a", "b"] + assert [rule.name for rule in updated.rules] == ["a", "a copy", "b"] + assert updated.rules[1].image == "images/a.png" + + +def test_duplicate_rule_uses_unique_copy_name(): + original = RuleSet( + rules=[ + make_rule("a"), + make_rule("a copy"), + make_rule("a copy 2"), + ] + ) + + updated = duplicate_rule(original, 0) + + assert [rule.name for rule in updated.rules] == ["a", "a copy 3", "a copy", "a copy 2"] + + +def test_duplicate_rule_rejects_out_of_range_index(): + with pytest.raises(RuleOperationError, match="out of range"): + duplicate_rule(RuleSet(rules=[]), 0) + + +def test_move_rule_reorders_rules(): + original = RuleSet(rules=[make_rule("a"), make_rule("b"), make_rule("c")]) + + updated = move_rule(original, 2, 0) + + assert [rule.name for rule in original.rules] == ["a", "b", "c"] + assert [rule.name for rule in updated.rules] == ["c", "a", "b"] + + +def test_move_rule_rejects_out_of_range_index(): + with pytest.raises(RuleOperationError, match="out of range"): + move_rule(RuleSet(rules=[make_rule("a")]), 1, 0) + + +def test_move_rule_rejects_out_of_range_target_index(): + with pytest.raises(RuleOperationError, match="target rule index is out of range"): + move_rule(RuleSet(rules=[make_rule("a")]), 0, 1) + + +def test_reorder_rules_reorders_by_original_indices(): + original = RuleSet(rules=[make_rule("a"), make_rule("b"), make_rule("c")]) + + updated = reorder_rules(original, [2, 0, 1]) + + assert [rule.name for rule in original.rules] == ["a", "b", "c"] + assert [rule.name for rule in updated.rules] == ["c", "a", "b"] + + +def test_reorder_rules_rejects_length_mismatch(): + with pytest.raises(RuleOperationError, match="length"): + reorder_rules(RuleSet(rules=[make_rule("a"), make_rule("b")]), [1]) + + +def test_reorder_rules_rejects_duplicate_indices(): + with pytest.raises(RuleOperationError, match="exactly once"): + reorder_rules(RuleSet(rules=[make_rule("a"), make_rule("b")]), [0, 0]) + + def test_make_image_path_relative_converts_path_inside_base_dir(tmp_path): base_dir = tmp_path / "project" image_path = base_dir / "image" / "button.png" From 40fd8fc99a2af78258e9633263b6c9892cb953bc Mon Sep 17 00:00:00 2001 From: rakima Date: Mon, 13 Jul 2026 03:19:39 +0900 Subject: [PATCH 05/11] =?UTF-8?q?add:=20=E6=A4=9C=E7=9F=A5=E7=94=BB?= =?UTF-8?q?=E5=83=8F=E3=83=97=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 1 + README.md | 1 + app/ui/main_window.py | 59 ++++++++++++++++++++++++++++++++++++ tests/test_ui_main_window.py | 13 ++++++++ 4 files changed, 74 insertions(+) diff --git a/README.ja.md b/README.ja.md index 9407e85..8bc6f2c 100644 --- a/README.ja.md +++ b/README.ja.md @@ -23,6 +23,7 @@ v0.1.0を公開済みです。 - JSONによるルール保存・読み込み - ルールの追加・編集・削除 - ルールの複製・並び替え +- 検知画像プレビュー - 画面上での探索範囲選択 - 検知画像上でのクリック位置指定 - マルチディスプレイ対応 diff --git a/README.md b/README.md index 4177407..e7ae2e2 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ Current implementation includes: - JSON rule loading and saving - Rule add, edit, and delete - Rule duplication and reordering +- Detection image preview - Screen region selection - Click position selection on the template image - Multi-monitor region support diff --git a/app/ui/main_window.py b/app/ui/main_window.py index 1c2aa69..4371bc5 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -47,6 +47,14 @@ def is_check_area_position(x: int, check_area_width: int = 28) -> bool: return x <= check_area_width +def resolve_rule_image_path(image: str, base_dir: str | Path | None = None) -> Path: + """Resolve a rule image path against the rules file directory.""" + image_path = Path(image) + if base_dir is not None and not image_path.is_absolute(): + return Path(base_dir) / image_path + return image_path + + def format_score_percent(score: float) -> str: """Format an OpenCV match score as a percentage.""" return f"{score * 100:.1f}%" @@ -97,6 +105,7 @@ def import_qt_widgets(): QWidget, ) from PySide6.QtCore import QTimer, Qt # type: ignore[import-not-found] + from PySide6.QtGui import QImage, QPixmap # type: ignore[import-not-found] except ImportError as error: raise UiDependencyError("PySide6 is not installed") from error @@ -104,6 +113,7 @@ def import_qt_widgets(): "QDialog": QDialog, "QFrame": QFrame, "QHBoxLayout": QHBoxLayout, + "QImage": QImage, "QLabel": QLabel, "QListWidget": QListWidget, "QListWidgetItem": QListWidgetItem, @@ -111,6 +121,7 @@ def import_qt_widgets(): "QMessageBox": QMessageBox, "QPushButton": QPushButton, "QPlainTextEdit": QPlainTextEdit, + "QPixmap": QPixmap, "QSizePolicy": QSizePolicy, "QSplitter": QSplitter, "QTimer": QTimer, @@ -131,6 +142,7 @@ def create_main_window(rule_set: RuleSet, rules_path: str | Path | None = None): QDialog = qt["QDialog"] QFrame = qt["QFrame"] QHBoxLayout = qt["QHBoxLayout"] + QImage = qt["QImage"] QLabel = qt["QLabel"] QListWidget = qt["QListWidget"] QListWidgetItem = qt["QListWidgetItem"] @@ -138,6 +150,7 @@ def create_main_window(rule_set: RuleSet, rules_path: str | Path | None = None): QMessageBox = qt["QMessageBox"] QPushButton = qt["QPushButton"] QPlainTextEdit = qt["QPlainTextEdit"] + QPixmap = qt["QPixmap"] QSizePolicy = qt["QSizePolicy"] QSplitter = qt["QSplitter"] QTimer = qt["QTimer"] @@ -271,6 +284,14 @@ def _build_ui(self) -> None: right_layout.setSpacing(8) right_layout.addWidget(QLabel("Selected Rule")) + self.preview_label = QLabel("No image preview.") + self.preview_label.setAlignment(Qt.AlignCenter) + self.preview_label.setMinimumSize(220, 150) + self.preview_label.setMaximumHeight(190) + self.preview_label.setFrameShape(QFrame.StyledPanel) + self.preview_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) + right_layout.addWidget(self.preview_label, 0) + self.summary_label = QLabel("No rule selected.") self.summary_label.setAlignment(Qt.AlignTop | Qt.AlignLeft) self.summary_label.setWordWrap(True) @@ -304,10 +325,12 @@ def _load_rules(self) -> None: def _show_rule_summary(self, row: int) -> None: self._update_rule_buttons(row) if row < 0: + self._clear_rule_preview("No image preview.") self.summary_label.setText("No rule selected.") return rule = self.rule_set.rules[row] + self._show_rule_preview(rule.image) region = rule.region offset = rule.action.offset test_result_lines = format_rule_test_result( @@ -331,6 +354,42 @@ def _show_rule_summary(self, row: int) -> None: ) ) + def _show_rule_preview(self, image: str) -> None: + base_dir = self.rules_path.parent if self.rules_path is not None else Path(".") + image_path = resolve_rule_image_path(image, base_dir) + if not image_path.exists() or not image_path.is_file(): + self._clear_rule_preview("Image not found.") + return + + try: + image_data = image_path.read_bytes() + except OSError: + self._clear_rule_preview("Could not read image.") + return + + qimage = QImage.fromData(image_data) + if qimage.isNull(): + self._clear_rule_preview("Could not preview image.") + return + + pixmap = QPixmap.fromImage(qimage) + max_width = max(1, self.preview_label.width() - 12) + max_height = max(1, self.preview_label.height() - 12) + self.preview_label.setPixmap( + pixmap.scaled( + max_width, + max_height, + Qt.KeepAspectRatio, + Qt.SmoothTransformation, + ) + ) + self.preview_label.setToolTip(str(image_path)) + + def _clear_rule_preview(self, message: str) -> None: + self.preview_label.clear() + self.preview_label.setText(message) + self.preview_label.setToolTip("") + def append_log(self, message: str) -> None: timestamp = datetime.now().strftime("%H:%M:%S") self.log_view.appendPlainText(f"[{timestamp}] {message}") diff --git a/tests/test_ui_main_window.py b/tests/test_ui_main_window.py index 681ce99..dbe9631 100644 --- a/tests/test_ui_main_window.py +++ b/tests/test_ui_main_window.py @@ -7,6 +7,7 @@ format_score_percent, is_check_area_position, rectangles_overlap, + resolve_rule_image_path, ) import pytest @@ -35,6 +36,8 @@ def test_import_qt_widgets_returns_required_widget_names_when_pyside6_is_availab assert "QMainWindow" in qt assert "QListWidget" in qt assert "QPlainTextEdit" in qt + assert "QImage" in qt + assert "QPixmap" in qt assert "QTimer" in qt @@ -51,6 +54,16 @@ def test_is_check_area_position_detects_left_edge(): assert is_check_area_position(40) is False +def test_resolve_rule_image_path_uses_base_dir_for_relative_path(tmp_path): + assert resolve_rule_image_path("image/button.png", tmp_path) == tmp_path / "image" / "button.png" + + +def test_resolve_rule_image_path_leaves_absolute_path(tmp_path): + image_path = tmp_path / "button.png" + + assert resolve_rule_image_path(str(image_path), tmp_path) == image_path + + def test_format_score_percent(): assert format_score_percent(0.842) == "84.2%" From d7a3e041a4cbacd870cabd421f5c577fb4312340 Mon Sep 17 00:00:00 2001 From: rakima Date: Mon, 13 Jul 2026 03:22:16 +0900 Subject: [PATCH 06/11] =?UTF-8?q?add:=20=E3=82=B9=E3=82=AF=E3=83=AA?= =?UTF-8?q?=E3=83=BC=E3=83=B3=E3=82=B7=E3=83=A7=E3=83=83=E3=83=88=E3=81=8B?= =?UTF-8?q?=E3=82=89=E6=A4=9C=E7=9F=A5=E7=94=BB=E5=83=8F=E3=82=92=E5=88=87?= =?UTF-8?q?=E3=82=8A=E5=87=BA=E3=81=99=E6=A9=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 1 + README.md | 1 + app/ui/region_selector.py | 20 ++++++++++++ app/ui/rule_editor.py | 61 +++++++++++++++++++++++++++++++++++ tests/test_region_selector.py | 21 +++++++++++- tests/test_rule_editor.py | 33 ++++++++++++++++++- 6 files changed, 135 insertions(+), 2 deletions(-) diff --git a/README.ja.md b/README.ja.md index 8bc6f2c..b9b1556 100644 --- a/README.ja.md +++ b/README.ja.md @@ -24,6 +24,7 @@ v0.1.0を公開済みです。 - ルールの追加・編集・削除 - ルールの複製・並び替え - 検知画像プレビュー +- スクリーンショットからの検知画像切り出し - 画面上での探索範囲選択 - 検知画像上でのクリック位置指定 - マルチディスプレイ対応 diff --git a/README.md b/README.md index e7ae2e2..b7b92b4 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ Current implementation includes: - Rule add, edit, and delete - Rule duplication and reordering - Detection image preview +- Detection image capture from screenshots - Screen region selection - Click position selection on the template image - Multi-monitor region support diff --git a/app/ui/region_selector.py b/app/ui/region_selector.py index 67058a0..dc977ba 100644 --- a/app/ui/region_selector.py +++ b/app/ui/region_selector.py @@ -36,6 +36,21 @@ def region_from_points(start: Point, end: Point, origin: Point | None = None) -> return Region(x=x + origin.x, y=y + origin.y, width=width, height=height) +def crop_image_by_region(image: np.ndarray, region: Region, origin: Point | None = None) -> np.ndarray: + """Crop an image using a screen-coordinate region and screenshot origin.""" + origin = origin or Point(0, 0) + left = region.x - origin.x + top = region.y - origin.y + right = left + region.width + bottom = top + region.height + + image_height, image_width = image.shape[:2] + if left < 0 or top < 0 or right > image_width or bottom > image_height: + raise RegionSelectionError("Selected region is outside the screenshot.") + + return image[top:bottom, left:right].copy() + + def import_qt_modules(): try: from PySide6.QtCore import QPoint, QRect, Qt # type: ignore[import-not-found] @@ -154,6 +169,8 @@ def __init__(self, image: np.ndarray, origin: Point, parent_widget=None) -> None super().__init__(parent_widget) self.setWindowTitle("Select Region") self.resize(960, 640) + self.image = image + self.origin = origin self._build_ui(image, origin) def _build_ui(self, image: np.ndarray, origin: Point) -> None: @@ -181,6 +198,9 @@ def _build_ui(self, image: np.ndarray, origin: Point) -> None: def selected_region(self) -> Region: return self.screenshot_label.selected_region() + def selected_image(self) -> np.ndarray: + return crop_image_by_region(self.image, self.selected_region(), self.origin) + def accept(self) -> None: try: self.selected_region() diff --git a/app/ui/rule_editor.py b/app/ui/rule_editor.py index 74673e5..0890e15 100644 --- a/app/ui/rule_editor.py +++ b/app/ui/rule_editor.py @@ -4,6 +4,7 @@ from dataclasses import dataclass from pathlib import Path +import re import cv2 import numpy as np @@ -16,6 +17,32 @@ class RuleFormValidationError(ValueError): """Raised when rule editor form data is invalid.""" +def safe_template_file_stem(name: str) -> str: + """Return a filesystem-friendly template filename stem.""" + stem = re.sub(r"[^0-9A-Za-z_-]+", "_", name.strip()).strip("_") + return stem or "template" + + +def default_captured_template_path(base_dir: str | Path | None, rule_name: str) -> Path: + """Return the default output path for a captured template image.""" + root = Path(base_dir) if base_dir is not None else Path(".") + return root / "image" / f"{safe_template_file_stem(rule_name)}.png" + + +def save_captured_template(path: str | Path, image: np.ndarray) -> None: + """Save a captured BGR template image as PNG.""" + output_path = Path(path) + output_path.parent.mkdir(parents=True, exist_ok=True) + success, encoded_image = cv2.imencode(".png", image) + if not success: + raise RuleFormValidationError(f"Could not encode captured image: {output_path}") + + try: + encoded_image.tofile(str(output_path)) + except OSError as error: + raise RuleFormValidationError(f"Could not save captured image: {output_path}") from error + + def resolve_image_path(image: str, base_dir: str | Path | None = None) -> Path: image_path = Path(image) if base_dir is not None and not image_path.is_absolute(): @@ -193,11 +220,14 @@ def _build_ui(self) -> None: image_layout.setContentsMargins(0, 0, 0, 0) self.image_input = QLineEdit() self.image_button = QPushButton("Browse") + self.capture_button = QPushButton("Capture") self.mask_button = QPushButton("Edit Mask") self.image_button.clicked.connect(self._browse_image) + self.capture_button.clicked.connect(self._capture_image) self.mask_button.clicked.connect(self._edit_mask) image_layout.addWidget(self.image_input, 1) image_layout.addWidget(self.image_button) + image_layout.addWidget(self.capture_button) image_layout.addWidget(self.mask_button) form.addRow("Detection image", image_row) @@ -273,6 +303,37 @@ def _browse_image(self) -> None: if path: self.image_input.setText(self._display_image_path(path)) + def _capture_image(self) -> None: + from app.ui.region_selector import create_region_selector + + dialog = create_region_selector(parent=self) + if dialog is None: + return + if dialog.exec() != QDialog.Accepted: + return + + default_path = default_captured_template_path(base_dir, self.name_input.text()) + path, _ = QFileDialog.getSaveFileName( + self, + "Save captured template", + str(default_path), + "PNG image (*.png);;All files (*.*)", + ) + if not path: + return + + output_path = Path(path) + if output_path.suffix.lower() != ".png": + output_path = output_path.with_suffix(".png") + + try: + save_captured_template(output_path, dialog.selected_image()) + except RuleFormValidationError as error: + QMessageBox.warning(self, "Could not save captured image", str(error)) + return + + self.image_input.setText(self._display_image_path(str(output_path))) + def _display_image_path(self, path: str) -> str: image_path = Path(path) if base_dir is None or not image_path.is_absolute(): diff --git a/tests/test_region_selector.py b/tests/test_region_selector.py index 5361b7f..4abc201 100644 --- a/tests/test_region_selector.py +++ b/tests/test_region_selector.py @@ -3,7 +3,7 @@ from app.models import Region from app.ui.main_window import UiDependencyError -from app.ui.region_selector import Point, RegionSelectionError, region_from_points +from app.ui.region_selector import Point, RegionSelectionError, crop_image_by_region, region_from_points def test_region_from_points_handles_down_right_drag(): @@ -38,6 +38,25 @@ def test_region_from_points_rejects_empty_region(): region_from_points(Point(10, 20), Point(10, 20)) +def test_crop_image_by_region_uses_virtual_origin(): + image = np.arange(5 * 6 * 3, dtype=np.uint8).reshape((5, 6, 3)) + + cropped = crop_image_by_region( + image, + Region(x=-8, y=21, width=3, height=2), + origin=Point(-10, 20), + ) + + np.testing.assert_array_equal(cropped, image[1:3, 2:5]) + + +def test_crop_image_by_region_rejects_outside_region(): + image = np.zeros((5, 6, 3), dtype=np.uint8) + + with pytest.raises(RegionSelectionError, match="outside"): + crop_image_by_region(image, Region(x=5, y=0, width=2, height=2)) + + def test_create_region_selector_raises_clear_error_without_pyside6(monkeypatch): import app.ui.region_selector as region_selector diff --git a/tests/test_rule_editor.py b/tests/test_rule_editor.py index 7b13e77..8a0e8b3 100644 --- a/tests/test_rule_editor.py +++ b/tests/test_rule_editor.py @@ -4,7 +4,14 @@ from app.models import Action, Offset, Region, Rule from app.ui.main_window import UiDependencyError -from app.ui.rule_editor import RuleFormData, RuleFormValidationError, validate_detection_image +from app.ui.rule_editor import ( + RuleFormData, + RuleFormValidationError, + default_captured_template_path, + safe_template_file_stem, + save_captured_template, + validate_detection_image, +) def write_image(path, image: np.ndarray) -> None: @@ -117,6 +124,30 @@ def test_validate_detection_image_rejects_fully_transparent_png(tmp_path): validate_detection_image("transparent.png", base_dir=tmp_path) +def test_safe_template_file_stem_removes_unsafe_characters(): + assert safe_template_file_stem("Start Button!?") == "Start_Button" + + +def test_safe_template_file_stem_uses_fallback_for_blank_name(): + assert safe_template_file_stem(" ") == "template" + + +def test_default_captured_template_path_uses_image_directory(tmp_path): + assert default_captured_template_path(tmp_path, "Start Button") == tmp_path / "image" / "Start_Button.png" + + +def test_save_captured_template_writes_png(tmp_path): + image = np.zeros((4, 5, 3), dtype=np.uint8) + image[:, :] = (0, 0, 255) + output_path = tmp_path / "画像" / "button.png" + + save_captured_template(output_path, image) + + decoded = cv2.imdecode(np.fromfile(str(output_path), dtype=np.uint8), cv2.IMREAD_UNCHANGED) + assert decoded is not None + assert decoded.shape == (4, 5, 3) + + def test_create_rule_editor_raises_clear_error_without_pyside6(monkeypatch): import app.ui.rule_editor as rule_editor From f8312b1283d34d28fb30e044db96a3a6750b81af Mon Sep 17 00:00:00 2001 From: rakima Date: Mon, 13 Jul 2026 03:23:32 +0900 Subject: [PATCH 07/11] =?UTF-8?q?add:=20Esc=E3=81=AE=E7=B7=8A=E6=80=A5?= =?UTF-8?q?=E5=81=9C=E6=AD=A2=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 2 +- README.md | 2 +- app/ui/main_window.py | 16 +++++++++++++++- tests/test_ui_main_window.py | 6 ++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/README.ja.md b/README.ja.md index b9b1556..0a467b1 100644 --- a/README.ja.md +++ b/README.ja.md @@ -148,7 +148,7 @@ GitHub Releasesでは、Windows向けzipを配布しています。 8. ルールを保存する。 9. `Test Detection`でクリックなしの検知確認を行う。 10. `Start`で実行する。 -11. `Stop`で停止する。 +11. `Stop`または`Esc`で停止する。 ## ルール例 diff --git a/README.md b/README.md index b7b92b4..f974cf4 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ GitHub Releases can be created from tags such as `v0.1.0-alpha.1`. The release w 8. Save the rule. 9. Use `Test Detection` to verify matching without clicking. 10. Click `Start` to run the macro loop. -11. Click `Stop` to stop execution. +11. Click `Stop` or press `Esc` to stop execution. ## Rule Example diff --git a/app/ui/main_window.py b/app/ui/main_window.py index 4371bc5..fad6840 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -47,6 +47,11 @@ def is_check_area_position(x: int, check_area_width: int = 28) -> bool: return x <= check_area_width +def is_escape_key(key: int, escape_key: int) -> bool: + """Return whether the pressed key is Escape.""" + return key == escape_key + + def resolve_rule_image_path(image: str, base_dir: str | Path | None = None) -> Path: """Resolve a rule image path against the rules file directory.""" image_path = Path(image) @@ -668,7 +673,8 @@ def _start_running(self) -> None: self.last_rule_log_states = {} self._set_running_state(True) self.append_log( - f"Macro started. enabled_rules={len(enabled_rules)}, interval={self.run_timer.interval()}ms" + f"Macro started. enabled_rules={len(enabled_rules)}, interval={self.run_timer.interval()}ms. " + "Press Esc to stop." ) self.run_timer.start() @@ -798,6 +804,14 @@ def _append_state_change_log(self, rule_name: str, state: str, message: str) -> self.last_rule_log_states[rule_name] = state self.append_log(message) + def keyPressEvent(self, event) -> None: + if self.is_running and is_escape_key(event.key(), Qt.Key_Escape): + event.accept() + self._stop_running() + return + + super().keyPressEvent(event) + def closeEvent(self, event) -> None: if self.is_running: self._stop_running() diff --git a/tests/test_ui_main_window.py b/tests/test_ui_main_window.py index dbe9631..d2dfcb7 100644 --- a/tests/test_ui_main_window.py +++ b/tests/test_ui_main_window.py @@ -6,6 +6,7 @@ format_rule_test_result, format_score_percent, is_check_area_position, + is_escape_key, rectangles_overlap, resolve_rule_image_path, ) @@ -54,6 +55,11 @@ def test_is_check_area_position_detects_left_edge(): assert is_check_area_position(40) is False +def test_is_escape_key_matches_escape_only(): + assert is_escape_key(27, 27) is True + assert is_escape_key(65, 27) is False + + def test_resolve_rule_image_path_uses_base_dir_for_relative_path(tmp_path): assert resolve_rule_image_path("image/button.png", tmp_path) == tmp_path / "image" / "button.png" From 7529c40bca1b64252c4e9d5e3f9fb578be419d9e Mon Sep 17 00:00:00 2001 From: rakima Date: Mon, 13 Jul 2026 03:41:00 +0900 Subject: [PATCH 08/11] =?UTF-8?q?change:=20=E8=A4=87=E6=95=B0=E3=83=AB?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=82=92=E3=83=89=E3=83=AD=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=80=E3=82=A6=E3=83=B3=E3=83=AA=E3=82=B9=E3=83=88=E3=81=A7?= =?UTF-8?q?=E5=88=87=E3=82=8A=E6=9B=BF=E3=81=88=E3=82=89=E3=82=8C=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 3 ++ README.md | 3 ++ app/storage.py | 40 ++++++++++++++++ app/ui/main_window.py | 91 +++++++++++++++++++++++++++++++++++- rules/browser.json | 4 ++ rules/tower.json | 4 ++ tests/test_storage.py | 46 +++++++++++++++++- tests/test_ui_main_window.py | 20 ++++++++ 8 files changed, 208 insertions(+), 3 deletions(-) create mode 100644 rules/browser.json create mode 100644 rules/tower.json diff --git a/README.ja.md b/README.ja.md index 0a467b1..9e284ce 100644 --- a/README.ja.md +++ b/README.ja.md @@ -21,6 +21,7 @@ v0.1.0を公開済みです。 - PySide6によるデスクトップGUI - JSONによるルール保存・読み込み +- `rules/*.json` によるルールセット切り替え - ルールの追加・編集・削除 - ルールの複製・並び替え - 検知画像プレビュー @@ -150,6 +151,8 @@ GitHub Releasesでは、Windows向けzipを配布しています。 10. `Start`で実行する。 11. `Stop`または`Esc`で停止する。 +`rules`フォルダに`xxx.json`を配置すると、メイン画面上部の`Rule Set`からルールセットを切り替えられます。 + ## ルール例 ```json diff --git a/README.md b/README.md index f974cf4..fa6f8c8 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Current implementation includes: - PySide6 desktop GUI - JSON rule loading and saving +- Rule set switching from `rules/*.json` - Rule add, edit, and delete - Rule duplication and reordering - Detection image preview @@ -154,6 +155,8 @@ GitHub Releases can be created from tags such as `v0.1.0-alpha.1`. The release w 10. Click `Start` to run the macro loop. 11. Click `Stop` or press `Esc` to stop execution. +Place `xxx.json` files in the `rules` directory to switch rule sets from the `Rule Set` dropdown in the main window. + ## Rule Example ```json diff --git a/app/storage.py b/app/storage.py index 6759e60..6f97666 100644 --- a/app/storage.py +++ b/app/storage.py @@ -3,6 +3,7 @@ from __future__ import annotations import json +from dataclasses import dataclass from pathlib import Path from typing import Any @@ -13,6 +14,45 @@ class RuleStorageError(RuntimeError): """Raised when a rule file cannot be loaded or saved.""" +@dataclass(frozen=True) +class RuleProfile: + title: str + path: Path + + +def list_rule_profiles(base_dir: str | Path = ".") -> list[RuleProfile]: + """List the root rules.json and rule JSON files from the rules directory.""" + root_dir = Path(base_dir) + profile_paths = [] + + legacy_rules_path = root_dir / "rules.json" + if legacy_rules_path.is_file(): + profile_paths.append(legacy_rules_path) + + profiles_dir = root_dir / "rules" + if profiles_dir.exists() and profiles_dir.is_dir(): + profile_paths.extend( + path + for path in sorted(profiles_dir.glob("*.json"), key=lambda item: item.stem.lower()) + if path.is_file() + ) + + return _title_rule_profiles(profile_paths) + + +def _title_rule_profiles(paths: list[Path]) -> list[RuleProfile]: + title_counts: dict[str, int] = {} + profiles = [] + for path in paths: + base_title = path.stem + count = title_counts.get(base_title, 0) + title_counts[base_title] = count + 1 + title = base_title if count == 0 else f"{base_title} ({count})" + profiles.append(RuleProfile(title=title, path=path)) + + return profiles + + def load_rules(path: str | Path) -> RuleSet: """Load a rule set from JSON. diff --git a/app/ui/main_window.py b/app/ui/main_window.py index fad6840..f927fb0 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -52,6 +52,11 @@ def is_escape_key(key: int, escape_key: int) -> bool: return key == escape_key +def is_valid_rule_row(row: int, rule_count: int) -> bool: + """Return whether a row points to an existing rule.""" + return 0 <= row < rule_count + + def resolve_rule_image_path(image: str, base_dir: str | Path | None = None) -> Path: """Resolve a rule image path against the rules file directory.""" image_path = Path(image) @@ -60,6 +65,18 @@ def resolve_rule_image_path(image: str, base_dir: str | Path | None = None) -> P return image_path +def rule_profile_base_dir(rules_path: str | Path | None) -> Path: + """Return the project directory used to find rules/*.json profiles.""" + if rules_path is None: + return Path(".") + + path = Path(rules_path) + parent = path.parent + if parent.name == "rules": + return parent.parent + return parent + + def format_score_percent(score: float) -> str: """Format an OpenCV match score as a percentage.""" return f"{score * 100:.1f}%" @@ -94,6 +111,7 @@ def format_rule_test_result(result: RuleRunResult | None, confidence: float) -> def import_qt_widgets(): try: from PySide6.QtWidgets import ( # type: ignore[import-not-found] + QComboBox, QDialog, QFrame, QHBoxLayout, @@ -115,6 +133,7 @@ def import_qt_widgets(): raise UiDependencyError("PySide6 is not installed") from error return { + "QComboBox": QComboBox, "QDialog": QDialog, "QFrame": QFrame, "QHBoxLayout": QHBoxLayout, @@ -144,6 +163,7 @@ def create_main_window(rule_set: RuleSet, rules_path: str | Path | None = None): """ qt = import_qt_widgets() Qt = qt["Qt"] + QComboBox = qt["QComboBox"] QDialog = qt["QDialog"] QFrame = qt["QFrame"] QHBoxLayout = qt["QHBoxLayout"] @@ -197,12 +217,15 @@ def __init__(self, rules: RuleSet, path: str | Path | None = None) -> None: self.is_loading_rules = False self.last_rule_log_states = {} self.last_test_results = {} + self.is_loading_rule_profiles = False + self.rule_profiles = [] self.setWindowTitle("Macro Tool") self.resize(980, 680) self._build_ui() self.run_timer = QTimer(self) self.run_timer.setInterval(500) self.run_timer.timeout.connect(self._run_loop_tick) + self._load_rule_profiles() self._load_rules() self.append_log(f"Loaded {len(self.rule_set.rules)} rule(s).") self._append_environment_hints() @@ -218,6 +241,12 @@ def _build_ui(self) -> None: self.status_label = QLabel("Stopped") self.status_label.setObjectName("statusLabel") toolbar.addWidget(self.status_label) + toolbar.addSpacing(16) + toolbar.addWidget(QLabel("Rule Set")) + self.rule_profile_input = QComboBox() + self.rule_profile_input.setMinimumWidth(180) + self.rule_profile_input.currentIndexChanged.connect(self._on_rule_profile_changed) + toolbar.addWidget(self.rule_profile_input) toolbar.addStretch(1) self.test_button = QPushButton("Test Detection") @@ -327,9 +356,65 @@ def _load_rules(self) -> None: if self.rule_set.rules: self.rule_list.setCurrentRow(0) + def _load_rule_profiles(self) -> None: + from app.storage import list_rule_profiles + + self.rule_profiles = list_rule_profiles(rule_profile_base_dir(self.rules_path)) + self.is_loading_rule_profiles = True + self.rule_profile_input.clear() + + if not self.rule_profiles: + self.rule_profile_input.addItem("No rule sets") + self.rule_profile_input.setEnabled(False) + self.is_loading_rule_profiles = False + return + + for profile in self.rule_profiles: + self.rule_profile_input.addItem(profile.title, str(profile.path)) + + selected_index = -1 + if self.rules_path is not None: + current_path = self.rules_path.resolve() + for index, profile in enumerate(self.rule_profiles): + if profile.path.resolve() == current_path: + selected_index = index + break + + self.rule_profile_input.setCurrentIndex(selected_index) + self.rule_profile_input.setEnabled(not self.is_running) + self.is_loading_rule_profiles = False + + def _on_rule_profile_changed(self, index: int) -> None: + if self.is_loading_rule_profiles or self.is_running or index < 0: + return + + path_text = self.rule_profile_input.itemData(index) + if not path_text: + return + + profile_path = Path(path_text) + if self.rules_path is not None and profile_path.resolve() == self.rules_path.resolve(): + return + + from app.storage import load_rules + + try: + self.rule_set = load_rules(profile_path) + except RuleStorageError as error: + QMessageBox.warning(self, "Could not load rule set", str(error)) + self.append_log(f"Rule set load failed: {error}") + self._load_rule_profiles() + return + + self.rules_path = profile_path + self.last_rule_log_states = {} + self.last_test_results = {} + self._load_rules() + self.append_log(f"Loaded rule set: {profile_path} ({len(self.rule_set.rules)} rule(s).)") + def _show_rule_summary(self, row: int) -> None: self._update_rule_buttons(row) - if row < 0: + if not is_valid_rule_row(row, len(self.rule_set.rules)): self._clear_rule_preview("No image preview.") self.summary_label.setText("No rule selected.") return @@ -455,6 +540,7 @@ def _open_rule_editor(self, rule, index) -> None: self.last_test_results = {} self._load_rules() + self._load_rule_profiles() self.rule_list.setCurrentRow(selected_row) self.append_log(f"Saved rule: {edited_rule.name}") @@ -740,12 +826,13 @@ def _set_running_state(self, running: bool) -> None: self.start_button.setEnabled(not running) self.stop_button.setEnabled(running) self.test_button.setEnabled(not running) + self.rule_profile_input.setEnabled(bool(self.rule_profiles) and not running) self.add_button.setEnabled(not running) self.rule_list.setDragDropMode(QListWidget.NoDragDrop if running else QListWidget.InternalMove) self._update_rule_buttons(self.rule_list.currentRow()) def _update_rule_buttons(self, row: int) -> None: - selected = row >= 0 + selected = is_valid_rule_row(row, len(self.rule_set.rules)) can_edit = selected and not self.is_running self.edit_button.setEnabled(can_edit) self.duplicate_button.setEnabled(can_edit) diff --git a/rules/browser.json b/rules/browser.json new file mode 100644 index 0000000..ae107c7 --- /dev/null +++ b/rules/browser.json @@ -0,0 +1,4 @@ +{ + "version": 1, + "rules": [] +} diff --git a/rules/tower.json b/rules/tower.json new file mode 100644 index 0000000..ae107c7 --- /dev/null +++ b/rules/tower.json @@ -0,0 +1,4 @@ +{ + "version": 1, + "rules": [] +} diff --git a/tests/test_storage.py b/tests/test_storage.py index 1e94540..5f94b42 100644 --- a/tests/test_storage.py +++ b/tests/test_storage.py @@ -3,7 +3,7 @@ import pytest from app.models import Action, Region, Rule, RuleSet -from app.storage import RuleStorageError, load_rules, save_rules +from app.storage import RuleStorageError, list_rule_profiles, load_rules, save_rules def make_rule_set() -> RuleSet: @@ -78,3 +78,47 @@ def test_load_rules_rejects_invalid_rule_data(tmp_path): def test_save_rules_rejects_non_rule_set(tmp_path): with pytest.raises(RuleStorageError, match="RuleSet"): save_rules(tmp_path / "rules.json", object()) # type: ignore[arg-type] + + +def test_list_rule_profiles_returns_json_files_from_rules_directory(tmp_path): + rules_dir = tmp_path / "rules" + rules_dir.mkdir() + (rules_dir / "beta.json").write_text("{}", encoding="utf-8") + (rules_dir / "alpha.json").write_text("{}", encoding="utf-8") + (rules_dir / "memo.txt").write_text("ignore", encoding="utf-8") + + profiles = list_rule_profiles(tmp_path) + + assert [profile.title for profile in profiles] == ["alpha", "beta"] + assert [profile.path for profile in profiles] == [ + rules_dir / "alpha.json", + rules_dir / "beta.json", + ] + + +def test_list_rule_profiles_includes_root_rules_json(tmp_path): + rules_path = tmp_path / "rules.json" + rules_path.write_text("{}", encoding="utf-8") + + profiles = list_rule_profiles(tmp_path) + + assert [profile.title for profile in profiles] == ["rules"] + assert [profile.path for profile in profiles] == [rules_path] + + +def test_list_rule_profiles_disambiguates_duplicate_rules_title(tmp_path): + root_rules_path = tmp_path / "rules.json" + rules_dir = tmp_path / "rules" + nested_rules_path = rules_dir / "rules.json" + rules_dir.mkdir() + root_rules_path.write_text("{}", encoding="utf-8") + nested_rules_path.write_text("{}", encoding="utf-8") + + profiles = list_rule_profiles(tmp_path) + + assert [profile.title for profile in profiles] == ["rules", "rules (1)"] + assert [profile.path for profile in profiles] == [root_rules_path, nested_rules_path] + + +def test_list_rule_profiles_returns_empty_list_without_rules_directory(tmp_path): + assert list_rule_profiles(tmp_path) == [] diff --git a/tests/test_ui_main_window.py b/tests/test_ui_main_window.py index d2dfcb7..16d911c 100644 --- a/tests/test_ui_main_window.py +++ b/tests/test_ui_main_window.py @@ -1,3 +1,5 @@ +from pathlib import Path + from app.models import RuleSet from app.detector import MatchResult from app.runner import RuleRunResult @@ -7,7 +9,9 @@ format_score_percent, is_check_area_position, is_escape_key, + is_valid_rule_row, rectangles_overlap, + rule_profile_base_dir, resolve_rule_image_path, ) @@ -33,6 +37,7 @@ def test_import_qt_widgets_returns_required_widget_names_when_pyside6_is_availab qt = import_qt_widgets() + assert "QComboBox" in qt assert "QDialog" in qt assert "QMainWindow" in qt assert "QListWidget" in qt @@ -60,6 +65,13 @@ def test_is_escape_key_matches_escape_only(): assert is_escape_key(65, 27) is False +def test_is_valid_rule_row_rejects_out_of_range_rows(): + assert is_valid_rule_row(0, 1) is True + assert is_valid_rule_row(-1, 1) is False + assert is_valid_rule_row(1, 1) is False + assert is_valid_rule_row(0, 0) is False + + def test_resolve_rule_image_path_uses_base_dir_for_relative_path(tmp_path): assert resolve_rule_image_path("image/button.png", tmp_path) == tmp_path / "image" / "button.png" @@ -70,6 +82,14 @@ def test_resolve_rule_image_path_leaves_absolute_path(tmp_path): assert resolve_rule_image_path(str(image_path), tmp_path) == image_path +def test_rule_profile_base_dir_uses_rules_parent_for_profile_path(): + assert rule_profile_base_dir("rules/tower.json") == Path(".") + + +def test_rule_profile_base_dir_uses_rules_file_parent_for_legacy_path(): + assert rule_profile_base_dir("rules.json") == Path(".") + + def test_format_score_percent(): assert format_score_percent(0.842) == "84.2%" From aa768fa90211c586a4e899c4e09d02aeac4bc324 Mon Sep 17 00:00:00 2001 From: rakima Date: Mon, 13 Jul 2026 03:46:46 +0900 Subject: [PATCH 09/11] =?UTF-8?q?add:=20=E3=83=AB=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 4 ++-- README.md | 4 ++-- app/storage.py | 23 +++++++++++++++++++ app/ui/main_window.py | 44 ++++++++++++++++++++++++++++++++++++ tests/test_storage.py | 29 +++++++++++++++++++++++- tests/test_ui_main_window.py | 1 + 6 files changed, 100 insertions(+), 5 deletions(-) diff --git a/README.ja.md b/README.ja.md index 9e284ce..c7f482f 100644 --- a/README.ja.md +++ b/README.ja.md @@ -21,7 +21,7 @@ v0.1.0を公開済みです。 - PySide6によるデスクトップGUI - JSONによるルール保存・読み込み -- `rules/*.json` によるルールセット切り替え +- `rules/*.json` によるルールセット作成・切り替え - ルールの追加・編集・削除 - ルールの複製・並び替え - 検知画像プレビュー @@ -151,7 +151,7 @@ GitHub Releasesでは、Windows向けzipを配布しています。 10. `Start`で実行する。 11. `Stop`または`Esc`で停止する。 -`rules`フォルダに`xxx.json`を配置すると、メイン画面上部の`Rule Set`からルールセットを切り替えられます。 +メイン画面上部の`Rule Set`からルールセットを切り替えられます。`New`で空のルールセットを`rules`フォルダ内に作成できます。 ## ルール例 diff --git a/README.md b/README.md index fa6f8c8..fbc3c29 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Current implementation includes: - PySide6 desktop GUI - JSON rule loading and saving -- Rule set switching from `rules/*.json` +- Rule set creation and switching from `rules/*.json` - Rule add, edit, and delete - Rule duplication and reordering - Detection image preview @@ -155,7 +155,7 @@ GitHub Releases can be created from tags such as `v0.1.0-alpha.1`. The release w 10. Click `Start` to run the macro loop. 11. Click `Stop` or press `Esc` to stop execution. -Place `xxx.json` files in the `rules` directory to switch rule sets from the `Rule Set` dropdown in the main window. +Use the `Rule Set` dropdown in the main window to switch rule sets. Click `New` to create an empty rule set under the `rules` directory. ## Rule Example diff --git a/app/storage.py b/app/storage.py index 6f97666..be2d3cd 100644 --- a/app/storage.py +++ b/app/storage.py @@ -3,6 +3,7 @@ from __future__ import annotations import json +import re from dataclasses import dataclass from pathlib import Path from typing import Any @@ -53,6 +54,28 @@ def _title_rule_profiles(paths: list[Path]) -> list[RuleProfile]: return profiles +def safe_rule_profile_stem(name: str) -> str: + """Return a filesystem-friendly rule profile filename stem.""" + stem = re.sub(r"[^0-9A-Za-z_-]+", "_", name.strip()).strip("_") + return stem or "rules" + + +def new_rule_profile_path(base_dir: str | Path, name: str) -> Path: + """Return a non-existing path for a new rule profile under rules/.""" + profiles_dir = Path(base_dir) / "rules" + stem = safe_rule_profile_stem(name) + path = profiles_dir / f"{stem}.json" + if not path.exists(): + return path + + suffix = 1 + while True: + candidate = profiles_dir / f"{stem}_{suffix}.json" + if not candidate.exists(): + return candidate + suffix += 1 + + def load_rules(path: str | Path) -> RuleSet: """Load a rule set from JSON. diff --git a/app/ui/main_window.py b/app/ui/main_window.py index f927fb0..d8ebc34 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -115,6 +115,7 @@ def import_qt_widgets(): QDialog, QFrame, QHBoxLayout, + QInputDialog, QLabel, QListWidget, QListWidgetItem, @@ -137,6 +138,7 @@ def import_qt_widgets(): "QDialog": QDialog, "QFrame": QFrame, "QHBoxLayout": QHBoxLayout, + "QInputDialog": QInputDialog, "QImage": QImage, "QLabel": QLabel, "QListWidget": QListWidget, @@ -168,6 +170,7 @@ def create_main_window(rule_set: RuleSet, rules_path: str | Path | None = None): QFrame = qt["QFrame"] QHBoxLayout = qt["QHBoxLayout"] QImage = qt["QImage"] + QInputDialog = qt["QInputDialog"] QLabel = qt["QLabel"] QListWidget = qt["QListWidget"] QListWidgetItem = qt["QListWidgetItem"] @@ -247,6 +250,9 @@ def _build_ui(self) -> None: self.rule_profile_input.setMinimumWidth(180) self.rule_profile_input.currentIndexChanged.connect(self._on_rule_profile_changed) toolbar.addWidget(self.rule_profile_input) + self.new_rule_profile_button = QPushButton("New") + self.new_rule_profile_button.clicked.connect(self._create_rule_profile) + toolbar.addWidget(self.new_rule_profile_button) toolbar.addStretch(1) self.test_button = QPushButton("Test Detection") @@ -384,6 +390,13 @@ def _load_rule_profiles(self) -> None: self.rule_profile_input.setEnabled(not self.is_running) self.is_loading_rule_profiles = False + def _select_rule_profile_path(self, profile_path: Path) -> None: + for index in range(self.rule_profile_input.count()): + item_path = self.rule_profile_input.itemData(index) + if item_path and Path(item_path).resolve() == profile_path.resolve(): + self.rule_profile_input.setCurrentIndex(index) + return + def _on_rule_profile_changed(self, index: int) -> None: if self.is_loading_rule_profiles or self.is_running or index < 0: return @@ -412,6 +425,36 @@ def _on_rule_profile_changed(self, index: int) -> None: self._load_rules() self.append_log(f"Loaded rule set: {profile_path} ({len(self.rule_set.rules)} rule(s).)") + def _create_rule_profile(self) -> None: + if self.is_running: + return + + name, accepted = QInputDialog.getText(self, "New rule set", "Rule set name:") + if not accepted: + return + if not name.strip(): + QMessageBox.warning(self, "Invalid rule set name", "Rule set name is required.") + return + + from app.storage import new_rule_profile_path + + profile_path = new_rule_profile_path(rule_profile_base_dir(self.rules_path), name) + try: + save_rules(profile_path, RuleSet(rules=[])) + except RuleStorageError as error: + QMessageBox.warning(self, "Could not create rule set", str(error)) + self.append_log(f"Rule set create failed: {error}") + return + + self.rules_path = profile_path + self.rule_set = RuleSet(rules=[]) + self.last_rule_log_states = {} + self.last_test_results = {} + self._load_rule_profiles() + self._select_rule_profile_path(profile_path) + self._load_rules() + self.append_log(f"Created rule set: {profile_path}") + def _show_rule_summary(self, row: int) -> None: self._update_rule_buttons(row) if not is_valid_rule_row(row, len(self.rule_set.rules)): @@ -827,6 +870,7 @@ def _set_running_state(self, running: bool) -> None: self.stop_button.setEnabled(running) self.test_button.setEnabled(not running) self.rule_profile_input.setEnabled(bool(self.rule_profiles) and not running) + self.new_rule_profile_button.setEnabled(not running) self.add_button.setEnabled(not running) self.rule_list.setDragDropMode(QListWidget.NoDragDrop if running else QListWidget.InternalMove) self._update_rule_buttons(self.rule_list.currentRow()) diff --git a/tests/test_storage.py b/tests/test_storage.py index 5f94b42..4ef7cff 100644 --- a/tests/test_storage.py +++ b/tests/test_storage.py @@ -3,7 +3,14 @@ import pytest from app.models import Action, Region, Rule, RuleSet -from app.storage import RuleStorageError, list_rule_profiles, load_rules, save_rules +from app.storage import ( + RuleStorageError, + list_rule_profiles, + load_rules, + new_rule_profile_path, + safe_rule_profile_stem, + save_rules, +) def make_rule_set() -> RuleSet: @@ -122,3 +129,23 @@ def test_list_rule_profiles_disambiguates_duplicate_rules_title(tmp_path): def test_list_rule_profiles_returns_empty_list_without_rules_directory(tmp_path): assert list_rule_profiles(tmp_path) == [] + + +def test_safe_rule_profile_stem_removes_unsafe_characters(): + assert safe_rule_profile_stem("Tower Profile!?") == "Tower_Profile" + + +def test_safe_rule_profile_stem_uses_fallback_for_blank_name(): + assert safe_rule_profile_stem(" ") == "rules" + + +def test_new_rule_profile_path_returns_rules_directory_path(tmp_path): + assert new_rule_profile_path(tmp_path, "Tower Profile") == tmp_path / "rules" / "Tower_Profile.json" + + +def test_new_rule_profile_path_avoids_existing_file(tmp_path): + rules_dir = tmp_path / "rules" + rules_dir.mkdir() + (rules_dir / "tower.json").write_text("{}", encoding="utf-8") + + assert new_rule_profile_path(tmp_path, "tower") == rules_dir / "tower_1.json" diff --git a/tests/test_ui_main_window.py b/tests/test_ui_main_window.py index 16d911c..211ccd6 100644 --- a/tests/test_ui_main_window.py +++ b/tests/test_ui_main_window.py @@ -39,6 +39,7 @@ def test_import_qt_widgets_returns_required_widget_names_when_pyside6_is_availab assert "QComboBox" in qt assert "QDialog" in qt + assert "QInputDialog" in qt assert "QMainWindow" in qt assert "QListWidget" in qt assert "QPlainTextEdit" in qt From cd42423118e62e1e56bc7abd633a2f39b7652042 Mon Sep 17 00:00:00 2001 From: rakima Date: Mon, 13 Jul 2026 03:49:07 +0900 Subject: [PATCH 10/11] =?UTF-8?q?change:=20=E3=83=AB=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E4=B8=80=E8=A6=A7=E3=81=AB=E6=9C=80=E7=B5=82=E7=8A=B6=E6=85=8B?= =?UTF-8?q?/=E3=82=B9=E3=82=B3=E3=82=A2=E8=A1=A8=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 1 + README.md | 1 + app/ui/main_window.py | 40 +++++++++++++++++++++++++++++++++++- tests/test_ui_main_window.py | 35 +++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 1 deletion(-) diff --git a/README.ja.md b/README.ja.md index c7f482f..c003b67 100644 --- a/README.ja.md +++ b/README.ja.md @@ -24,6 +24,7 @@ v0.1.0を公開済みです。 - `rules/*.json` によるルールセット作成・切り替え - ルールの追加・編集・削除 - ルールの複製・並び替え +- ルール一覧での最終状態・スコア表示 - 検知画像プレビュー - スクリーンショットからの検知画像切り出し - 画面上での探索範囲選択 diff --git a/README.md b/README.md index fbc3c29..bcf93a5 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ Current implementation includes: - Rule set creation and switching from `rules/*.json` - Rule add, edit, and delete - Rule duplication and reordering +- Last status and score display in the rule list - Detection image preview - Detection image capture from screenshots - Screen region selection diff --git a/app/ui/main_window.py b/app/ui/main_window.py index d8ebc34..ada493f 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -108,6 +108,25 @@ def format_rule_test_result(result: RuleRunResult | None, confidence: float) -> return ["Last Test: not matched"] +def format_rule_list_text(name: str, result: RuleRunResult | None = None) -> str: + """Format a rule list item with the latest status when available.""" + if result is None: + return name + + if result.error: + return f"{name} [error]" + if result.triggered and result.score is not None: + return f"{name} [clicked {format_score_percent(result.score)}]" + if result.skipped_cooldown: + return f"{name} [cooldown]" + if result.matched and result.score is not None: + return f"{name} [matched {format_score_percent(result.score)}]" + if result.score is not None: + return f"{name} [below {format_score_percent(result.score)}]" + + return f"{name} [not matched]" + + def import_qt_widgets(): try: from PySide6.QtWidgets import ( # type: ignore[import-not-found] @@ -220,6 +239,7 @@ def __init__(self, rules: RuleSet, path: str | Path | None = None) -> None: self.is_loading_rules = False self.last_rule_log_states = {} self.last_test_results = {} + self.last_rule_results = {} self.is_loading_rule_profiles = False self.rule_profiles = [] self.setWindowTitle("Macro Tool") @@ -352,7 +372,7 @@ def _load_rules(self) -> None: self.is_loading_rules = True self.rule_list.clear() for index, rule in enumerate(self.rule_set.rules): - item = QListWidgetItem(rule.name) + item = QListWidgetItem(format_rule_list_text(rule.name, self.last_rule_results.get(rule.name))) item.setFlags(item.flags() | Qt.ItemIsUserCheckable | Qt.ItemIsDragEnabled) item.setData(Qt.UserRole, index) item.setCheckState(Qt.Checked if rule.enabled else Qt.Unchecked) @@ -422,6 +442,7 @@ def _on_rule_profile_changed(self, index: int) -> None: self.rules_path = profile_path self.last_rule_log_states = {} self.last_test_results = {} + self.last_rule_results = {} self._load_rules() self.append_log(f"Loaded rule set: {profile_path} ({len(self.rule_set.rules)} rule(s).)") @@ -450,6 +471,7 @@ def _create_rule_profile(self) -> None: self.rule_set = RuleSet(rules=[]) self.last_rule_log_states = {} self.last_test_results = {} + self.last_rule_results = {} self._load_rule_profiles() self._select_rule_profile_path(profile_path) self._load_rules() @@ -582,6 +604,7 @@ def _open_rule_editor(self, rule, index) -> None: return self.last_test_results = {} + self.last_rule_results = {} self._load_rules() self._load_rule_profiles() self.rule_list.setCurrentRow(selected_row) @@ -634,6 +657,7 @@ def _delete_selected_rule(self) -> None: return self.last_test_results = {} + self.last_rule_results = {} self._load_rules() if self.rule_set.rules: self.rule_list.setCurrentRow(min(row, len(self.rule_set.rules) - 1)) @@ -759,6 +783,7 @@ def _append_test_detection_result(self, result: RunnerCycleResult) -> None: for item in result.results: self.last_test_results[item.rule_name] = item + self.last_rule_results[item.rule_name] = item if item.error: self.append_log(f"[{item.rule_name}] error: {item.error}") elif item.matched and item.match is not None: @@ -780,6 +805,7 @@ def _append_test_detection_result(self, result: RunnerCycleResult) -> None: "Test detection completed: " f"matched={matched_count}, not_matched={not_matched_count}, errors={error_count}" ) + self._refresh_rule_list_texts() self._show_rule_summary(self.rule_list.currentRow()) def _start_running(self) -> None: @@ -800,6 +826,8 @@ def _start_running(self) -> None: ) self.screenshot_provider = PyAutoGuiScreenshotProvider() self.last_rule_log_states = {} + self.last_rule_results = {} + self._refresh_rule_list_texts() self._set_running_state(True) self.append_log( f"Macro started. enabled_rules={len(enabled_rules)}, interval={self.run_timer.interval()}ms. " @@ -902,6 +930,7 @@ def _run_loop_tick(self) -> None: def _append_run_result(self, result: RunnerCycleResult) -> None: for item in result.results: + self.last_rule_results[item.rule_name] = item state = self._run_result_state(item) if item.error: self._append_state_change_log(item.rule_name, state, f"[{item.rule_name}] error: {item.error}") @@ -916,6 +945,15 @@ def _append_run_result(self, result: RunnerCycleResult) -> None: self._append_state_change_log(item.rule_name, state, f"[{item.rule_name}] cooldown") else: self._append_state_change_log(item.rule_name, state, f"[{item.rule_name}] not matched") + self._refresh_rule_list_texts() + + def _refresh_rule_list_texts(self) -> None: + self.is_loading_rules = True + for row, rule in enumerate(self.rule_set.rules): + item = self.rule_list.item(row) + if item is not None: + item.setText(format_rule_list_text(rule.name, self.last_rule_results.get(rule.name))) + self.is_loading_rules = False def _run_result_state(self, item) -> str: if item.error: diff --git a/tests/test_ui_main_window.py b/tests/test_ui_main_window.py index 211ccd6..129bf08 100644 --- a/tests/test_ui_main_window.py +++ b/tests/test_ui_main_window.py @@ -5,6 +5,7 @@ from app.runner import RuleRunResult from app.ui.main_window import ( UiDependencyError, + format_rule_list_text, format_rule_test_result, format_score_percent, is_check_area_position, @@ -135,3 +136,37 @@ def test_format_rule_test_result_returns_error_summary(): "Last Test: error", "Error: template missing", ] + + +def test_format_rule_list_text_returns_name_without_result(): + assert format_rule_list_text("Rule") == "Rule" + + +def test_format_rule_list_text_returns_clicked_score(): + result = RuleRunResult(rule_name="Rule", triggered=True, score=0.95) + + assert format_rule_list_text("Rule", result) == "Rule [clicked 95.0%]" + + +def test_format_rule_list_text_returns_matched_score(): + result = RuleRunResult(rule_name="Rule", matched=True, score=0.91) + + assert format_rule_list_text("Rule", result) == "Rule [matched 91.0%]" + + +def test_format_rule_list_text_returns_below_score(): + result = RuleRunResult(rule_name="Rule", score=0.842) + + assert format_rule_list_text("Rule", result) == "Rule [below 84.2%]" + + +def test_format_rule_list_text_returns_cooldown(): + result = RuleRunResult(rule_name="Rule", skipped_cooldown=True) + + assert format_rule_list_text("Rule", result) == "Rule [cooldown]" + + +def test_format_rule_list_text_returns_error(): + result = RuleRunResult(rule_name="Rule", error="failed") + + assert format_rule_list_text("Rule", result) == "Rule [error]" From ecc85b4e0e683e1526848d5b9bb5259365f9ad4f Mon Sep 17 00:00:00 2001 From: rakima Date: Mon, 13 Jul 2026 03:53:07 +0900 Subject: [PATCH 11/11] =?UTF-8?q?change:=20=E3=82=B9=E3=82=AF=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/assets/execution.png | Bin 45862 -> 92112 bytes docs/assets/home.png | Bin 28904 -> 89441 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/assets/execution.png b/docs/assets/execution.png index daefa988851eab455e162b48dacbb42224f9fd8f..1559d574fc4a5b933576226b6247612a8638df7a 100644 GIT binary patch literal 92112 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 literal 45862 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ᝨq_gtHKH0#=W4o@>%pKoAN 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 diff --git a/docs/assets/home.png b/docs/assets/home.png index 896d9ba4922a798d8a095324e182348c54f51a02..65569d26e3cd64807380949a0eda055c51667af9 100644 GIT binary patch literal 89441 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

kQ` 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 literal 28904 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